Last Good Quote: Son's are the seasoning on our lives. - Someone on Facebook

Wednesday, April 30

On Leadership

If I might summarize...

True North: Stable leaders have an open mind, but they also have strong convictions and principles. While stable leaders listen to others, they are not prone to being wishy-washy. Their values drive their actions – not the court of public opinion. You might not always agree with stable leaders, but you’ll never have any doubt as to where they stand. An aligned vision based upon clearly stated values, and the character to hold people accountable to values over outcomes create a high-trust culture. Purpose and people matter more than process and short-term results.

You Play How You Practice: Whether it’s Nik Wallenda, a CEO, an educator, politician, or anyone else, your performance is always tied to your preparation. Training, development, and continuous life-long learning are the foundational cornerstones of stable leadership.

Lead With Compassion: The most stable leaders understand their success is rooted in the care and well-being of those they lead. Stable leaders have a natural bias toward empathetic and compassionate behavior. When those you lead know you care, it creates a sense of trust and stability not found in more mercenary and callous leaders.

Freedom To Fail: If the people you lead are afraid to make mistakes you’ll never see their best work – you will have led them to perpetual state of mediocrity. Smart leaders make it safe for people to think big, take risks, and try new and different things. Nothing creates stability more than a high-trust environment where people are rewarded for the right behaviors – not punished for them.

Tuesday, April 29

Let's Talk Salary

If you are in the data space, before you read the following, decide what percent of the market you fall in, in terms of performance. You in the top 10%, middle or just starting out.

OK, read on.

Management analysts use data to improve an organization’s profits and efficiency.
  • Mean: $42.30/hr or $87,980
  • Bottom 10%: $21.12/hr or $43,920
  • Top 10%: $68.16 or $141,780
  • Highest Sector: Petroleum and coal products
Financial analysts determine the best investments to sell or buy by evaluating economic data and business trends.
  • Mean: $42.18 or $87,740
  • Bottom 10%: $22.26 or $46,300
  • Top 10%: $69.99 or $145,850
  • Highest Paying Sector: Public Relations

Computer systems analysts study the needs of an organization so they can recommend hardware and software
  • Mean: $39.58 or $82,230
  • Bottom 10%: $23.74 or $49,370
  • Top 10%: $57.72 or $120,060
  • Highest Paying Sector: Animal Slaughtering (u read that right)
My Personal Take:
Bottom 10% all make nearly the same amount, but no one wants to be that guy. Financial Analysts have the potential to make the most money.

I don't know if this included bonuses but I believe that it does.

There is money to be made.

Saturday, April 26

T-SQL - What performance benefits can views give me?

I won't cover it all, but read this and stop wondering:

