RSSAmplifier

Blog

mikey.bike - journal

mikey.bikeRSS feed ↗10 posts

Latest posts

Favorite Things of 2025

1Zpresso ZP6 . My coworkers who are deep coffee nerds convinced me to get rid of my cheap spice grinder and buy a $300 heavy piece of aluminum to hand-grind my own beans every morning. Arizona . It was my first time climbing here, east of Phoenix, at a crag called Homestead. I love the saguaro and the limestone tufas. Feels significantly different than Utah or Nevada. Speaking of climbs, Bullet…

Ten Years of Emacs

OK, technically it’s been eleven years and change since I first checked in my init file, but who’s counting. When I first tried Emacs I hated it. Hated it! Compared to Vim, just trying to navigate around felt agonizingly cumbersome: mashing modifier keys, relying so much on my left pinky, firing off random commands by accident. Vim, with its modes, values movement : a lot of programming is jumping…

Postgres enum migrations

Make illegal states unrepresentable! they said. And so at work we went and used postgres enums everywhere where we could. I count 72 uses of CREATE TYPE ... AS ENUM in our schema – everything from months of the year to status values returned from external APIs. It’s possible that we overused them. For instance, we had a marital_status enum with the variants single and married , which could just as…

dry-rb and lawless monads

At work, we make heavy use of the dry-monads gem, which gives us result objects (either Success or Failure ) and methods to bind them together, and if you squint it looks a lot like Haskell’s do notation. If you squint too hard, though, you might forget you’re in Ruby, where – despite the “principle of least surprise” – side effects are hiding all over the place. Here’s one way that can bite you…

Copilot, ChatGPT, and Emacs

The last couple weeks have felt a little like the early days of the pandemic to me. AI news is moving terrifyingly fast, and there’s an ominous sense that the world might be very different in a year or two. Even if these LLMs hit a ceiling soon, I think it’s a safe bet there will be a huge amount of fallout from what already is possible. I’ve been mostly trying to avoid the fuss, because thinking…

The messy pull request

In an ideal world, we’d all push up our branches for review composed of small, atomic commits, each producing a coherent build and passing all tests, each commit reviewed separately and signed-off on or rewritten to incorporate feedback, and merged cleanly back into the base branch. Such a merge might be followed by a slight smile, a sitting back in one’s chair and a little sigh of accomplishment.…

Asset hashing in Hakyll

This site runs on the Hakyll static site generator which has so far been great with one exception: it lacks a system for asset hashing. The problem is that if I make a change to a css file, if visitors have cached that asset, they won’t see the change if the file hasn’t been renamed. So I found myself manually renaming files like a heathen – base-5.css to base-6.css , etc. – as well as updating…

Book review: Field Notes From An Unintentional Birder (★)

I bought this book by chance from Porter Square Books, after waiting in a long line in the rain during a more stringent lockdown period, in February, looking for a book to get for my friend Sam’s birthday. Sam read it and let me borrow it, and I read it mostly on the plane flying out to Wyoming to go rock climbing with Sam. And, of course, to go birding. The descriptions of a first-time birder…

Slack as a resource

My friend Kevin posted some good points about email vs Slack and how Slack fails at being a good medium for business communication. I agree with all of his points, but I do think Kevin misses one important feature of Slack that, for me, still makes it a better default choice: search. Kevin and I happen to be coworkers, on the same team at the same BigCo. As engineers, we have to grapple with a ton…

Cameras are about ergonomics

In the old days of film cameras, you wouldn’t choose a camera because it performed better in low light, or had more dynamic range, or had better resolution. The sensor was on the cheap roll of 35mm film you bought, which worked just as well in a beat up manual K1000 as the fancy F5 shooting sports. When digital sensors arrived, they were terrible, and all of these things mattered because…