Forge puts an AI agent in your terminal, choose tools that make you happy, learning from Jujutsu, MCP as Web 2.0 2.0, and much more

Changelog News

Developer news worth a FW: FW: FW:

Hello, friends! šŸ‘‹

My Mom was right, again! Good things really do come to those who wait.

We’ve been waiting patiently to acquire the changelog.news vanity domain ever since we renamed from Changelog Weekly and turned this humble newsletter into an email/newsletter combo.

BIG thanks to Changelog community member, Jarvis Yang, for keeping an eye out for us and hollering loudly when it became available. Domain acquired! āœ…

Ok, let’s get into this week’s news.


šŸŽ§ Preston Thorpe: Refactored in prison

Preston Thorpe joins us from inside prison, where he awaits a hopeful release within the next 12 months. His journey has been anything but easy—marked by hardship and uncertainty. But over the past few years, Preston has undergone a profound transformation. He’s refactored not just his skills, but his identity. Today, he proudly calls himself a software engineer and an open source contributor. In this episode, Preston shares his story of redemption, resilience, and what comes next.

šŸŽ™ļø Scott Hanselman: Dull, dirty or dangerous

We sit down with Scott Hanselman at Microsoft Build 2025 to discuss open sourcing all the things, cool stuff Windows can do, where we want (and don’t want) AI to fit into our lives, building arcade cabinets, and so much more.


šŸ“‰ Entry-level tech jobs are getting wiped out

The San Fransisco Standard published some sobering news for new graduates:

Hiring of new grads by the 15 largest tech companies has fallen by more than 50% since 2019, according to a new report from VC firm SignalFire. While hiring for mid- and senior-level roles rebounded last year following mass layoffs across all levels in 2023, it declined at the entry level. The gap between the overall unemployment level and that of recent college grads recently reached an all-time high, according to census data.

The culprit? You’re not going to like this…

Previously, startups would typically hire one senior person and two or three early-career coders to assist, he said. But AI holds advantages over those junior employees.

ā€œThey ask, ā€˜Why hire an undergraduate when AI is cheaper and quicker?ā€™ā€

said O’Brien, adding that while AI-generated code isn’t top-tier, neither is code written by new grads. The key difference, he said, is that the iterative process to make AI code better takes minutes, while a junior coder might need days for the same task.

That’s bad news for everyone involved. The good news for new grads: there’s never been a better time in history to start your own business and you’ll probably never have as little responsibility* as you do right now.

*(hopefully you didn’t take on soul-crushing debt to acquire your degree…)

āš’ļø Forge is an AI agent in your terminal

While most devtool makers are building AI agents for your IDE, your text editor, and/or your web browser, the Forge team decided to put one in your shell. Here’s why:

  • Speed & Efficiency: Terminal interfaces provide sub-50ms startup and direct system access
  • Rich Context: Your shell session already contains your complete development context
  • Tool Ecosystem: Seamlessly combines with the powerful Unix tool ecosystem through pipes and redirections
  • Composability: Follows Unix philosophy of combining specialized tools to solve complex problems

I find this approach both novel and interesting, at least for we developers who already work in the terminal. Forge is an open source Rust codebase with its own proprietary provider, but you can plug it into many other providers as well.

ā˜ŗļø Choose tools that make you happy

The actual title of this post by Fernando Borretti starts with ā€œYou canā€¦ā€, but I like my imperative form šŸ‘† better. Now it’s more than permission to choose tools that make you happy, but instruction to do just that! That being said, the post isn’t really about permission OR instruction. It’s about admitting that which we already do šŸ˜†

Emacs is a Gnostic cult. And you know what? That’s fine. In fact, it’s great. It makes you happy, what else is needed? You are allowed to use weird, obscure, inconvenient, obsolescent, undead things if it makes you happy. We are all going to die. If you’re lucky you get three gigaseconds and you’re up. Do what you are called to do. Put ZFS in your air fryer, do your taxes in Fortran…

Just don’t bulls!@# me. Don’t look me in the eye and tell me SNOBOL is the language of the future. Don’t tell your boss it was a rational cost-benefit calculation that made you rewrite the frontend in Prolog.

Related: I love the comments on Mitchell Hashimoto’s clip about why he chose Zig for Ghostty and I bet Fernando would love them as well.

šŸ§‘ā€šŸŽ“ What I’ve learned from jj

Jujutsu (ā€œjjā€ for short) is an up-and-coming version control system that many smart people are saying many nice things about. Nathan Witmer says Jujutsu’s flexibility and safety changed his approach to version control.

Working with git has been great, especially in contrast to what came before. But despite years of development, it still has sharp edges and presents a steep learning curve. Jujutsu doesn’t fix that, exactly, but it sands off some rough edges and makes some different decisions that result in a much safer and far more flexible workflow.

What surprises me about jj excitement/adoption is that nobody claims it’s revolutionary or 10x better than git or anything like that. They just say it’s marginally better in many small ways that I guess add up to adoption-worthy. In this post, Nathan explains how jj has made him think differently about commits and intentionality, rebasing, conflict resolution, and more. He also followed this post up with a (perhaps more approachable) jj tips and tricks

