Why Vizioneer?

My photo
Atlanta, Georgia, United States
The "Vizioneer" comes from mashing two words that have shaped my world for most of my adult life - Engineer and [data] Visualizations (or Vizes to those who know what's up). Graduating from first from Oglethorpe University in Atlanta, followed by Georgia Tech with my Bachelors and Masters in Civil Engineering, all of which taught me to think through anything and everything - problem solving, "engineering" solutions, teaching to the "ah ha" moments - is what I love to do. In 2010 that investigative, engineering mindset intersected a job change and a plunge into the world of Data Analysis. In the search for the next great thing I stumbled on to a data visualization and dashboarding product called Tableau software and things just took off. So now I guess you could call me that engineer with the sweet data visualizations - or just "The Vizioneer" :)

In 2013, I joined the incredible team at Slalom, focusing on Tableau and it's been an amazing experience. Recently in 2014, I was honored and humbled to receive Tableau's highest recognition of being named a Tableau Zen Master. Follow along to see what happens next :)

Tuesday, December 17, 2013

If Hans Rosling could dunk....

I know there are many who enjoy my excitement to see that Hans Rosling is going to be one of the keynote speakers for #TCC14.  I've told many people that his video in "The Joy of Stats" on "200 Countries 200 Years in 4 minutes" is possibly the greatest data visualization in the last 100 years.  Of course the data is great, but Hans has an amazing way of bringing it to life.  For me, he's an inspiration both as an analyst and a speaker and I can't wait to see him in person!

To celebrate I, and a few Slalom Consulting friends of mine, have created some Hans Rosling inspired dashboards.  Below you can see the work that Peter Gilks (yep, THAT Peter Gilks!) and I put together on performance of NBA Franchises over time.  The bubbles are the logos of the NBA teams and the X and Y Axis are changeable - which is so very 'GapMinder'!

Please check it out!



Monday, December 9, 2013

Using Tableau for your next PowerPoint Deck

Let’s start off by stating the obvious – Tableau v8.1 is awesome.  There’s a number of things we should all be thanking the Tableau Development team for – 64-bit, awesome presentation mode, transparency, to name just a few.  So what do you say we take some of these new things and make your life easier?

If I’ve heard the following once, I’ve heard it a dozen times, always coming from someone who’s starting to take Tableau to the next level at their organization – it goes like this: “My boss is coming to me and saying that they really like the work I’m doing in Tableau.  Problem is now I’m having to spend a few hours every week making screenshots of my vizes and send them to my boss so they can be included in the weekly PowerPoint for upper management.  I wish they’d just use the dashboards I make in Tableau so I didn’t have to waste my time with these screenshots!  There has to be a better way!”

Boy, do I have some good news for you!  What if I told you it was possible to create something that exactly matches your company’s PowerPoint template in Tableau?  Management could have a fresh deck whenever the data’s updated, and you can spend your time doing something more meaningful than screenshots.  Everybody wins. 

Who’s ready?

So we have to start with a PowerPoint template.  You’ll use your company’s.  I’ll use the one I found here.  (Disclaimer: I have nothing to do with the NBA and have no idea if this is an official PowerPoint.  All I know is that it was free.)






















So let’s open it up in PowerPoint and do a couple things to get it ready for Tableau.  Take each type of slide you’d like to use as a template in Tableau, duplicate it, and clear out the standard text in the duplicated slide.  So now my deck goes from this to that:

 

 …and so on.

Now we need to save it so that each slide is a .png (image file - .jpeg would work too).  To do that, go up to ‘File’ and hit ‘Save as’.  Find the file type that says ‘PNG’:
























And now… Congratulations!  You’re done with PowerPoint (maybe for forever – sike!)

Now, take the bubble wrap off of your brand new Tableau v8.1 (v8.0 works too - but you should really upgrade :)) and open it up.  Start a new workbook called “XCompanyTemplate” or something to that effect.  Don’t worry about connecting to data at the moment, but rather start by creating a blank dashboard.

