Humans Have Been Upgraded by LLMs

If, twenty years ago, you took the most sophisticated AI thinkers in the world and set up a Turing test with a modern AI chatbot, they would all think they were chatting with a human. Today, that same chatbot would have a hard time fooling most people that have played around with them.

In a sense, humans have been upgraded by the existence of LLMs. If we had no idea that they existed, we would be fooled by them. But, now that we’ve seen them, we’ve collectively learned how they come up short.

Write While True Episode 43: Accountability Groups

There’s a hole in this process, and we need to fill that right now. This only works if you’re doing the lead activities consistently, and if they really do build up to the end goal. It’s true that working on the book is intrinsically fun and interesting. And if that’s all that happened, I’d probably be okay with it, but I really do want a book in the end.


Static Site Generation from Django

I created App-o-Mat in 2014 using Django (pre-1.0) and Python 2, and for all that time it was deployed on relatively cheap hosting that supported Python backends. Unfortunately, my host recently decided to stop supporting Passenger and Django had long ago abandoned fastcgi. My options were to upgrade my hosting or look for an alternative host.

I had been wanting to look at AWS’s App Runner service, so I started reading through the docs and doing a trial port of my site. Since I also use MySQL, I had to also learn RDS. At some point I knew enough to try to figure out what this was going to cost to host and it turned out to be more expensive than just upgrading my hosting platform, so I abandoned AWS.

App-o-Mat is a content-driven Django app. It doesn’t have any interactivity in the public pages—most of the advantage of Django to me is in its CMS admin interface where I can author new articles. The public site is essentially static.

So, rather than upgrade my host, I decided that I now just run the site locally on my laptop and use wget to crawl it to get a static site that I scp to my host. I had to manually cause issues to get my 404 and other error pages to be part of the crawl. I see that there’s a project,, that purports to turn any Django project into a static site generator, but it also doesn’t automatically handle your error pages.

I might use django-distill in the future, but I write new content very infrequently, so we’ll see.

February/March 2024 Blog Roundup

Personal productivity has been on my mind in the past couple of months because of a new tool I am working on. I shared thoughts in these posts

I also finally started Season 4 of my podcast, Write While True, which is where I share what I am learning about writing.

And I also shared my process for generating Transcripts for a Self-hosted Podcast.

Write While True Episode 42: Keeping Score

As I mentioned in the past two episodes, I’m trying to write a short book, and I want to share the process as I’m going through it. For example, to help me structure my time, I’m using the book The Four Disciplines of Execution.

In the last episode, I shared how I’m applying the second discipline. I defined an activity that I could do every day and a lead measure, a metric of that activity, that I could have as a goal for every week.

The idea is that if I constantly achieve this lead measure, I believe that the larger goal will be achieved. My weekly goal is to spend at least one hour a day on five different days working on the book. It’s a goal that resets every week. That way, a bad week doesn’t derail me. Every Monday, I have a chance to try to win that week. But I have to remember to do it. Keeping this lead measure top of mind is what the third discipline is about. And that’s what I want to talk about next.


Write While True Episode 41: The Lead Measure

My wildly important goal is to publish a fifty page book on a topic in my industry by the end of 2024. I defined it using the SMART goal format (S. M. A. R. T.), which means it’s specific, measurable, achievable, relevant, and time-bound. This is a good way to define goals, but the issue with SMART goals is that even though you can easily tell if you have reached them, they don’t drive day-to-day activities. That’s where the 2nd of the four disciplines comes in.


Transcripts for a Self-hosted Podcast

The latest Apple iOS update included an update to the Apple Podcasts app that added support for transcripts. They claim that they will auto-generate transcripts, but they allow you to provide your own. I have always provided a transcript for my episodes because I believe in accessibility. It’s also good for SEO, and my process starts from a script, so editing it to the transcript has never been a problem.

But, those transcripts are just text that I post on a web page. For the Podcast app, it’s much better to have a .srt file, which is a text file with the transcript and time codes. It looks like this:

00:00:00,000 --> 00:00:15,060
I'm Lou Franco, and this is Episode 40 of Write While True.

00:00:15,060 --> 00:00:18,960
Write While True is an infinite loop, and that's because I think of writing as an

00:00:18,960 --> 00:00:19,960
infinite game.

00:00:19,960 --> 00:00:24,520
A game I play for fun and to get better at it, like a game of catch.

This is a little harder to make manually, so I use whisper from OpenAI. Whisper can create the .srt file directly, and since the format is still text, I can make any corrections I need to. Whisper doesn’t make many mistakes, though, which is surprising because I have a New York accent that sometimes confounds AI.

From there, I just post the .srt file in S3 in the same bucket as my mp3. The Blubrry PowerPress plugin, which generates my podcast feed, lets me provide a URL to a transcript file.

Finally, to get Apple to use it, you need to login to your Podcast Connect account and go the the “Availability” section of your podcast and turn on the option that allows you to provide your own transcripts.

Write While True Episode 40: Let’s Write a Pamphlet

For season four, which I’m starting right now, my plan is to take you through my process as I try to write a short, focused book. I expect it to be about 50 pages. I call this kind of book a pamphlet.


PM-led vs. Engineering-led Time

At Trello, on the mobile team, we had a formal way of allocating engineering time to either working on PM-led or Engineering-led initiatives.

A PM-led initiative was something that ultimately rolled up to a OKR that was well-understood by the business. The requirements came from the PM and the PM could assess acceptability. An Engineering-led initiative was something like tech debt, changing our dependency package manager, improving CI build times or anything where the requirements came from the team itself and the PM didn’t know or care about it (and neither did anyone outside the team).

So, let’s say we decided the split was 60% on product manager led initiatives and 40% on what we called engineering-led. The split is arbitrary—the EM and PM agreed on what was appropriate for their team and set it for the year.

Then, any individual engineer at any one time (for a couple of sprints) was on either a PM-led project or an Engineering-led project. We did not want a single engineer to be split across PM/Eng-led work. This made it easy to know we were allocating correctly (without having to track time on individual stories or cases).

So, if it was 60/40 and we had 10 engineers, 6 would be on PM-led, and 4 would be on engineering-led at any one time, but it rotated.

This just needed to be mostly right over the course of a year—on any specific month it could be a little off if over the long-term, it matched.  For example, If the PM didn’t have work ready, we could do more engineering-led work temporarily.