Retro The three weeks I lost to a chatbot

Just use WordPress.

Everything you’re about to ask the AI to build was built already, by people who were tired then and are tireder now, in years when phones still flipped. They argued about it in public. Someone lost. The button shipped. You will now rebuild that button at midnight, for a monthly fee, and describe it to your friends as momentum.

The retro

Things I invented that already existed, with the year they actually shipped

Each one arrived as a “great idea.” Most are older than my direct reports. A few are older than me, which I’m choosing to find comforting.

Shipped 2008

The AI, when I asked where my photos went:

MEDIA LIBRARYOne place for every file, with search. WordPress 2.5.

Where do the pictures live

I uploaded forty photos and needed one. The AI said they were “in storage.” I asked where storage was. It proposed a browsable gallery of every upload, with dates and search. I said yes with the enthusiasm of someone approving a budget they’d already spent. It’s called the Media Library. It has a search box.

Shipped 2008

The AI, when I asked for my paragraph back:

REVISIONSevery version of every post, kept automatically. WordPress 2.6.

Would I like memory

I deleted a paragraph. I asked for it back. The AI said it didn’t store previous versions and asked if I’d like it to. I had not known remembering was optional. My phone keeps forty photos of the inside of my pocket. The paragraph is gone. I’ve made peace. I haven’t.

Shipped 2005

The AI, the morning after we turned on comments:

AKISMETdeleting Dmitri since 2005. Dmitri is doing great.

I want what Dmitri has

Four hundred comments about crypto, and one from a sincere man named Dmitri who loves my content and has a link. The AI suggested we build a spam filter. Dmitri has been automatically deleted every day for twenty years and has no idea. He’s never had a performance review. I think about that more than I’d like.

Shipped 2009

The AI, when my Tuesday post went out Monday night:

TIMEZONESSettings → General → pick your city. WordPress 2.8.

Tuesday is a place

I scheduled a post for Tuesday. It went out Monday night, in a city I’ve never visited. The AI said we should store times in UTC and convert on display. I did not want to learn what UTC was. I know what UTC is now. I think about it at 2 a.m., which is 00:00 somewhere that matters.

Shipped 2008

The AI, when I wanted one post to stay at the top:

STICKY POSTSKeep one at the top. It’s a checkbox. WordPress 2.7.

Pinned, like a grudge

I wanted one post to stay at the top. The announcement. The AI said we’d need a priority field and a custom sort order. For one post. It’s a checkbox. It says “Stick this post to the top.” 2008. Someone wrote that sentence, shipped it, and went home. I think about them fondly.

Shipped 2010

The AI, when I said “it’s like a post, but it’s a recipe”:

CUSTOM POST TYPESPosts that aren’t posts: recipes, events, people. WordPress 3.0.

Like a post, but a recipe

I said: it’s like a post, but a recipe. The AI built a Recipe model. Then events. Then staff. Then testimonials, which nobody asked for. Everything is like a post, but something. WordPress noticed in 2010 and made one mechanism for all of it. It has an unglamorous name and it works, which is a combination I’ve come to respect.

Shipped 2005

The AI, when I asked for a post to exist without being public yet:

DRAFTS & SCHEDULED POSTSdraft · pending · scheduled · published. post status, 2005.

I invented “not yet”

I wanted to write something and not publish it. Then I wanted it to go out Tuesday. Then I wanted someone to check it first. The AI said “great idea” three separate times. Unfinished is not a feature. It’s the default state of every piece of writing, including this one.

Shipped 2003

The AI, when I couldn’t find the bread post:

SEARCH?s=bread. Since 2003. Not great. Present.

Where is the bread post

I couldn’t find the bread post. The AI offered full-text search. We built it. It was slow and slightly wrong, like me before nine. WordPress has had a search box since the first release. It’s not a good search box. It’s a search box. Having one at all turns out to be most of the job.

Shipped 2011

The AI, when I said the editor had too many buttons and I just wanted to write:

DISTRACTION-FREE WRITINGFull-screen editor. Just you and the words. WordPress 3.2.

Just the words, please

I said the screen was too busy and I wanted to just write. The AI proposed a “minimal mode” and then spent an hour on the toggle for it. WordPress added a full-screen writing mode in 2011. It’s one button. It hides the other buttons. I have never once wanted more from software.

Shipped 2005

