Spicy designs, more open source opinions, privacy-focused services, the real cost of context switching & jqq
Anthony Hobday has 37 ways to spice up your designs, James Bennett has opinions on open source and PyPi security, Alicia Sykes compiled some awesome security/privacy options, ContextKeeper layouts out the real price of context switching, and Nick Nisi tells us all about jqq. Bam! Bam! Bam!
Write better tests, with less code, and greater coverage
Property-based testing helps us write better tests, with less code, and greater coverage. This leads to more confidence in our code, and fewer bugs in our applications. But, as always, there’s a price. Property tests take more effort to write, and they take longer to run. But they’re worth it.
Write code that is easy to delete, not easy to extend
Every line of code written comes at a price: maintenance. To avoid paying for a lot of code, we build reusable software. The problem with code re-use is that it gets in the way of changing your mind later on.
Deleting code is fun! Let’s all write code that’s easy to delete. But how?
To write code that’s easy to delete: repeat yourself to avoid creating dependencies, but don’t repeat yourself to manage them. Layer your code too: build simple-to-use APIs out of simpler-to-implement but clumsy-to-use parts. Split your code: isolate the hard-to-write and the likely-to-change parts from the rest of the code, and each other. Don’t hard code every choice, and maybe allow changing a few at runtime. Don’t try to do all of these things at the same time, and maybe don’t write so much code in the first place.
There’s a lot to think about in that paragraph right there. Thankfully, the author of this piece continues from there, giving specific advice along the way. A must-read, even if you aren’t onboard for all of it.
Making sense of the $28 billion Salesforce-Slack deal
If you missed the news…Salesforce is buying Slack for $28 billion. To be clear, the deal is $27.7 billion in cold hard cash plus Salesforce stock. But who cares about money, amirite? Why does this deal even make sense?
Ina Fried for Axios:
[Salesforce] CEO Marc Benioff characterized the move as a bet that the pandemic-driven shift to remote work isn’t a temporary blip but rather a permanent transformation.
Slack has the lead in its still-nascent space, but was facing a challenge of its own — namely that Microsoft’s rival Teams was bundled into Office subscriptions. As a standalone company, Slack couldn’t easily manage such a move, nor could it afford to get into a price war.
I liked what Aaron Levie (Co-founder and CEO of Box) said about this deal and the future of work:
What’s amazing is that even though the current wave of enterprise software to power the future of work has been going strong for 10+ years, we’re still in the very earliest of stages in this market. The last decade has been about building the tools that power new ways to work from anywhere, collaborate with anyone, and automate workflows and business processes in the cloud. The next decade will be the era when organizations adopt these technologies en masse and transform their enterprises. While many of us in Silicon Valley and similar ecosystems have been using tools like Slack for years now (and even Microsoft Teams, more recently), 90%+ of the world’s digital workers are still not leveraging these modern platforms for the majority of their work. While it’s hard to imagine, we’re still in the early innings of this market.
GitHub tips, tricks, hacks, and secrets
Containers will not fix your broken culture
Bridget Kromhout dropping some hard truths:
We focus so often on technical anti-patterns, neglecting similar problems inside our social structures. Spoiler alert: the solutions to many difficulties that seem technical can be found by examining our interactions with others. Let’s talk about five things you’ll want to know when working with those pesky creatures known as humans.
Thing #2 (Good Team Interactions: Build, Because You Can’t Buy) alone is worth the price of admission.
Maybe you don't need Kubernetes
There’s another gorilla to consider for container orchestration.
Kubernetes is the 800-pound gorilla of container orchestration. It powers some of the biggest deployments worldwide, but it comes with a price tag.
Especially for smaller teams, it can be time-consuming to maintain and has a steep learning curve. For what our team of four wanted to achieve at trivago, it added too much overhead. So we looked into alternatives — and fell in love with Nomad.
From the Nomad website:
HashiCorp Nomad is a single binary that schedules applications and services on Linux, Windows, and Mac. It is an open source scheduler that uses a declarative job file for scheduling virtualized, containerized, and standalone applications.
Anyone from the community with experience using Nomad? Let us know in the discussion below.
Making money with licenses
Nadia Eghbal, on the role of licenses in open source funding:
I’m skeptical that new licenses are the right approach on a systemic level, both in terms of feasibility, as well as where I think the world is going. I’ll tackle each of these concerns separately.
I tend to agree with her take on the Right Way™️ to be thinking about it:
I’m more interested in solutions that aim to capture value on the production, rather than consumption side. While everyone is focused on putting up tollbooths, opportunities to “price” maintainer attention, and access to maintainers, remain undervalued.
There are issues with this as well. For one, buying access to maintainers is a proxy for buying influence over the project’s direction. This isn’t a guarantee, but it’s definitely a concern and could negatively impact other users.
That being said, I think production-side monetization in the world of open source is a winning strategy over consumption-side monetization. What do you think?
Announcing Bundler 2.0
Congrats to the Bundler team (and entire Ruby community) for shipping an awesome update to this critical piece of infrastructure! Bundler truly changed the game for Rubyists around the world and we continue to benefit from its goodness.
What’s new in 2.0? A lot, but I’ll cherry pick a minor change that made me smile:
Changed the
github: 'some/repo'
gem source to use thehttps
schema by default
Finally! That’s worth the price of admission from where I’m sitting. Also:
With the release of Bundler 2, the core team now kicks off a new release schedule for Bundler: we’re going to aim for one major version release per year, so we can drop support for older Ruby and RubyGems versions around the same time that the Ruby core team does. Being able to stop supporting Ruby 1.8.7 is a huge relief!
To the future!
Don’t pay to speak at commercial events
Vitaly Friedman, Editor-in-Chief and Co-founder of Smashing Magazine, breaks down the broken state of commercial web conferences saying:
The state of commercial web conferences is utterly broken. What lurks behind the scenes of such events is a widely spread, toxic culture despite the hefty ticket price. And more often than not, speakers bear the burden of all of their conference-related expenses, flights, and accommodation from their own pockets. This isn’t right, and it shouldn’t be acceptable in our industry.
…the general expectation is that speakers should speak for free as they’ve been given a unique opportunity to speak and that neither flights nor expenses should be covered for the very same reason.
The details of this post from Vitaly go much deeper than what I’ve shared here. I highly recommend taking 22 minutes to read this.
If statements should cost $10,000 each
Yup, it’s true…“estimating project costs is hard.” I thoroughly enjoyed the tongue in cheek logic shared by Dave Rupert in this post.
…let’s say your app has a logged-in or logged-out state, well, that’s at least 2 if-statements. Starting price: $20,000. Never before has it been this easy to price and scope out complex stateful apps!
The cost of complexity in software is real and this is a very practical post to share with would be customers of your software team. This applies to freelancers, consultants, and even teams inside larger orgs. We all have to account for our time, and that means accounting for the money being spent along the way.
You probably don't need Moment.js
When you pull in a library dependency, it is rare that you need all of the functionality it offers. This isn’t usually a problem for backends, because that code never leaves the server. However, In frontend-land your users pay the price for all that unused functionality every time they hit your website with a cold cache.
Moment.js is an excellent date/time library. It is packed with functionality, and you probably don’t need everything it has to offer. Instead, check out date-fns, which offers small, highly targeted functions you can probably get by with. There’s even an ESLint plugin that will help you identify places in your codebase where you don’t really need Moment.js!
The Vue Handbook
A free ebook by Flavio Copes. Here’s the skinny:
After spending a lot of time diving into Vue, in preparation for a Vue online course I’m building, I created this free resource that contains a lot of material to help anyone go from zero Vue knowledge to having a pretty good overview of this popular JavaScript frontend framework.
The book’s content is behind a newsletter signup. That’s the price of free, I guess. 🤷‍♂️
Is Bitcoin the greatest scam in history?
Scam shouldn’t be used as a label for Bitcoin at large, but the hype machine and pump-and-dump schemes around Bitcoin are most certainly teetering on the lines of being a scam.
Bill Harris, former CEO of Intuit and founding CEO of PayPal and Personal Capital, writes:
Promoters claim cryptocurrency is valuable as (1) a means of payment, (2) a store of value and/or (3) a thing in itself. None of these claims are true.
- Means of Payment. Bitcoins are accepted almost nowhere, and some cryptocurrencies nowhere at all. Even where accepted, a currency whose value can swing 10 percent or more in a single day is useless as a means of payment.
- Store of Value. Extreme price volatility also makes bitcoin undesirable as a store of value. And the storehouses — the cryptocurrency trading exchanges — are far less reliable and trustworthy than ordinary banks and brokers.
- Thing in Itself. A bitcoin has no intrinsic value. It only has value if people think other people will buy it for a higher price — the Greater Fool theory.
Fluent interfaces are bad for maintainability
Yegor Bugayenko:
Fluent interface, first coined as a term by Martin Fowler, is a very convenient way of communicating with objects in OOP. It makes their facades easier to use and understand. However, it ruins their internal design, making them more difficult to maintain. A few words were said about that by Marco Pivetta in his blog post Fluent Interfaces are Evil; now I will add my few cents.
Yegor uses his own HTTP library as an example where the interface designed is fluent (which looks nice and readable to use) and shows how that design goal made the internal code a mess. My gut tells me it’s worth the trade-off to provide a better user experience, but Yegor’s real-life experience punches me right in the gut:
Fluent interfaces are perfect for their users… However, the damage they cause to object design is the price, which is too high.
He suggests decorators and smart objects as an alternative. Lots to ponder here, and the conversation going on in the comments is lively as well. 👌
This is how I coined the term "open source"
Corroborated here and here (kinda).
This quote from Christine Peterson is like a mic drop.
The introduction of the term “open source software” was a deliberate effort to make this field of endeavor more understandable to newcomers and to business, which was viewed as necessary to its spread to a broader community of users.
The problem with the main earlier label, “free software,” was not its political connotations, but that—to newcomers—its seeming focus on price is distracting. A term was needed that focuses on the key issue of source code and that does not immediately confuse those new to the concept. The first term that came along at the right time and fulfilled these requirements was rapidly adopted: open source.
Thank you Christine for sharing this much needed history of how we got here.
Red Hat to acquire CoreOS
This is a big deal. We’ve been tracking CoreOS since the beginning — we’re huge fans of Alex, Brandon and the team behind CoreOS.
Red Hat has signed a definitive agreement to acquire CoreOS, Inc., an innovator and leader in Kubernetes and container-native solutions, for a purchase price of $250 million.
Red Hat is a publicly traded company and while this announcement hasn’t really impacted shareholder value (yet), we, the open source community have been immeasurably impacted by the team behind CoreOS.
Also, check out Alex Polvi’s announcement on the CoreOS blog which includes some details and backstory.
Speed up AWS S3 by 2000x with this transparent proxy
Amazon S3 works pretty well, is cheap, and is not too slow. It is employed as a blob store by so many companies that it’s practically the de facto solution. So, if you could speed up S3 I am sure it would have a pretty big impact. That is exactly what MimicDB is trying to do.
By maintaining a transactional record of every API call to S3, MimicDB provides a local, isometric key-value store of data on S3. MimicDB stores everything except the contents of objects locally. Tasks like listing, searching and calculating storage usage on massive amounts of data are now fast and free.
The readme says that on average tasks like those are 2000x faster using MimicDB. It also reduced the number of API calls to S3 thus reducing the price. If you use S3 heavily, MimicDB looks like it could be an interesting addition to your stack.
Fire.app - Sass and Compass, CoffeeScript, Auto Refresh, Static Builds and more
As a throw-back to my post a few months back on LiveReload - I bring you Handlino’s Fire.app (they’re also the makers of Compass.app)
Fire.app is a menubar only app for dead easy HTML prototyping with some of my most favorite features all bundled in one. The best part? Fire.app was written in Java (JRuby) and works on Mac, Linux as well as PC.

