Why Tailwind CSS won, WarpStream is like Kafka on S3, managing difficult software engineers, an update on Go 2 & much more

Changelog News

Developer news worth your attention

Jerod here! šŸ‘‹

Adam and I are stoked to join Randall Munroe, Julia Evans, Scott Hanselman & many more at the LAST Strange Loop in St. Louis on September 21st and 22nd. Are you going? Letā€™s connect!

Ok, letā€™s get into the news. (Audio Edition)


šŸ¤” HashiCorp adopts Business Source License

HashiCorp co-founder Armon Dadgar:

Our open source model has been made possible by the thousands of commercial customers who partner with us on their mission-critical infrastructure. We invest tens of millions of dollars in research and development in our open source products annually, and our commercial efforts enable us to continue to support, and sponsor, our vibrant community of usersā€¦

However, there are other vendors who take advantage of pure OSS models, and the community work on OSS projects, for their own commercial goals, without providing material contributions back. We donā€™t believe this is in the spirit of open source.

As a result, they are switching all future releases of HashiCorp products from Mozilla Public License to BSL 1.1, leaving their APIs, SDKs & most libraries as-is. Much like other companies who have adopted similar licensing schemes before them (Sentry, Cockroach, MariaDB to name a few), hereā€™s the kicker:

Vendors who provide competitive services built on our community products will no longer be able to incorporate future releases, bug fixes, or security patches contributed to our products.

Each ā€œopen source businessā€ that makes this move paves the way for the next. What will the open source landscape look like in five years time? Iā€™m glad we have RedMonkā€™s Stephen Oā€™Grady coming on the show next week to talk through all the angles of this ongoing discussion.

šŸ† Why Tailwind CSS Won

Matt Rickard lays out four bullet-pointed hypotheses on why he believes Tailwind has become ā€œthe new ubiquitous frontend framework.ā€

  • No context switching from application logic
  • Copy-and-pastable
  • Fewer dependencies, smaller surface
  • Reusability

ā€œWonā€ is both subjective and temporary, but I have to admit it has more momentum than any other CSS tooling right now. And when you just look at those bullet points (Matt explains each one in his post, of course)ā€¦ theyā€™re highly desirable attributes of any software project.

šŸ•“ļø Kafka is dead, long live Kafka

The folks at WarpStream have built an Apache Kafka protocol compatible data streaming platform directly on top of S3.

Itā€™s delivered as a single, stateless Go binary so there are no local disks to manage, no brokers to rebalance, and no ZooKeeper to operate. WarpStream is 5-10x cheaper than Kafka in the cloud because data streams directly to and from S3 instead of using inter-zone networking, which can be over 80% of the infrastructure cost of a Kafka deployment at scale.

Kafka is a powerful tool thatā€™s used by tons of tech companies (> 80% of fortune 100s, in fact), but ā€œsimpleā€ and ā€œcheapā€ are not words youā€™ll hear associated with the open source event streaming platform. WarpStream aims to simplify and cheapen the whole endeavor, but theyā€™re up front with the trade-offs:

Of course, itā€™s not all sunshine and rainbows. Engineering is about trade-offs, and weā€™ve made a significant one with WarpStream: latency

šŸ™ˆ Tailscale doesnā€™t want your password

Thanks to Tailscale for sponsoring Changelog News šŸ’°

Just like us here at Changelog, Tailscale has never supported password-based authentication. Unlike us here at Changelog, Tailscale now supports passkeys!

Whatā€™s Tailscale? Itā€™s the simplest way to give secure remote access to shared resources. Tailscale is for teams, for enterprise, and for individuals. Hereā€™s how passkeys work with Tailscale:

To add a user with a passkey to your tailnet, if youā€™re an admin, you can generate an invite from the Users page of the admin console. Click Invite users, then Invite via linkā€¦, and select the role youā€™d like the invited user to have. Then, share the unique invite URL with that user. When the invited user opens the link, theyā€™ll be able to create a unique username and join your tailnet.

šŸ§© Managing difficult software engineers

Vadim Kravcenko published an excellent guide for working with (and managing) the many personas of software engineers:

In the grand scheme of a software engineering path, thereā€™s a thread that weaves through every project, every failure, and every challenge. That thread is people. As a person with an engineering background, I do enjoy solving hard puzzles and fixing problems. But the most complex, intriguing, and ultimately rewarding aspect of my journey has always been managing people.

The Procrastinator, the Lone Wolf, the Negative Nancy, the Know-It-All, theā€¦

šŸ“¢ An update on Go 2

Russ Cox, in a blog post highlighting some of the ā€œboringā€ new features in Go 1.21 that improve compatibility:

ā€¦when should we expect the Go 2 specification that breaks old Go 1 programs?

The answer is never. Go 2, in the sense of breaking with the past and no longer compiling old programs, is never going to happen. Go 2 in the sense of being the major revision of Go 1 we started toward in 2017 has already happened.

