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ā
š§āāļø 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
- š ļø 90s.dev
- š„ Design Pressure
- š¤ Reinvent the wheel
- š¢ Litestream: Revamped
- š¤ A brief history of JavaScript
- š« LLM function calls donāt scale
- š ļø lnk: Git-native dotfiles manager
- š§ A simple search engine from scratch*
- š¢ Mozilla to shut down Pocket and Fakespot
- š¢ Glitch is ending web hosting for your apps
- š¤ If nothing is curated, how do we find things?
- š“ Research prototype of a human-centered web agent
- š„ GitHubās new coding agent drives .NET devs up a wall
- š ļø F2: the batch renaming tool youāll actually enjoy using
- š¢ Reports of Denoās demise have been greatly exaggerated
- š ļø Display any CSV file as a searchable, filterable, HTML table
- š¤ Developers spend most of their time figuring the system out
š The Developerās Dictionary
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