We will be retiring the beta shortly and will be removing the button to get to it and ceasing support for it. The beta garnered negative feedback from the Stack Overflow community, including observations that it looked more like a general discussion site such as Reddit and was losing the essence of what made it successful: precise questions and community-validated answers.
Every iOS app I've shipped over the last nine years started the same way: a Rails developer with a great web app, users who want it in the App Store, and weeks spent on Xcode, signing certificates, and Swift boilerplate that has nothing to do with the actual product.
New overloads on TarFile.CreateFromDirectory accept a TarEntryFormat parameter, giving direct control over the archive format. Previously, CreateFromDirectory produced Pax archives. The new overloads support all four tar formats—Pax, Ustar, GNU, and V7—for compatibility with specific tools and environments.
Companies hiring developers with several years of experience expect candidates to demonstrate practical reasoning about functional programming patterns, concurrency models, and the Scala type system. A mid-level engineer is usually expected to work independently, contribute to design decisions, and understand the trade-offs behind the tools they use.
Performs root cause analysis based on new evidence from live environments, without needing prior instrumentation. Suggests runtime-validated code changes to eliminate guesswork and reduce rollback-and-redeploy cycles. Performs live issue debugging in safe remote sessions with execution-level behavior inspections.
While the codebase is fresh and grows fast under the umbrella of the local environment, we tend to rely on debugging tools, which were created specifically for that purpose. The app is half-baked, and the code is split open. We observe it through the lens of our IDE and with the speed of our brain. Everything is possible; we may pause execution for minutes, and the whole system is a white box - an open book for us.
Dependabot sounded the alarm on a large scale. Thousands of repositories automatically received pull requests and warnings, including a high vulnerability score and signals about possible compatibility issues. According to Valsorda, this shows that the tool mainly checks whether a dependency is present, without analyzing whether the vulnerable code is actually accessible within a project.
Kacper Borucki blogged about parameterizing exception testing, and linked to pytest docs and a StackOverflow answer with similar approaches. The common way to test exceptions is to use pytest.raises as a context manager, and have separate tests for the cases that succeed and those that fail. Instead, this approach lets you unify them. I tweaked it to this, which I think reads nicely: One parameterized test that covers both good and bad outcomes. Nice.
With pthread's rwlock (reader-writer lock) implementation, I got 23.4 million reads in five seconds. With read-copy-update (RCU), I had 49.2 million reads, a one hundred ten percent improvement with zero changes to the workload.
If there's one universal experience with AI-powered code development tools, it's how they feel like magic until they don't. One moment, you're watching an AI agent slurp up your codebase and deliver a remarkably sharp analysis of its architecture and design choices. And the next, it's spamming the console with "CoreCoreCoreCore" until the scroll-back buffer fills up and you've run out of tokens.
Open VSX is operated by the Eclipse Foundation, and provides extensions unencumbered by the restriction Microsoft places on the VS Code marketplace that "alternative products including those built on a fork of the Code-OSS Repository, are not permitted to access the Visual Studio Marketplace." Microsoft cites security and compatibility as reasons, and there is no business case to "run a full-scale global service for everyone to use."
The Rust team has unveiled Rust 1.93, the latest version of the programming language designed to create fast and safe system-level software. This release improves operations involving the DNS resolver for the musl implementation of the C standard library. Linux binaries are expected to be more reliable for networking as a result. Rust 1.93 was introduced January 22. Developers with previous versions of Rust installed via rustup can upgrade by running rust update stable.
The reason for this is Snap - a Linux application packaging format - creates a local Trash folder for each VS Code version, one that's separate from the system-managed Trash, according to a VS Code bug report dating back to November 11, 2024. Not only that, but Snap keeps older versions of VS Code after updates, potentially multiplying the number of local Trash folders and the trashed-but-not-deleted files therein. Emptying the system Trash folder doesn't affect the local instances.
One of my oldest open-source projects - Bob - has celebrated 15 a couple of months ago. Bob is a suite of implementations of the Scheme programming language in Python, including an interpreter, a compiler and a VM. Back then I was doing some hacking on CPython internals and was very curious about how CPython-like bytecode VMs work; Bob was an experiment to find out, by implementing one from scratch for R5RS Scheme.
A real Tetris loop has time (ticks), concurrent inputs (keystrokes), state transitions (collision, locking, line clears), and non-determinism (piece generation). In many imperative designs, these concerns end up tangled in shared mutable state, which tends to produce bugs that are: hard to reproduce (timing-dependent), hard to test (logic mixed with effects), hard to debug (replay isn't deterministic).
The headline runtime feature in this preview is Runtime Async, described as a major change to how asynchronous methods work in .NET. According to the release notes, since C# 5 introduced async/await, the compiler has been solely responsible for rewriting async methods into state machine structs that track progress across suspension points. With Runtime Async, the runtime itself now understands async methods as a first-class concept and takes over responsibility for suspending and resuming methods.
In total I probably spent around 45 minutes actively with it. It worked for around 3 hours while I was watching, then another 7 hours alone. This post is a recollection of what happened and what I learned from it. All prompting was done by voice using pi, starting with Opus 4.5 and switching to GPT-5.2 Codex for the long tail of test fixing.