Bruno, Raspberry Pi 5, lessons from debugging, a cross-platform Redis app, Rich Harris reads his mean tweet & more

You are viewing issue #64 of the Changelog News(letter). Pop in your in your inbox every Monday.

Changelog News

Developer news worth your attention

Hello friends! 👋

It’s hard to believe our little podcast+newsletter combo goes 64-bit with today’s edition! This reminds me of the greatest N64 game in the ’Verse:

GoldenEye 007 (change my mind)

It’s also hard to believe that our JS Party pod is creeping up on its 300th episode! This reminds me that we’re accepting listener text & voice messages to compile a “Best of the fest” episode:

Submit yours (get a free t-shirt)

Ok, let’s get into the news.

🦀 InfluxDB officially made the switch from Go to Rust

A watchful Redditor posts to /r/rust:

Looks like influxdb flipped the switch, deleted all the Go code, and is 99.5% Rust now!

And InfluxDB co-founder/CTO replied with a detailed post on why they made the switch and their multi-year journey to arrive at this milestone. The ‘why’ (which Paul calls the normal reasons) include:

  • No garbage collector
  • Fearless concurrency (thanks Rust compiler)
  • Performance
  • Error handling
  • Crates

And, of course, he felt compelled to answer for The Big Rewrite itself, saying:

I realize people think we’re insane to rewrite the database yet again, but it’s one of those things where hindsight is 20/20. If I knew then what I know now, I would have made different choices, but we also didn’t have the same tools available in 2013 when we started it. I’m very confident that what we’ve landed on now is a very solid foundation that we can build on for many years.

As long as I’m at Influx, it’s going to be the last rewrite we’ll ever need. I definitely don’t have the stamina for another one ;)

🥧 The Raspberry Pi 5 is finally here

Four years since the launch of the Raspberry Pi 4, the Raspberry Pi 5 has arrived with a performance boost and in-house silicon that adds support for PCIe 2.0.

A nice upgrade from the 4, notably includes a a component made by the Raspberry Pi Foundation for the first time: the southbridge. They call this “a step change in peripheral performance and functionality.”

The Pi 5 will be available for purchase before the end of this month, starting at $60.

Related: Jeff Geerling answers questions about the Pi 5

📆 Debugging Errors Faster with Distributed Tracing

Thanks to Sentry for sponsoring Changelog News 💰

Debugging distributed systems can feel like chasing ghosts. When requests fail or slow to a crawl, or are causing an error in another part of your stack, how do you pinpoint the issue when there are dozens of services involved?

Join Sentry’s 20 minute workshop! Lazar Nikolov & Ben Peven will explore how distributed tracing can help you uncover those elusive bugs and performance problems. You’ll learn the nuts and bolts of distributed tracing and how Sentry visualizes requests and operations across your stack so you can find an issue’s root cause faster.

🐶 Bruno is a local-only Postman alternative

Postman and other API explorer tools are rad, but as I told Abhinav Asthana (founder) when we had him on The Changelog years ago: they lost me when the product started focusing on teams, cloud stuff, collaboration, etc.

Bruno is cool because it’s a lot like Postman (et al), but it stores your collections directly in a folder on your filesystem, using a plain text markup language called ‘Bru’.

You can use git or any version control of your choice to collaborate over your API collections. Bruno is offline-only. There are no plans to add cloud-sync to Bruno, ever.

Bruno screenshot

🤪 gokrazy is really cool

Xe Iaso on what makes a Linux distribution, why they believe Android isn’t one, and why gokrazy (a Linux implementation written entirely in Go) is really cool:

It boots in literal seconds, uses an insanely small amount of RAM out of the box, and runs with nearly zero overhead. When you configure your gokrazy install to run additional software, you do so by adding the Go command path to a configuration file and then updating to trigger a reboot into the new version…

This is a very minimal system, and it’s all you need to run statically linked Go programs. It’s very easy to deploy your own services to it too. It’s probably the easiest platform I know of that lets you just deploy a Go binary and have it run as a service, automatically restarting when it crashes.

Sounds really cool to me!

👨‍🎓 Lessons from years of debugging

This post is Matt Rickard doing what he does best: taking years of hard-earned wisdom gained through experience and distilling it down to an easily-digestible list of learnings.

Debugging is programming, and programming is often mostly debugging. One of the most useful skills you can pick up as a developer.

