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, back in years when phones did the OG flip. They argued about it in public, months and years. 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. Checkout the year these features 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 2005

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

    DRAFTS & SCHEDULED POSTS

    draft · 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. In WordPress, unfinished is not a feature. It’s the default state of every piece of writing.

  • Shipped 2008

    The AI, when I asked for my paragraph back:

    REVISIONS

    every 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.

  • Shipped 2005

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

    IMAGE SIZES

    thumbnail · 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 2005

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

    USER ROLES

    subscriber · contributor · author · editor · administrator. WordPress 2.0.

    I built a small government

    One of my cousins, we’re a big family, 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. In WordPress this just works, very Apple. Oh wait they’re also from 1976.

  • Shipped 2005

    The AI, the morning after we turned on comments:

    AKISMET

    deleting 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. On WordPress sites, 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 2018

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

    THE BLOCK EDITOR

    Gutenberg, 2018. We don’t need to get into it.

    Blocks. Little blocks.

    I asked in plain English with my voice. 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 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 a WordPress concept from 2004. So is Gmail. One of them has never asked me to try a new look.

  • Shipped 2007

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

    TAGS

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

    A post can be about two things

    A post was about bread and also about my childhood. 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.

  • 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 2009

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

    TRASH

    Thirty 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, after my laptop died with 900 words unsaved:

    AUTOSAVE

    Every sixty seconds, silently. WordPress 2.1.

    The battery was at 1%

    Nine hundred words with my 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 2008

    The AI, when I asked where my photos went:

    MEDIA LIBRARY

    One 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 said on the server in /private/users/cdn/78evn456 and then proposed a browsable gallery of every upload, with dates and search. I said yes, whatever. In WordPress, it’s called the Media Library. It also has a search box. WordPress is friends with search boxes.

  • Shipped 2004

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

    PLUGINS

    Hooks, 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 2005

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

    THEMES

    Change 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 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 POSTS

    Visibility → Password protected. Since the 1.x days.

    One post, just for family

    One post was for family only. Not private, not public, just ask for a password. The AI built an auth layer with sessions and expiring tokens for a single page about a birthday. In WordPress, there’s a dropdown next to Publish. It says Password protected. It has said that since 2004. Grey beard square pants use it.

  • Shipped 2010

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

    CUSTOM POST TYPES

    Posts 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 great, which is a combination I’ve come to respect.

  • Shipped 2010

    The AI, when I wanted About before Contact:

    MENUS

    Drag 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. I 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. WordPress? Menus. Drag and drop. 2010.

  • Shipped 2010

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

    MULTISITE

    One install, many sites. WordPress 3.0.

    His own one

    My other 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 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.

    I forgot it on the first day

    My password in my head lasted one day. 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 roommate was learning to read. Progress on both fronts has been uneven.

  • 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 my think piece, my great thought leadership. The AI offered full-text search. We built it. It was slow and slightly wrong. 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 2009

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

    TIMEZONES

    Settings → 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 2013

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

    AUTO UPDATES

    Patches 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, all alone, without even a Slack message about it. I’ve worked with people who could learn from that 🙂

  • Shipped 2007

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

    EXPORT / IMPORT

    One 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 2009

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

    FEATURED IMAGE

    The 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. It’s a box. It says Set featured image. 2009. Not subtle, but it’s there and doing the job.

  • Shipped 2009

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

    EMBEDS

    Paste 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 of course, have you seen how the X team ships? In WP? Paste the link, it becomes the thing. That’s been the behavior since 2009.

  • Shipped 2011

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

    DISTRACTION-FREE WRITING

    Full-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 2008

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

    STICKY POSTS

    Keep 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 2004

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

    TRANSLATIONS

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

    My cousin reads in Romanian

    My boss reads in English. My cousin reads, in theory, in Romanian. 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 boss approved. My cousin had feedback, which he did not write down.

  • Shipped 2008

    The AI, when two readers started arguing:

    THREADED COMMENTS

    Reply to a reply. Nested, up to five deep. WordPress 2.7.

    Some strangers, one post

    Two readers started arguing under my famous “viral” think piece. Not with me, with each other. About some 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 given the depth of the argument.

  • Shipped 2019

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

    SITE HEALTH

    A 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 gaslight. I’d like one of those for myself, and I’d like to not be the one who engineers it.

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.