The AI, when I said I wanted it to look different but say the same thing:

THEMESChange the look without touching the words. WordPress 1.5.

Same words, different coat

I wanted a new look, not new writing. The AI said we’d need to “separate presentation from content” and said it the way people announce an idea they had in the shower. That separation is the entire premise of a CMS. WordPress shipped themes in 2005. I’m not sure the AI knew that. I’m sure I didn’t.

Shipped 2004

The AI, when I wanted one post that only my family could read:

PASSWORD-PROTECTED POSTSVisibility → Password protected. Since the 1.x days.

One post, just for family

One post was for family only. Not private, not public, just a password at the door. The AI built an auth layer with sessions and expiring tokens for a single page about a birthday. There’s a dropdown next to Publish. It says Password protected. It has said that since 2004. Grandma uses it.

Shipped 2003

The AI, when a reader asked how to “follow” the site:

RSS FEEDS/feed. Since day one. Still works. Nobody’s monetized it.

I invented following

A reader wanted to know when I posted. The AI proposed a notification pipeline. RSS is twenty-three years old, has outlived three social networks, and has never once sent me a push alert about a sale. It has no growth team. That might be why.

Shipped 2010

The AI, when I wanted About before Contact:

MENUSDrag the links. Nest the links. WordPress 3.0.

About, then Contact

I wanted About before Contact. The AI edited a file. I changed my mind. It edited the file again. My cousin wanted a dropdown. I have reviewed more changes to my own nav bar than to anything at work this quarter, and work had a reorg. Menus. Drag and drop. 2010.

Shipped 2004

The AI, when I said my mother reads in Romanian:

TRANSLATIONSgettext since 1.2. 200+ locales. Your site speaks Romanian.

My mother reads in Romanian

My mother reads in Romanian. My cousin reads, in theory, in English. The AI proposed “an internationalization layer,” and I agreed with the energy of a person signing a second lease. WordPress has been translatable since 2004. My mother approved. My cousin had feedback, which he did not write down.

Shipped 2004

The AI, when I said the links looked like a ransom note:

PERMALINKS/2004/05/my-first-post. Readable URLs. WordPress 1.2.

?p=847 is not a name

My posts had addresses like ?p=847. I said I wanted words in the link, like a person would. The AI said “great idea” and invented the slug. The slug is from 2004. So is Gmail. One of them has never asked me to try a new look.

Shipped 2004

The AI, when my cousin forgot his password on the first day:

LOST YOUR PASSWORD?The small link under the login box. Since 2004.

He forgot it on the first day

Not the second day. The first. The AI said we’d need a reset flow with a secure token and an expiring email. That took an evening. The small link under every login box on the internet has been there since my cousin was learning to read. Progress on both fronts has been uneven.

Shipped 2005

The AI, after one photo made the site take eleven seconds to open:

IMAGE SIZESthumbnail · medium · large, generated on upload. Settings → Media.

A picture is several pictures

One photo, eleven seconds. The AI explained that every image needs multiple sizes. I’d assumed a picture was a picture. It turns out a picture is a small family you have to maintain, and WordPress has quietly done that on upload since before smartphones had cameras worth the trouble.

Shipped 2009

The AI, when I wanted one picture to represent the whole post:

FEATURED IMAGEThe one picture that stands for the post. WordPress 2.9.

One picture to stand for it

I wanted one picture per post. The big one, the one that shows when you share it. The AI added a “hero image field.” Then it needed to appear in the list, the share preview, the feed. There’s a box. It says Set featured image. 2009. Not subtle, but neither was my request.

Shipped 2007

The AI, after my laptop died with 900 words unsaved:

AUTOSAVEEvery sixty seconds, silently. WordPress 2.1.

The battery was at 1%

Nine hundred words. Battery at one percent. I thought: I’ll save after this sentence. There was no after this sentence. The AI asked if I’d like autosave. I’d like autosave the way a person falling would like a floor. It’s been standard since 2007. I learned this the following morning.

Shipped 2018

Me, asking if I could just drag things around, like little blocks:

THE BLOCK EDITORGutenberg, 2018. We don’t need to get into it.

Blocks. Little blocks.

I asked in plain English, not knowing what I was asking. The room went quiet. Someone who’d been around for it put a hand on my shoulder and didn’t say anything, which was the right call. This card has no further notes.

Shipped 2019

