Hey there!

My name is Misha. I am a software engineer and product manager, and this is my personal blog. Check out my now page for what I’m currently up to, the about page for more background, or check out some of my open source projects.

Typography, fonts, and licenses

I’ve been fascinated with typography and typefaces for a while—good typography makes content not only more readable, but even more enjoyable. Even before learning about good type design and learning more about typefaces, I noticed that I found some fonts more readable than others, on an intuitive level. Letter blocks by Amador Loureiro via Unsplash ...

January 31, 2021

Making of "running decade-old games in containers"

If you’re curious how I made the code samples in my earlier post on running old games in containers, read on! Code on a screen by Florian Olivo via Unsplash You’ll note that this was a step-by-step tutorial, with a lot of trial-and-error, and I wanted to show the reader all the errors and issues I ran into, and what changes I had to make for each step, and I showed how the runner script and the Dockerfile changed along the way....

December 15, 2020

Running decade-old games in containers

A long time ago, I played a fun point-and-click puzzle game Machinarium. This game, having been released in 2009, is not quite “vintage”, though at the time of this writing, it’s already 11 years old! This post was featured on the Kubernetes Podcast and discussed on Hacker News. Vintage TV by Francisco Andreotti via Unsplash Given that there are a number of such games, I was wondering how easy it would be to run them all today, but although I last played this game on Windows, this time, I wanted to see if I could run it on Linux (it has a native port, so we wouldn’t be using Wine). Additionally, I’ve been thinking about using containers for running games to ensure they get the correct environment, without having to install all their contemporary (i.e., old and possibly insecure) dependencies on my system directly, as well as isolating them from the rest of the system. On top of that, we can check if any of these games actually need to have network access by entirely disabling it. Ready? Let’s go! ...

April 19, 2020

Add a REPL to any CLI tool

In this post, we’ll write a simple wrapper for a CLI tool to provide it with a REPL-like environment. Interested? Suspicious? Don’t know what a REPL is or where to start? Let’s dive in! Staircase by Sven Read via Unsplash ...

April 11, 2020

OO-style testing in Go

Testing in OO languages like C++ or Java is often done with mocks: using an interface (create a new one if you don’t already have it), create a mock, set up some expected calls and return values or side-effects, and you’re all set. Or, you can subclass an existing implementation when you want the entire class to work as-is, but just override a specific class method to be a mock with expectations, rathe than the full implementation, to test specific cases. In dynamic languages like Python and JavaScript, it’s even easier: you can just override fields or even entire methods to do whatever you want them to do. So how do we do this in Go? ...

March 22, 2020

My Git shortcuts

I have a bunch of useful Git shortcuts (aliases, really) in my ~/.gitconfig, so I thought I would share a few that I use quite often in my workflow. If you haven’t used Git shortcuts, these are aliases to help you type a much smaller command for those commands that you type regularly. Lombard St., San Francisco by Omer Rana via Unsplash ...

February 29, 2020

Learning Japanese: Hiragana & Katakana

Are you interested in learning to read Japanese? Would you like to be able to identify which characters in the below photo are hiragana vs. katakana vs. kanji and how they are pronounced? If so, you’ve come to the right place—let’s go! Japanese lanterns by freddie marriage via Unsplash ...

January 22, 2020

Uniting Vim and Emacs in Zsh

In a previous post, I alluded to the possibility of uniting Vim and Emacs in a shell, and this is that post! For those of you who want to have the flexibility of having both Vim and Emacs keybindings in your shell environment, read on for how to set this up. Sea shells by Oskars Sylwan via Unsplash ...

December 27, 2019