I haven't called this site a blog in a while. I usually say "my site" or "my personal site." It feels liberating to just call it what it is, a blog.
I like blogging. In fact, it's largely responsible for how I ended up a professional programmer. I liked writing. I was dabbling in building web sites. I started running my own blog. And now, here we are.
You should like blogging too. We need more blogging, truly. There's a bit too much social media and micro blogging. Nothing wrong with that, but spend more time with your words. Put them up on your own site. Errrr, your own blog. There's something nice about owning it all yourself.
So with that in mind, I'm going to spend less time thinking about what this site should be and just blog. I'll be writing about the things that interest me. Technology. Programming. Writing. The arts. Media. More writing, less over-thinking. Let's just see where that leads.
In every language discussion, two conversations are happening simultaneously.
We all know this intuitively if not explicitly. There's the technical discussion and then there's whatever else is going on underneath. Francia explains why that second, "invisible conversation," as he calls it is happening.
They’re not just analyzing technical trade offs, they’re contemplating a version of themselves that doesn’t exist yet, that feels threatening to the version that does.
Go read the whole thing. It's well written and researched. There are some great practical tips here for how to reframe the discussion from the purely technical debate it's pretending to be.
Tech companies tend to focus on process, data, and engineering practice. Media companies focus on the humans driving the technology. Great software engineering orgs should have a balance of both.
It's a high bar, to be sure, but occasionally, companies do get this right. I've been watching sessions from the current Ubuntu Summit the last couple days, and I'm reminded that Canonical did pretty well at this when I was there.
When I joined, Ubuntu was using the tagline "Linux for human beings," and one of the things I really enjoyed about working there was the diversity of humans working at Canonical, the level of interest in human endeavors outside of tech, and the technical rigor we undertook in our work. There was a lot of effort on the teams I was on to figure out our development process, how to structure our work, and how to deliver value on the six-month Ubuntu cadence. There was also a recognition of humans behind the technical work, and I had great chats with colleagues there about art, literature, gaming, and more. I suspect this says as much about open source development as it does Canonical, but I did think about it while watching these Ubuntu Summit sessions recently.
Here’s the crux of the programmer identity crisis, according to its author Simon Højberg:
The ghosts of ancient Hackers past still roam the machines and—through the culture they established—our minds. Their legacy of the forging of craft lingers. A deep and kinetic craft we’ve extended and built a passionate industry on.
I find craft arguments compelling. I am a craft-focused coder first and foremost. By craft, I mostly just mean care and attention to detail, a love for the language and style of a program. Programming for the sake of other programmers, not just for the computer executing the code.
It’s this craft that Simon feels is in jeopardy with AI-assisted coding. About LLM coding, he writes:
It reeks of a devaluation of craft, skill, and labor. A new identity where our unique set of abstract thinking skills isn’t really required; moving us into a realm already occupied by product managers and designers.
The thing I want to talk about is the difference in craft and its alternative, what I’ll call the just-ship-it coder. I’ve jokingly referred to this as the coder who goes, “Did it work? Great, ship it!” It’s a low bar, and maybe you get a sense of my feelings about the pure just-ship-it coder.
Now realistically, a pure craft coder or a pure ship-it coder don’t exist. We’re all somewhere along that spectrum. I love craft, but I’m pragmatic. I work with folks who are more inclined to ship than worry about craft, but even they don’t want to produce slop no one can maintain. I do, however, think there’s a pretty sharp divide between craft and ship-it coders in the circles I work in.
My open source colleagues care deeply about craft. My professional colleagues care deeply about shipping code. I find adoption of AI-assisted tools much higher in my work colleagues than in my open source colleagues. I think there’s a corollary here to this idea that Simon writes about, that AI tools are going to ruin the craft of what we do.
I’m not sure it is. I think you could be a craft-loving coder and still use an AI assistant. See Mitchell Hashimoto’s post on Vibing a Non-Trivial Ghostty Feature. You can read his process there and see plenty of care and craft involved. As I said, I consider myself a craft coder, and I find it fun to use AI tools in my coding. I totally agree that there’s a risk that we don’t focus enough on craft with these tools, but that risk exists even without using AI. The trick for us who care about craft is to keep arguing for it, regardless of any specific tooling we use.
I've been say something to the effect of this for awhile now – every business is ultimately either a tech business or a media business, and the really great ones have figured out how to be both.
Let me make this concrete with an example. My oldest daughter is a hair stylist. She spends as much time posting videos and content on social media as she does doing hair. Is she a hair stylist or a tech-based media brand? Really, she's both. She needs tech and media to attract clients and for her business to be successful.
Customers have essentially placed their money in a savings account that accrues no interest, while giving these conglomerates an interest-free loan to use at the company’s discretion.
This article, clearly, doesn't see this as a positive thing, the way I see businesses becoming tech and media businesses as a good thing. And for sure, this is about consumer behavior that certain companies are exploiting. It's just the "everything" in the article title is a little misleading to me. I'm not sure that's true in the same way my "everything is a tech and media business" comment can be. I guess "A Few Big Corporation Are Trying to Be Banks" just doesn't have the same ring.
I haven't gotten to the reveal of the Hidden Reason Digital Comics Never Took Off in the latest episode of the Comic Industry Insiders podcast, but I'm already intrigued. I'm only 15-20 minutes into an hour and half plus episode, and they're already discussing the big questions. I'm linking to the episode for this reason: if you're thinking about the same sort of questions, questions of how digital content fits in with a traditional industry, you might find this episode really interesting.
I'm a comics fan, and I've been curious about what the Sweet team are doing with their new Sweet Shop digital comic store. I'm doubly curious because it seems like they're wrestling with what I think are the right questions – What makes a digital comics shop distinct from brick and mortar shops? Why do we need something new instead of just using Kindle? Why is it so hard for an online comics app to succeed?
While these are all comic industry question, the same sort of questions apply to almost any industry today that deals in content. At some point, your content business is going to have a traditional component and a new component. How do those compliment each other? How do they differentiate? How does technology enable that? How does technology get in the way?
We all need to be wrestling with these kinds of questions more, while also building out something new. I love hearing the thought process of anyone who is doing the same.
In a job search, testing experience will stand out more than DSA depth. It shows you’ve thought about what it takes to write high-quality software instead of just academic exercises.
I frequently ask questions about testing when I do interviews for this very reason. It tells me a lot about how a candidate thinks about code. I find there's also a high corollary between test and craft. Put another way, people who care about testing often care about the craft of coding.
We need more of both in today's professional software engineers.
It's the Wednesday before Dragon Con. I woke up this morning humming "it's the most wonderful time of the year." That's right, it's nerd Christmas. Dragon Con 2025 is upon us.
I'm trying to maintain a less busy schedule this year. I have a couple panels in mind, but I'm trying not to overload myself with planned activities. My goals are to be immersed in comics and comic culture and to play Marvel Multiverse RPG with some new people. I've joined a Sunday session of the game at Dragon Con, but I'm hoping to find some one-off casual sessions, too. I'll report back on how that goes.
I'm also going without cosplaying this year. The days will be filled with comic t-shirts and shorts for comfort. For the nights, I'm going with superhero-inspired everyday where. There's a theme appearing here. Just go, no pressure, and have fun.
I saw that it's Django's 20 year birthday today (via Simon Willison). Wow, that's hard to believe, but also, I know it all too well. My own career parallels Django's history.
Back in 2005, I was about a year into my first real professional career. I was what we called at the time a "webmaster." I ran the web site for the library systems of Auburn University. I had been programming in Python for a little over a year and had fallen in love with the language. Then I found Django as it was open sourced. It so immediately matched my mental model of programming for the web in Python that I started using it everywhere I could - small sites at the library and my own personal sites.
That work lead me to a deeper connection in the Python and Django communities, which lead me to meet Rob Curley, which lead me to the Washington Post, which ultimately really started my love of working in the publishing and media industries. Now here I am 20 years later, still doing web development, still loving Python, and still working in media, entertainment, and publishing. I don't use Django as much anymore, as my work these days is focused more on AWS and infrastructure, but it's influence on me cannot be overstated.
Cheers, Django! Here's to 20 years more. Carry on!