The AI, when I asked “is it okay? like, generally?”:

SITE HEALTHA page that tells you what’s wrong, without judgment. WordPress 5.2.

Is it okay, generally

I asked if the site was okay. Not a specific thing. Generally, the way you’d ask a friend. The AI ran eleven commands and said “mostly.” WordPress has a page called Site Health. It gives you a score and a list and doesn’t editorialize. I’d like one of those for myself, and I’d like to not be the one who writes it.

Shipped 2004

The AI, when I said I wanted to add things without breaking things:

PLUGINSHooks, actions, filters. WordPress 1.2. Sixty thousand plugins later.

Add things, break nothing

I wanted new features without touching the old ones. The AI said we’d need a “hook system.” We built one. The names were bad. Around eleven, it lost the thread and started building me a CRM. There are sixty thousand WordPress plugins. Several are CRMs. None of them were built at eleven at night by someone who meant to make a blog.

Shipped 2013

The AI, when I asked what happens if something breaks while I’m asleep:

AUTO UPDATESPatches itself overnight. WordPress 3.7.

What if I’m asleep

I asked what happens when there’s a security issue at 3 a.m. The AI said I’d need “a process for applying patches.” I am the process. WordPress has updated itself in the night since 2013, quietly, without a Slack message about it. I’ve worked with people who could learn from that.

Shipped 2009

The AI, when I pasted a YouTube link and got a YouTube link:

EMBEDSPaste a YouTube link, get a video. oEmbed. WordPress 2.9.

I pasted a link and got a link

I pasted a video link. The post showed a link. I said I wanted the video. The AI wrote an iframe. Then another for Spotify. Then one for a tweet, which broke the next week, which is fair. Paste the link, it becomes the thing. That’s been the behavior since 2009. I did not need to supervise it.

Shipped 2009

The AI, after my cousin deleted the About page “to see what would happen”:

TRASHThirty days to change your mind. WordPress 2.9.

Deleted is a strong word

He deleted a page to see what would happen. What happened was it was gone. The AI suggested a trash feature with a 30-day grace period. A grace period, specifically for my cousin. WordPress added one in 2009, when he was nine, which in hindsight was good timing.

Shipped 2007

The AI, when I wanted a post to be about two things at once:

TAGScategories since 2003, tags since 2.3. Both, somehow.

A post can be about two things

A post was about bread and also about my grandmother. The AI built categories. Then I wanted smaller, looser labels. It built tags. I asked what the difference was, and it explained with the confidence of someone who’s never had to defend a taxonomy in a meeting. I have. It doesn’t go well for anyone.

Shipped 2008

The AI, when two readers started arguing under my bread post:

THREADED COMMENTSReply to a reply. Nested, up to five deep. WordPress 2.7.

Two strangers, one bread post

Two readers started arguing under the bread post. Not with me, with each other, about bread. I wanted their replies to nest, like a family tree of being wrong. The AI built it. WordPress stops the nesting at five levels. That limit is the most humane design decision on this page.

Shipped 2010

The AI, when my cousin wanted “his own one”:

MULTISITEOne install, many sites. WordPress 3.0.

His own one

My cousin wanted his own, same setup, his name on it. The AI proposed “a tenant architecture.” I nodded. I didn’t know what a tenant was in this context. I was the tenant. Multisite has run millions of sites since 2010, and, for about a month, one about my cousin’s sneakers.

Shipped 2007

The AI, when I asked how I’d ever leave:

EXPORT / IMPORTOne XML file. Your whole site. Yours.

How do I leave

I asked how I’d move everything if I wanted out. The AI went quiet the way vendors do, then offered to “design a migration format.” WordPress gives you one file with everything in it and holds the door. It’s done this since 2007. No exit interview, no retention offer.

Shipped 2005

The AI, when I said my cousin can write but shouldn’t be able to delete:

USER ROLESsubscriber · contributor · author · editor · administrator. WordPress 2.0.

I built a small government

My cousin needed a login. He should not have a delete button; this is based on evidence. The AI built a permissions system. I now manage a chart of who may do what for a website with nine readers, six of whom are me. I’ve run smaller teams with more oversight. Not many.

The one takeaway

Just use WordPress.

…and then complain about it.

That’s the tradition. That’s the actual product. Human beings have been doing it since 2003 and it has never once not worked. Let’s take the rest offline. Thanks, all. Great energy.