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

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.

Jun 14, 2020 - 14 minute read - quantum mechanics

Crackpot Post: Breaking Bell's Inequality?

This is very much a crackpot post. I’m not an SME in the area which I’m writing, so I’m totally unqualified to write on the subject and certainly wrong. But as I was digging into quantum stuff, I had thoughts. I did math. I even plotted a few things. Sometimes something seems all mysterious and astounding. Then you learn how it works, and it’s really disappointing. For me, magic tricks often have been that way.

Aug 25, 2019 - 10 minute read - programming

Making Coding Easier

I’ve spent a lot of time over the course of my career in other people’s code, and as a result, I’ve learned a lot about what kinds of things make code easy to navigate, and which things made reading and debugging code more difficult. The way I promote coding styles are reflections of those things which made things easier, and avoiding those things that make it harder. When I get into a code base, I want to be able to easily:

Aug 19, 2019 - 8 minute read - refactoring programming

Defunctionalizing Quicksort

I’ve know for a long time that you could convert any iterative function to be recursive and vice versa, but up until recently, I only knew how to go from iterative to recursive in a mostly formulaic way. I recently saw a cool presentation where he shows a refactoring to deterministically (at least AFAICT) go from a recursive function to an iterative one. It took me a bit of rewatching and fiddling as to how to apply it, but now having done a few exercises, I have a good feel for it, and I thought perhaps using a slightly more involved example might help explain it to others.

Aug 17, 2019 - 4 minute read - kanban organization GTD productivity agile agile organizer

I’ve Moved From Paper To…. Paper

(see here for the full Agile Organizer series) I’ve been using the agile organizer for better than four years and it’s worked swimmingly. But I started working at Dropbox last year on a product called Paper. I figured I’d give Dropbox Paper a go to see how well it might fit in with the Agile Organizer, either for collection or whatever. Well, after 16 months, I’m still using Dropbox Paper to do AO.