Changelog News
Spam free since before Mastodon existed
Jerod here! 👋
If my math is correct (rare), our good friend Gerhard Lazu officially turns 4 years old on Thursday! Happy Leap Year Birthday, Gerhard! 🥳
Aside: one of my first ever programs for school calculated leap years, so I learned the hard way that it’s more complicated than “is the year divisible by 4?”
The logic is actually: year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)
Ok, let’s get into the news. (Audio Edition)
🎧 ICYMI: our latest podcasts for developers
🎙️ Ellie Huxtable, creator of the Atuin shell history tool (The Changelog #579)
💚 Homebrew’s Mike McQuaid is brewing something up for work (Friends #32)
🚀 Andrew Guenther on Shipping in SPAAAACCEEE (Ship It! #92)
🪩 Jessica Sachs joins the party as Apple kills EU web apps (JS Party #313)
🤖 Lt. General Jack Shanahan on AI in National Security (Practical AI #257)
⏰ Miriah Peterson & Bryan Boreham on Go performance (Go Time #304)
🗣️ Natural Language Programming
GPTScript is a new scripting language to automate your interactions with LLMs (which just means OpenAI for now).
The ultimate goal is to create a fully natural language based programming experience. The syntax of GPTScript is largely natural language, making it very easy to learn and use. Natural language prompts can be mixed with traditional scripts such as bash and python or even external HTTP service calls.
The project includes examples of how to plan a vacation, edit a file or run some SQL. The central concept is that of “tools”. Each tool performs a series of actions (similar to a function) and GPTScript composes the tools to accomplish tasks.
🧐 Adam Wiggins’ Muse retrospective
We went deep on Muse (a canvas-based thinking tool for iPad and Mac) during our two part Heroku interview with Adam, so it’s sad to see him move on from the project:
We raised $2M in funding, grew the team to seven, had tens of thousands of active users, and thousands of customers. Despite that, we never reached sufficient organic growth or found the right business model for financial viability. I stepped away along with majority of the team in fall of 2023, leaving the business in the hands of one of my former colleagues.
With a laudable level of transparency, he lays out Muse in its entirety: from its origins and original vision to why it didn’t work and his final takeaways, including: Inventing a new document type is hard, helping to define an emerging category is hard & stuff that works… eventually stops working.
👀 Neo4j for all your graph database needs
Thanks to Neo4j for sponsoring Changelog News 💰
If you are experiencing slowdowns in your app due to excessive JOINs and lengthy query durations, it might be time to re-evaluate your database.
Graph databases excel in scenarios rich with interconnected data, such as:
- Managing intricate supply chains
- Detecting fraud
- Conducting real-time analytics
- Powering genAI applications
Neo4j offers the flexibility to develop using your preferred programming languages and connect via any driver, ensuring seamless integration with your existing technology stack.
Begin your journey at Neo4j.com/developer
🤢 JavaScript Bloat in 2024
Nikita Prokopov surveyed a bunch of popular websites to see how much JS they loaded on their pages. The results bring out the parent in me: “Your mother and I are not angry with you, but we’re disappointed.” Here’s a sampling of the offenders:
- Zoom, 6 MB
- Vercel, 6 MB
- Pinterest, 10 MB
- Gitlab, 13 MB
- Google, 9 MB
Niki approximates that 10MB of minified JS expands to ~300k lines of code… and remember:
It’s not just about download sizes. I welcome high-speed internet as much as the next guy. But code — JavaScript — is something that your browser has to parse, keep in memory, execute. It’s not free. And these people talk about performance and battery life…
🗒️ A no-hassle CMS for GitHub Pages
Tired of juggling Git and YAML to update your Next.js, Astro, Hugo or Nuxt website? Make it easy on you and your team, get a user-friendly CMS running straight on top of GitHub.
I’m not personally tired of juggling Git and YAML (Ok, maybe YAML) but I love how this tool might enable technical and non-technical team members to collaborate on a (100% free) static website.
🫥 The Subversive Hyperlink
Jim (hyphen) Nielsen on what he calls the web’s superpower: permission-less link sharing
To some, the hyperlink is dangerous and must be controlled: they want to control what you can link to, they want to control how many links you can make, they want to monetize your links and give you no credit…
And yet, we keep on linking:
- To whatever we want (👋 Apple)
- However many times we want (👋 Meta)
- And with no expectation of return (👋 Google/Open AI)
Couldn’t agree more! I’ve long said the most important element of the web is the humble a
tag. Go forth and link to things! Or in Jim’s words: “Subvert the status quo. Own a website. Make and share links.”
🏊 A deep dive into using Tailscale with Docker
Thanks to Tailscale for sponsoring Changelog News 💰
Creating small, trusted networks with your friends, family & coworkers is central to the mission of Tailscale. In this post, Alex Kretzschmar takes you on a dive deep into using Docker to do just that, with containers.
Why might you want to consider putting Tailscale in a container?
By design, containers are isolated execution environments. Access to resources both inside and outside of these container environments must be explicitly granted and managed.
Alex explains how to add a container directly to your tailnet with auth keys or OAuth secrets (and the difference between them), plus how to proxy a web service through Tailscale both locally via Serve and over the public internet via Funnel.
🔗 Quick hits before I let you go
- Confirmed: Nobody gets credit for fixing problems that never happened
- Compared: Processing Background Jobs: Lambda vs ECS vs ECS Fargate
- Upgraded: The Knock team achieved zero downtime Postgres upgrades
- Disappointed: Max Howell’s tea.xyz incentivizes pull request spam
- Forked: Plausible introduces CE, AGPL license insufficient protection
- Adopted: The missing Rust playbook for managers and CTOs
🗯️ Quote of the week
“The function of good software is to make the complex appear to be simple.” — Grady Booch
That’s the news for now, but I’m pretty excited for our upcoming follow-up episode with Nathan Sobo about Zed. I’ve been using the Zed editor ever since they open sourced it a few weeks back and I have to say, it’s the first editor that’s kept my attention for this long since… Sublime Text.
Have a great week, make good software, forward this to fellow makers of good software & I’ll talk to you again real soon. 💚
–Jerod