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.
R2 SQL now supports SUM, COUNT, AVG, MIN, and MAX, as well as GROUP BY and HAVING clauses. These aggregation functions let developers run SQL analytics directly on data stored in R2 via the R2 Data Catalog, enabling them to quickly summarize data, spot trends, generate reports, and identify unusual patterns in logs. In addition to aggregations, the update introduces schema discovery commands, including SHOW TABLES and DESCRIBE.
A trade-free operating system, that's what Tromjaro means. But what does a trade-free operating system have to offer? Well, it means a lot, especially if you're tired of the imbalance between those who have versus those who want. From the developers' perspective, this "trade-free" OS wants nothing from its users, such as no data collection and no demands for attention: "This is the purest form of free and the most honest one."
I'll be talking about holistic engineering or the practice of factoring in your technical decisions, designs, strategies, all the non-technical factors that are actually forces that influence your organic socio-technical problem space. As much as you can see in this canyon how natural forces have influenced the shape of the earth, so you can see the color. You can see all the different layers.
A little bit about myself. In my previous life, I was staff platform engineering. I focused a lot of development engineering and everything that basically was the sociotechnical aspect of our technical work. I recently was working as a CTO and co-founder of a startup, and nowadays I'm just doing advisory roles and a little bit of consulting while trying to think about the next big thing. Yes, so happy to be talking with you, Shane.
Software engineering didn't adopt AI agents faster because engineers are more adventurous, or the use case was better. They adopted them more quickly because they already had Git. Long before AI arrived, software development had normalized version control, branching, structured approvals, reproducibility, and diff-based accountability. These weren't conveniences. They were the infrastructure that made collaboration possible. When AI agents appeared, they fit naturally into a discipline that already knew how to absorb change without losing control.
Over the past decade, software development has been shaped by two closely related transformations. One is the rise of devops and continuous integration and continuous delivery (CI/CD), which brought development and operations teams together around automated, incremental software delivery. The other is the shift from monolithic applications to distributed, cloud-native systems built from microservices and containers, typically managed by orchestration platforms such as Kubernetes.
The Ubuntu installer warned me that it would remove everything on my hard drive, permanently wiping the entire Windows 10 installation I'd been running for years at that point. I hesitated for a second - maybe I should just dual-boot? No, I'm going all in! Finally, I hit the button to install Linux. One year later, I still don't regret that choice. I even resurrected an old Windows 10 laptop by installing Linux on it.
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.
When I joined Google ~14 years ago, I thought the job was about writing great code. I was partly right. But the longer I've stayed, the more I've realized that the engineers who thrive aren't necessarily the best programmers - they're the ones who've figured out how to navigate everything around the code: the people, the politics, the alignment, the ambiguity.
A recent commit to integrate and enable the JXL decoder means that future releases of Google Chrome and other Chromium-based browsers will include code to process and present JXL images. The format's supporters argue JXL can be used to recompress existing JPEG images without loss so they're 20 percent smaller, which alone would represent a significant bandwidth saving for websites and content delivery networks.
Decorators are a concept that can trip up new Python users. You may find this definition helpful: A decorator is a function that takes in another function and adds new functionality to it without modifying the original function. Functions can be used just like any other data type in Python. A function can be passed to a function or returned from a function, just like a string or integer.
Software development used to be simpler, with fewer choices about which platforms and languages to learn. You were either a Java, .NET, or LAMP developer. You focused on AWS, Azure, or Google Cloud. Full-stack developers learned the intricacies of selected JavaScript frameworks, relational databases, and CI/CD tools. In the best of times, developers advanced their technology skills with their employer's funding and time to experiment. They attended conferences, took courses, and learned the low-code development platforms their employers invested in.
For an operating system that already enjoys rock-solid security, imagine taking that even further to create an operating system that is almost unbreakable. With immutability, Linux distributions mount the core of the system as read-only, which means the contents of those directories cannot be changed. So, if you were to unwittingly install a piece of malicious software, it would not be able to make changes to directories like /bin, /sbin, /usr, /lib, and /etc. That's some pretty high security there.
Every few months, the developer tool hype machine finds a new hero. In 2023, it was GitHub Copilot, the AI pair programmer that made autocomplete feel like magic. In 2024, the vibe shifted to Cursor and the new class of AI-first editors. And now, at least on X, Google's "agent-first" Antigravity is being pitched as the next inevitable thing. Meanwhile, the model layer keeps whiplashing.
In today's episode, I will be speaking with Somtochi Onyekwere, software engineer at Fly.io organization. We will discuss the recent developments in distributed data systems, especially topics like eventual consistency and how to achieve fast, eventually consistent replication across distributed nodes. We'll also talk about the conflict-free replicated data type data structures, also known as CRDTs and how they can help with conflict resolution when managing data in distributed data storage systems.
Many people describe localization services as 'translation plus cultural adaptation.' While this is technically correct, it is not very helpful in practice. This definition misses the actual work, the decisions teams face, and the reasons some localization projects quietly succeed or fail. This article explains how localization services actually work for software, web platforms, and global content and gives a practical model for teams who want to know what they are getting into when they decide, 'We need localization.'
In the past, programmers worked with platform-specific, fast, lightweight native code editors, but beautiful, cross-platform, hybrid code editors changed everyone's minds - programmers started using heavyweight hybrid editors on their powerful hardware. They started upgrading hardware continuously to run these heavyweight hybrid code editors solely because of their modern look and feel, trend, and productivity-focused features. That's how VSCode became the software industry's default code editor.
I use software as a creative instrument: in workflows, publications, client systems, and in all the quiet machinery that keeps institutions pulsing through connected ideas. I've now lived through two platform shifts up-close: the dawn of the consumer internet and the explosion of Web 2.0's networked creativity. The lesson that stuck is simple: the most exciting tools are rarely the safest place to store your work.
Over the past few years, I've reviewed thousands of APIs across startups, enterprises and global platforms. Almost all shipped OpenAPI documents. On paper, they should be well-defined and interoperable. In practice, most fail when consumed predictably by AI systems. They were designed for human readers, not machines that need to reason, plan and safely execute actions. When APIs are ambiguous, inconsistent or structurally unreliable, AI systems struggle or fail outright.
Hold on. There's yet another method, one that comes from MacOS. That method is Homebrew. What is Homebrew? Homebrew is a free, open-source package manager for Linux and MacOS that simplifies the installation and management of software. Think of Homebrew as a command-line version of the App Store that allows you to install command-line tools such as Python, Node.js, and more with ease.
A secure software development life cycle means baking security into plan, design, build, test, and maintenance, rather than sprinkling it on at the end, Sara Martinez said in her talk Ensuring Software Security at Online TestConf. Testers aren't bug finders but early defenders, building security and quality in from the first sprint. Culture first, automation second, continuous testing and monitoring all the way; that's how you make security a habit instead of a fire drill, she argued.
You know that feeling? You're developing a new email feature, you run your test script, and boom you realize 3 seconds too late that you used the production database. Your CEO just received an email with the subject TEST - DO NOT READ - LOREM IPSUM. Or worse: you configured a cloud SMTP server for testing, forgot to disable actual sending, and now your Mailgun account is suspended for suspicious activity because you sent 847 emails to test@example.com in 5 minutes.
If you're trying to make sure your software is fast, or at least doesn't get slower, automated tests for performance would also be useful. But where should you start? My suggestion: start by testing big-O scaling. It's a critical aspect of your software's speed, and it doesn't require a complex benchmarking setup. In this article I'll cover: A reminder of what big-O scaling means for algorithms. Why this is such a critical performance property.
Ok, you aren't here (I assume) to peruse my books and see how few books I consume (teenage Ray would be embarrassed by the number). The biggest reason I switched to Hardcover was because of their API, which I wanted to use to display it on my Now page. Again, I don't honestly think anyone cares what I'm reading/listening to/watching, but I think it's cool and that's all that matters on my little piece of the Internet.