Visualizing Systems

Visualizing Systems

I'm a very visual person. Once I have a visualization of how something works, all the details of how to write the code or what math operations to use can fall into place.

Software development can innovate greatly in this area. How can we visualize our work better? How can we tap into our intuitive visualization capablities to learn better and build better software?

When I look at a codebase, for instance, I have to build up a graph of dependencies and connections, I have to build a sort of shape of the codebase in my head. It's not static-- I might have a high level web of the codebase pictured, and then dive into optimizing a particular piece of code and not only analyze how it interacts with that web, but also how it interacts with my mental picture of the hardware.

What's interesting about this is that hardware is already very naturally visual.

And software can be too. Today, for instance, I spent some time thinking about sorting algorithms and optimization. These beautiful animations made it that much easier to think about: 

Or check out this example of how radix sort works: .

One of my favorite things about working with a good profiler is getting a picture of my code-- for instance, how different threads are spawning and executing their work.

Visual scripting is an example of a great idea for changing the way we view and write code.

As someone who primarily works in C++ codebases and engines and low-level optimization, I wonder how I can up the visualization factor there.


Giving Back by Teaching

Happiness List