Trogon, StableStudio, life after Apple, Google's problematic new TLDs, writing Python like it's Rust, numbers every LLM developer should know & more

Changelog News

Developer news worth your attention

Hello again! 👋

Don’t have time for hour-long podcasts each week? We got you! Get all the highlights on YouTube, Reels & TikTok. We’re even on Bluesky.

Ok, let’s get into the news. Listen along here 🎧

Trogon auto-generates friendly TUIs for your CLI apps

Will McGugan from Textualize is at it again. This time he’s using his TUI-creation skills to help developers (currently just those who use Python’s Click library, but soon more) wrap friendly terminal user interfaces around their existing command-line apps.

Trogon inspects your (command line) app and extracts a schema which describes the options / switches / help etc. It then uses that information to build a Textual UI you can use to edit and run the command.

Ultimately we would like to formalize this schema and a protocol to extract or expose it from apps. This which would allow Trogon to build TUIs for any CLI app, regardless of how it was built. If you are familiar with Swagger, think Swagger for CLIs.

Stability AI’s official open source variant of DreamStudio

DreamStudio is Stability’s hosted, powerful web app for generative image creation. It’s free to try, but you quickly hit up against a paywall when you want to do any serious work with it. This is one of the ways the company (which is famous for releasing the open source Stable Diffusion models) makes money.

Many FOSS alternatives to DreamStudio exist, but now Stability is entering the fray itself with StableStudio, a first-party community interface for generative AI!

What’s the difference between StableStudio and DreamStudio? Not much. They removed some DreamStudio-specific branding, turned their API calls into a plugin system so it can talk to different backends, and yanked out business-y features like billing, API key management, et cetera. Other than that, they’re the same!

Life after 26 years programming at Apple

John Calhoun retired from Apple 1.5 years ago and was surprised to find out that he is now programming full-time again, but for himself.

Though I eventually began programming again, in the first fourteen months of retirement I did all manner of other things in my spare time as well. I kept also-busy with woodworking projects, experiments learning Blender and 3D printing, bike riding — just to name a few. But somehow this year I have found myself tipping head-long back into full-time programming. It is distinctly reminding me of my sleepless days spent writing shareware games for the Macintosh thirty-five years ago.

I’m not sure if that is a good thing. I am back to coding late into the night, and back at it after coffee and an English muffin the following morning (thankfully though I quit the cigarettes decades ago). Programming is beginning again to be to the exclusion of all else in my life. (The table saw sits slowly rusting. The bike hangs on the wall in the garage.)

What’s more surprising: he’s coding with/against his old nemesis: C!

🎥 Distributed Tracing in Next.js

Thanks to Sentry for sponsoring this week’s Changelog News 💰

Having a clear view of the entire operation flow of a specific action, from the frontend to the database, is a huge advantage for your project. Distributed Tracing provides exactly that, but it isn’t always straight forward how to get there.

That’s why the Sentry team put together this 8 video series demonstrating how to use Sentry’s SDK to implement Distributed Tracing in a Next.js app. Don’t have time for video? They have docs too!

Google’s news TLDs could be a boon to scammers

In what appears to be a particularly security-unaware move, Google has added eight new top-level domains, two of which are quite concerning: .zip and .mov. Ars Technica writes:

While Google marketers say the aim is to designate “tying things together or moving really fast” and “moving pictures and whatever moves you,” respectively, these suffixes are already widely used to designate something altogether different. Specifically, .zip is an extension used in archive files that use a compression format known as zip. The format .mov, meanwhile, appears at the end of video files, usually when they were created in Apple’s QuickTime format.

Phishers and scammers rejoice! 🙄

A way to discuss programming languages

Pablo Meier was frustrated when he and a friend sat down to discuss their differing opinions on Go and Rust, but ended up talking past each other due to their differing values:

This was not a fruitful conversation, I think we both felt like we weren’t valuing what the other cared about. When people talk about languages they like or dislike, I group the things people talk about into three broad categories, which I’ll call soil, surface, and atmosphere:

Soil is the properties of running code in that language. Surface is the features. Atmosphere is the broader community around a language. Check the post for more detailed descriptions of those and stick around to the end for some solid flamebait. 🔥

What I’ve learned about data visualization

Tyler Cipriani writes up some of his learnings after studying up on data visualization. He’s come to two important inclusions:

  1. Good data visualization is powerful
  2. Powerful data visualization is rare

He also explains why pie charts are the worst and provides the results of the most cited experiment that ranks standard charts by the number of errors people make while reading them (spoiler: pie charts aren’t the worst).

Beepberry: an e-paper computer for hackers

Built to run Beeper (a universal chat app), but hey it’s Linux so your imagination is the limit. $79 cheap or $99 with a Raspberry Pi Zero W included.

Beepberry image with fruit for scale

Writing Python like it’s Rust

Jakub Beránek:

I started programming in Rust several years ago, and it has gradually changed the way I design programs in other programming languages, most notably in Python. Before I started using Rust, I was usually writing Python code in a very dynamic and type-loose way, without type hints, passing and returning dictionaries everywhere, and occasionally falling back to “stringly-typed” interfaces. However, after experiencing the strictness of the Rust type system, and noticing all the problems that it prevents “by construction”, I suddenly became quite anxious whenever I got back to Python and wasn’t provided with the same guarantees.

Big Picture: This side effect that Jakub describes is one of the best arguments for learning new programming languages even if you don’t expect to switch your primary language: you’ll carry the best features/ideas/idioms from each language you learn with you wherever you end up.

Numbers every LLM developer should know

This repo is brimming with info to use in you back-of-the envelope calculations. Here’s their cheatsheet to whet your appetite:

Numbers every LLM dev should know cheatsheet
(Inspired by Jeff Dean’s Numbers every Engineer should know.)

It’s now feasible for every dev to have their own smol developer

Now that Anthropic has unleashed 100k context windows, Swyx has created:

A prototype of a “junior developer” agent (aka smol dev) that scaffolds an entire codebase out for you once you give it a product spec, but does not end the world or overpromise AGI…

AI that is helpful, harmless, and honest is complemented by a codebase that is simple, safe, and smol - <200 lines of Python and Prompts, so this is easy to understand and customize.

You write your spec in Markdown (mixing English and code), copy/paste details that need to be reproduced verbatim by the LLM, and loop until you’re happy. The demo video helped me better understand the idea in practice.

Analysis: It’s awesome that people like Swyx are trailblazing in this space, but the current state of the art is nowhere near ready to use for production software at this level of abstraction. I’ll stick with the “write me a function that $X” abstraction layer for now…

🔗 Linked list: other interests

  • Historic: Amy Goodchild collects early computer art from the 50’s & 60’s
  • Improbable: a blog hosted on its author’s $180 phone running Android 11
  • Pure: a 1.2kB vanilla JS Reactive UI framework (without JSX)
  • Ludicrous: Bun’s new bundler is faster than esbuild (which is also very fast)
  • Nostalgic: If you’re ever near Leicestershire, stop by the Retro Computer Museum
  • Cranked: Cloudflare turned D1 (their Sqlite-based distributed db) up to 11
  • Inspired Sider is like git for installing, running, ruining and reverting local databases
  • Social: Bluesky’s app (web, iOS & Android) is now open source

That’s the news for now! ✊

On Wednesday’s interview show we’re bringing you three awesome convos from the hallway track at OS Summit: Beyang Liu from Sourcegraph talkin’ Cody, Denny Lee from Databricks talkin’ Dolly 2.0 & Stella Biderman talkin’ EleutherAI.

Have a great week, forward this to a friend who might dig it & I’ll talk to you again real soon.