Here’s the first three (of 16) pieces of advice, all of which I’ve parroted on various pods over the years:

  1. Reproduce with the smallest example. In the simplest environment.
  2. Read and re-read the error statement. Read the stack trace. Add more logging if you don’t know where the error is thrown.
  3. Change one thing at a time.

Check the full post for more of Matt’s lessons. Here’s one more to remember: It’s almost always your fault

🎧 ICYMI: Recent good pods from us

Vibes from Strange Loop – We’re taking you to the hallway track of the final Strange Loop conference. First up is AnnMarie Thomas, who gave one of the opening keynotes titled, “Playing with Engineering.” We also caught up with many first-time and multi-time attendees who shared their favorite moments from Strange Loop over the years. You’ll hear from Richard Feldman, Colin Dean & Taylor Troesh. Finally, we talk with Pokey Rule. He gave a talk about his project called Cursorless–a spoken language for structural code editing.

#define: a game of fake definitions – I gather a group of friends for our first game show experiment on Changelog & Friends! This is a game of obscure jargon, fake definitions & expert tomfoolery. Our contestants checked their imposter syndrome at the door, because they either know what these words mean or they fake it ’til they make their peers think they do.

Reports of Node’s death are greatly exaggerated – Amal, KBall & Chris convene a “semi-emergency” pod to discuss the recent (deserved) hype over Bun and what it all means for Node’s community, maintainers & users. They’re joined by Node team members Matteo Collina & James Snell who are here to dispel Bun antagonism rumors, discuss the pros & cons of each runtime, explain how Node continues to thrive & even announce a VERY big upcoming feature!

Zero Trust & Go – Michael Quiqley from NetFoundry joins Natalie to discuss Zero Trust concepts, why they are important for secure systems & how to implement them in Go.

🤑 Open Source does not win by being cheaper

Anh-Tho Chuong from Lago on the “This product is X, but open source” trend:

I’ll admit it—I’ve done the same when describing Lago. When I’m not in the “startup pitch” mood, I default to, “We’re Stripe Billing, but open source”. Or my co-founder might say, “We’re like an open-source Chargebee.” Frankly, it gets the job done.

Of course, if that’s all there was to us, we would have failed by now. What we’ve learned is that open-source tools can’t rely on being an open-source alternative to an already successful business. A developer can’t just imitate a product, tag on an MIT license, and call it a day. As awesome as open source is, in a vacuum, it’s not enough to succeed.

How does an open source project (backed by a business) succeed, then? Anh-Tho makes her case for three ways that open source can win:

  1. by solving a transparency problem
  2. by solving an extensibility problem
  3. by being better

🥞 A cross-platform Redis desktop manager

Tiny RDM is a lightweight Redis app for Mac, Windows, and Linux. Built with Go and Wails .

Screenshot of Tiny RDM

👻 Lost in the network

Have you ever wondered what happens behind the scenes when you send an HTTP request? How do the bits know where to go when you ping someone on the local network? Today, Nagy Krisztián tries to find answers to such questions.

From the physical layer all the way up to the application layer, Nagy gives us a glimpse of what happens “underneath” us when we use the internet, at least as far as the router.

What’s beyond that… is a world of its own, with things like DSL, SDH, PPP, MPLS, BGP, OSPF, and a bunch of other acronyms I don’t even know about. And yet, in most cases, our packets get to the right recipients. What is this if not magic?

👀 Video of the week

Admittedly, this is slightly on the juvenile side… but we had such a blast with Rich Harris on JS Party that I just had to share one of the fun moments with you:

Rich Harris’ Mean Tweet on YouTube

🕸️ Web dev roundup

  • Modernizr: Andy Bell updates his CSS reset from ~4 years ago and explains the ‘why’ behind each rule
  • Explainr: Josh Collinsworth on classic rock, Mario Kart & Tailwind CSS. It’ll make sense, I promise
  • Expandr: Chris Coyier documents CSS’ solution for auto-expanding textareas
  • Matchr: Aiden Bai’s experimental TypeScript library for zero-runtime pattern matching
  • Minumizr: An obsessively minimal Java web framework in ~3800 lines of code

That’s the news for now, but we have some great pods coming up this week:

  • Wednesday: Daniel Thompson from Tauri on The Changelog
  • Thursday: Jarred Sumner from Bun on JS Party
  • Friday: Mat Ryer returns on Changelog & Friends

Have a great week, tell your friends about Changelog News if you dig it, and I’ll talk to you again real soon. 💚