Cody Soodeen started out as an architect, but after studying biomimicry, became a product designer instead. Soodeen, who originally hails from Pennsylvania, learned about a bug called the Namibian Desert beetle. Evolved to survive in a harsh, arid environment, the beetle collects water from the air to survive. It angles itself partially upright to capture morning fog. Moisture collects on its bumpy wing surface, eventually forming into droplets that roll down its wings and straight into its mouth.
Inspired by the beetle, an obsessed Soodeen spent a decade creating Kara Pure, a freestanding air-to-water device. While its beetle contents are zero, the object uses dessicant technology to absorb water vapor from the air, then sterilizes it, ionizes it, enriches it with minerals (calcium, magnesium, zinc, lithium, selenium, strontium, and metasilicic acid) and finally passes it through a carbon filter. The result is clean, healthful drinking water.
Soodeen's company, Kara Water, launched the Kara Pure in 2021. User feedback has been positive, with one persistent complaint from city dwellers: Size. The Kara Pure is over 42" tall and weighs 71 pounds, a big ask for apartment dwellers. Cost also kept it out of the reach of many, as the asking price was $4,900.
Soodeen subsequently developed this Kara Pod, a more affordable 13-lb object roughly the size of a coffee maker.
For good measure, the more compact Kara Pod not only pulls a gallon of water a day out of the air, but can also brew coffee using Nespresso pods.
The Kara Pod has been successfully Kickstarted, with 28 days left to pledge at press time. Units start at $459 and are expected to ship in October.
A heartfelt provocation about AI-assisted programming.
Tech execs are mandating LLM adoption. That’s bad strategy. But I get where they’re coming from.
Some of the smartest people I know share a bone-deep belief that AI is a fad — the next iteration of NFT mania. I’ve been reluctant to push back on them, because, well, they’re smarter than me. But their arguments are unserious, and worth confronting. Extraordinarily talented people are doing work that LLMs already do better, out of spite.
All progress on LLMs could halt today, and LLMs would remain the 2nd most important thing to happen over the course of my career.
Important caveat: I’m discussing only the implications of LLMs for software development. For art, music, and writing? I got nothing. I’m inclined to believe the skeptics in those fields. I just don’t believe them about mine.
Bona fides: I’ve been shipping software since the mid-1990s. I started out in boxed, shrink-wrap C code. Survived an ill-advised Alexandrescu C++ phase. Lots of Ruby and Python tooling. Some kernel work. A whole lot of server-side C, Go, and Rust. However you define “serious developer”, I qualify. Even if only on one of your lower tiers.
level setting
† (or, God forbid, 2 years ago with Copilot)
First, we need to get on the same page. If you were trying and failing to use an LLM for code 6 months ago †, you’re not doing what most serious LLM-assisted coders are doing.
People coding with LLMs today use agents. Agents get to poke around your codebase on their own. They author files directly. They run tools. They compile code, run tests, and iterate on the results. They also:
pull in arbitrary code from the tree, or from other trees online, into their context windows,
run standard Unix tools to navigate the tree and extract information,
interact with Git,
run existing tooling, like linters, formatters, and model checkers, and
make essentially arbitrary tool calls (that you set up) through MCP.
The code in an agent that actually “does stuff” with code is not, itself, AI. This should reassure you. It’s surprisingly simple systems code, wired to ground truth about programming in the same way a Makefile is. You could write an effective coding agent in a weekend. Its strengths would have more to do with how you think about and structure builds and linting and test harnesses than with how advanced o3 or Sonnet have become.
If you’re making requests on a ChatGPT page and then pasting the resulting (broken) code into your editor, you’re not doing what the AI boosters are doing. No wonder you’re talking past each other.
the positive case
LLMs can write a large fraction of all the tedious code you’ll ever need to write. And most code on most projects is tedious. LLMs drastically reduce the number of things you’ll ever need to Google. They look things up themselves. Most importantly, they don’t get tired; they’re immune to inertia.
Think of anything you wanted to build but didn’t. You tried to home in on some first steps. If you’d been in the limerent phase of a new programming language, you’d have started writing. But you weren’t, so you put it off, for a day, a year, or your whole career.
I can feel my blood pressure rising thinking of all the bookkeeping and Googling and dependency drama of a new project. An LLM can be instructed to just figure all that shit out. Often, it will drop you precisely at that golden moment where shit almost works, and development means tweaking code and immediately seeing things work better. That dopamine hit is why I code.
There’s a downside. Sometimes, gnarly stuff needs doing. But you don’t wanna do it. So you refactor unit tests, soothing yourself with the lie that you’re doing real work. But an LLM can be told to go refactor all your unit tests. An agent can occupy itself for hours putzing with your tests in a VM and come back later with a PR. If you listen to me, you’ll know that. You’ll feel worse yak-shaving. You’ll end up doing… real work.
but you have no idea what the code is
Are you a vibe coding Youtuber? Can you not read code? If so: astute point. Otherwise: what the fuck is wrong with you?
You’ve always been responsible for what you merge to main. You were five years go. And you are tomorrow, whether or not you use an LLM.
If you build something with an LLM that people will depend on, read the code. In fact, you’ll probably do more than that. You’ll spend 5-10 minutes knocking it back into your own style. LLMs are showing signs of adapting to local idiom, but we’re not there yet.
People complain about LLM-generated code being “probabilistic”. No it isn’t. It’s code. It’s not Yacc output. It’s knowable. The LLM might be stochastic. But the LLM doesn’t matter. What matters is whether you can make sense of the result, and whether your guardrails hold.
Reading other people’s code is part of the job. If you can’t metabolize the boring, repetitive code an LLM generates: skills issue! How are you handling the chaos human developers turn out on a deadline?
† (because it can hold 50-70kloc in its context window)
For the last month or so, Gemini 2.5 has been my go-to †. Almost nothing it spits out for me merges without edits. I’m sure there’s a skill to getting a SOTA model to one-shot a feature-plus-merge! But I don’t care. I like moving the code around and chuckling to myself while I delete all the stupid comments. I have to read the code line-by-line anyways.
but hallucination
If hallucination matters to you, your programming language has let you down.
Agents lint. They compile and run tests. If their LLM invents a new function signature, the agent sees the error. They feed it back to the LLM, which says “oh, right, I totally made that up” and then tries again.
You’ll only notice this happening if you watch the chain of thought log your agent generates. Don’t. This is why I like Zed’s agent mode: it begs you to tab away and let it work, and pings you with a desktop notification when it’s done.
I’m sure there are still environments where hallucination matters. But “hallucination” is the first thing developers bring up when someone suggests using LLMs, despite it being (more or less) a solved problem.
but the code is shitty, like that of a junior developer
Does an intern cost $20/month? Because that’s what Cursor.ai costs.
Part of being a senior developer is making less-able coders productive, be they fleshly or algebraic. Using agents well is both a both a skill and an engineering project all its own, of prompts, indices, and (especially) tooling. LLMs only produce shitty code if you let them.
† (Also: 100% of all the Bash code you should author ever again)
Maybe the current confusion is about who’s doing what work. Today, LLMs do a lot of typing, Googling, test cases †, and edit-compile-test-debug cycles. But even the most Claude-poisoned serious developers in the world still own curation, judgement, guidance, and direction.
Also: let’s stop kidding ourselves about how good our human first cuts really are.
but it’s bad at rust
It’s hard to get a good toolchain for Brainfuck, too. Life’s tough in the aluminum siding business.
† (and they surely will; the Rust community takes tooling seriously)
A lot of LLM skepticism probably isn’t really about LLMs. It’s projection. People say “LLMs can’t code” when what they really mean is “LLMs can’t write Rust”. Fair enough! But people select languages in part based on how well LLMs work with them, so Rust people should get on that †.
I work mostly in Go. I’m confident the designers of the Go programming language didn’t set out to produce the most LLM-legible language in the industry. They succeeded nonetheless Go has just enough type safety, an extensive standard library, and a culture that prizes (often repetitive) idiom. LLMs kick ass generating it.
All this is to say: I write some Rust. I like it fine. If LLMs and Rust aren’t working for you, I feel you. But if that’s your whole thing, we’re not having the same argument.
but the craft
Do you like fine Japanese woodworking? All hand tools and sashimono joinery? Me too. Do it on your own time.
† (I’m a piker compared to my woodworking friends)
I have a basic wood shop in my basement †. I could get a lot of satisfaction from building a table. And, if that table is a workbench or a grill table, sure, I’ll build it. But if I need, like, a table? For people to sit at? In my office? I buy a fucking table.
Professional software developers are in the business of solving practical problems for people with code. We are not, in our day jobs, artisans. Steve Jobs was wrong: we do not need to carve the unseen feet in the sculpture. Nobody cares if the logic board traces are pleasingly routed. If anything we build endures, it won’t be because the codebase was beautiful.
Besides, that’s not really what happens. If you’re taking time carefully golfing functions down into graceful, fluent, minimal functional expressions, alarm bells should ring. You’re yak-shaving. The real work has depleted your focus. You’re not building: you’re self-soothing.
Which, wait for it, is something LLMs are good for. They devour schlep, and clear a path to the important stuff, where your judgement and values really matter.
but the mediocrity
As a mid-late career coder, I’ve come to appreciate mediocrity. You should be so lucky as to have it flowing almost effortlessly from a tap.
We all write mediocre code. Mediocre code: often fine. Not all code is equally important. Some code should be mediocre. Maximum effort on a random unit test? You’re doing something wrong. Your team lead should correct you.
Developers all love to preen about code. They worry LLMs lower the “ceiling” for quality. Maybe. But they also raise the “floor”.
Gemini’s floor is higher than my own. My code looks nice. But it’s not as thorough. LLM code is repetitive. But mine includes dumb contortions where I got too clever trying to DRY things up.
And LLMs aren’t mediocre on every axis. They almost certainly have a bigger bag of algorithmic tricks than you do: radix tries, topological sorts, graph reductions, and LDPC codes. Humans romanticize rsync (Andrew Tridgell wrote a paper about it!). To an LLM it might not be that much more interesting than a SQL join.
But I’m getting ahead of myself. It doesn’t matter. If truly mediocre code is all we ever get from LLM, that’s still huge. It’s that much less mediocre code humans have to write.
but it’ll never be AGI
I don’t give a shit.
Smart practitioners get wound up by the AI/VC hype cycle. I can’t blame them. But it’s not an argument. Things either work or they don’t, no matter what Jensen Huang has to say about it.
We’re a field premised on automating other people’s jobs away. “Productivity gains,” say the economists. You get what that means, right? Fewer people doing the same stuff. Talked to a travel agent lately? Or a floor broker? Or a record store clerk? Or a darkroom tech?
When this argument comes up, libertarian-leaning VCs start the chant: lamplighters, creative destruction, new kinds of work. Maybe. But I’m not hypnotized. I have no fucking clue whether we’re going to be better off after LLMs. Things could get a lot worse for us.
LLMs really might displace many software developers. That’s not a high horse we get to ride. Our jobs are just as much in tech’s line of fire as everybody else’s have been for the last 3 decades. We’re not East Coast dockworkers; we won’t stop progress on our own.
but the plagiarism
Artificial intelligence is profoundly — and probably unfairly — threatening to visual artists in ways that might be hard to appreciate if you don’t work in the arts.
We imagine artists spending their working hours pushing the limits of expression. But the median artist isn’t producing gallery pieces. They produce on brief: turning out competent illustrations and compositions for magazine covers, museum displays, motion graphics, and game assets.
LLMs easily — alarmingly — clear industry quality bars . Gallingly, one of the things they’re best at is churning out just-good-enough facsimiles of human creative work. I have family in visual arts. I can’t talk to them about LLMs. I don’t blame them. They’re probably not wrong.
Meanwhile, software developers spot code fragments seemingly lifted from public repositories on Github and lose their shit. What about the licensing? If you’re a lawyer, I defer. But if you’re a software developer playing this card? Cut me a little slack as I ask you to shove this concern up your ass. No profession has demonstrated more contempt for intellectual property.
The median dev thinks Star Wars and Daft Punk are a public commons. The great cultural project of developers has been opposing any protection that might inconvenience a monetizable media-sharing site. When they fail at policy, they route around it with coercion. They stand up global-scale piracy networks and sneer at anybody who so much as tries to preserve a new-release window for a TV show.
Call any of this out if you want to watch a TED talk about how hard it is to stream The Expanse on LibreWolf. Yeah, we get it. You don’t believe in IPR. Then shut the fuck up about IPR. Reap the whirlwind.
It’s all special pleading anyways. LLMs digest code further than you do. If you don’t believe a typeface designer can stake a moral claim on the terminals and counters of a letterform, you sure as hell can’t be possessive about a red-black tree.
positive case redux
When I started writing a couple days ago, I wrote a section to “level set” to the state of the art of LLM-assisted programming. A bluefish filet has a longer shelf life than an LLM take. In the time it took you to read this, everything changed.
Kids today don’t just use agents; they use asynchronous agents. They wake up, free-associate 13 different things for their LLMs to work on, make coffee, fill out a TPS report, drive to the Mars Cheese Castle, and then check their notifications. They’ve got 13 PRs to review. Three get tossed and re-prompted. Five of them get the same feedback a junior dev gets. And five get merged.
“I’m sipping rocket fuel right now,” a friend tells me. “The folks on my team who aren’t embracing AI? It’s like they’re standing still.” He’s not bullshitting me. He doesn’t work in SFBA. He’s got no reason to lie.
There’s plenty of things I can’t trust an LLM with. No LLM has any of access to prod here. But I’ve been first responder on an incident and fed 4o — not o4-mini, 4o — log transcripts, and watched it in seconds spot LVM metadata corruption issues on a host we’ve been complaining about for months. Am I better than an LLM agent at interrogating OpenSearch logs and Honeycomb traces? No. No, I am not.
To the consternation of many of my friends, I’m not a radical or a futurist. I’m a statist. I believe in the haphazard perseverance of complex systems, of institutions, of reversions to the mean. I write Go and Python code. I’m not a Kool-aid drinker.
But something real is happening. My smartest friends are blowing it off. Maybe I persuade you. Probably I don’t. But we need to be done making space for bad arguments.
but i’m tired of hearing about it
And here I rejoin your company. I read Simon Willison, and that’s all I really need. But all day, every day, a sizable chunk of the front page of HN is allocated to LLMs: incremental model updates, startups doing things with LLMs, LLM tutorials, screeds against LLMs. It’s annoying!
But AI is also incredibly — a word I use advisedly — important. It’s getting the same kind of attention that smart phones got in 2008, and not as much as the Internet got. That seems about right.
I think this is going to get clearer over the next year. The cool kid haughtiness about “stochastic parrots” and “vibe coding” can’t survive much more contact with reality. I’m snarking about these people, but I meant what I said: they’re smarter than me. And when they get over this affectation, they’re going to make coding agents profoundly more effective than they are today.
When my wife and I heard the news that American Science & Surplus launched a GoFundMe to help raise operating costs to move into a new warehouse, citing slumping sales since the COVID-19 pandemic punctuated by a huge drop-off in the last year, we began to look around our house and try to identify what bits of our home décor came from the very quirky, very geeky retail shop at 6901 W. Oklahoma Ave. The light-up moon atop our entertainment center? Yep. The kitchen measurement chart magnet on our fridge? Obviously. (Forty-eight teaspoons to a cup!) The Archie McPhee tiny hand, and the tiny hand for tiny hands, mounted in one of our kitchen plants? Oh yes. And my wife reminded me that we have a book about East Germany we bought there, because…book about East Germany. But in reality, there are enough weird novelty items in our house that it’s become difficult to tell what came from AS&S and what hasn’t.
That seamless integration of straight up weird shit from the Weird Shit Store is a microcosm of American Science & Surplus’ presence in Milwaukee proper: technically, it hasn’t been in Milwaukee since the city’s start, but it has, hasn’t it? (There are two locations in Illinois, as well.) I couldn’t tell you when I first became aware of AS&S, but it was some time before I moved to Milwaukee in the summer of 2002. I moved to this city for a number of reasons—my band was relocating, along with lots of other Green Bay music scene mainstays after the closure of the Concert Cafe. I was dating someone here, and the Fox Valley had started to feel smaller than what I wanted in a stomping ground. But knowing that there was a place in town that sold medical posters, novelty toys, graduated cylinders, and enough spare circuits and wires to build your own protocol droid was certainly one of many selling points that convinced me that Milwaukee could be my home. Hell, had I lived here in my teen years, I would have begged and pleaded with my parents to let me get a job there, assuming that I was cool enough to get hired. You can save your uber-hip local musicians and sports heroes; as far as I’m concerned, whatever nerdy purple-haired teenage comedian labeled the back scratchers with a Ted Nugent pun is the coolest kid in town.
I confess that when I read how soaring shipping costs were causing financial hardship for the store, I realized I forgot that there’s even an American Science & Surplus website, let alone one that takes orders. I never visit it, because, well, the store’s right there. Stepping through what feels like the entryway to an old grocery store or five and dime (albeit one with a flyer taped to the wall for a seminar on the dangers of AI), immersing oneself in the brick and mortar is an instant adventure. Record shops typically have two types of customers: those looking for a specific LP and others who show up with no particular goals in mind, just hoping to discover something they didn’t realize they needed until it’s right in front of them. AS&S is built for discovery, tailored to the shopper who wanders in having absolutely no idea what they’ll find until they find it. It sounds cliché at this point in the ongoing Death of Retail, but the hypnotic aimlessness of getting lost in a resale or surplus shop is fading, and that’s a drag, because anyone who has been there will tell you that getting lost in AS&S totally rules.
In 2006 my band was asked to play the South Shore Frolics parade (RIP, South Shore Frolics) on the Rushmor Records float, and were instructed to dress like space aliens. Where Rushmor made a mistake was in not telling us what kind of space aliens to dress like—hey, we could put any kind of nonsensically horrific outfit together and say we’re “aliens!” So to AS&S we went, where we picked up some white lab coats to complement the clear face masks and blue/green face paint we bought from Bartz’s Party Store. We looked horrifying. I’m pretty sure we scared, even scarred, some kids. We thank American Science & Surplus for the opportunity.
Not long after, I bought my first telescope since high school from them—one that I years later broke out during COVID lockdown to reignite my love of astronomy. Speaking of which, the eclipse watching party in the parking lot April of last year was an absolute hoot, with a line out the door to buy eclipse glasses while WMSE blasted cosmic tunes from their tent.
Every year, my wife and I do a run to the store to make a Christmas sweep, picking up random novelty toys for the niblings (you haven’t lived until you give your nephew a whoopie cushion from AS&S that promptly lasts for about five inflations before he accidentally pops it) and then hopping over to Lost World of Wonders to check out the trade paperbacks and Funko Pops. (Hop in to Albella Bargain Store for some vintage toys, and you’ve hit the nerd trifecta.) I am fairly sure that most every noise artist in the city has probably assembled a homemade tone generator from spare parts from this place, and I’m certain that family after family has stories of similar random treasure hunts. Ask my wife about her plastic trout. It’s small, it’s plastic, it’s a trout. It’s on her desk at work. No, it doesn’t do anything—it’s a trout.
Look, it’s always a little uncomfortable to see a capitalist business of any kind asking for money. Many of us might see a retail outfit post a fundraiser and react: “If they need extra help, they must not be that successful of a business, right?” But let’s be real—shit’s been really weird since COVID, hasn’t it? Retail of all kinds is floundering, and we all know the culprits: inflation, online retail giants and their accursed free shipping and loss leaders. And some people just still don’t feel comfortable in crowded stores. But small businesses aren’t a homogenous mash of soulless department stores or interchangeable Dollar Trees. Losing American Science & Surplus would actually alter Milwaukee’s identity, make it considerably less weird. More beige. Who needs more beige?
Yesterday, I stopped by the shop to snap some photos for this piece, and poke around to see what might call to me. Sure enough, I ended up leaving with a USB clip-on fan to mount on my mic stand for summertime drumming, some tree-shaped LED table light fixtures to add to the indirect lighting in the practice space, and a capybara finger puppet which now lives with the owl and rat finger puppets I got at Green Bay UFO Museum Gift Shop and Records (the Concert Cafe may be dead, but Weird Green Bay lives on).
As I wandered the aisles, I noticed a guy maybe eight years my junior exploring with two kids that looked to be around 7 or 8. I kept hearing them exclaim “that’s so cool!” every time some new curiosity caught their eyes. As of this writing, the GoFundMe is just shy of $82,000 out of a goal of $125,000. I trust those kids and I are going to continue to be wowed by cool, wacky shit from the Cool Wacky Shit Store for years to come.
Senate Republicans went forward with the vote today anyway, revoking waivers that allow California to pursue its climate goals and improve air quality by reducing emissions from cars and trucks.
Opponents say it’s an illegal move
“This is the easy way to do what the fossil fuel industry wants,” Sen. Sheldon Whitehouse (D-RI) said on the Senate floor during deliberations that ended past 1:00AM ET. “They had this quick and dirty, sneaky maneuver that they could pull off so they didn’t have to negotiate, they didn’t have to legislate, and they didn’t have to use regulatory process.”
The US Environmental Protection Agency (EPA) has granted California waivers to set its own rules for car and truck emissions since the Clean Air Act was adopted in 1970. The standards the state sets for vehicle manufacturers can influence the entire industry because California is one of the biggest car markets in the world. Seventeen states and Washington, DC have also adopted all or part of California’s vehicle emission regulations.
“California has used its waiver authority to push its extreme climate policies on the rest of the country,” Sen. Shelley Capito (R-WV) said in closing remarks on the Senate floor last night.
Environmental advocates, meanwhile, argue that GOP lawmakers attacked the state’s rights. “If other states don’t like California’s approach, they don’t need to follow it – but federal lawmakers shouldn’t be intervening to block states from providing cleaner air and a healthier environment,” Manish Bapna, president of the Natural Resources Defense Council said in a press statement today.
Both Senate and House Republicans used the Congressional Review Act (CRA) to revoke the waivers. The CRA allows Congress to overturn certain new rules with a simple majority vote and avoid a filibuster by the opposing party. But the Senate parliamentarian and Government Accountability Office — nonpartisan watchdogs — have previously found that the waivers aren’t considered recent rules within the parameters of the CRA.
The vote today sends the CRA resolutions to President Donald Trump to sign. Trump unsuccessfully tried to take away California’s authority to set its own tailpipe standards during his first term in office.
Auto trade groups haveopposed California’s plans to require more EV sales. “Disapproval of the rules is essential to ensuring a unified national vehicle marketplace that promotes continued progress on fuel economy while safeguarding economic growth and consumer interests,” Neil Bradley, executive vice president of the US Chamber of Commerce said in a letter to senators last week.