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
š” 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ā
š³ 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