Jan 16, 2023 - 10 minute read - scaling configuration

Scaling Configuration: Object Building Languages

YAML, go templated YAML, HOCON, HCL(2), GCL, JSON. Just some of the common languages used for configuring the world we live in, because they need to be human readable, not just machine readable. At first, it’s all fine, but then to ensure consistency and reuse, they add templating features, and the templating languages become more complex to handle the emerging needs as projects require more. Some evolve to be Turing complete, some specifically eschew Turing completeness, as they need to ensure that at runtime, nothing bad happens.

Dec 27, 2022 - 8 minute read - programming

Choosing All Possibilities

There’s a chunk of code I’ve been playing with the last two and a half-ish years (judging by its git history) that for me is just really cool. It’s something I’ve been aware of since reading SICP, and I wrote a version of it probably a decade ago, but it was in a very specific application, rather than the more simplified and generalized form I have it in here. I had been reading about Prolog when I was reminded of it, and that solving things in a normal programming language rather than Prolog would be simpler, if only there was something that dealt with it.

Jan 22, 2022 - 10 minute read - productivity gtd

Organization System Essentials

I’ve been working with people and talking about their organization systems to help their systems help them. There are a few different systems that people use, and I wanted to figure out this question: what really are the essentials to have something that works? If your system isn’t quite working, it’s easy to feel overloaded. There’s too much to do, it’s hard to prioritize, it feels really hard to get a handle on what you should be doing.

Jan 21, 2022 - 3 minute read - crypto ethereum bitcoin

On Blockchain, Crypto, stablecoins, NFTs, etc.

I get asked about blockchain, crypto, NFTs, and such every once in a while, and rather than counting on my memory to remember the whole thing, I decided to just do a quick write up. My general thesis is this: the only things that really work for decentralization AND blockchain are things that themselves emanate from that blockchain. For example, bitcoins emanating from the bitcoin blockchain. Anything that the blockchain manages that doesn’t itself emanate from the blockchain requires some form of trust, auditing, and/or lawyers and strong contract law, otherwise it’s just garbage in/garbage out.

Jan 15, 2022 - 1 minute read - programming

I Was on a Podcast

I had spoken to a recruiter, Harrison Edney, at some point a while ago, and we had a really great conversation. He mentioned he wanted to start a podcast, and wanted me to be the first guest. I was like: “Sure, why not?” So we did, and the result is here which I don’t remember when we had the actual conversation, but it was posted on September 30, 2021.

Nov 14, 2021 - 4 minute read - programming

Yes, Programming is Hard

I saw the article in Communications of the ACM “What Does Saying That ‘Programming Is Hard’ Really Say, and About Whom?” and as a twenty-six year veteran of the profession, I thought “of course programming is hard! Duh!” I then spoke with a friend where after a bit said “Do they mean like writing? Writing isn’t hard, but writing a book is”. So in a sense, no programming isn’t intrinsically hard I guess, but in practice it is.

Nov 7, 2021 - 15 minute read - staff engineering gtd productivity

Managing Information as a Superpower

Many common archetypes of staff engineer involve a moderate to large scope of influence. One of the things I’ve come to realize, is in order to keep on top of things, and be even more effective is better management of information that comes to you. For me, the way I manage information has become a superpower. The scope of my last three positions has involved large scopes – up to about sixty people.

Aug 2, 2021 - 13 minute read - programming

Fun With Combinations

A co-worker recently gave a talk on shuffle sharding and the thought came to me: we know that that for n things taken k at a time you have nCk, and what that evaluates to; given n and k. How do we map a number between 1 and nCk to a unique set of selections, and vice versa, given the set of selections, can you get back to the original number?

Mar 21, 2021 - 9 minute read - leadership

Influence Without Authority

As you get more experience in being a software engineer, the trajectory that companies I have worked for look for you to be able to expand your scope. Something they will call out as a way to accomplish this is the term “influence without authority”, which is just a really fancy set of words that mean “persuasive”. I’ve had good soft skills for a while, but if you asked me what exactly it was I was doing, I’d have had a hard time explaining what it was.

Feb 28, 2021 - 7 minute read - debugging logs sqlite

Log Analysis Using SQLite

It all started because I suck at the log searching tool I’ll call <LST>¹. Mostly because I used it a little, but not enough to warrant me really digging in and learning it for real and internalizing its search syntax. Between me struggling with the tool, and that it would be multiple seconds between query and seeing results, I was getting really frustrated trying to diagnose issues with the services I was working on.

Feb 20, 2021 - 11 minute read - programming

Lies You Find In Code

When working in a code base that’s been around for a while, you will find lies in the code. These lies are usually not put there by nefarious actors, so there’s no conspiracy, or secret cabal. But either by engineers who don’t realize what they’ve done, or more commonly by code evolution, these things happen. These lies are the unaccounted time sucks when working in a code base, as people working on it have to dig deeper, search for things that don’t exist, maintain code that doesn’t need to exist, or worse make incorrect assumptions about the state of the world as they work through and around them.