There will not be a Go 2 that breaks Go 1 programs. Instead, we are going to double down on compatibility, which is far more valuable than any possible break with the past. In fact, we believe that prioritizing compatibility was the most important design decision we made for Go 1.

As boring as it may sound, compatibility is a killer feature for a mature, widely-deployed platform like Go.

šŸŽ„ How to quickly navigate your shellā€™s history

You likely already know about āŒƒr, but if not: you should really know about āŒƒr

Watch on YouTube

šŸ“” Other stuff on the radar

  • Speed: Cloudflareā€™s internet speed test tool provides a lot of nerdy details above & beyond upload/download measurements
  • Next: Rich Hickey has retired from ā€œcommercial software developmentā€ and NuBank. He will continue his work on Clojure with ā€œthe freedom and independence I had when originally developing Clojureā€
  • Boss: Neovim creator Justin M. Keyes writes about Vim and Bram Moolenarā€™s impact on him and the project
  • Future: Speaking of Vim, Christian Brabandt and others have picked up Bramā€™s torch and are moving forward
  • Gapped: Karmanyaah Malhotra made an e-ink based, battery operated TOTP device for 2FA codes
  • Timely: Ferdia Kenny shares tips for working across timesones. Crossover time, planning & clear boundaries are key
  • !Moq: Maintainer of a .NET mocking library installed (and later removed) a sponsorship-tracking DLL. Devs around the world replaced Moq with NSubstitute and moved on with their lives (via Josh G)
  • Edgy: SQLedge (alph) uses Postgres logical replication to stream the changes in a source Postgres database to a SQLite database that can run on the edge

šŸŠ Squeeze the hell out of the system you have

Dan Slimmon (of evidence-oriented SRE) and his team scaled their Postgres server vertically as far as they could, but eventually it was time to scale out:

Either way, everyone had to agree: weā€™d outgrown our old, naĆÆve implementation. Onward and upward! We can do hard things!

In situations like this, presented with a dazzling array of next-generation architecture options that can be built to last us through the decade, itā€™s easy to forget what our goal was: to get database performance under control.

He goes on to describe the solution they went with, but his overarching point is the value in squeezing everything you can out of your current solution before adding complexity. This ties in nicely with last weekā€™s article by John D. Cook about the worst tool for the job.

ā³ Coming soon to Chrome DevTools

Jecelyn Yeen has been coding up a very cool feature (available now in Canary) that lets you override API responses (fetch/XHR) right there in the DevTools. Matt Lehrer called it, ā€œthe coolest thing Iā€™ve seen this weekā€

Example DevTools override

šŸ³ Just normal web things.

Heather Buchel is not thrilled with the state of new web-based clients/apps/sites that donā€™t let people do ā€œvery normal web thingsā€ like copy/pasting text, right liking on links, zooming in the browser, stuff like that.

There are a number of avenues to route the blame to: rushing to release something midly usable for testing protocols in the wild, not having a UI engineer on the project, building things in a mobile ā€œtouch firstā€ experience and ignoring other inputs or devices; the list goes on. In the end, itā€™s usually because weā€™ve JavaScriptā€™ed our way out of these things.

The most classic ā€œnormal web thingā€ that I see broken most often is the ā€˜Backā€™ button. It works very well by default! Donā€™t throw it away and implement your own unless you have a very good reason and you happen to be very good at this.


šŸŽ§ ICYMI: Recent good pods from us

Thinking outside the box of code ā€“ I had the honor/privilege of spending an hour with Turing Award winner Leslie Lamport. I think youā€™ll enjoy what he has to say about thinking in algorithms, what makes a distributed system & how he discovered the Bakery Algorithm.

Kaizen! S3 R2 B2 D2 ā€“ Gerhard joins us for the 11th Kaizen episode and this one might contain the most improvements ever. Weā€™re on Fly Apps V2, weā€™ve moved from S3 to R2 & we have a status page now, just to name a few.

A deep dive into Goā€™s stack ā€“ A technical dive into how the Go stack works and why we as programmers should care.

Take me to Val Town ā€“ Val Town is a shiny, new social programming environment to write, run, deploy and share code. Steve Krouse ā€“Val Town creatorā€“ joins Jerod & Amal to tell us all about it.

Blueprint for an AI Bill of Rights ā€“ Daniel & Chris dive into a discussion regarding how the United States, European Union, and other entities are approaching governance of AI through new laws and legal frameworks. In particular, they review the White Houseā€™s approach, noting the potential for unexpected consequences.


Thatā€™s the news for now!

This Wednesday on The Changelog weā€™re celebrating 30 years of Debian with DPL Jonathan Carter and on Friday weā€™re talking intergenerational conflict with Justin Searls & Landon Gray from Test Double.

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

ā€“Jerod