
My blog was a piece of shit. I fixed it. Eight features, one session, three mistakes. I'm coining a term.

More Stories

Publishing blog posts from my phone with Claude and GitHub Actions
Three files, a GitHub label, and a Claude skill. The whole setup for going from post idea on my phone to live on the site without touching a code editor.


Two Claude Code tricks I actually use every day
Profile switching for clean account separation, and audio notifications so you stop babysitting the terminal. Both take five minutes to set up.


The Model Is Not the Variable Anymore. The System Is.
The real shift was not becoming a power user. It was realizing the model was no longer the main variable. The surrounding system was.


I Canceled Cursor. Claude Code Is the Default.
Canceling Cursor was not a dramatic decision. The overlap phase was already over. Claude Code is the default and has been for a while.


Claude Code Was Winning. I Just Wasn't Listening.
The switch was not clean. The old lane still existed, but the terminal was already taking the work that mattered most before I was ready to call it the default.


I Stopped Defaulting to OpenAI
There is a real difference between sampling a model and repeatedly choosing it. This is the point where the preference stopped being theory and started becoming habit.


The Interface Was Solved. The Model Wasn't.
Once the surface stopped being the problem, the more interesting question became which model actually fit the work. That is where the preference started shifting.


Cursor Fixed the One Thing Browser AI Couldn't
The biggest shift was not a smarter model. It was finally putting the tool where the work already lived and cutting out a huge amount of pointless setup.


Copying Code Into a Chat Box Is Not a Workflow
The model is useful. The interface is the problem. Copying code into a detached chat box and hauling the answer back is a workaround, not a workflow.


ChatGPT Replaced the Worst Part of Technical Search
The first real shift was not replacing engineering. It was getting past the dumbest part of technical search faster and preserving momentum.


It Is Getting Easier to Spin Up Ideas Than Finish Them
Ideation cost is down. Shipping cost is unchanged. That gap is real and I have no reason to think it closes on its own.


I Keep Opening It Before I Fully Trust It
The usefulness has outrun the comfort. That is the honest state of things right now.


ChatGPT Is Weirdly Good at Front-End Grind Work
The model is not doing the architecture. It is doing the part nobody wants to do, and doing it fast enough to matter.


ChatGPT Is Replacing the Dumbest Part of Search
The first 20 minutes of every technical problem have always been stupid. I stopped paying them.


Redacting personal identifiable information with Pino.js
Before Pino 5, developers using Pino to manage their applications logs would add a library known as pino-noir to hide sensitive information. Now Pino 5 has redaction built right in! The developer documentation is excellent, but I figured a microblog about configuring Pino to target specific information would still be helpful as the pattern has changed slightly.


Yikes, It's Been a While
Big yikes. I haven't written anything in a while for a myriad of reasons. The easiest one to lean into is just 'life,' and it's appropriate because it's been an interesting one these past few years. Not only have I leveled up exponentially as an engineer, but I've also just flat out survived being a human being.


Front End Developers: Activate CSS Grid Layout in Chrome
You’re probably sitting there and thinking: “Well I already use a grid layout, so yeah…” Just give it a try. Google might seem overly ambitious at times, but there’s a few things that CSS Grid Layout does really well. Maybe even better that current conventions.


This Should Be the Miami MetroMover Extension
As you can see, Miami’s mark as a world class city is clearly nonexistent until we have some sort of public transit infrastructure that let alone makes sense. Forget about rivaling any of these beautifully architectured public transportation lines, because it’s not happening.


Parsing an RSS Feed in Ruby on Rails
Earlier this week I was tasked to parse some data from an RSS feed with Ruby. As soon as I start googling I get a bunch of stuff about “simple” ways with gem’s like “simple-rss” or “feedjira.” Both have great documentation, but Ruby is already easy enough sometimes.


The Bitcoin Halvening is Among Us
On October 6th, 2014 the BearWhale was slain on the BitStamp exchange. The people at shapeshift.io commissioned two artists rendering of the event. The more humanistic version is depicted above.


Set up an http server in node in 3 steps
There’s a lot of mobile bitcoin wallets out there in today’s app market. Which one you choose is a matter of personal preference and choice of features. Most have built out extensive security features like easy ways to backup your wallet and rotating addresses for every transaction. Here’s a concise guide on how to start your first Bitcoin wallet using Breadwallet.


Bitcoin Wallet Guide 101: Breadwallet Part 2
There’s a lot of mobile bitcoin wallets out there in today’s app market. Which one you choose is a matter of personal preference and choice of features. Most have built out extensive security features like easy ways to backup your wallet and rotating addresses for every transaction. Here’s a concise guide on how to start your first Bitcoin wallet using Breadwallet.


Bitcoin Wallet Guide 101: Breadwallet Part 1
There’s a lot of mobile bitcoin wallets out there in today’s app market. Which one you choose is a matter of personal preference and choice of features. Most have built out extensive security features like easy ways to backup your wallet and rotating addresses for every transaction. Here’s a concise guide on how to start your first Bitcoin wallet using Breadwallet.

