a Slack clone in 5 lines of Bash, 13 ways to think about joins, Meta offers to remove Python's GIL, don't take VC funding, software engineers hate code & more

Changelog News

Developer news worth your attention

Hello friends! šŸ‘‹

Our be-where-the-people-are philosophy means Iā€™m required to say, ā€œYes, we joined Threads.ā€ Connect with us there, if you like.

Or follow us on Twitter, like always. But weā€™re also on (and Iā€™m personally rooting for) the fediverse. Donā€™t forget Bluesky! This is getting exhaustingā€¦

Enough of that. Letā€™s get into the news. (Audio Edition)


šŸ„Š Oracle smacks IBM for RHEL source change

On June 21st, IBMā€™s Red Hat announced they would stop publishing public sources of Red Hat Enterprise Linux (RHEL) because, in summary, they do not want others ā€œrepackaging it for their own profit.ā€ This change was met with community back lash, no surprise. So, on the 26th Red Hat VP Mike McGrath wrote up an explainer that didnā€™t seem to help things much. Enterā€¦ Oracle?

Why did IBM make this change? Well, if you read IBMā€™s blog attempting to explain its rationale, it boils down to this:

At Red Hat, thousands of people spend their time writing code to enable new features, fixing bugs, integrating different packages and then supporting that work for a long time ā€¦ We have to pay the people to do that work.

Interesting. IBM doesnā€™t want to continue publicly releasing RHEL source code because it has to pay its engineers? That seems odd, given that Red Hat as a successful independent open source company chose to publicly release RHEL source and pay its engineers for many years before IBM acquired Red Hat in 2019 for $34 billion.

Themā€™s is fightinā€™ words! But theyā€™re just getting startedā€¦

Oracle makes the following promise: as long as Oracle distributes Linux, Oracle will make the binaries and source code for that distribution publicly and freely available. Furthermore, Oracle welcomes downstream distributions of every kind, community and commercial. We are happy to work with distributors to ease that process, work together on the content of Oracle Linux, and ensure Oracle software products are certified on your distribution.

By the way, if you are a Linux developer who disagrees with IBMā€™s actions and you believe in Linux freedom the way we do, we are hiring.

This is brilliant positioning by Oracle. Thatā€™s a sentence I never thought Iā€™d write! But thereā€™s one last body blow before this roundā€™s bell rings:

Finally, to IBM, hereā€™s a big idea for you. You say that you donā€™t want to pay all those RHEL developers? Hereā€™s how you can save money: just pull from us. Become a downstream distributor of Oracle Linux. We will happily take on the burden.

Oh snap!

šŸ” A Slack clone in 5 lines of Bash

Did you know that Mattermost contains half a million lines of Go, and again half a million lines of TypeScript. Just for the server! Imagine how big Slackā€™s codebase isā€¦

Simple Unix Chat (suc), on the other hand, is small enough that I can include its core loop right here in this newsletter. Behold the five lines of bash that do as much as half a million lines of Go:

while /usr/bin/true
do
    read -r line || exit 0  # EOF
    /usr/bin/echo "$(/usr/bin/date --iso-8601=seconds)"\
        "$(printf "%-9s" "$(/usr/bin/id --user --name --real)")" \
        "$line" >> /var/lib/suc/"$1"
done

The linked article is an awesome breakdown of how suc does so much with so little.

šŸ§ 13 ways to think about joins

Justin Jaffray rounds up and explains the many ways you can conceptualize a relational (inner) join:

Theyā€™re not without redundancy, some of them are arguably the same, but I think theyā€™re all interesting perspectives nonetheless.

A join is a lookup, a nested loop over rows, a flat map, a path through a graph, a ring productā€¦ (and 8 more)

šŸŽ llama.cpp learns web chat

This merged pull request from Shopify founder/CEO Tobias LĆ¼tke that adds a web chat server to llama.cpp is super cool for a bunch of reasons.

  1. The fact that Tobi still codes and contributes to open source at this stage in his career: cool
  2. The overall quality of the content, feedback, and collaboration around the PR on public display: cool
  3. The feature itself, which now everyone in the world with a networked computer can benefit from: cool

Sorry if Iā€™m gushing a bit here, but this is the kind of open source phenomena that really geeks me out. Love it!

llama.cppā€™s web chat in action

šŸš€ APIs are getting a brand new DevEx

Thanks to Speakeasy for sponsoring this weekā€™s Changelog News šŸ’°

Get ready because Speakeasy (the API infrastructure company) is officially launching and this week theyā€™re showing of some of the exciting new features theyā€™e rolled out to devs around the world.

Give your API the #DevEx it deserves. Speakeasy managed SDKs are idiomatic, type-safe, and readable. In other words theyā€™reā€¦ crafted by developers, for developers.

Learn how Speakeasy manages the full SDK lifecycle, how they validate OpenAPI docs, how you should go about creating SDKs, and catch an awesome demo of using Speakeasy to build a terraform provider from your OpenAPI spec. Check it out!

šŸ¤‘ Meta will pay 3 engineers to make Pythonā€™s GIL optional

You may have heard Python Steering Council member Brett Cannon discuss removing the GIL with us on Changelog & Friends a few weeks back. Turns out thereā€™s a lengthy discussion all about that ongoing that got very interesting a few days ago. Guido van Rossum had stated:

it would be great if Meta or another tech company could spare some engineers with established CPython internals experience to help the core dev team with this work.

And Meta employee Carl Meyer replied:

Weā€™ve had a chance to discuss this internally with the right people. Our team believes in the value that nogil will provide, and we are committed to working collaboratively to improve Python for everyone.

