new blog post + update /now
This commit is contained in:
@@ -1,11 +1,11 @@
|
|||||||
|
|
||||||
import __ASTRO_IMAGE_IMPORT_3KcDr from "src/assets/blog/my-ai-portrait.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fcreating-a-dating-profile-with-ai.md";
|
|
||||||
import __ASTRO_IMAGE_IMPORT_1G57ng from "src/assets/blog/ileopard/mac-os-10-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md";
|
import __ASTRO_IMAGE_IMPORT_1G57ng from "src/assets/blog/ileopard/mac-os-10-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md";
|
||||||
import __ASTRO_IMAGE_IMPORT_Z1ESWoO from "src/assets/blog/ileopard/itunes-7.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md";
|
import __ASTRO_IMAGE_IMPORT_Z1ESWoO from "src/assets/blog/ileopard/itunes-7.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md";
|
||||||
import __ASTRO_IMAGE_IMPORT_rrnp from "src/assets/blog/ileopard/ileopard-2-0-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md";
|
import __ASTRO_IMAGE_IMPORT_rrnp from "src/assets/blog/ileopard/ileopard-2-0-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md";
|
||||||
import __ASTRO_IMAGE_IMPORT_1mhYTO from "src/assets/blog/gifs/destroy-taskmaster.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2026%2Fmy-favorite-things-of-2025.md";
|
import __ASTRO_IMAGE_IMPORT_3KcDr from "src/assets/blog/my-ai-portrait.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fcreating-a-dating-profile-with-ai.md";
|
||||||
import __ASTRO_IMAGE_IMPORT_Zi2DqH from "src/assets/blog/gunpla/box.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md";
|
import __ASTRO_IMAGE_IMPORT_Zi2DqH from "src/assets/blog/gunpla/box.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md";
|
||||||
import __ASTRO_IMAGE_IMPORT_1OkzEl from "src/assets/blog/gunpla/all-the-parts.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md";
|
import __ASTRO_IMAGE_IMPORT_1OkzEl from "src/assets/blog/gunpla/all-the-parts.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md";
|
||||||
import __ASTRO_IMAGE_IMPORT_FYQiW from "src/assets/blog/gunpla/final.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md";
|
import __ASTRO_IMAGE_IMPORT_FYQiW from "src/assets/blog/gunpla/final.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md";
|
||||||
export default new Map([["src/assets/blog/my-ai-portrait.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fcreating-a-dating-profile-with-ai.md", __ASTRO_IMAGE_IMPORT_3KcDr], ["src/assets/blog/ileopard/mac-os-10-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md", __ASTRO_IMAGE_IMPORT_1G57ng], ["src/assets/blog/ileopard/itunes-7.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md", __ASTRO_IMAGE_IMPORT_Z1ESWoO], ["src/assets/blog/ileopard/ileopard-2-0-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md", __ASTRO_IMAGE_IMPORT_rrnp], ["src/assets/blog/gifs/destroy-taskmaster.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2026%2Fmy-favorite-things-of-2025.md", __ASTRO_IMAGE_IMPORT_1mhYTO], ["src/assets/blog/gunpla/box.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md", __ASTRO_IMAGE_IMPORT_Zi2DqH], ["src/assets/blog/gunpla/all-the-parts.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md", __ASTRO_IMAGE_IMPORT_1OkzEl], ["src/assets/blog/gunpla/final.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md", __ASTRO_IMAGE_IMPORT_FYQiW]]);
|
import __ASTRO_IMAGE_IMPORT_1mhYTO from "src/assets/blog/gifs/destroy-taskmaster.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2026%2Fmy-favorite-things-of-2025.md";
|
||||||
|
export default new Map([["src/assets/blog/ileopard/mac-os-10-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md", __ASTRO_IMAGE_IMPORT_1G57ng], ["src/assets/blog/ileopard/itunes-7.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md", __ASTRO_IMAGE_IMPORT_Z1ESWoO], ["src/assets/blog/ileopard/ileopard-2-0-1.png?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fileopard-a-retrospective.md", __ASTRO_IMAGE_IMPORT_rrnp], ["src/assets/blog/my-ai-portrait.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2022%2Fcreating-a-dating-profile-with-ai.md", __ASTRO_IMAGE_IMPORT_3KcDr], ["src/assets/blog/gunpla/box.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md", __ASTRO_IMAGE_IMPORT_Zi2DqH], ["src/assets/blog/gunpla/all-the-parts.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md", __ASTRO_IMAGE_IMPORT_1OkzEl], ["src/assets/blog/gunpla/final.jpg?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2023%2Fmy-gunpla-adventure.md", __ASTRO_IMAGE_IMPORT_FYQiW], ["src/assets/blog/gifs/destroy-taskmaster.gif?astroContentImageFlag=&importer=src%2Fcontent%2Fblog%2F2026%2Fmy-favorite-things-of-2025.md", __ASTRO_IMAGE_IMPORT_1mhYTO]]);
|
||||||
|
|
||||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"_variables": {
|
"_variables": {
|
||||||
"lastUpdateCheck": 1770174175478
|
"lastUpdateCheck": 1771730987319
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
---
|
||||||
|
title: "An AI Skeptic's Take on Agentic Coding"
|
||||||
|
pubDate: '2/21/2026'
|
||||||
|
tags: ['Tech', 'Programming']
|
||||||
|
---
|
||||||
|
|
||||||
|
As part of OpenAI’s latest effort to push their agentic coding tool, Codex, I was able to snag a free month of access to the latest models. So, I thought it would be an interesting opportunity to experiment, actually do a deep dive on coding agents, and gain a better understanding of their capabilities and limitations.
|
||||||
|
|
||||||
|
Firstly, I want to address the fact that I’ve been very vocal in my disdain for AI tools, but at the same time I’ve come to accept that these tools are here to stay, at least for the time being. Therefore, I want to experience them first-hand to give myself the most informed opinion I can. Though, as always, my opinion is subject to change, and it’s very likely I will swing back more towards the anti-AI side before long. 😅
|
||||||
|
|
||||||
|
I had three main use-cases I wanted to try out; making incremental changes to an existing codebase, converting an app from one language to another, and creating a new project from scratch.
|
||||||
|
|
||||||
|
First up, I took a music player app I’ve been working on for the last several weeks. I was having difficulty processing large batches of audio files efficiently, so I asked Codex to come up with some ideas to improve what I had wrote. It took a couple minutes to process everything, but it spat out some code and asked me to approve the changes.
|
||||||
|
|
||||||
|
It all looked good to me, so I gave it the OK, and ran the application. I was pretty impressed by the results, so I decided to take it a step further, and use it to implement a feature from scratch. So, I prompted it to create an audio playback queue, and connect it to the UI that I built. In less than 10 minutes, I had a very rough implementation of the feature up and running.
|
||||||
|
|
||||||
|
There were some structural changes I had to make to the batch processing code to be more reusable, and I still have a chunk of work to do on the playback queue, but Codex got me a lot further along than I would have got otherwise.
|
||||||
|
|
||||||
|
The other two use-cases – converting code from one language to another, and creating a project from scratch – were more along the lines of what I expected from Codex going in.
|
||||||
|
|
||||||
|
The code conversion experiment involved porting my app [KeyStash](https://github.com/ghall89/KeyStash) (an app for storing software license keys) from macOS to the web. While it did a serviceable job translating data structures, and approximating the UI, it made a lot of sloppy mistakes, like using an old and vulnerable version of Next.js, and referencing variables it didn’t even create. It even tried creating an image upload mechanism that not only didn’t even work, but wasn’t even a sensical addition. [^1]
|
||||||
|
|
||||||
|
My final experiment was pointing it to an empty directory and telling it to create a web-based rich text editor that can import and export .RTF files. It did a far better job with file uploads than the last experiment, but everything else was pretty poorly implemented. Though, it did manage to pull in more up-to-date dependencies. Also, while I wouldn’t call the code unreadable, I certainly would not want to maintain it.
|
||||||
|
|
||||||
|
Of the three use-cases, the only one I can see as being remotely useful for anything, beyond just messing around with experiments like these, is making incremental changes to an existing codebase. These tools seem to be at their best when generating small bits of code with as much context as possible, and, incidentally, the cognitive load required to review its output is so much more manageable.
|
||||||
|
|
||||||
|
It’s crystal clear to me how generating swathes of code – either ported from an existing codebase, or starting from a blank-slate – is a recipe for poor maintainability. Even the relatively simple rich text editor that I “vibe coded” had enough code to sift through and debug that I probably would have been better off just writing it myself in the first place. If you’re of the belief that a developer should be responsible for the code they ship, regardless of if it was written by hand or an LLM[^2], it’s easy to see how that model of development is grossly unsustainable.
|
||||||
|
|
||||||
|
All that being said, it’s incredibly tempting to utilize these tools for just building stuff quickly, and dealing with the consequences later. I get why it’s so appealing, and I have found myself struggling – and occasionally, failing – to resist that temptation. However, every time I gave in to that temptation, I found myself extremely unhappy with what was produced. I think “slop” would be a perfectly accurate word to describe it.
|
||||||
|
|
||||||
|
I think it’s important to remember, these tools aren’t magic, they’re exactly what they are – tools. Like any tool, they have a purpose that they’re good at, and you have to know when, and how, to use them properly. This technology is all so new; I think we’re all still trying to figure out what “properly” means, and it’s sensible to be skeptical at this point. Anyone who tells you otherwise, or says that you’ll be left behind if you don’t jump on the bandwagon now, is lying to you.
|
||||||
|
|
||||||
|
[^1]: I can only assume it was trying its best to “recreate” the functionality in KeyStash that grabs app icons when adding a new license key to the Mac version of KeyStash, without having any access to system APIs or the file system. 🤷♂️
|
||||||
|
|
||||||
|
[^2]: And if you’re not, maybe find a different career. Sorry, not sorry.
|
||||||
+10
-8
@@ -7,9 +7,11 @@ title: Now
|
|||||||
|
|
||||||
What's a [Now page](https://nownownow.com/about)?
|
What's a [Now page](https://nownownow.com/about)?
|
||||||
|
|
||||||
_Last updated: February 2, 2026_
|
_Last updated: February 21, 2026_
|
||||||
|
|
||||||
Currently unemployed, looking for a new job in web development. In between applying for jobs, I've been volunteering as a maintainer on a website for a humanitarian aid organization, and working on side projects on both web and Mac.
|
Currently unemployed, looking for a new job in web development. In between applying for jobs, I've been volunteering as a maintainer on the website for a humanitarian aid organization, and working on side projects on both web and Mac.
|
||||||
|
|
||||||
|
I'm currently building a music player for iPhone, because I [recently liberated my music collection from streaming](/blog/2026/setting-my-music-free), and I've not been happy with any of the existing options.
|
||||||
|
|
||||||
## 🎧 Listening
|
## 🎧 Listening
|
||||||
|
|
||||||
@@ -23,12 +25,16 @@ Currently unemployed, looking for a new job in web development. In between apply
|
|||||||
|
|
||||||
Playing a co-op campaign with some friends. We've been playing for a few hours almost weekly. We are currently deep in Act 3.
|
Playing a co-op campaign with some friends. We've been playing for a few hours almost weekly. We are currently deep in Act 3.
|
||||||
|
|
||||||
**[Life is Strange](https://www.igdb.com/games/ghost-of-yotei) - Switch**
|
**[Star Ocean: The Second Story R](https://www.igdb.com/games/star-ocean-the-second-story-r) - Switch**
|
||||||
|
|
||||||
An old favorite I re-purchased for Switch a couple years ago and only just got around to (re)playing.
|
Picked this up again after taking an extended break, still trying to find my bearings and deciding if I should just start a new save...
|
||||||
|
|
||||||
## 🎲 Rolling
|
## 🎲 Rolling
|
||||||
|
|
||||||
|
**[Grand Austria Hotel](https://boardgamegeek.com/boardgame/182874/grand-austria-hotel)**
|
||||||
|
|
||||||
|
My favorite heavy game of the moment. I don't own a copy but I've been playing it anytime I get a chance.
|
||||||
|
|
||||||
**[Knarr](https://boardgamegeek.com/boardgame/379629/knarr)**
|
**[Knarr](https://boardgamegeek.com/boardgame/379629/knarr)**
|
||||||
|
|
||||||
One of my favorite games in my collection, and it gets played more than any other. Read more [here](/blog/2025/knarr-a-pretty-cool-game).
|
One of my favorite games in my collection, and it gets played more than any other. Read more [here](/blog/2025/knarr-a-pretty-cool-game).
|
||||||
@@ -37,10 +43,6 @@ One of my favorite games in my collection, and it gets played more than any othe
|
|||||||
|
|
||||||
I bring this with me to board gaming sessions alongside Knarr, but it doesn't get played quite as much. Would love to get more plays in.
|
I bring this with me to board gaming sessions alongside Knarr, but it doesn't get played quite as much. Would love to get more plays in.
|
||||||
|
|
||||||
**[Point Galaxy](https://boardgamegeek.com/boardgame/431998/point-galaxy)**
|
|
||||||
|
|
||||||
I've got one play of this in recently, and I'm not quite sure how I feel about it. I want to get more plays in to get a better idea if I like it. I did enjoy Point Salad, which this game is a reimplementation of.
|
|
||||||
|
|
||||||
## 📺 Watching
|
## 📺 Watching
|
||||||
|
|
||||||
Nothing at the moment...
|
Nothing at the moment...
|
||||||
|
|||||||
Reference in New Issue
Block a user