Follow buttons here act as you, not as @admin.
| Label | Kind | State | Action |
|---|---|---|---|
| @ricardo | local | — | |
| @rmdes | local | — | |
| @paul | local | — | |
| news.rss.chat | source | — | — |
| scripting.com | source | — | — |
| euwatch.micro.blog | source | — | — |
| www.techdirt.com | source | — | — |
| simonwillison.net | source | — | — |
| www.manton.org | source | — | — |
| feeds.kottke.org | source | — | — |
| rss.beehiiv.com | source | — | — |
| www.404media.co | source | — | — |
| brilliantmaps.com | source | — | — |
| shellsharks.com | source | — | — |
| www.platformer.news | source | — | — |
| podstandards.org | source | — | — |
| zacharykai.net | source | — | — |
We live in a world of ordinary abundance & luxuries only dreamed of in centuries past: music on demand, photographs, books, eyeglasses, refrigeration, vaccination, bicycles, and the washing machine.
Another busy day programming with Claude on Frontier. I still have to come up with a codename. But we got to a milestone today. I was able to create, edit, publish and revise a web app using the new version of the app still running on the old machine. When it's done I will get to retire this old Mac, keep it around so we can test the new code to make sure it does what the old code does, incredibly important when porting a development and runtime environment. Claude works on its stuff at night. The workload it's going to do tonight is the equivalent of several months time for a skilled human developer who manages their time well. As people get used to working this way, I imagine the AIs will learn how to better work with humans, if that is their destiny. I still can't believe we're doing what we're doing.
He hadn't posted in several years until today, so I didn't realize that Greg Brockman had a blog. It's powered by Svbtle. Some interesting posts in the archive, including one about OpenAI's mission from 2019 co-written by Ilya Sutskever:
Just like a computer today, an AGI will be applicable to a wide variety of tasks — and just like computers in 1900 or the Internet in 1950, it’s hard to describe (or even predict) the kind of impact AGI will have.
For TCM, Every Frame a Painting’s Taylor Ramos & Tony Zhou tell us how legendary Japanese filmmaker Yasujiro Ozu made the transition to color filmmaking. His first color film was Equinox Flower in 1958 and it took a couple of films for Ozu to work out how to best employ color.
When you watch later Ozu films, you’re struck by how similar two people can be. How often one place resembles another, how life itself is cyclical and Ozu used color as another way to build these patterns.
In the recent post about the supersonic trebuchet, I wrote that if I’d had access to engineering process videos like that when I was a kid, I would have grown up to be an engineer. Well, same thing for Every Frame a Painting: 12-year-old Jason had zero idea how filmmaking worked and videos like theirs would have fired me up to try my hand at it (no idea where I would have gotten a camera though…) Maybe it’s best that I grew up to do what I’m doing, where I can learn a little bit about all of these different fascinating things. 🤷♂️
Tags: color · film school · movies · Taylor Ramos · Tony Zhou · video · Yasujiro Ozu
GitHub is struggling this morning. It's slightly interfering with my work, so hopefully they get it under control soon. I've become quite dependent on it as a bridge to deploys and code review. Replacing GitHub is not currently worth all the integration hassle it would introduce.
We're bringing back the Micro Monday email newsletter! Meeting with @BonnieRue today about it.
I've built a custom workflow this time. It will only be sent to active users from the last couple of months who never unsubscribed from older emails. That way we don't bug people who have lost interest.
Two new episodes of Ric Burns’ 1999 documentary series New York will soon air on PBS. “Produced by the same team that created the original NEW YORK series, The Future of Cities presents a sweeping and dramatic portrait of New York since Sept 11th.”
Wavelength 2.0 for iOS is now available! I'll have more to blog about this later, but for now check it out on the App Store.
This is a major update with a new design. Great for recording and editing short podcasts. Included free with all paid Micro.blog plans.
Yale study: “A single-payer universal health care system could cover every American, save more than 100,000 lives a year, and still cost $1 trillion less than the system it would replace.”
Just hearing about this upcoming 6-part series with Barack Obama discussing his favorite books! I’ll definitely listen. But sounds like the “podcast” will be exclusive to Audible, so not actually a podcast.
John Gruber blogged about X and using XCancel:
I understand not wanting to visit Twitter/X. But if you feel that way, I do sympathize, but that’s your decision, and you should use tools to redirect Twitter/X links automatically. And if you’re wondering why I don’t just refuse to link to anything on Twitter/X, that just isn’t practical. I wish it weren’t so, but many people, including senior Apple executives, and many organizations post interesting content exclusively to Twitter/X.
I've switched all my links to XCancel.com because the signed-out experience on X is so user-hostile. I think about this because I know I've been linking to X more this year than in previous years. As John says, there is too much exclusive content over there. For me, it's all the AI company employees. (To minimize visits to X, I let ChatGPT research posts and send me a summary.)
I think we're entering a new phase for X as a platform. It’s a good time to reflect on what that means and how the open web and IndieWeb communities should respond. I would break down the various phases roughly like this:
Convincing people to leave X is difficult. What is easier, and what I tried to convey in my blog post about bringing back X cross-posting in Micro.blog, is a progression like this:
Every step makes the web a little better, even if someone doesn’t make it all the way through every step.
This takes time. It won't help to shame people when they link to X or when they try to build tools to use X simultaneously with other platforms. It won't help to assume the worst about everyone who remains on X. It only alienates people who could otherwise eventually support more open platforms.
Friday's big release was Qwen 3.8 27B, an Apache 2 licensed 27B parameter vision-capable LLM from Alibaba's Qwen research lab. I've been looking forward to this one: 27B is an excellent size for running a model on a reasonably specced laptop, and its predecessor Qwen 3.6 27B was impressive.
Qwen's self-reported benchmarks for this model are eye-opening. They show a boost from both Qwen 3.6 27B and the closed-weight Qwen 3.7-Plus, which was one of Qwen's strongest models of any size as recently as May this year. It will be interesting to hear what independent benchmarks have to say about the model.
I've been running the model on two different machines: my 128GB M5 Max MacBook Pro, and an NVIDIA DGX Spark. On both machines I'm running LM Studio and their 17GB Q4_K_M quantized build. I also tried using llama-server directly on the Spark.
Qwen's documentation describes the model as defaulting to xhigh for the reasoning effort, and the LM Studio GGUF I've been trying preserves that default:
Qwen3.8 comes with official support for
reasoning_effort, which can be used to adjust reasoning depth and control cost:
xhigh(default): for complex tasks demanding thorough analysismedium: balancing accuracy and speedlow: efficient reasoning optimizing for speed and cost
This is a hilarious default. It's absolutely not a good way to run the model, especially on consumer hardware. I've been finding the results extremely entertaining.
I quickly ran into problems with LM Studio's default context limit of 8,192 tokens - Qwen was using them all up thinking about even the most mundane of problems. I loaded the model with the full 262,144 maximum context length and that problem went away.
Here's the pelican riding a bicycle SVG I got from my first attempt with that increased context length. It took 21 minutes to generate, using 22,276 reasoning tokens to produce 3,223 tokens of output. You can read the reasoning trace here.