If PEP 703 is accepted, Meta can commit to support in the form of three engineer-years (from engineers experienced working in CPython internals) between the acceptance of PEP 703 and the end of 2025, to collaborate with the core dev team on landing the PEP 703 implementation smoothly in CPython and on ongoing improvements to the compatibility and performance of nogil CPython.

Thereā€™s a BIG if in that offer because PEP 703 hasnā€™t been accepted by the Steering Council yet. Big decision! But if they approve it, itā€™s great knowing there will be dedicated engineers making the effort happen.


šŸŽ§ ICYMI: Recent good pods from us

Efficient Linux at the CLI ā€“ Oā€™Reilly author Daniel J. Barrett joins Adam & Jerod to talk about efficient ways to use Linux. He teaches us about combining commands, re-running commands, $CDPATH hacks, and more.

The massive bug at the heart of npm ā€“ Darcy Clarke joins Amal & Feross on JS Party to discuss a novel supply chain attack he recently disclosed that heā€™s referring to as ā€œmanifest confusionā€.

The solo gopher ā€“ Many gophers build projects as a team of one. Sometimes these are side projects, other times they are projects used by millions of people but who are still maintained by a single individual. Ben Johnson joins Kris & Ian on Go Time.

Cambrian explosion of generative models ā€“ Daniel & Chris explore recent highlights from the current model proliferation wave sweeping the world - including Stable Diffusion XL, OpenChat, Zeroscope XL & Salesforce XGen.

šŸ•ŗ And one from the back catalog

A new $stdout track called Stonk Options reminded me of the special Song Encoder episode I did profiling his life/work. While giving it a re-listen, I realized it was made in the pre-chapters era šŸ˜”. So I fixed it for youĀ me us!

Chapter list screen grab


Donā€™t take VC funding. It will destroy your company

Oliver Eidel warns anyone thinking about taking VC to start a company. I do believe VC has its place, but you need to know what exactly youā€™re getting yourself in to and Oliverā€™s list of secondary effects in this post is a good start:

  • Because your goal is to sell the company later, it has to grow
  • Youā€™ll be spending much of your time on finding the next investors
  • You have to focus on large markets with many (or large) customers
  • Making existing customers happy is less important than acquiring many more new customers

His biggest point is that when you take VC funding profitability takes a back seat (to growth) and this ā€œkills your companyā€

Software engineers hate code

This is the best-kept secret of the software engineering profession: engineers hate code. Especially code written by other people. Itā€™s why they love working on greenfield projects so much. No code, no maintenance, no headaches!

Co-sign! The best code: no code. Second best: deleted code. Third best: my code. Worst: your code šŸ˜œ

Language-Level Toll Roads

Jim Nielsen hits on something at the intersection of open source frameworks and for-profit platforms that Iā€™ve also felt recently, but havenā€™t been able to verbalize. The first example is Denoā€™s new KV storage. According to Simon Willison:

[Deno KV is] an interesting variant on a key/value store thatā€™s backed by SQLite locally, and will run against a neat FoundationDB global distributed database when you deploy scripts to the Deno Deploy cloudā€¦

theyā€™re baking a core feature into their framework which their SaaS platform is uniquely positioned to offer as a global-scale upgrade.

This is what prompted Jim to write:

That makes sense ā€” but it still feels a bit strange. Iā€™m trying to put my finger on why. I think itā€™s because of how integrated this proprietary feature is at the language level of an open source project. Itā€™s like a language-level toll road.

Iā€™m not sure what to conclude about this, but I have to admit Iā€™m a bit leery of blurred lines, regardless of the intention or practicality of blurring them.

šŸ˜Ž Meme break!

You canā€™t always get what you wantā€¦
But if you try sometimes, you might findā€¦
You get what you need dev is capable of

the featured designed vs the feature shipped

āš’ļø Cool tools for the trade

  • diode ā€“ A Wasm-powered local dev env for Laravel
  • Final2x ā€“ Upsize images to arbitrarily large sizes
  • bespoke ā€“ The best parts of Mailchimp, Kalviyo, Substack & Typeform
  • plate ā€“ The rich-text editor framework for React
  • lima ā€“ a nice way to run Linux VMs on Mac (via b0rk)

šŸ¤— Shout out to our supporters!

Itā€™s time once again to thank our newest Changelog++ members. BIG thanks to Peter O, Adam S, Trevor S, Piotr G, Nick R, Mikayel H & Adam B for supporting our work with your hard-earned cash!

If Changelog++ is new to you, it is our membership program you can join to ditch the ads, get closer to the metal with bonus content, directly support our work & get shout outs like the ones above. ā˜

šŸ“” Community radar

Did you know you can submit links for coverage and/or send me timely tweets/posts?

  • Shifted: Google Cloudā€™s Richard Seroter says shifting left is for suckers. Shift down instead (via adamstac)
  • Rusted: OCaml may very well be getting Rust-like memory management (via yawaramin)
  • Unabridged: Libera.Chat is disabling the Matrix<>IRC bridge due to technical issues (via simonmic)
  • Released: The Ember team announced their 5th major release of their framework for building ambitious web apps (via real_ate)
  • Flagged: A tool for managing feature flags and experiments using a git-based workflow (via fahad19)
  • Replicated: a CLI orchestrator that simplifies setting up logical replication between Postgres instances (shayonj)

Thatā€™s the news for now!

On Wednesdayā€™s interview show weā€™re sitting down with Jake Zimmerman from the Sorbet team at Stripe to hear all about the fast, powerful type checker designed for Ruby and why Jake believes types will win in the end.

(Wow, you made it all the way to the end! Is this newsletter too long? Or just right? Hit reply and let me know!)

Have a great week, forward this email to a friend who might dig it, and Iā€™ll talk to you again real soon. šŸ’š

ā€“Jerod