Take that blank dashboard and start to customize it.  If you’re using 4:3 aspect ratio for your slides (which is both the PowerPoint default and the world’s standard) then change the size of your dashboard to be exactly 960(W)x720(H) – this is the standard size of a PowerPoint slide.










Now click ‘Floating’….














Next, double click on Image and select the .png file of the blank title slide you just created.




















Once the image appears on your dashboard, select it and change the size and position of the image to 0, 0, 960, 720 here:











…And your dashboard should go from this to this:
















Now we’ll add some default text (just like in PowerPoint).  Hop back over to PowerPoint and check out the default font, size and location of the title text – mine is Microsoft New Tai Lue, size 44, right in the middle of the red bar.  Here’s what it looks like in PPT:






















Hop back to Tableau and add text (floating) using the same font, size and position (using the new transparent background if need be).  This is what my Tableau dashboard now looks like:



























Not too shabby, eh?  Rename the dashboard as “TitleTemp”, and then right-click the tab and duplicate it – we’re not done yet :).

On the newly duplicated dashboard, click on the background image, right click and select ‘Pick Image’ – Select the next type of blank slide you’re going to create the template for.  Once you’ve done that you’ll have something that looks like this:


























Hop back over to PPT and check out where the slide title, subtitle, and page numbers should be, along with their correct fonts and sizes (again, just select the text itself and note the details one by one).  Then head back to Tableau and make the proper changes.  Again, here’s the slide template in PPT….




















…and here’s my recreation in Tableau:



























To add page numbers to slides in Tableau, add one more text object (with matching font, size and location of the PPT version) to your dashboard.  Rather than writing any text, instead select ‘Insert’ and chose ‘Sheet Name’.  Now, once you start to create your visualizations and create new dashboards/sheets in this deck, just name each sheet by the page number it will be in the deck and that number will automatically be added in the same location on each slide:

























Rename this dashboard “DTempText” for “Dashboard Template with only Text”.  Now right click and duplicate.  We’re almost there :).

Delete the text box with the bullets, and replace it with one large floating layout container (I prefer vertical ones, but the option is yours).  Have it cover most of the useable area of the slide.  (This part is personal preference) Right click it and select ‘Format Container’. Click border and select the third weight on the second shade of gray up from white. 
























Again, once you start doing your visualizations, just drop them into a duplicate of this template dashboard and you’ll have consistent looking slides with layout containers.
Rename this dashboard ‘DTemp1’ for ‘Dashboard Template with one viz’.  Want two side by side layout containers?  Duplicate this dashboard, cut the current layout container by just over half and add an additional one that’s the same size. 

You get the idea.  Feel free to do as you see fit.

All of a sudden you’ll be able to start doing awesome, beautiful vizes that can then be presented in Tableau’s awesome new Presenter View.  There will be no more screenshots each week – when the data updates, your slides update automatically with a click of a button.  Save to PDF and send them off to you decision makers, or publish to Tableau Server so the deck can always show the most current data.  You save time and they get better insights into current data that will allow for better decision making.  Everybody wins!

Below are a few screenshots of what you’re future work could look like, and I’ve attached the workbook for you to download and take a better look.

































And the workbook:

I hope you enjoyed this.  I look forward to your comments below.  Many thanks!

Nelson

Wednesday, October 16, 2013

Want to visit a National Park? Now you can!


By now we are painfully aware of the awful results of the current government shutdown.  One of many things we've lost during this time is the ability to enjoy visiting some of the greatest treasures around our country - our National Parks.  So if you've been feeling down about not seeing Old Faithful out at Yellowstone or Half Dome inside Yosemite - fear not!  We've got you covered! Now you can zoom around the country and check out photos from any of these great treasures, and it's just like being there! Right? Not so much?  Well, don't worry, Washington DC's working on a solution that should be here any day now....

In the meantime, check out the viz below.  Enjoy!

Monday, October 7, 2013

Tableau and Auto Save - Finally a Solution!

