Hi, I'm Michael.

Not too long ago, I left a full-stack Python position, and jumped in head-first into my two passions: education, and indie video games. When I'm not web development, I'm making rookie mistakes with game development so you don't have to, and writing this blog about what I learn along the way! I hope it'll be useful for others considering a similar path, or interested in getting started with indie game development under Linux. If you want to contact me, click here to answer a captcha and expand my email address: [email protected] ⚹ .com (or just guess the popular email provider that starts with G).


Excluding a driver in the OS, my game dev stack is 100% free software.

If you are curious, this is what I use:

  • OS: Linux (Ubuntu 16.04)
  • Engine: Godot - a free and open source 2D and 3D game engine
  • Artwork:
    • Inkscape - top notch SVG / general vector graphics editor
    • GIMP - raster editor, comparable to Photoshop
    • MyPaint - sketching and painting with my graphics tablet (I've also used Krita)
  • Music and audio: KXStudio with Ardour - I wrote a blog post on why KXStudio, and another reviewing Ardour DAW
  • 3D Assets: Blender - industry standard 3D graphics software
  • Editor: I'm already a fan of the notoriously-hard-to-learn-but-powerful vim, so I use that instead of the Godot IDE
  • Blogging and streaming tools:
    • Live streaming: OBS Studio - truly the best, I use both OBS for Twitch and for recording lessons at UCBX
    • GIF recording: Peek - dead simple GIF maker
    • Screenshots: Shutter - very handy and screenshots and annotations
    • Blog: Ghost - a slick modern node.js blogging software, installed via a pre-made image on Digital Ocean1


A few people have asked about the hardware I use. You don't need a cutting-edge computer for 2D game programming or web development! Unless you want to work on advanced 3D games, there's no need to go out and buy a new Macbook Pro, etc. Instead I recommend buying refurbished hardware and installing Linux. This is what I use:

  • Hardware for programming: 2
    • Lenovo Thinkpad T520: I bought this in 2016 refurbished off eBay for $250 - I use this for streaming coding and teaching (stats: Core i7, 8 GB ram, 1080 display).
    • Lenovo N22: I picked up one of these for $135 new off eBay, and have been using it more and more in 2017 for work, as it has superb battery life and very light and small form-factor, while having more than enough stats for getting work done (stats: 4GB ram, 64GB storage, no moving parts, ~8 hr battery life)

If you want to get started with Linux or free software indie game development, then check out this blog post on it.

My Music

My gear, as of December 2017

As with computer hardware, I try to stay frugal with audio equipment too. Everything I got second-hand, locally with craigslist, for prices 1/2 or 1/3 that I'd find at music retailers, either new or used. If you are looking to acquire home studio equipment, I'd recommend you stalk used listings for a while first!

  • Music studio gear

My stream

I sometimes Twitch stream while I work! Some people find "shoulder-surfing" programmers helpful in their own education. I also hope to involve people in the games I'm developing at the earliest stage so that I can get immediate feedback in the features and decisions I'm making... essentially involving the player community in the very earliest steps of the creative process. Exciting!

watch me code live on twitch!

  1. Of cloud hosting providers, my favorite is Digital Ocean which I use to host all my sites (including this one). I find them cheap and reliable, and with a much easier to understand UI and pricing scheme than the more popular AWS. They also have "1-click install" images of Ghost and a few other popular stacks. If you're curious, here's my Digital Ocean affiliate link which includes $10 of credit.

  2. Note that both laptops lack 3D cards, meaning they are only useful for development, and older or indie games. For modern games, I typically stream from a gaming computer I got in 2011 (an ASUS workstation with discrete graphics).