This is by far the best pelican SVG I've been able to generate with a model that runs on a local machine - and this Qwen is pretty small, just a 17GB file on disk. There's a lot to like about this:
Was that worth waiting 21 minutes for? Absolutely not.
Here's that same prompt run with reasoning turned off - transcript here. This one produced 3,715 tokens and took 137s - just over two minutes.
And just for completeness, I used OpenRouter to run the same prompt through the much larger Qwen 3.8 2.4T-A95B (released last week) and got this snazzy animated SVG:
Your browser does not support HTML5 video.
I said Qwen at xhigh has a tendency to over-think things, but how bad really is it?
I tried a much simpler prompt, again with that default extra high setting:
draw an svg of a circle
Qwen's reasoning trace started like this:
The user is asking for an SVG drawing of a circle. Simple request — but I want it to be a carefully crafted piece. Let me make something that goes beyond just
<circle>: a single self-contained SVG file with character — maybe a geometric "circle study," with subtle animation, layered rings, and a distinctive palette.Keep the scope right: they asked for an SVG of a circle. So the core is a circle. But I can add craft: concentric guide circles (like a compass/geometry drawing), tick marks, a soft gradient fill on the main circle, restrained ambient motion (a slowly rotating dashed ring, pulsing glow). Respect prefers-reduced-motion? That's more for CSS; SVG SMIL or CSS inside SVG will do.
Palette options: deep teal ink on warm paper? Or bold vermilion circle on off-white with navy construction lines — Bauhaus/compass-drawing vibe. Let me go with a "geometric study" look: cool slate background, or bright paper white? Paper white is fine if it's not the cream-and-terracotta combo. [...]
Several minutes later it produced this absolutely beautiful animated circle, which was entirely not what I had asked for!
Your browser does not support HTML5 video.
My strong recommendation: ignore that default. Run Qwen 3.8 27B on low or even no reasoning levels at first. It's a great model, but wow that default setting is a bad place to start.A fun way to test a vision model is to see how well it can return bounding boxes around items in a photograph. I've seen previous Qwen models deal well with this, so I decided to put it to the test drawing bounding boxes around some pelicans.
I've seen asking for 0-1000 scale produce good results in the past. I tried this:
llm -a https://static.inaturalist.org/photos/714731804/large.jpg \
-m lmstudio/qwen/qwen3.8-27b \
'Return JSON bounding boxes for the pelicans in this photo, 0-1000 scale for each dimension'
Here's the reasoning trace, which produced this:
[
{"bbox_2d": [195, 290, 370, 780], "label": "pelicans"},
{"bbox_2d": [445, 320, 675, 850], "label": "pelicans"}
]
This is such a good match. Here are those boxes rendered on top of the photo:

That visualization of the bounding boxes was taken using a new custom tool that I had Qwen 3.8 27B build for me, running offline on my laptop.
I forgot to dial down the thinking effort so it was massively over-engineered, but it did manage to produce this full interface from this single prompt:
[ {"bbox_2d": [195, 290, 370, 780], "label": "pelicans"}, {"bbox_2d": [445, 320, 675, 850], "label": "pelicans"} ]
Build an HTML page which has an input box for accepting the URL to an image and a textarea for accepting the above style of JSON.
It appends the image to the page, measures its width and height, then treats the coords in the bbox_2d as scaled from 0-1000 and scales them against the actual width and height, then it renders labelled boxes over the image.
This screenshot shows one of the features I did not ask for - a demo scene, for if you don't have a photograph to test the tool with:

Here's the relevant segment of the thinking trace, where it decided to draw its own pelicans purely because I had used the label "pelicans" in the example JSON I gave it in the prompt:
Also a "load sample" that uses a known image? Can't depend on external images, but… the image URL input is user-provided; I could add a "try with sample" button [...] Hmm, I can draw a simple scene on canvas, export it as a data URL, and load it into the image — that's self-contained and demo-able! [...] But the user's coords are for an actual pelican image; a generated placeholder can still demo the scaling. Generate a 1000x1000 placeholder: gradient water + two blob-like "pelican" silhouettes placed at the given bboxes (using the same scale — cute: silhouettes at the exact 0-1000 positions, showing the boxes align). This makes for a fun, self-contained demo. Keep it simple: sky gradient, sun, water, two pelican-ish shapes (ellipse body, circle head, beak). Place at bbox centers.
(I'm slightly nervous that models around the world might have a bias towards drawing pelicans at any chance they can get, brought on by nearly two years of exposure to my own stupid benchmark.)
Is all that over-thinking necessary? Maybe it is, at least a bit. I tried with reasoning turned off and got this version, (transcript here), which nearly works but shows the boxes in the wrong place:

So without reasoning it didn't quite one-shot a working tool. I'm sure it could get there with some follow-up prompts, but this is a good example of how reasoning can make a difference.
One of the biggest questions around local models is whether or not they have enough horsepower to successfully run a coding agent loop. Coding agents require long context, strong code generation support and reliable tool-calling. On paper Qwen 3.8 27B has all three of these, so is it up to the task?
My initial experiments with Pi have been very promising. I chose Pi because it has a shorter system prompt than most other options, making it a better fit for trying out smaller models.
I configured Pi to use Qwen 3.8 27B running in LM Studio on the Spark (shared via tailscale serve) by adding this to ~/.pi/agent/models.json:
{
"providers": {
"spark": {
"baseUrl": "https://spark-18b3.tail68a31.ts.net/v1",
"api": "openai-responses",
"apiKey": "dummy",
"models": [
{
"id": "qwen3.8-27b",
"reasoning": true
}
]
}
}
}
Then ran pi --provider spark --model qwen3.8-27b in my ~/dev/datasette folder and prompted:
how does auth work?
After a sequence of reasoning and tool calls that accessed a bunch of different files it produced this reply, which is very solid.
Just one problem: I wanted to share that transcript. So I pointed Pi and Qwen 3.8 27B at the JSONL transcript file in ~/.pi/agent/sessions/--Users-simon-Dropbox-dev-datasette-- and prompted:
Write Python code to convert this jsonl to markdown
And it built and tested this pi_jsonl_to_md.py, which did exactly what I needed. Here's that session transcript, published using the tool that it created.
So far this is all looking very promising. We have a 17GB model that runs on high-end consumer hardware and can write code, drive tools, annotate images and generally do everything that I need from an LLM for getting real work done.
There's one very significant catch: it feels slow - especially when it starts over-thinking, but even without that it's not particularly sprightly.
I've been getting around 15-30 tokens a second from LM Studio. That's not terrible, but it's slow enough that it's going to be hard to win me away from hosted API models, which can return results a whole lot faster. Artificial Analysis track token speed and show OpenAI 5.6 Sol at 74 tokens/second and 5.6 Luna at an impressive 184/second.
The good news is that the community have been exploring ways to speed things up since the model was first released two days ago.
One of the most promising optimizations is baked into the model itself. Qwen supports Multi-Token Prediction, an architecture trick where a cheaper mechanism guesses several tokens ahead and the main model can then quickly verify if the guesses were correct. This can have quite a dramatic effect on inference performance.
Based on this tweet from llama.cpp creator Georgi Gerganov I tried running the model with MTP like this on the Spark:
llama serve \ -hf ggml-org/Qwen3.8-27B-GGUF:Q4_K_M \ -hfd ggml-org/Qwen3.8-27B-GGUF:Q4_0 \ --spec-default \ --spec-type draft-mtp \ --reasoning-preserve
And sure enough, this gave me a significant boost. I had GPT-5.6 in Codex run a comparative benchmark on the Spark and the --spec-type draft-mtp server outperformed the LM Studio default GGUF by around 72%.
I expect we'll see a whole lot more innovation around serving this model faster over the next few weeks. The MLX community likely have some tricks brewing as well.
The fact that a 17GB file can do all of this stuff on my home machines is a miracle. Once again, I'm delighted and amazed at how much progress local models have made this year. A year ago this would have been competitive with the best and most expensive of the proprietary models - today it can run on a capable laptop.
The only thing holding this back from being a daily driver is performance. It feels pretty slow on both the M5 Mac and the DGX Spark. That's the catch with these dense (non-Mixture-of-Experts) models - they require a whole lot of memory bandwidth to perform well, and neither of the machines I have access to are top performers in that regard.
The most important thing about Qwen 3.8 27B is what it demonstrates. We can have an open weights general purpose model with a long context, effective tool calling, strong vision ability, and competent code generation, and we can fit the whole thing in just a 17GB file.
The models at this size continue to get better at an impressive rate. We don't need to spend half a million dollars on datacenter-class hardware just to run a competent model.
You are only seeing the long-form articles from my blog. Subscribe to /atom/everything/ to get all of my posts, or take a look at my other subscription options.
Computer History in ChatGPT is blowing my mind. It's basically a note-taker for what I'm working on. Here's a screenshot of my work so far this morning. I'm still fine-tuning what apps should be included... No chat, and will likely exclude some specific websites too.
Sometimes I need to use a Google-style search engine to find something on a reference site. That no longer works in Google. This is a major feature pullback. So far all we've heard in journalism is how it hurts their bottom line, but nothing about the world's information architecture. This is something like every bridge in the world being blown up at the same time, and I don't think that's an exaggeration.
Feels like summer is actually winding down. Moving day for my son, back to school.
Tech is very competitive, I learned, even when you give your work away, which I have been doing for a couple of decades. Maybe even especially when you give it away.
I want to work with other people, and am always making invitations. When I see a product that fits in with what I'm doing my first impulse is how do we connect them? This is one of the basic great things about computers and our networks. But there must be interop between people before there can be interop between products.
Connecting two pieces of tech is mostly mathematics, code writing, not very much in the way of manufacturing, whereas in the physical world two train lines can cross each other but can't connect because they have different rail spacing, or run on a different kind of fuel. In software if there's a huge difference like that you can make a software bridge, as they did with TCP/IP, and it costs a little time to convert each request twice for each transaction, but that cost is pretty close to zero.
That's what I want, working together, but what I get instead is people want to be me. They want to take over the project I'm working on, which if they understood it from my point of view is always the most ridiculous choice possible because it is impossible. So many stories to go with this. One of the most puzzling was when one of my best friends signed up to do a development project with a developer who used to work for me. Long story, but when you come down to it, he wanted to be me, not work with me.
But I didn't want to be Doug Engelbart or Ted Nelson though I learned from them. I certainly didn't want to be Bill Gates or Steve Jobs. I probably would have liked being Dennis Ritchie or Ken Thompson. I have ideas of things that should be done that for some reason no one else sees. I start working and sometimes they take off. Then everyone writes business plans and boom, they start up and shortly thereafter they fail. This happened with RSS. I was meeting with a lot of VCs, I wanted to start a company to build two-way RSS apps and content, as we had pioneered at UserLand. Seemed like a total no-brainer. I felt I had proven I had a clue. But they invested in hired programmers so the VCs could be the vision behind the products (I guess, I don't really know know why) instead of me.
I had a colleague at Berkman tell me to get out of the way because he was going to take over RSS. To this day people don't get why competing with RSS was counter-productive, assuming your goal is interop. When another friend tried to take over OPML, as I was promoting it at the time on my blog and going on a roadshow to answer questions and raise interest, I was so sick of the whole thing, he wasn't the only one, btw, I just stopped promoting it and poof like magic their ventures disappeared. If they had offered friendship and interop, which they didn't, it could have worked. One of these guys even tricked Harvard into hosting an OPML conference. They assumed everyone who repped open tech was legit.
The thing that really pissed me off is that while this was going on, people started writing about me, literally, grammatically, in the past tense. People whose accomplishments weren't that great imho. Look at sports and entertainment, how they celebrate those who made contributions to their arts, I wonder when tech will gain that level maturity. It's childish to not respect those whose work you build on. And btw, unlike sports players, while programmer's minds do eventually lose some brilliance for coding, because it relies so heavily on memory, I've experienced that myself -- our ability to create and set standards doesn't have an actual expiration date. If you want to keep creating at 40, 50, 60 even 70, you probably can.
My life has been full of all kinds of wonderful coincidences, at the exact moment I need it along comes Claude Code, and all of a sudden I can do much bigger projects than I ever could when I was in my 20s and 30s. Which I think is good, not just for me but for the whole thing. Because there are processes and concepts that belong in the toolkit of every developer that were squashed by Apple in the 90s (I'm relearning this now as I'm working on getting Frontier running on Node.js) and now we have a chance to restore it to mostly running condition. Some features will be hard to make work, because of peculiarities in JavaScript.
Maybe as one of my last creative acts, I will try to hook up with a university to build bridges between generations that aren't specific to any timeframe, to making handing off a lifetime of work viable, and maybe the AI tools can facilitate that. Just thinking out loud on a Saturday morning.
BTW, I was talking about this with Doc Searls a couple of years ago and offered a name for the seminar series, The Exit Interview. This gave me a thought, when Berkman had their reunion a couple of summers ago, they did a long video interview with me to explain how we got all the stuff running there that we did. It was going back to Berkman, even though the building is gone (which I kind of like, that's how fast things change) that summed up what had gone wrong. We were off to a fantastic start with blogging, podcasting, politics and education -- we weren't just making software and creating standards, we were involving the creative people the new medium would enable. This is something you don't find often in the tech industry. Academic freedom can be a real thing.
Transferred a couple more domain names, slowly trying to consolidate all of them in one place. Or even two places would be okay.
Anthropic has posted a more technical explanation of watermarking. This analogy with Monopoly made me laugh:
On each turn, each player moves a random number of spaces around the board according to the roll of a die. Suppose that, instead of rolling the die to get this randomness, we decided to use a book of the digits of pi.
Replied to Apple about the latest rejection, including a video of where to find features in the app. I think app review is clearly overwhelmed or has new hires that are confused about obvious things. The whole system needs to be rethought. What sort of worked in 2008 no longer works.
John Voorhees has an initial look at ChatGPT's Computer History feature. I enabled it this morning, but only for a few select apps like my web browser and text editors. It works well. I think I'll keep it disabled for chat apps, since that's a privacy can of worms that I'm not comfortable with yet.
I've made the first round of improvements to Micro.blog's somewhat-complicated Sources page, now called Connections. A few things have been moved around and renamed. Should generally be a little simpler. Probably more to do later!
What if one day, out of the blue, Claude could only speak Chinese.
Craig Mod using AI to research his family history:
The article she saw, that led to that decision, that led to me having “Michael” as a middle name on my original birth certificate. A scan of the newspaper was in some obscure database and Claude ran it down like a pack of bloodhounds digging up a sack of livers in the backyard.
Tressie McMillan Cottom on AOC’s presumed presidential run. “But these are different times. Ocasio-Cortez is a different woman, and Americans love to turn to women when the house is burning down.”
I've been doing this for all of this year, and the frustration finally led me to this rule, which I just asked Claude to play back for me. I offer it to you, a human, on how to get your Claude to work better for you, as it does for me. What follows is what Claude wrote as I asked it to summarize how we work.
Here's the mode as I understand it: (Claude speaking..)
Congrats to Marco Arment on releasing his new app, Unforgetful! I love this part of the intro blog post:
Despite constantly being told that I’d never get a good job, computers provided a lucrative career path filled with even worse academic performers who couldn’t care less about my grades. What a stroke of luck! I’d be mediocre to terrible at most jobs, but I turned out to be very good at using computers to turn coffee and Phish into money.
Even for developers who've had some success, releasing a new app is no small thing. The app was hung up in app review for a while too.
Link penalties on social media platforms
Although I’ve known for a while that social platforms make posts with links in them less visible, I didn’t know until recently just how much they did it. So, here’s a run down of how much different platforms penalise links and how you can work with it.
(Although the real answer is of course to use platforms that don’t penalise links, sometimes you have to go where people are)
https://paul.jottit.org/link-penalties-on-social-media-platforms
Apple has proposed to the court a 15% link-out fee, 5% for small businesses. Still too high. The correct percentage for linking to a website is 0%.
We haven’t done an open thread for awhile, so… What have you been working on? How are you feeling? What’s on your mind these days? What’s the best thing you’ve seen this week? Have you called a plumber to your home lately?
Are you new here? Introduce yourself if you feel like it. Heck, if you’re a regular commenter, reintroduce yourself if you’d like.
Tags: kottke.org · open threads