July 16, 2020

What Do I Do?

The answer begins with a story. As a child I loved computers. I learned to program BASIC and LOGO–two early programming languages–in middle school which was rare in the 80’s. When I enrolled in college, there was never any question that I would major in Computer Science. But I fell instead into a major called “Computer Engineering.”

Like Computer Science students, we took classes in software programming. The crucial difference though was that we also learned electrical engineering and how computers are constructed– not just how they’re used. We learned semiconductor physics, wired up our own primitive CPUs from bare components, and designed our own motherboards. We worked our way up, starting with single transistors and combining them into ever more complex systems.

In our programming classes, we learned practical algorithms for making computers do useful work. We wrote code to print “Hello World”, draw squares, and sort numbers. We worked our way down to see why these programs worked, and explored beneath the easy-to-use interfaces to see how operating systems harness the raw computational power of microprocessors.

We were learning computers from two opposite ends. I vividly recall when these two paths met in the middle. It was one of the most powerful moments in my life because for the first time, I could fully intellectualize the long chain that connects the workings of a 3d video game to the motion of electrons in silicon. I knew I’d picked the right career.

I would never lose the sense of wonder for the physical world of computing. Later, I chose to focus on robotics because robot software is fabulously complex but also inseparable from the hardware on which it runs. Designing a robot is an interplay between software and hardware, between bits and atoms. When faced with an intractable software problem, it’s often possible for the roboticist to sidestep the problem in hardware, and vice versa.

After several years working professionally as a roboticist, I veered into to making interactive art. I combined the tools of a roboticist—sensors, mechatronics, and AI–with computer graphics and the Internet to create immersive installations for others’ entertainment. I discovered the same joy in bringing places to life as bringing things to life.

This began my long journey to opening a micro-amusement park. I’ve always thought of our park as a “robot you can walk inside of.” The experiences at Two Bit Circus are made of great software and great hardware together. Neither can exist alone.

I’ve picked up a whole mess of practical skills along the way. I’ve learned game engines, deep learning, how to build a responsive web frontend, how to develop high performance server and deploy it in a Kubernetes cluster in the cloud. I’m handy in a machine shop, a wood shop, and programming a CNC tool. I do theatrical show-control and web streaming.

Many of my pure-software skills could empower me to work “on the web.” But I find software to be most magical when its effects are tangible. That’s why my passion is to use software to animate the physical world.