Changelog News
Developer news worth your attention
Jerod again! š
Weāre gearing up to fly out to All Things Open early next week. Will you be there?! Make sure to stop by our booth (4th floor hallway track) and say Hi!
Ok, letās get straight into the news. (Listen along)
š„ Recommendations for remote vs colocated teams
Jacob Kaplan-Moss:
Iāve been disappointed with the tenor of the conversation from many of my peers about so-called āReturn to Officeā (RTO) policies. So with full understanding that Iām inviting flames, I want to try to articulate a more nuanced way of looking at working from an office versus remote or working from home (WFH).
His core position is that neither remote nor office-only are globally ābetterā: the ācorrectā model is contextual. In this post, he tries to articulate the contextual differences and provide ādefaultā guidance for which kinds of roles are better suited for in-office work and which make more sense for remote/WFH arrangements.
Jacob thinks deeply (and, in my experience, fairly) about these kinds of topics, so if youāre struggling to make (or rationalize) decisions around RTO vs WFH, I highly recommend you read his recommendations.
šµļø Changelog neural search (built with SuperDuperDB)
The Practical AI guys asked, and Duarte Carmo delivered! What resulted is an AI-poweredā¢ search engine from our open source transcripts. Speaking of open sourceā¦
Before I describe the stack, letās get the obvious out of the way: the whole thing is open source. Both the back-end and the front-end. If you prefer to go and poke around the code yourself, be my guest.
The back-end is built around SuperDuperDB (which is also newly open source) and the front-end is in NextJS (which I donāt need to link to anymore). In addition to search, the app provides a chat function, so you can ask questions to Changelog hosts/guests and see what theyāve said (or might say) about specific topics. Example, I asked āAdam Stacoviakā:
How cool is your co-host?
And he/it responded:
I have not mentioned my co-hostās coolness in the given context.
Sounds about right! š¤£
ā°ļø Strong static typing, a hill Iām willing to die onā¦
Tom Hacohen has been writing software for 20 years, over time heās grown certain that strong static typing is ānot just a good idea, but also almost always the right choice.ā
Notice the hedge in that sentence? āAlmost alwaysā is the way people talk when theyāve been writing software for a long time. After laying out his exceptions, Tom goes on to state his case:
would you rather work a bit more and get invariants checked at compile-time (or type-checking time for non-compiled languages), or work a bit less and have them be enforced at runtime, or even worse not enforced even at runtime (JavaScript, Iām looking at youā¦ 1 + ā2ā == 12).
Getting errors at runtime is a terrible idea. First, it means that you wonāt always catch them during development. Second, when you do catch them, it will happen in a customer facing manner. Yes, tests help, but writing tests for every possible mistyped function parameter is impossible given the endless possibilities. Even if you could, having types is much easier than testing for wrong types.
His overarching points are that a) types lead to less bugs, and b) types lead to a better developer experience. And the money quote:
āWriting software without types lets you go at full speed. Full speed towards the cliff.ā
šļø Donāt miss Neo4jās NODES 2023 online conf
Thanks to Neo4j for sponsoring Changelog News š°
Thereās so much going on in the data and ML space ā itās hard to keep up! Example: did you know that graph technology lets you connect the dots across your data and ground your LLM in actual knowledge?
To learn about this new approach, donāt miss NODES on October 26th.
At this free online conference, developers and data scientists from around the world share how they use graph technology for everything from building intelligent apps and APIs to enhancing machine learning and improving data visualizations.
There are 90 talks over 24 hours, so no matter where you are, you can attend live sessions.
Register for free right here!
š Turn your keyboard into a typewriter
Inspired by āTaking notes in class with my typewriterā on YouTube:
daktilo (ātypewriterā in Turkish, pronounced āduck-til-ohā, derived from the Ancient Greek word Ī“Ī¬ĪŗĻĻ Ī»ĪæĻ for āfingerā) is a small command-line program that plays typewriter sounds every time you press a key. It also offers the flexibility to customize keypress sounds to your liking. You can use the built-in sound presets to create an enjoyable typing experience, whether youāre crafting emails or up to some prank on your boss.
The perfect companion for your next podcast appearance when someone else is talking too long and you canāt get a word inā¦ Speaking of podcasts, this item is much better in the audio edition. š§
š No one actually wants simplicity
Luke Plant, spitting hard truths:
A lot of developers want simplicity in the same way that a lot of clients claim they want a fast website. You respond āOK, so we can remove some of these 17 Javascript trackers and other bloat thatās making your website horribly slow?ā ā no, apparently those are all critical business functionality.
In other words, they prioritise everything over speed. And then they wonder why using their website is like rowing a boat through a lake of molasses on a cold day using nothing but a small plastic spoon.
I could pull quote every paragraph form this piece, but Iāll limit myself to just one more:
Of course we all claim to hate complexity, but itās actually just complexity added by other people that we hate ā our own bugbears are always exempted, and for things we understand we quickly become unable to even see there is a potential problem for other peopleā¦
I think a good test of whether you truly love simplicity is whether you are able to remove things you have added, especially code youāve written, even when it is still providing value, because you realise it is not providing enough value.
š Clip of the week
Have you ever heard of the Riemann hypothesis? Traylor Troesh had, which played to his advantage in our first ever game of #define on Changelog & Friends! This clip is a bit ridiculous because this game is a bit ridiculous. Papier-mĆ¢chĆ©?!?! š¤£
š§ ICYMI: Recent good pods from us
Reflecting on Bunās big launch ā Fresh off Bunās big 1.0 launch, Jarred Sumner goes one-on-one with me to discuss the all-in-one JavaScript runtime thatās captured the interest of many. We get into it all: what problem heās solving, how itās so fast, why no Windows support, answering the critics, the (not real) beef between Bun and Node, how the VC-backed startup will sustain & more.
The beginning of the end of physical media ā On September 29th, Netflix shipped its final DVDs, marking the end of an era in physical media. So, we invited our friend Christina Warren (aka film_girl) from GitHub to pour out a drink with us and lament the end of this golden age of access to the films we all love.
Tauriās next big move ā Adam & I are joined by Daniel Thompson, Co-founder and Core Member of Tauri. Itās been a year since we last had Daniel on the show. He catches us up on all things Tauri, their continued efforts towards Tauri 1.5 (which just released), the launch of CrabNebula and how theyāre the people pushing the Tauri ecosystem forward and building on top of it, the state of Electron vs Tauri, and UI with Tauri. He even surprises us with his idea of creating a web browser.
Generative models: exploration to deployment ā What is the model lifecycle like for experimenting with and then deploying generative AI models? Although there are some similarities, this lifecycle differs somewhat from previous data science practices in that models are typically not trained from scratch (or even fine-tuned). Chris and Daniel give a high level overview in this effort and discuss model optimization and serving.
š¹ļø Flappy Bird implemented in macOS Finder
Yes, you read that correctly. āFlappy Dirdā is a game built directly into Finder, macOSā file explorer. (via Patrick Arminio)
It has instructions, high score tracking, and marquee banner ads. You double-click to start a game and select any file in the window to jump. It runs at 4 frames a second and canāt run much faster. It occasionally drops inputs for reasons that youāll understand if you finish this blog.
šæ Surreal adds developer ergonomics to vanilla JS (in 320 lines)
Want fewer layers? Less complexity? You may appreciate Surreal if you:
- Hate typing
document.querySelector
over and over - Hate typing
addEventListener
over and over - Really wish
document.querySelectorAll
had Array functions - Really wish
this
would work in any inline script tag - Enjoyed using jQuery selector syntax
š§® Exploring Linux command-line space time
Fabien Sanglard was curious to explore how long a Linux program takes to run, how much memory is used over time, and what processes/threads are spawned, so he built a tool called st and wrote up his findings by pointing it at gcc
and clang
, rustc
and javac
, go build
, chromium
, and even curl
vs wget
. Iām not sure whatās more interesting, the tool itself or the analyses he was able to achieve with it.
š Before I let you goā¦
Iāve vastly misunderstood the Single Responsibility Principle ā You too?
This blog post couldāve been a talk about blogging ā Blogs are back
The minimum you must know about unicode in 2023 ā No excuses!
Burning money on paid ads for a dev tool ā Podcast sponsorships FTW
End-to-End machine learning in Elixir ā Elixir makes this stuff almost too easy
Announcing LangChain for Elixir ā And it just got even easierā¦
Run any ML model from any language. ā In case you donāt like Elixir
4 Tips for a Better Conference Experience ā Be present!
Generate your fav Slack emojis with a click ā 405,218 so far!
Thatās the news for now, but we have some great pods coming up this week:
- Wednesday: an interview with Marcin Kulik from asciinema
- Thursday: Amal sits down with Sunil Pai from PartyKit
- Friday: Gerhard Lazu joins us for our 12th Kaizen
Have a great week, forward this email to a friend if you dig it, and Iāll talk to you again real soon. š
āJerod