šŸ’° Claude Code in your GitHub Actions

Thanks to Depot for sponsoring Changelog News

If you’re using GitHub Actions, you’ll want to check this out.

The Depot team just integrated Claude Code directly into your GitHub Actions workflows with no setup required. You can now add AI code generation right into your builds and let Claude help you write tests, docs, and even production code.

Yes, Claude Code running inside your GitHub Actions builds, with zero extra config.

This is the kind of usage of Claude Code and AI that makes teams rethink what CI/CD is capable of. Claude’s speed and power meets Depot’s blazing-fast builds.

Here’s what Kyle Galbraith, CEO of Depot, has to say about this:

ā€œAnthropic has brought my favorite agentic coding interaction, Claude Code, to GitHub Actions. This means that we can now use Claude Code to write and run code by simply asking Claude in pull requests and issues. Behind the scenes, Claude Code runs inside of GitHub Actions workflows that we control, making it easier to automate tasks and improve our development processes.ā€

āœŒļø MCP is the coming of Web 2.0 2.0

Anil Dash is as excited about MCP as almost everyone else is:

The interesting thing about the rapid adoption of MCP isn’t the specification itself. Honestly, the spec is… kinda mid. Compared to the olden days, when specs were written by pedantic old Unix dudes who were never in danger of being gruntled in the first place, they would be scratched out in ā€œplain textā€, with the occasional shouting in ALL CAPS about what we SHOULD and MUST do. MCP is very nearly just a vague set of ideas, a hallucination of a specification, appropriate to the current era, where even the constitution is just a suggestion. A – vibe protocol –. But MCP works! And it’s open — and that’s what counts.

He thinks the rapid adoption of MCP represents a second coming of the entire ethos of Web 2.0. Remember Web 2.0?!

The Web 2.0 community was a bunch of folks building lots of different sites that were meant to have open APIs that let developers (and even users!) explore and connect people and data together in interesting and unexpected and useful and even weird ways. The standard-bearers of the era were sites like Flickr and Del.icio.us and Upcoming, which pioneered things like tags and social sharing.

I made the same connection when discussing MCP with Richard Moot from Square, but I’m not as optimistic as Anil is (currently) this time around:

The rise of MCP gives hope that the popularity of AI amongst coders might pry open all these other platforms to make them programmable for any purpose, not just so that LLMs can control them.

I shouldn’t complain too much about Web 2.0. At least it gave us podcasting. But what else do we still have from that era? And what is stopping the tech giants this time from changing their open tune as soon as it’s no longer expedient for their bottom line?

šŸ‹ Push ā€œifsā€ up and ā€œforsā€ down

Here’s two rules of thumb that make a lot of sense to me. Oddly enough, I don’t think I’ve heard them before. Or maybe I just forgot! Either way, Alex Kladov suggests we push ā€œifā€ conditions as high up as is reasonable. Here’s one reason why:

Control flow and ifs are complicated, and are a source of bugs. By pushing ifs up, you often end up centralizing control flow in a single function, which has a complex branching logic, but all the actual work is delegated to straight line subroutines.

If you have complex control flow, better to fit it on a screen in a single function, rather than spread throughout the file. What’s more, with all the flow in one place it often is possible to notice redundancies and dead conditions.

The main reason he thinks we should push fors down is performance:

If you have a whole batch of things to work with, you can amortize startup cost and be flexible about the order you process things. In fact, you don’t even need to process entities in any particular order, you can do vectorized/struct-of-array tricks to process one field of all entities first, before continuing with other fields.


šŸŽ„ Clip: ā€œStripe has Peter Pan Syndromeā€

Amal Hussein facepalming next to the text: Stripe Needs to Grow Up

šŸ§‘ā€āš–ļø Settling the file structure debate

Everyone has opinions on how to organize files, but in this post, Muhammed Sarı brings a real-world example to show why structure matters and how you can pick the right one that lasts. But first, a hard truth:

Your file structure will never mirror the true behavior of your application at runtime. Why? Because file trees are flat, while your app’s object graph is a dynamic, living, breathing web of relationships. Trying to perfectly reflect runtime behavior in folders? That’s like trying to catch the wind in a jar.

Instead of judging file structure on subjective criteria, Muhammed focuses on maintainability.

šŸ‰ Tales from mainframe modernization

Akshay:

At my last workplace, I wrote transpilers (or just compilers if you prefer) from mainframe languages (COBOL, JCL, BASIC etc.) to Java (in Rust!).

Legacy code is full of surprises. In the roughly 200k lines of COBOL that I had the (dis)pleasure of working with, I saw some wonderful hacks to get around the limitations of the system. Mainframes are also chock full of history.


šŸ“ Don’t forget your (un)ordered list


šŸ“š The Developer’s Dictionary

perl (noun) An obscure scripting language used primarily to win code golf contests and sneak malicious payloads past malware scanners. Dev1: Hey, that script you sent me was encrypted. Dev2: Nope, that’s bog standard Perl code


That’s the news for now! Have a great week, FW: FW: FW: this to all your friends & I’ll talk to you again real soon. šŸ’š

–Jerod