While Fire.app comes with a price tag of $14.00 (10% of sales donated to UMDF), it’s GPLv2 licensed because the fine folks at Handlino love open source so much! The source code is on GitHub so you can build it your own, or even fork, modify it based on your needs as well contribute if you’d like. If you want to build your own copy, you’ll need JRuby and rawr.

One of the coolest features is that you don’t need to “install” Fire.app - you can put it anywhere, even Dropbox and sync it between computers.
Features
- Sass + Compass
- Template languages (Haml/ERB/Markdown)
- CoffeeScript
- Auto Refresh
- Build Project (static HTML/Javascript/CSS with a single click)
- Cross-Platform
Options-Framework: Expose an options panel for your Thematic WordPress themes
I don’t always use WordPress, but when I do, I prefer Thematic (and compass-wordpress). Thematic is a WordPress theme framework from Ian Stewart that provides an abstracted API, letting you focus on your site instead of the lower-level minutia of WordPress.
I was excited when I stumbled across a couple of projects by Devin Price that let you easily expose an options panel for your theme. Thematic Options (and the non-Thematic Options Framework) make it easy to add an options panel for your theme settings, letting your end users customize your theme in the WordPress admin panel.

Options are declared in a PHP array, as in this example:
// Set the Options Array
global $my_options;
$my_options = array();
$my_options[] = array( "name" => "General Settings",
"type" => "heading");
$my_options[] = array( "name" => "Custom Logo",
"desc" => "Upload a logo for your theme, or specify the image address of your online logo. (http://yoursite.com/logo.png)",
"id" => "logo",
"std" => "",
"type" => "upload");
$url = ADMIN . 'images/';
$my_options[] = array( "name" => "Main Layout",
"desc" => "Select main content and sidebar alignment. Choose between 1, 2 or 3 column layout.",
"id" => "layout",
"std" => "2c-l-fixed.css",
"type" => "images",
"options" => array(
'1col-fixed.css' => $url . '1col.png',
'2c-r-fixed.css' => $url . '2cr.png',
'2c-l-fixed.css' => $url . '2cl.png',
'3c-fixed.css' => $url . '3cm.png',
'3c-r-fixed.css' => $url . '3cr.png')
);
$my_options[] = array( "name" => "Custom Favicon",
"desc" => "Upload a 16px x 16px Png/Gif image that will represent your website's favicon.",
"id" => "custom_favicon",
"std" => "",
"type" => "upload");
$my_options[] = array( "name" => "Tracking Code",
"desc" => "Paste your Google Analytics (or other) tracking code here. This will be added into the footer template of your theme.",
"id" => "google_analytics",
"std" => "",
"type" => "textarea");
...
Devin has a nice blog post with more info including how to use these values in your theme, along with an introductory screencast.
things-rb: Ruby lib & CLI for Things (mac)
A fellow Rubist and good friend Andy Shen had a conversation on Twitter with another fellow Rubist Josh Price about Things, the Mac GTD application for the Desktop and iPhone.