Update 10/13/2015:
I've been asked a couple times if this still works in Tableau 9.1.  It does!  You can always tell if the autosave is working by opening up a new workbook in Tableau and after your set period of time, Tableau will ask you if you want to save it.  As always, let me know if you run into any issues.  Many thanks!

Update 5/27/2015:
I've been asked a couple times if this still works in Tableau 9.0.  It does!  You can always tell if the autosave is working by opening up a new workbook in Tableau and after your set period of time, Tableau will ask you if you want to save it.  As always, let me know if you run into any issues.  Many thanks!

Update 1/7/2015:
So it turns out that I am not a programmer J. One of the things that I found annoying over the last year of using the Tableau Auto-Save hack is the fact that it took up a considerable amount of CPU (10%-15% of my i7 16 Gb laptop) even though the amount of RAM (less than 1 Mb) was incredibly small. Over the break I dug in to see if I could find a solution.  As it turns out running an infinite loop, which was part of the original code, and running it every millisecond (which I believe is what I coded) is a bad idea for performance.  Who would have guessed?  Looking back had I been little more thoughtful on the part of the code where Tableau is not the active window I would’ve seen that the logic would have literally been constantly checking to see when Tableau regained its status as the “active window”.  Thus I have changed the code and it works incredibly better (>0.1% CPU) so wanted to make sure that everybody could make the changes as well. So without further ado here are the new and improved codes for Tableau Desktop v8.2 and v8.1 (code for each will save the workbook every two minutes (120,000 milliseconds) and will check to see if tableau is the active window every 10 seconds (10,000 milliseconds)) :
v9.1,9.0,8.3 and 8.2
Tableau82:
IfWinActive ahk_class Qt5QWindowIcon
{
Send ^s
Sleep 120000
Goto, Tableau82
}
else
{
Sleep 10000
Goto, Tableau82
}

v8.1
Tableau81:
IfWinActive ahk_class TableauMfcMainWindow
{
Send ^s
Sleep 120000
Goto, Tableau81
}
else
{
Sleep 10000
Goto, Tableau81

}

Happy Auto-Saving!

Update 7/11/2014:
The code for Tableau Desktop v8.2 is below.  Again, if you're like me and you can't make a clean break from 8.1 to 8.2 (Tableau Server not ready to upgrade), you can run both scripts at the same time.  Maybe we'll see autosave in v9.0?  Only time will tell!

Updated 12/16/13:
I've just discover that the fix below doesn't work on Tableau v8.1!  The previous fix works for v8.0, but as it turns out that the 'ahk_class' for the window in v8.1 changed with the upgrade.  The new 'ahk_class' for v8.1 is  'TableauMfcMainWindow'. Therefore, depending on which version of Tableau Desktop you're using you'll need to either change/add an additional script.  As I'll be doing work for clients on both versions, I'll just run two scripts - one for v8.0 and one for v8.1.  For reference, they're both listed below and I'll update the blog contents to show the correct script for v8.1:

v8.2
Loop
IfWinActive ahk_class Qt5QWindowIcon
{
Send ^s
Sleep 300000

}

v8.1
Loop
IfWinActive ahk_class TableauMfcMainWindow
{
Send ^s
Sleep 300000

}

v8.0
Loop 
IfWinActive ahk_class TableauMainWindow
{
Send ^s 
Sleep 300000  
}

Updated 12/11/2013:
It was noted in the comments below and I had seen the same issue - This fix was a little too comprehensive.  It was attempting to save any document that had the word 'Tableau' in the title - including webpages, word documents, etc....  I have now fixed that issue by changing the second line of code to 'IfWinActive ahk_class TableauMainWindow'.  This should fix any issues you may have had.  Many thanks!



I have to confess – I love Tableau.  I’m pretty sure I can make anything and everything in to a dashboard, and that the world will be a better place once I do.  So if you ask me what I think of the software, 99% of the time you will get a glowing endorsement from me.  However… the other 1% of the time will likely be the result of something like what happened last Friday.

