2026-11-11 03:00:00
Pete Millspaugh has a great post over on the Val Town blog where he documents his attempt at making generating the same website across a variety of AI tools.
I love the post. Here are a couple of thoughts that come to mind.
Pete decided to make a website for his conference talk, and he added a comments section to make it a less static / more dynamic demo.
This is interesting because LLMs are really good at generating one-off HTML pages you open at file://, but as soon as you start to introduce technological dependencies — like a database, or an analytics tool, or a service for sending email, or payment processing, etc. — the question becomes: How does the LLM choose which service to rely on?
It’s one thing to have the LLM choose React over Angular or Vue over Svelte. But how (and why) does it choose something like an auth provider? Does it build you a site with Auth0 or WorkOS or Clerk? How would a non-technical user even know how to weigh the trade-offs of making such a decision?
Pete said he was deliberately vague about these details, which is why I find his experience so intriguing. For example, here’s what he found after generating a site in Lovable:
My Lovable app is fullstack React, I learn, clicking around to find the code. It seems a bit heavy for a single-page site what with dozens of files […] The comments database seems to be using Supabase, which required no intervention on my part to set up. There’s a whole lot more—analytics, e-commerce and AI integrations, etc.
I’d be really curious to know what that “a whole lot more” was. Which tools/services did it choose to depend on?
How many people creating these sites understand that, even for a website that’s mostly static content, they’re being given an output that ships a JavaScript application framework, router, hydration runtime, analytics, component bundles, etc.? You asked for a sailboat, but you got an aircraft carrier. Do you know? Or more importantly, do you care?
But it’s more than just a choice of languages and frameworks. It’s also a choice of third-party services. Why Supabase? Why not Firebase? Or Neon? Speaking of Neon, here’s Pete’s experience with Vercel’s v0:
I copy-paste my prompt into the chatbox. After 11 seconds, v0 asks if I’d like to install Neon, because my comment wall needs a real database. Sure, why not. (Does that mean I need a separate Neon account? Vercel creates one for me, and later I’ll find a welcome email from Neon in my inbox.)
Frankly, this all feels like a space absolutely ripe for those kinds of business referral transactions you find in other industries.
Take real estate, for example. For lots of folks, when you buy a home you need an agent. (Not that kind of agent; a real estate agent.) Your real estate agent is there to help you answer all those common questions that come along with buying a home:
While you’re free to make all these decisions yourself, your agent is also there to help you pick. Presumably they’ll choose a company that reflects well on them, but there’s also undoubtedly good money to be made in referrals. After all, who else is dealing with people with these kinds of needs all day long?
The “make a website with AI” space has a parallel here which makes you wonder about the incentives behind the LLM’s decision-making. Why Supabase over Firebase? Because the LLM reasoned about it? Because, statistically speaking, it was the next most probable word? Because Supabase paid Lovable (and hopefully disclosed such preferential integrations)? If LLMs are already unpredictable and non-deterministic, nothing will make their actions more predictable and deterministic than some financial incentives.
Who is the customer here? The person generating the website? Or the company willing to pay for its services to be embedded in generated code? (That’s a lucrative business waiting to happen…)
As a customer, the credit systems behind these LLM systems are annoying as hell. Here’s Pete:
I’m using up “credits” as the machine works—0.70 so far, now 2.30, now 3.10, oh boy—and I have no clue what that means. There are no units. I’d prefer dollars. Are credits just dollars? As it turns out, no.
With another tool:
I do two more rounds of click “Continue generation” and wait until my website is ready: 5 minutes 36 seconds for 0.070 credits, and 1 minute 29 seconds for 0.024 credits.
It’s probably just me, but c’mon, who do these “credit” systems really benefit?
When my prompt is running, don’t show me usage like this:
Credits: 0.05 -> 0.0672 -> 0.0871
Just show me the cost:
Cost: $0.02 -> $0.21 -> $0.31
Don’t make me do the conversion of credits -> dollars on the fly. Computers are good at math.
[soap-box]
I know it might hurt your bottom line if I’m not thinking about how much money credits I’m spending, but c’mon, can we stop with the financial abstraction on top of financial abstraction?
I hate how so many hosting companies are doing this “credits” for compute primitives thing. It’s pitched as if spending credits is easier, because you can apply them across services, e.g. buy image transformations or serverless function compute, all with credits!
Yeah well guess what other financial abstraction I can apply to all those different services? Dollars and cents.
[/soap-box]
Pete’s conclusion:
I am both optimistic and pessimistic about this moment for making websites. I’m optimistic because end-user programming, the idea that everyone should be able to customize their own software, seems more possible than ever. I’m pessimistic because a slopsite, an AI-generated website with little to no human thinking involved, is often worse than no website at all.
That resonates — and feels generalizable. You fill in the blank:
An AI-generated ___ with little to no human thinking involved, is often worse than no ___ at all.
My conclusion?
Making Generating a website may be easier than ever. Understanding what you’ve generated, who you now depend on, and why? Not so much.
2026-11-09 03:00:00
I still think saying no is important. In that vein, here’s something I shipped by removing functionality (and I think my site is better for it).
For the longest time on my icon gallery sites, you could view a list of icons in four pixel dimensions:
Each of these sizes could be accessed via a control on the website. This has been true for years on my site, whether it’s the current site:
![]()
Or an older version of the site:
![]()
By default, I loaded the 128-pixel version of the icons. But if you wanted to see other sizes, you could.
However, the more I used the site myself the more I thought, “Four options is too many”.
When it comes to choice, what I really wanted was:
(Plus three is always a good number, unless you have a reason otherwise).
So I removed the big 512 option. If I want to study an icon at that size and detail, I click through to the icon’s detail page.
Now there are three options for list views: 56, 128, and 256. Small (great on mobile), 128 (great by default), and big (let me see more detail).
It’s simple to think about:
You don’t need to think about it anymore than that.
I mean you can, but I’ve found I don’t need to. So I’ve taken that off your plate. Less cognitive overhead.
![]()
Maybe one day I’ll add a slider and make it all dynamic. But for now, I like this small addition by subtraction.
2026-11-05 03:00:00
There’s that famous video of Steve Jobs explaining why they don’t didn’t make touchscreen MacBooks:
We thought about [a touch screen MacBook] years ago. We’ve done tons of user testing on this and it turns out it doesn’t work! Touch surfaces don’t want to be vertical. It gives great demo. But after a short period of time, you start to fatigue. And after an extended period of time, your arm wants to fall off. It doesn’t work. It’s ergonomically terrible. Touch surfaces want to be horizontal […] that’s why we’ve perfected our multitouch trackpads over the years.
I’m not going to weigh in on the new MacBooks. But what I find specifically intriguing in this video — and broadly relevant — is that phrase: “It gives great demo.”
Damn, that is a great line for so much of technology.
“It gives great demo.”
Something that looks amazing when it’s presented to you, but in practical day-to-day use you discover, “Actually this is kinda terrible.”
Demo is everything nowadays. Whatever can garner attention. Who cares if it works in practice, does it give great demo? Because demo time is sale time.
The purpose of a demo is to get your attention. To make you think about the product and that it exists. But a great product often makes you forget it exists at all.
It seems like a paradox: we’re attracted to what stands out, but we become enamored with what disappears.
Of course, this doesn’t just apply to products. People can give great demo, too. You can make a whole career out of just giving great demo.
2026-10-30 03:00:00
It’s time to celebrate a little win.
The other day, my mom contacted me saying her 10-year-old iPhone wouldn’t turn on.
After getting a hold of the device and doing some family IT support, I concluded the battery was dead.
So I bought her a new (old) one on Walmart (SE 3rd gen., if you must know).
Her old phone used a SIM card, so I was expecting the process to go something like this:
But step 4 and 5 never happened.
The new phone “just” connected. I called her number. I texted it. Everything worked as expected.
Everything worked as expected.
Everything worked as expected.
I didn’t have to Google a single question.
I was floored.
Flabbergasted.
I know I shouldn’t have been because that’s how SIM cards are supposed to work, right? Like that’s the whole promise of a SIM card: you can seamlessly swap them between phones.
And in this case, the tech worked exactly as promised.
As I write this, I’m kind of amazed at how amazed I am that everything “just worked”.
Shout out to anyone who has ever worked on SIM card technology.
More things like this please :)
2026-10-26 03:00:00
Here’s Dave Rupert writing about all those emails, texts, phone calls, etc. we’re getting these days:
Once upon a time it had utility, now it’s all noise and grifter slop demanding our attention and giving us to-dos
That last part really hit: “giving us to-dos”.
I feel this. So many of the messenger apps on my phone are other people laying claim to my time and attention.
It reminds me of an interaction I had with my Dad years ago.
This was back when cell phones were starting to become ubiquitous.
Not smartphones, mind you. Cell phones, i.e. telephones that were mobile. Texting wasn’t really a thing yet. These were devices for making voice calls wherever you went.
As a teen, it seemed like everyone had one: my teachers, my friends, even my friends’ parents.
But not my parents.
They were “behind the times”. (Everyone was getting cell phones and we didn’t even have caller ID on our landline!)
One night at family dinner I asked, “Dad, why don’t you have a cell phone?”
His response?
“Why would I want to allow other people to contact me whenever they want?”
I still think about that.
2026-10-22 03:00:00
I’ve mentioned before my interest in the history and development of nuclear weapons.
Currently, I’m reading The Doomsday Machine: Confessions of a Nuclear War Planner by Daniel Ellsberg (of Pentagon Papers renown).
In the first chapter, Ellsberg talks about his time working at the RAND Corporation during the missile gap years when the U.S. thought it was falling behind the Soviet Union in nuclear capabilities.
Many of his descriptions sound strikingly similar to the rhetoric coming out of places like Anthropic. For example, note the religious overtones of working at a corporation:
I loved RAND, where I ended up spending ten years [...] Much, I imagined, like members of a religious order would, I shared with my colleagues a sense of brotherhood, living and working with others for a transcendent cause.
They were insiders: burdened with the responsibility of knowledge others did not possess.
precisely in my early missile-gap years at RAND and as a consultant in Washington, there was our sense of mission, the burden of believing we knew more about the dangers ahead, and what might be done about them, than did the generals in the Pentagon or SAC, or Congress or the public, or even the president. It was an enlivening burden.
And what was their “enlivening burden”? Saving the world:
[My colleagues] shared a feeling—soon transmitted to me—that we were in the most literal sense working to save the world.
What really stood out was this part, where Ellsberg describes how he and his colleagues truly believed the end was nigh:
From the Air Force intelligence estimates I was newly privy to, and the dark view of the Soviets, which my colleagues shared with the whole national security community, I couldn't believe that the world would long escape nuclear holocaust. Alain Enthoven and I were the youngest members of the department. Neither of us joined the extremely generous retirement plan RAND offered. Neither of us believed, in our late twenties, we had a chance of collecting on it.
This reminds me of the report that AI researchers have taken up smoking as a way to signal their belief that AI will cure cancer before smoking kills them.
At this point, I wouldn’t be surprised to hear a lab like Anthropic announce they’re discontinuing all employer-sponsored retirement benefits. It’d be a small sacrifice on behalf of the employees to demonstrate their faith that universal high income is just around the corner. (The corporate cost savings would just be a nice bonus.)