What they probably didn’t know is that there’s a Ruby library & CLI tool for accessing the back-end of Things Open Sourced on GitHub.
There are number of reasons why you’d use a command line version of Things, including:
- You’re a geek and you like using Terminal and the command line
- You don’t need to keep “Things” running all the time
- You can access your todo’s remotely via SSH (even from a Windows or Linux box)
- Use GeekTool to keep your todo’s on the desktop
Example from the README:
things = Things.new # will use Things' default database location.
# things = Things.new(:database => '/path/to/Database.xml')
tasks = things.today.map do |task|
tags = "(#{task.tags.join(' ')})" if task.tags?
project = "[#{task.parent}]" if task.parent?
[task.bullet, task.title, tags, project].compact.join(" ")
end
puts tasks.compact.sort.join("n")
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.
Matched from the episode's transcript 👇
Preston Thorpe: [10:48] Yeah. Unfortunately, that was the case. These things were available right from source countries in ridiculous low wholesale prices. And it felt the movies, if you ever seen Blow… It certainly felt a version of that. It was a very unique time, when certain things hadn’t been scheduled yet… Like, the DEA hadn’t scheduled certain things, so they were just freely available on the clear web, from distributors. And they weren’t illegal. Obviously, some of these things are; I was certainly not not breaking the law, right? But it definitely made the price and availability pretty low. And yeah, it kind of just got – it took a life of its own, and… Yeah, the ego, the money, the feeling of the fact that I didn’t come home and apologize… I kind of felt it was “Hah! I’ve figured it out.” I had some kind of cheat code to life, and the whole time I’m just consuming tons of drugs, and not feeling a drug addict, because I’m obviously not the kind of typical, what you see, broken and struggling for their next hit… It was a never ending supply of everything. So it just all contributed to just making it worse and worse, because I wasn’t self-aware of it. It was a bad, bad deal. And surprise, surprise, 20 years old, I ended up getting caught with a pretty substantial package of Ecstasy in the mail from Vancouver, and got a 4 to 10 year prison sentence.
NATS and the CNCF kerfuffle
Derek Collison — creator of NATS and Co-founder & CEO of Synadia — joins the show to dive into the origins, design, and evolution of NATS, a high-performance, open-source messaging system built for modern cloud-native systems and part of the CNCF. Derek shares the story behind NATS, what makes it unique, and unpacks the recent tensions between Synadia and the CNCF over the future of the project.
Matched from the episode's transcript 👇
Derek Collison: And so that was kind of our original thinking. We knew that was going to be a fork. The question on whether or not we could use the NATS name, who it was part of where we lived in the CNCF, or if it came out, and who technically owned that trademark… But we already knew – we knew that that was what we could do, it’s just if it’s commercial we have no guarantees to either our customers from vendor lock-in and price gouging, or the OSS ecosystem. And so at the time, I was like “Ooh, I feel this is a better signaling mechanism.” But we needed to control the narrative, meaning once we actually did decide - and that’s the other thing that folks might not know… We hadn’t finalized our decision when the can of worms got opened up, and so everyone’s like “You’ve got to tell us what you’re doing.” I’m like “We don’t even know what we’re doing yet.” We were just still having internal discussions on that, because it was a totally separate subject from the relationship with the CNCF.
Kaizen! Tip of the Pipely
Kaizen 19 has arrived! Gerhard has been laser-focused on making Jerod’s pipe dream a reality by putting all of his efforts into Pipely. Has it been a big waste of time or has this epic side quest morphed into a main quest?!
Matched from the episode's transcript 👇
Jerod Santo: And then the third one is that - I subscribe to all of our feeds, because I want to make sure they all work… And so whenever we ship an episode, I get like five versions. You know, just padding our stats, getting five downloads for the price of one… And specifically the /interviews - so yesterday’s show with Nathan Sobo, two days back as far as we shipped this, but yesterday when we record… It went out and I downloaded it on the Changelog feed, and I downloaded it on the plus plus feed, and I didn’t download it on my interviews only feed. Because you can just get the interviews if you want. And that feed did not have that episode until this morning, when I logged in and said “Refresh the feed.” And I forced it to refresh that feed, and then I got it. And again, that’s probably – those are background jobs. So somehow that did not get refreshed. So that’s the third thing.
Building Zed's agentic editing
Nathan Sobo is back talking about the next big thing for Zed—agentic editing! You now have a full-blown AI-native editor to play with. Collaborate with agents at 120fps in a natively multiplayer IDE.
Matched from the episode's transcript 👇
Jerod Santo: I think that’s a fair assessment today. I think that as these get commoditized, that price just goes down, and it gets to a point where maybe it becomes feasible for a smaller org like yourself to actually take one on, and then have ownership of that aspect of it, and be able to –
When life gives you LLMs...
Our old friend, Zeno Rocha, returns to discuss email etiquette, the strange new world of AI SEO, the coming LLM enshittification, and SLATE Auto – the just-announced $20k modular EV truck.
Matched from the episode's transcript 👇
Jerod Santo: To get an EV truck for under 20K… That’s bringing the price into a lot of people’s wheelhouses who would otherwise not be able to afford it. So I feel like that’s probably why I’m more bullish… But yeah, I agree, I think – customization people want. But completely modular - it ends up having like a Lego feel to it, or something. When things kind of snap together, you’re like “Can I even trust this?” So yeah, I can understand your skepticism.
Chasing that next BIG thing
Drew Wilson is back! It’s been more than a decade since Adam and Drew have spoken and wow, Drew has been busy. He built Plasso and got acquired by GoDaddy. He built a bank called Letter which didn’t work out…and now he’s Head of Design at Clerk and back to chasing that next big thing.
Matched from the episode's transcript 👇
Drew Wilson: Crypto will be great for collectibles, and hopefully also another spot, like through Bitcoin, the name brand crypto, will be another spot for super-wealthy people to move money, and so that way they don’t have to move it into real estate, and harm the real estate industry… In that by doing so, by buying up a bunch of properties, it makes property go up everywhere; property values go up everywhere, and it makes it harder for regular people to buy homes at an affordable price… That’s one, if we’re staying on the crypto train. If we’re not staying on the crypto train, another hard belief - let’s see… Maybe a hard observation, how about that? I still think it’s interesting that design and engineering are now a regular job. I was always the young guy in tech, and so that will never kind of go away from me. But this idea of getting into tech and it being a job, and not like a hobby and something that you want to do is still so strange to me… Especially when you get into running companies and having employees or having teams, and you start to realize that “Okay, this person does one thing, and they’re probably only ever going to do one thing.” And maybe they have aspirations of being really good at this one thing, but they don’t really want to spread out, and like think of tech as one thing, and there’s many aspects to it. They think of “I’m a designer” or “I’m an engineer” or “I’m a product manager.” So that’s the segue into my hard belief. Here comes my hard belief.
Make sales not features
Kendall Miller is a bubbly extrovert who sticks his fingers in a lot of pies. He advises tech companies like FusionAuth, positions tech products like Civo & Tensorlake, organizes tech networks like CTO Lunches, and even sells whiskey & gin to tech people like us via his Friday Deployment Spirits brand. Kendall has learned a lot since he first entered the industry and he’s eager to share what he knows, and who he knows, with the world.
Matched from the episode's transcript 👇
Kendall Miller: So, first of all, you can get people to buy something that you haven’t built. And there’s a difference in the conversation between “Is this interesting to you?” and “Would you pay for it?” There’s a lot of people in tech who will say “Oh, that’s super-interesting. I love it.” But that’s different from “I would happily pay for that.” So there’s a little bit of nuance there. But how do you jive those two things? That’s the hard part about picking a niche. I mean, there’s times where you need to go boil an ocean, and build, say, a cloud, before you’re going to have adopters. But it’s not like Amazon started with a cloud. It started with compute, and then found out all the other things.
So when you’re going to go compete with the world or build something new and interesting in the world – I mean, there’s a reason they call it an MVP. Viable is not “The smallest I’m capable of building” in minimum viable product. Viable is the smallest thing that I can get somebody to buy, is really how you should think about that. And buy at a reasonable price. But if somebody says “Hey, I really need XYZ problem solved”, you say “Well, what’s the first bit of that problem that I could solve for you today, and you’d sign on a dotted line because it would be valuable enough to move? And can I go build that in a weekend?” And a weekend is a little handwavy. Maybe it takes you a week. But if it takes you nine months, the chances are more likely than not you built the wrong thing.
Fresh beats for endless flow state
We drop our fourth Changelog Beats album, Dex Horthy proposes the 12-factor AI agent, Thorsten Ball takes us step-by-step through building a coding agent, Zachary Huang builds an LLM framework in 100 lines of code & Philip Laine’s Spegel project gets unknowingly forked by Microsoft.
Matched from the episode's transcript 👇
Jerod Santo: It’s now time for sponsored news!
Teams with faster builds ship faster
Depot’s CEO Kyle Galbraith recently shared his thoughts on the age-old question: “build or buy?” for CI/CD.
The fact is teams with faster builds ship faster and more. And teams that know how to CI well create faster builds. Imagine what would happen if your builds got 10x faster…
Kyle found that when companies talk about “building their own CI,” what they actually mean is self-hosting runners from another CI provider. After analyzing hundreds of engineering teams, he identified three distinct archetypes:
First, there’s “The Abstraction-First Team” - these folks know what matters and move fast. They discover Depot and immediately think, “It’s ten times faster, half the price of GitHub Actions, and I just change one line of code? No brainer.”
Then there’s “The Infra-Curious Team” - they’re in that honeymoon phase with self-hosting. “GitHub Actions is slow,” so they spin up their own runners in AWS. But now they own the uptime engineering, literally, and they now have to learn how to make the builds faster AND keep them secure.
These folks eventually become the last archetype, which I’ll let Kyle cover in his post. It’s linked up in your chapter data and the companion newsletter.
Thanks you to Depot for sponsoring Changelog News, check them out at Depot.dev