Video summary
This video serves as a semi-regular update detailing various projects and ideas the creator has been developing recently, with an emphasis on consolidating all content into a single hub via a dedicated URL that links to videos and accompanying articles. The speaker explains their shift in posting strategy, noting that while they aim for monthly long-form content, smaller updates are necessary to fill gaps between major releases. In this specific installment, the creator highlights three distinct pieces of work published last month: an article on procedural programming, a reflection on using AI agents for software development, and a new regular expression builder library written in Go.
The first update focuses on "Procedural Programming," where the author critiques object-oriented design for its over-reliance on fine-grained modularity and aversion to sequential logic. Instead, they propose viewing programs as data transformation pipelines that enter at one end, undergo various stages of processing, and exit cleanly at the other. This mental model is argued to be inherently easier to debug because issues can be isolated by bisecting the pipeline where output deviates from expectations. However, the author acknowledges that even this simplified approach faces challenges such as poor handling of mutable state, overly complex data designs, and contextual ambiguities, suggesting these are areas for future expansion in their writing.
The second topic covers a recent experiment using AI agents to overhaul a Japanese vocabulary drilling application built with approximately 15,000 lines of code. Previously relying on AI merely as a search replacement, the creator utilized tools like Claude and Codex to build an entirely new version over three or four weeks, though they note that incremental prompting yielded better results than attempting one-shot program generation. The project expanded beyond its initial scope due to how quickly features could be added, yet after auditing the codebase for bugs, the author found very few issues, attributing this success partly to their iterative prompting style and impressed by AI's capabilities within a CRUD context.
Finally, the creator discusses a new Go library designed as an alternative to existing regex builders that they felt were too tied to legacy syntax concepts or lacked composability. Their solution allows patterns to be constructed from sequences of other patterns with modifiers for repetition counts and novel capture group handling, a project completed in just a few days thanks largely to Opus 4.7 generating the bulk of the code while the author focused on API design. Looking ahead, the speaker mentions upcoming work involving Odin language projects intended to clarify its usage among users, as well as plans to finalize a long-awaited polemic on software quality that will need adjustments in light of recent advancements in artificial intelligence.
Read the full video transcript
Hi everyone. This is the first
installment of what should be
semi-regular updates about things I've
been working on.
I've recently been trying to post 30 to
60 minutes of material to this channel
every month, but some topics and some
projects are bigger or smaller than
others, so I'm not always going to hit
that mark.
As a compromise then, I'll be posting
updates like this when I need to fill in
the gaps and when I have smaller things
to talk about that don't necessarily
warrant their own videos.
First off, you should be aware of this
URL where I'm trying to consolidate
everything I make into one place. Every
video I make will be linked here and
most videos will have an accompanying
article of some kind, whether just notes
or a full text equivalent of the video.
Note at the top of the table of
contents, you'll find an update log that
tracks any notable additions.
In the last month, I've published three
things. The first is a post entitled
Procedural Programming How-To. This is
something I might make into a video
later, but it needs some work and
fleshing out. Honestly, the title might
not be super apt, so if there is a video
version, it might have a different name.
The post is an attempt to articulate in
very broad strokes what I think good
macro-level program design looks like
and for lack of a better term, I'm
calling that procedural programming.
The post starts with a quick recap of
the performance and structural problems
of object-oriented programming.
The structural problems I boil down to
two basic things. First, an
over-enthusiasm for fine-grained
modularity and second, an aversion to
sequential code and flat data.
The post then briefly describes the
alternative mental model for programming
as a data transformation pipeline. Data
enters one end of a pipeline, gets
transformed by various stages along the
pipeline, and comes out the other end.
The main argument is that this mental
model is the easiest thing to reason
about because it's naturally debuggable.
If the data comes out wrong, you can
simply bisect the pipeline to find the
problem.
The rest of the post though then tries
to explain why even this simple mental
model doesn't magically make all
programming easy.
How it too can get overly complicated
and hard to reason about, uh but also I
talk about how you can mitigate these
problems.
Specifically, the main problems are one,
poor handling of mutable state, two,
overly complex data design, and three,
the context surrounding your data
pipeline.
This is the part of the article that's
probably too brief and too abstract, so
it's something I should probably expand
upon at some point later.
The second post describes my recent
experience doing full AI coding for the
first time.
For a while, I had been meaning to
completely overhaul my Japanese vocab
drilling application, and I finally got
around to that using mostly Claude and
Codex to make a completely new version.
Before this project, I really only used
AI as a Google and Stack Overflow
replacement, so this was my first time
properly using agents.
In all, the project took me about three
or four weeks to build out, though that
was actually interleaved with work on
other projects.
Also, because adding features was so
quick and easy that tempted me to expand
the scope significantly. So, the program
ended up actually quite a bit more than
just a a vocab drilling app.
Uh anyway, if token limits weren't a
concern, and if the AI's simply worked
faster, I I imagine I could have done
the same project in less than a week.
Currently, the project is in a state
where there seem to be at least no major
bugs, and I feel like I just have to use
it for a few months myself to work out
the design issues.
As I describe in the post, I eventually
did a full audit of the approximately
15,000 lines of code, and I found very
little to complain about. To what extent
that's to the credit of the AI or to the
fact that I prompted very incrementally,
I'm not really sure.
I'll leave it to others to experiment
with one-shotting whole programs, but as
far as I found, the incremental
prompting style seems to produce
perfectly fine results far faster than
what I could have done manually.
So, I was overall very impressed by the
AI's capabilities, though to be sure,
this is in the context of a simple CRUD
app.
I have many more thoughts about AI,
software quality, and where this is all
going, so you'll probably see a post or
video about that soon.
The last post I made in the last month
is about a regex builder library I made
for Go.
I've long hated regexes, primarily
because of the syntax, the annoying
non-standardization, and then the quirks
of its concepts and terminology.
So, this is something that's been on my
backlog to-do list for a long time.
There are of course many regex builders
out there, but none that I really found
matched the kind of API I was looking
for.
Uh for example, the Go library called
Rex has two problems for me. First, it's
too interested in closely mirroring the
concepts and terminology of regular
expressions, whereas I wanted something
that isn't weighed down by that legacy.
Uh and second, I want the the patterns
to be composable. Meaning, having
defined a pattern, you should be able to
use it as an element of another pattern.
Something which Rex and actually very
few other regex builder libraries allow.
So, the core concept in my builder API
is to construct patterns as sequences of
other patterns, and each parent or child
pattern can have a few modifiers, such
as the expected number of min and max
repetitions. There's also a fairly novel
approach for the equivalent of capture
groups.
This is another kind of side project
that I probably never would have gotten
around to without AI. I just have too
many things on my backlog, too many
things I want to do. But, thanks to AI,
it's something I could very quickly
experiment with. It only took me like a
few sessions over a handful of days.
So, most of the 1,000 lines of code were
written by Opus 4.7. So, I can really
only take credit for the API design.
The code ended up being very simple, but
offloading the actual code into AI just
helped me focus on the design, and
again, iterate extremely quickly.
Even if the end result isn't a polished
product for other people to use, it's at
least satisfying for me to clear out
some old mental clutter from my backlog.
So, just be clear, if you take a look,
this is very much an experiment. It's
something that I'd again have to use
over many months or years to refine and
fill in the gaps, but in the meantime, I
thought the core design choices were
promising enough to share.
As for what's next, I have a few things
in the works that use Odin, which is
partly why I made those recent Odin
videos. I wanted to get people on the
same page about Odin.
Also, I've long been writing a big
polemic about software quality.
Hopefully, it'll be done relatively
soon, though I'll definitely have to
make some major adjustments to account
for recent AI developments.
Anyway, those are most likely the things
you'll see from me next.