Skip to content (Press Enter to skip to main content)

Blog Posts

Photo by kiryl

The website building nephew is a bit of a meme, but I've noticed that some people treat AI in almost the same way.

My Nephew Built My Website

There is a phenomenon I first noticed years ago where The Boss was interested in a website or software project, but happened to chat with his nephew[^1]. It was always a nephew. Not a cousin. Not a brother-in-law. Not a hairdresser's boyfriend. Not even a niece. The nephew is almost always a hobbyist, rather than a professional.

It usually went like this:

"So I was talking to my nephew over the weekend. Smart kid and he's into computers. He says he could probably build this thing in a week using something called PHP."

I thought this was just something I noticed, but it's actually a well-known phenomenon. Just do an internet search for "nephew built my website". You'll find a few gems[^2]. Often the projects don't go so well, but there are a few smart nephews out there.

Read more →

Photo by Sigmund on Unsplash

In the age of AI, Apple's closed ecosystem might be costing them their biggest opportunity yet. What gives, Apple?

I've been developing software on a Mac for over 15 years and using an iPhone for a bit longer than that. From the beginning, I've found Apple devices to be great for productivity. For me, MacOS combined the familiarity of the Unix shell with a well-thought-out desktop environment. I didn't have to waste time configuring and fixing things like I did on Windows. Most things just worked. Over time, everything became better integrated between MacOS, iOS, and iPad. I grew to depend on the calendar, reminders, and contacts.

Lately, it just doesn't feel the same.

Read more →

Photo by Alexey Ruban on Unsplash-

In which I think about how we use agents, or maybe just reinvent webhooks.

I'm always looking to find ways to become more productive. It's helpful to discuss architectural concepts with a Large Language Model--great for when you don't have a coworker to toss ideas around with. A conversational approach seems best. (EG: "What if we made this service easily overridden in config?") A LLM is lacking in several ways compared to a real flesh-and-blood coworker. For one, they never initiate a conversation with you. Sure coworkers are annoying at times, but don't you want someone to let you know there's doughnuts in the kitchen?

How can we do that with LLMs? How can we have an external event trigger an agent's workflow? I've done a bit of searching and there doesn't seem to be an accepted solution. Certainly multiple people have come up with solutions, but I haven't found a name for it. Someone has to name it, so I'll take a shot: ATP, or Agent Trigger Protocol.

Read more →

Image credit: Chris Lawton on Unsplash

About four years ago, I moved this site from an aging Drupal installation to GatsbyJS. I was happy with the performance, but the whole thing did feel overly complex for a simple blog. Finally in 2025, I'm switching again to Astro. And I used the Cursor IDE to build the site.

Read more →

Image credit: marcos mayer on Unsplash

"When I was your age, we used to do callback functions all the way down and be happy with it!"

-Someone (Possibly me.)

If you've written JavaScript for a while, you've probably seen code that needed several asynchronous steps and used callbacks within callbacks. This often led to the dreaded Pyramid of doom and made the logic very difficult to understand. Things are easier since ES2015 with the introduction of Promises, and then async/await in ES2017. I often wonder though: "Do we really need async/await?

Read more →