(Remember you gotta use them correctly, and just cause you got a hammer don't make all problems into nails)

Some highlights:

After a unique clustered index is created on the view, the view's result set is materialized immediately and persisted in physical storage in the database, saving the overhead of performing this costly operation at execution time.

these indexed views can work even when they are not directly referenced by another query as the optimizer will use them in place of a table reference when appropriate

View itself would provide us with a performance advantage (3x) over the simple use of the index alone
Using indexes to improve query performance is not a new concept; however, indexed views provide additional performance benefits that cannot be achieved using standard indexes.
This is true for MS Sql Server 2005 and beyond.

LogiAnalytics - 5 Steps to Masking Your Connection String

Hi All,

I was recently asked if there was a way to mask your connection string in Logi Studio. I thought I'd jot down some notes.

My thinking was why not put the connection string in a DLL. That will make it a bit harder for folks to find. Not exactly 128 bit encryption but each step helps. So that means I need a plugin that populates the connection string element in the Settings.xml file BEFORE the Logi report is processed.

This should be pretty straight forward.

First: There is an excellent plugin example already available on Dev-Net. But it reads from a text file which is still not masked. (Take a look)

Step 1: Fire up Visual Studio and create a new Class Library project

Step 2: Add a reference to Logi's DLL.

  • Project Properties
  • References
  • Add
  • Browse
  • In your web root folder is a "bin" folder, in there is a file called rdPlugin.dll, add that
  • Click the just added reference and in the Properties of it, set Copy Local to false. (This makes sure we don't overwrite the existing dll file when we deploy, this is imporant, do not skip)
I then used this code, it's fairly straight forward, if that doesn't makes sense to you, you probably shouldn't be going this route.

BTW: Do both of us a favor and check that your connection string is correct by putting it in a normal connection element in the Settings file.
Imports System.Xml
Imports System.Web
Imports System.IO
Public Class LogiPlugin
    Public Sub setConnectionString(ByRef rdObjects As rdPlugin.rdServerObjects)
        Dim sConnID As String = rdObjects.PluginParameters("ConnID")
        Dim xmlSettings As New XmlDocument()
        'locate your connection element from it's ID (this is passed in from the variable)
        Dim eleConn As XmlElement = xmlSettings.SelectSingleNode("//*[@ID='" & sConnID & "']")
        Dim sConnection As String = "Server=OneWickedMachine;Database=NorthWind;User Id=sa;Password=ucannothave;"
        eleConn.SetAttribute("ConnectionString", sConnection)
        rdObjects.CurrentDefinition = xmlSettings.OuterXml
    End Sub

End Class

Step 3: Deploy to the file

There are multiple ways to do this, the most stright forward...but not so formal approach

  • Build your project.
  • Browse to the Debug/Bin folder of your VS project
  • Copy the SetConnection.dll to the wwwroot/YourSite/bin folder

Step 4: Call Plugin in Studio

Open up Logi Studio and alter the Settings file

Add a Connection Element, but place "NA" in all the required attributes.

Add a Plugin element

  • Assembly Name: ..\bin\SetConnection.dll (referencial path, so you can deploy on Dev, QA and Prod
  • Class Type Name: SetConnection.LogiPlugin.LogiPlugin
  • Event: Load Definition
  • Method: setConnectionString
Add a Plugin Parameter call and ConnID = NorthWind (or your database)

Step 5: Test it!

You should be good to go from this point.

Suggestion: If you have multiple environments (Dev/QA/Prod), I would add an additional parameter for which connection string to use. This can be done within the vb file and should be pretty straight forward.

OpenID Tutorials

Facebook -

Google and Others -

Tuesday, April 22

New Website/App Checklist

My personal check list for what should happen with a new website or web app:

  1. Choose and Buy Domain
  2. Setup Host Package
  3. Put up coming soon page
  4. Setup Wordpress Blog
  5. Setup Favicon
  6. Setup 404,405 and 406 pages
  7. Setup Email
  8. Setup Google Analytics
  9. Setup Google Adwords
  10. Setup Twitter
  11. Setup Heat Click Map
  12. Setup A/B Testing
  13. Setup a Phone Line
  14. Determine Keywords
  15. Create robts.txt
  16. Setup Bank Account
  17. Setup Paypal
  18. Alpha Development Complete
  19. Create 10 Blog entries
  20. Publish Wordpress Blog
  21. Create a sitemap
  22. Blog - Press Release
  23. Blog - Screenshots
  24. Blog - How to use
  25. Blog - Who we are/what we do
  26. Alpha Testing Complete
  27. Open Alpha Testing

Additional Check Lists:

Saturday, April 19

Got Programming Skills?

Think you got programming skills?

Think you could build an app in 8 hours?

Make some money proving it....If I get enough free time, I plan to participate in one of these.

Matter of fact, if you want to do one of these I will definitely help.

Repost - Install VLC in Chrome for ChromeCast


Just like everybody else I know, I have tons of video in random formats that I can’t seem to get to play back in my web browser.  Video LAN offers an amazing video player and its installer includes a chrome extension.  This post will cover the basics for installing VLC and testing that it works as a chrome plugin:
  1. Download VLC
  2. After the download completes, click the installer.
  3. Install VLC with all of the extensions / plugins
  4. From your Chrome web browser, browse to chrome://plugins
  5. Now, you will see an option, “VLC Web Plugin”. If this line is available, you have successfully installed the VLC player plugin for Chrome.
To test the VLC plugin, you can visit the VLC Plugins demo page.

Wednesday, April 16

Agile Teams - Mange your Backlog

One of the most critical items to a team's success is managing the backlog.

The backlog is NOT a collection of to-do items that your developer can go an "pickup" when they have spare time.

A backlog HAS to be groomed. IE: Reviewed weekly by someone on the team, or maybe even the whole team.

Items at the top of the backlog list MUST have some form of requirements.

In my opinion the scrum master is responsible for keeping the backlog in order. This does not mean they are responsible for priority, requirements, etc. It means they are the one who says "Hey Team, we have to go through the backlog because we have no idea what the top 3 items actually mean"

The BA/PM/Requirement Pusher, should be intimate with the backlog. I mean REAL intimate. Live and breath it.

A bit of a rant, but it's a recurring theme that drives Agile teams to failure.

Hope it helps.

Saturday, April 12

Where did my Tax Dollars Go

Interesting data visulization:

Find more at

Saturday, April 5

More Templates I like

Admin Templates:

Thursday, April 3


I think I already wrote this post, but just in case. Here is how I implimented Autocomplete with jQuery:

You will need jquery, I had a copy in my templates, you can find a copy at

You will also need autocomplete.js, which I got from here:

I put the following with my css (in the head of the document)

.autocomplete-suggestions {
border: 1px solid #333;
font-size: 12px;
font-family: arial;
padding: 3px;

I then put the following where I wanted the text box to appear in the HTML code:

Stock: <input type="text" name="txtSymbol" id="txtSymbol">

I then put the following in my document (toward the bottom)

    var options, a;
//options = { serviceUrl:'qryStocks.php' };
var a = $('#txtSymbol').autocomplete({
zIndex: 9999,
deferRequestBy: 250, //miliseconds
noCache: false, //default is false, set to true to disable caching
onSelect: function(value, data){ alert('You selected: ' + value.value + ', ' +; }




Now we also need a file that will return the list to display in our ajax:

$time_start = microtime(true); 

$conn=new mysqli("localhost","root","ididgood","stock_tracker");

$searchString = $_GET["query"];

$sql = "select distinct symbol, symbol from stock_history where symbol like '$searchString%' order by symbol limit 10";

$result = $conn->query($sql);

$out = "{\"query\":\"$searchString\",";
$suggestions = "";
$data = "";
while ($row = $result->fetch_object()) 
if($i> 0) $suggestions.= ",";
if($i> 0) $data.= ",";
$suggestions.= "\"$row->symbol\"";
$data.= "\"$row->symbol\"";


print $out;

That's it.