Something that rears its head every so often is the fact that Tableau doesn't have any form of auto save. None. Nothing.  So every once in a while, during extremely focused dev time, I can go hours before thinking about saving my work.  And normally it’s not a problem.  Normally I’ll just save when I’m finished.  But every so often, typically just as I’m wrapping everything up, some bug gets lose and I crash… and burn, I am left having to answer the age old question – “why do bad things happen to good dashboards?”

I lost about two hours of work on Friday and as this has happened before I decided that it would never happen again.  And my friends, I have good news. 

I have found a solution.  Check it out:

The first thing you need is a lovely piece of third party software called AutoHotKey.  AutoHotKey allows you to write macros of all types that are totally customizable.  We are going to use it to write a very simple script that will automatically save your Tableau workbook every five minutes as you work on it J.




Download and install.

Fire it up and you’ll see that it comes with a pre-canned script (typically saved in your ‘My Documents’ folder’).

Open up Notepad and paste the following text:

Loop  ;Do this forever
IfWinActive ahk_class TableauMfcMainWindow  ;If my active window is Tableau, then….
{
Send ^s ;Hit Ctrl+s (Save)
Sleep 300000  ;Do this every 300,000 milliseconds (aka - 300 seconds, bak - 5 minutes – this is totally changeable)

}
















Go to File>>Save as
Select ‘Save as type’=All Files



Save it as ‘Save Tableau 5 min.ahk’ (make sure you specify to save it as an .ahk (AutoHotKey file)).  Now, if you double click the file you will see a little icon on the toolbar tray showing that the macro is up and running.



Now, go to the file’s location and create a shortcut.



Save that shortcut into your start up folder. 
(On Windows 8 it’s at: C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)



That’s it!

Now, starting from the time your computer boots up, while you’re running Tableau, your active workbook will save every 5 min and you won’t even notice it (all least not after you’ve given it a file name).  But check your workbook repository for the time modified for the file and you’ll notice that it’s updating automatically and always within the last five minutes.

I hope you find this helpful!  If you do, please let me know in the comments below.

Many thanks –

Nelson

Sunday, September 22, 2013

Georgia Baby Names

My lovely wife and I are expecting baby (and boy) number 2 this coming February, and we're in the middle of the 'names' discussion.  As we're all prone to do, we are curious about ideas for names, but we're looking for timeless southern names.  So I did the first thing that came to mind and found a data set that captures baby names from the state of Georgia going back to 1910.  As I said we're looking for 'Classic Southern' names so I figured it would be fun to take the top 35 names from 1910 and see how they changed in popularity over time all the way to 2012.  
In doing so, we found some really interesting trends, which made us realize how pop culture really drives naming trends.  Below are some of the most interesting:

Jacob was a biblical name (the son of Joseph) and has been fairly popular over time but really takes off around 1975.  So what happened?  It turns out that 1975 just so happened to be the year that the soundtrack for Andrew Lloyd Webber's  Joseph and the Amazing Technicolor Dreamcoat was released.  As the musical gained popularity, so did the name.  

The second big one that jumps out is the leap that the name Benjamin takes starting in 1967. Again, this just so happens to coincide with the iconic cult classic of the 60s - The Graduate. The leading character's name is Benjamin Braddock, a college student who is seduced by the famous Mrs. Robinson. Shortly thereafter, the name Benjamin skyrockets.

Another interesting one was Matthew - it takes off in 1964, which just so happens to be the same year that  The Gospel According to St. Matthew is released to critical acclaim (Rodger Ebert gave it 4 stars!).

Check out some of the other trends by clicking on the names one either side.  You might be curious about some the trends you see, so I've included Wikipedia and Google search links to help you put the pieces together.  Enjoy!

Friday, September 20, 2013

It's Official! I'm heading to Slalom!

I recently accepted an awesome opportunity to join the Slalom Consulting team in Atlanta.  We get things kicked off Monday Sept. 30th, but I thought it might be fun to check what everyone's saying about Slalom before I get there.  Feel free to check it out below: