I love Visio! I hate Visio!

I love Visio.  It produces so many great diagrams with great detail and clarity.  You can’t build, manage, operate, or support a data center without Visio.

There are a few things I really hate about using Visio with MIS organizations (especially MIS management.)

The main thing my clients hate about Visio is the same thing my previous employer hated:  the licensing cost combined with the closed file format.  The more good VSDX files you have circulating in an MIS organization, the more people are clamoring for a licensed software copy so that they can even see the danged diagrams.  Microsoft has shrewdly used some of their traditional product packaging techniques to make it so that your typical end-user can’t see the contents without thinking he or she needs the full Visio software package.  (Yes, there are a couple of solutions for your more experienced user.)  Circulate an updated diagram of the data center floor plan and suddenly everybody in the MIS organization and in the data center building will be clamoring for Visio on their laptop or desktop (or both.)

The most amusingly annoying thing I hate about using Visio is “architect elitism.”  Due to the licensing cost, many organizations choose to distribute Visio licenses only to the few people actually expected to be producing VSDX diagrams.  The assumption is that the producers will distribute PDF copies to the diagram viewers.  At IBM, licenses were only distributed to a short list of IT architects.  This quickly established a concept of elitism connected to who had or did not have the software.  I attended many design meetings where the “peons” would complain about not being able to see the design and the favored few responded “You must not be an architect.  Only architects use Visio, and architects only use Visio.”  I truly believe that if software was still distributed in boxes, some of these guys and gals would have carried around the empty Visio product box so that everybody could tell they were one of The Chosen™.

One quick way to embarrass yourself in front of clients is to distribute VSDX files at an Executive-level design review.  Executives don’t tolerate the attitude that they would be able to appreciate the brilliance of your design if only they had the foresight to load Visio on their laptop.  Executives have long loved Powerpoint.  Naturally, this leads to large populations of Partners, Managers, and IT Sellers wanting to see everything in Powerpoint.

After spending enough tedious hours stuffing Visio diagrams into Powerpoint presentations, I concluded that most diagrams should start out as, and remain Powerpoint diagrams.  Visio is really indispensible when you need “everything on one chart,” such as a data center floor plan, a rack elevation diagram, or some network diagrams.  However, many presentations and discussions either take a semi-abstract view of the big picture, or only need to show the details about one small aspect of the big picture.  For drawing IT diagrams, Powerpoint has the features that Visio designers use 80% of the time, and about 60% of Visio drawing tasks are essentially the same as in Powerpoint.  Frankly, the best rack elevation diagrams that I’ve seen were built in spreadsheets.  (Which would you rather revise 5 times per day during a deployment project: a cabling spreadsheet or a cabling diagram?)

I believe that there are really only a few situations when you really need Viso:

  • If the diagram will be physically plotted on giant paper and posted on the wall for everybody to review,
  • If the client demands detailed network, cabling, or elevation diagrams that must be simultaneously complete at the large scale and the small scale.
  • If the client demands detailed diagrams that much be dimensionally accurate (such as floor plans and some rack elevations.)
  • If you are preparing high resolution detailed diagrams for publication.

In my dad’s day, quality detailed diagrams were the work of skilled draftsmen and graphics artists, but that is a topic for another day.  May all your diagrams be true and clear, and may your graphic arts skills ever increase!

(Historical image courtesy of NASA.)


Ten Simple Rules for Better Data Visualization

Nicolas Rougier and friends have prepared an excellent outline of how to prepare superior data graphics.  Their focus is on preparing effective data charts, and their article dwells on how to prepare individual charts for academic publication.  However, their points are valid in a wider sense (and overlap with some of Edward Tufte’s guidelines.)

I am synopsizing and expanding for my own benefit.

Rule 1:  Know Your Audience

Rule 2:  Identify Your Message

Rule 3:  Adapt The Figure To The Support Medium

Rule 4:  Captions Are Not Optional

Rule 5:  Do Not Trust The Defaults

Rule 6:  Use Color Effectively

Rule 7:  Do Not Mislead The Reader

Rule 8:  Avoid “Chartjunk”

Rule 9:  Message Trumps Beauty

Rule 10:  Get The Right Tool

In that last rule, they inventory a number of open source tools useful to preparing data graphics for presentation and publication.  I want to capture these for my own skills planning purposes.

MatPlotLib is a python plotting library that comes with a huge gallery of examples that cover virtually all scientific domains.

R provides a wide variety of statistical and graphical techniques, and is highly extensible.

Inkscape is a professional vector graphics editor. It cab also read a PDF file in order to extract figures and transform them.

TikZ and PGF are TeX packages for creating graphics programmatically.

GIMP is a photo compositing application that can quickly retouch an image or add some legends or labels.

ImageMagick is a software suite to create, edit, compose, or convert bitmap images. It can be used to quickly convert an image into another format.

D3.js offers an easy way to create and control interactive data-based graphical forms which run in web browsers.

Cytoscape is for visualizing complex networks and integrating these with any type of attribute data.

Circos was originally designed for visualizing genomic data but can create figures from data in any field.

(Image courtesy of cocoparisenne at Pixabay)

My Favorite MatPlotLib and Seaborn References

Here are some references I’ve found particularly useful when developing or debugging Python code with MatPlotLib and Seaborn.

User’s Guides

These focus on techniques for using specific methods.  They are generally stronger than beginner’s introductions.



Reference Guides

These provide encyclopedic reference on the details of function and syntax.

API Reference:


Quick Reference:

This one starts out as a tutorial, but the bottom quarter is a great Quick Reference:









The better organized on-line tutorials easily serve as user’s guides.







(Python logo provided courtesy of Python Software Foundation, used here under the “nominative use rules” of their policy.)

My Favorite NumPy and SciPy References

Here are some references I’ve found particularly useful when developing or debugging Python code with NumPy and SciPy.  (I can’t avoid the temptation to use the Australian pronunciation:  “Skippy.”

User’s Guides

These focus on techniques for using specific methods.  They are generally stronger than beginner’s introductions.







Reference Guides

These provide encyclopedic reference on the details of function and syntax.

Language Reference:





Style Guides

These provide some best practices on structuring the code.










The better organized on-line tutorials easily serve as user’s guides.










(Python logo provided courtesy of Python Software Foundation, used here under the “nominative use rules” of their policy.)

Tell Me I’m an Idiot!

I am eagerly studying new math and science, learning new methods, and tinkering with new tools.  I’m showing my work in public (here and on GitHub.)  I welcome coaching, constructive criticism, and insight into more efficient and  effective ways of accomplishing results!

I would especially welcome mentoring in data science, and guidance on more important or effective data sets to work upon.

So, call or write and tell me I’m an idiot.  But please show me where I’m being an idiot and how to work smarter!


Carl Gusler

Austin, Texas


(Image courtesy of stevepb at Pixabay)

Sharing My Python Student Notebooks

I am sharing my “work in progress” data science student notebooks.  These are my notes and test cases from various classes and projects I’ve been working on.  These are built using the Jupyter interactive notebook technology, so you can read, run, revise, and explore.

To share, I have placed my student notebooks on GitHub.  I will be adding future notebooks to the collection and will increase the content and readability of the existing notebooks.

I have taken a good number of on-line courses and read a fair number of books on Python and data science.  However, I find the only truly effective way to learn a new language and new techniques is to invent new and unique scenarios and work through them myself.  These notebooks show the scenarios I created from scratch to practice certain Python features and data science techniques.  I certainly welcome you to look over my shoulder, but encourage you to press forward and create  your own learning scenarios.

To date, the notebooks are organized as follows:

Python Basic Topics

  • Code Formatting
  • Strings
  • Lists
  • Tuples
  • Dicts
  • Sets
  • Iterators, Iterables, and Generators
  • Lambdas, map(), and reduce()
  • Printing
  • Useful Functions

Python Intermediate Topics

Default Dictionaries



I hope you find these useful!

(Python logo provided courtesy of Python Software Foundation, used here under the “nominative use rules” of their policy.)

Report Card: Python 3 Essential Training on Lynda

To reinforce some of the basics, I recently completed the Python 3 Essential Training course on Lynda.

This course is taught by Bill Weinman the IT educator, not to be confused with Bill Weinman the Hollywood film and sound editor or Bill Wyman of the Rolling Stones.  Bill has done a good job here.  The lectures are flawlessly delivered.  His presentation materials are simple, clear, and direct.

I only experienced two disappointments.  The section on regular expressions was too brief.  This is certainly an area requiring its own long course, but adding a couple of additional short videos and examples would have been more useful.

The second disappointment concerned a lack of closure on conditionals.  Bill explained how Python does not include the case or switch command.  These are popular conditional logic structures found in C, Perl, Java, and the various Unix/Linux shells.  Bill promised to show how to create something similar in Python.  I expected him to demonstrate something simple or interesting with the if / eflif / else structure, but he ended up talking about populating dictionaries.  I couldn’t tell if he went off on a tangent or I missed something subtle but brilliant.  I’m still scratching my head on that one.


The course incorporated 6 and a half hours of video in 85 short lectures, with 18 supporting example program  files.

This course has no exercises, final exams, grades, or certifications.

(Image courtesy of jarmoluk at Pixabay)