Jesse Lawson

buy me a coffee ☕ / jesselawson / home / blog / tutorials / contact

Aug 31, 2020 - Blog

The startup(ish) grind and bytecode interpreters

In May of this year I took a step down from my high-level role and dove head-first back into the weeds as a solo engineer at a public education startup. It’s exciting to be on the ground floor of something again; I’m both energized and exhausted by the constantly evolving challenges and demands, and look forward every day to being part of a team that cares about serving the public. I’ve been building a lot of things, both literally and metaphorically, and as a result, all of my personal projects have taken a backseat.

If you’ve ever been part of a startup you will know what I mean when I say that I am in the grind. What’s different in my case now is that this is a public entity, so instead of being hounded by looming deadlines and PMs cracking whips to the drumbeat of those precious percent improvements of MRR, we’re largely motivated by a need to build something that works and effectively serves a public need. This is the kind of problem I like solving for my job; building public things that will ultimately either help create a better future or inform other work with the same goal.1

I distinctly remember how it felt to be running DashingWP, my managed WordPress hosting company, and was a little worried that I would be replicating that environment by leaving my high-pay-but-soul-sucking job in one area of the public sector for a huge pay cut and a startup culture in another, but it has worked out okay for now. What has really helped is my constant need to self-reflect and focus on controlling the present, rather than worrying too much about the future. This is a trait that I have instilled in my engineers before, and it’s a trait that I think helps us relax at night. (I know you are haunted by your kanban boards just like I am).

So this new startup(ish) grind is leaving me with barely any time to write anymore, hence why the infrequent updates. However, not all is lost: there have been some opportunities at night these days for me to break out the legal pad and pen (my preferred form of writing) and get to work on some more personal essays. As you may already know, the personal essay is my favorite genre. I have no idea why.

These days I’ve been wresting with compilers–writing them, understanding them, and, of course, teaching them–and look forward to a time when I will be able to share some new things with the world. I was delighted to finally find Bob Nystrom’s Crafting Interpreters, which is put together exactly the way I was hoping to put together my next series of tutorials: a neatly put-together digital technical book. He’s given me some great ideas for how I might take something like my Rust tutorial and package it up in a more cohesive (read: readable) manner.

The Bones Transpiler

Though time to explore is limited, these past few weeks I have been planning out a new version of an old transpiler project of mine called Bones. Bones is a lightweight digital archive compiler designed to take several markdown files and package them up in a, well, digital archive. It’s a command-line tool that boasts zero-configuration, lightning-fast build times, and a simple, familiar Markdown-esque syntax. I’m writing it to meet my specific online teaching needs, and look forward to finally getting it in the hands of the community sometime in the near future.

Writing (and researching) a special kind of bytecode interpreter

I’ve also been tinkering around with some ideas for a bytecode interpreter that is designed to use a language AST that has two kinds of functions: key functions, which perform a set of statements, and value functions, which evaluate to an expression. My hypothesis is that categorizing a function as either a expression or a statement yields performance increases at compile-time. We’ll see how it goes.

I’m not sure when the next update will be, but I am hard at work on a few tutorials that I’m looking forward to sharing soon. Until then, have a wonderful time tinkering.


  1. At the end of the day I want to to look back on these days and feel confident that all the time I spent away from my kids and spouse was well-spent. I’ve tried to work at for-profit startups. I’ve tried being a business owner. I’m just not motivated by making people rich (and I include myself in there). I am, however, very motiviated to create things that will help make the world just a little bit better. ↩︎