Starting in February 2027, laptop and smartphone batteries in the EU must be replaceable. I think that’s pretty, pretty cool. Technically, this actually used to be the case before.
Posts by Stephan Schlecht
Got exactly one citation and ignored by several major pubs covering the official Microsoft post here, looking forward to Thursday when they get to do it again when token-based billing is announced ❤️
A screenshot of a white-on-black terminal depicting a 19x19 go board in ascii graphics, with empty grid intersections as periods, and black and white as Os and #s
It’s absolutely incredible that one of the largest Japanese-run Go servers, which has been running since 1992, is still accessed entirely via Telnet. And while most players use GUI clients that use Telnet under the hood, you can still connect manually and get ASCII graphics streamed to you
Nuances: So Go was first to introduce the defer statement as a keyword, and that might have influenced Swift. However, they differ in semantics: Go deferred calls run when the surrounding function returns; in Swift, deferred code runs when the enclosing static lexical scope exits.
Go snippet using `defer func() { fmt.Println(x) }()`
If you don't want immediate argument binding in Go, defer a closure; then the closure can observe the variable's later value, so this can also produce 2, like Swift.
A screenshot displays two code snippets with the same intent: one in Go and one in Swift. Both assign 1 to x, use a defer to print x, and then assign 2 to x before the function ends.
Swift defer runs a block when the current scope exits, and that block can observe later mutations to local variables. Go defer schedules a function call for the end of the surrounding function, and the call’s arguments are evaluated immediately when the defer is declared, so Go outputs 1 and Swift 2
Quite cool.
A photo showing three juvenile cormorants on the Danube.
A break from the computer to watch some young cormorants on the Danube.
When using it, on does not think about. But sudeently you wonder. So [string] should not be read as array or slice, but it's more: read a value with ["key"] that gives an int.
Two basic simple code snippets. One in Go on the left: ages := make(map[string]int) vs Swift on the right: var ages: [String: Int] = [ : ]
Do you find yourself involuntarily asking very basic questions about syntax, even though you’ve used something hundreds of times? Suddenly, I find myself wondering about Go's `map[string]int` (where Swift's dictionary [String : Int] syntax just feels more natural.)
Another advantage: setup and filter state are created up front, so the processing call itself is designed to work with preallocated state. No runtime allocations, which are deadly for real-time audio.
The screenshot shows a call of Apple's vDSP_biquadD function, that applies a double-precision single-channel biquadratic IIR filter. It is part of the Accelerate framework.
Indeed, e.g. for applying a biquad filter (IIR audio filter) to a floating-point samples array. Highly optimized for Apple Silicon. And that’s even with an IIR feedback loop, which means vectorization doesn’t work quite as well. I should benchmark it against a manual C loop at some point.
This image is a Downdetector graph showing user reports of technical issues for the social media platform Bluesky over a 24-hour period. It was a major outage with lingering issues into the evening, before finally stabilizing overnight.
I checked Bluesky on and off yesterday and found the sheer number of different error messages interesting. According to TechCrunch, it was a denial-of-service attack. That was a long outage. It’s nice to see them back again.
The image shows a retro-computing setup featuring a vintage Sun Microsystems Ultra 5 workstation. The screen displays an older Unix-based CDE desktop environment. It shows also an original vintage Sun Microsystems keyboard and mouse.
A few years ago, I sold my Sun Ultra 5 pizzabox (UltraSPARC IIi CPU), which I had bought secondhand. At the time, it was used for various server test scenarios (e.g. database setups). I kept it in a separate room because it was too loud for a desktop setup. But it had a very good keyboard.
Claude Code screenshot saying: You've hit your limit • resets 12pm (Europe/Berlin) /upgrade to increase your usage limit.
Codex screenshot saying: You've hit your usage limit. Upgrade to Pro (https://chatgpt.com/explore/pro), visit https://chatgpt.com/codex/settings/usage to purchase more credits or try again at Apr 15th, 2026 12:46 AM.
Synchronized timeout: Claude and Codex have hit their limits. Double Limit Hit. Time to touch some grass.
Claude Code screenshot saying: You've hit your limit • resets 12pm (Europe/Berlin) /upgrade to increase your usage limit.
Improved for me with
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"
}
in ~/.claude/settings.json
But hitting now limits earlier.
¯\_(ツ)_/¯
The new Linux 7 kernel (congrats, by the way) introduces a self-healing feature for the XFS file system. My Macs run on comparatively new APFS (some on older HFS+), and on my Linux machines it’s ext4. It just occurred to me that most file systems date back to the ’90s or at the mid-2000s, no?
Claude Code is displaying an “overloaded_error,” with attempt 9/10 having been running for 2 minutes and 34 seconds.
And don't forget the “overloaded_error”
There are some classic, highly regarded reference books for programming: “The Go Programming Language“ by Donovan and Kernighan, or K&R for C, ...
What is the equivalent for Swift? Just wondering.
That’s actually pretty handy and nice. I noticed that when compiling from the source code, there’s a reference to Sparkle (the framework for automatic updates on macOS), but it’s really easy to remove!
Timing-wise, that would make sense. The development of Java actually began around 1991. 😀
Interesting. At least in France, concrete steps are being taken toward “digital sovereignty” by switching from Windows to Linux.
techcrunch.com/2026/04/10/f...
Jobs was undoubtedly right that NeXT’s development environment at the time was far superior to the competition, the combination of Project Builder and Interface Builder (which later formed the basis for Xcode).
You also need to know when to delete the build folder in ~/Library/Developer/Xcode/DerivedData. Most I miss a reliable Find Usages and Goto Definition. But it has its good sides, too.
Last year, Kimi K2 and Claude Sonnet 4 both failed my real-world Swift DSP coding test. GLM-5.1 just solved it in 22 minutes for $1.52. I need a new test. www.software7.com/blog/glm_5.1...
I like being able to decide for myself how long I use a device. I’ve actually been using some devices for a long time. That’s why I don’t buy anything that requires a proprietary server.
When I read about the enormous sums being invested in AI data centers, I sometimes wonder if there might still be massive performance breakthroughs in large language models (LLMs) that would make it possible to achieve similar performance on far less powerful hardware. And then what?
Thanks for the helpful reference. Interesting. It mentions that there might be a way around it in ~/.claude/settings.json:
{
"effortLevel": "high",
"env": {
"CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING": "1"
}
}
I'll have to give that a try.