The Changelog: Software Development, Open Source - Quality is systemic, React is a self-fulfilling prophecy, Difftastic, Devbox & the shortest URLs on the web (News)
Episode Date: September 12, 2022Jacob Kaplan-Moss writes up a hot take on software quality, Wilfred Hughes creates the diff tool he's always wanted, Josh Collinsworth thinks React is only great at being popular, Jetpack's Devbox pro...ject looks pretty cool & James Williams sets out to find the shortest URLs on the internet. Oh, and chapters are here!
Transcript
Discussion (0)
Top of the muffin to ya.
Top of the muffin to you?
Top of the muffin to ya.
I'm Jared, and this is Changelog News for the week of Monday, September 12th, 2022.
We have two quick bits of Changelog News before we get to the rest of what's new. First,
I just booked my flight to Raleigh, North Carolina for All Things Open this fall. Yes,
Adam and I will be there in the flesh helping celebrate one of our favorite conferences'
10-year anniversary. More info on our involvement is coming soon, but if you were thinking about
attending, now you have one more good reason to do it. Seriously, do it. Do it. Second, last month I announced that we added chapters to each
episode page on changelog.com. As promised, we have now brought those same chapters into your
podcast app. In fact, you are inside a chapter right now. We'll call it the chapter about chapters.
Dreams, they feel real while we're in them, right?
It's only when we wake up that we realize something is actually strange.
Now, if you don't see any chapters in your podcast app of choice,
it's possible your app doesn't support the feature.
Spotify.
In that case, maybe contact the developers and ask them to add it.
Or try out some other podcast apps that do support chapters.
It's a great feature worth switching.
If your app does support chapters, but you're still not seeing them,
there is a chance that we have a bug in our ID3V2 frame generation code.
And since I didn't write that code, I'm emotionally okay with that being a real possibility.
In that case, please let us know in the comments.
Okay, enough changelog gazing for now.
Let's get into the comments. Okay, enough changelog gazing for now. Let's get into the news.
First up, Jacob Kaplan Moss dropped a hot take on software quality, and we picked it up.
Jacob says, quote, software quality is more the result of a system designed to produce quality and not so much the result of individual performance.
That is, a group of mediocre programmers working with a structure designed to produce quality will produce better software than a group of fantastic programmers working in a system designed with other goals.
He goes on to list out what he means when he says software quality,
then describes the virtuous cycle
between the human and technical factors involved.
I'll jump you to the end for two quick conclusions,
but you should definitely read
Jacob's full post for yourself.
Here they are.
One, if your team is producing defective code,
consider that it may not be
because they all suck at their jobs.
It's probably because the environment
isn't allowing
them to produce quality software. Two, instead of spending tons of time and effort on hiring
because you believe that you can, quote, only hire the best, direct that effort towards building a
system that produces great results out of a wider spectrum of individual performance.
If you don't know Jacob Kaplan Moss from The Django Project, perhaps you
remember him from his appearance on the changelog number 479, where we talked about principles for
hiring engineers. This was one of the most listened to episodes of the year so far. Here's a clip in
case you missed it. Back in the day, Microsoft had this famous interview process where they asked
like these brain teaser questions. How many ping pong balls can you fit in a 747? Right. Why are manhole covers round? I'm trying to remember. I'm trying
to remember all like that one's famous. Yeah. Right. So they ask these questions and you know,
the idea was like, this is a proxy for critical thinking. But what happened was people just
studied Microsoft interview questions and learn and memorize the answers, memorize the answers.
Yeah. And so then Google comes along and Google goes,
well, this is a bad practice. People just memorize the answers. We should ask
algorithms and data structures questions. We should make them write code. Okay, fine. Like
there's a theory, I guess you can make the argument that that's correlated to job performance.
Although like I have a BA in English and my lack of CS 101 knowledge hasn't
been an issue for me in 20 years in the industry, but fine. Maybe I'm weird. That's no, no, no big
deal. Whatever. Google comes up with this idea. They think that it's a proxy, but then what
happens is Google forgets that it's a proxy. And now if you want to get a job at Google,
if you did miss that one, or you just want to go back and give it another listen, head to changelog.fm slash 479. Wilford Hughes always wanted a structural diff
tool, so he built DiffTastic, and he calls it the most fascinating, most frustrating, and most
challenging program he's ever written. How does it differ, see what I did there, from other diff
tools? Instead of diffing files line by line or character by character, DiffTastic is aware of the syntax
of the actual programming languages involved, so it can be much more accurate.
For example, DiffTastic understands nesting, indentation, and line wrapping.
What results are much cleaner diffs, which are easier for us humans to read.
Be nice to the delivery guy, would ya?fred's blog post where he goes deep on the process of
building Diftastic, which got a lot of attention last week. A side note of interest, we first
linked to Diftastic back in July of 2021, but this blog post was published over a year later and
garnered a bunch of attention for the tool. Two takeaways from this fact.
One, follow changelog news for the freshens.
We find cool stuff before it blows up.
Shameless self-promotion.
Two, if you released something and nobody seems to care,
maybe try writing more about it as you have inspiration.
Or as Carl Lang put it years ago when he was writing about having success online,
do things, tell people.
That's a great idea. I'm glad I had it.
Josh Collinsworth knows how to start a flame war.
Are you ready?
Josh says, quote, react isn't great at anything except being popular.
End quote.
Are you not entertained?
Are you not entertained?
Is this not why you are here?
Okay, let's balance that out before moving on.
He also says, quote,
React is good.
Even I, a noted and unapologetic React non-fan, readily admit that.
Give me a choice between React and no front-end framework at all,
and given any project of sufficient size or
complexity, I will happily take React. Thank you very much. End quote. Now, you've already heard
his hot take, so I'm sure you can predict the big but that follows. Actually, there are a bunch of
buts that follow. Karaoke jam, your place. No ifs, ands, or buts. Well, maybe a few buts.
Big one! There's a lot to unpack in this post. Josh goes into the
details on the best choice for the job covering performance, learning curve, bundle size,
scalability, community and support, financial backing, hireability, and developer experience.
This post isn't merely a React hater hating on React. There's a lot of thoughtfulness here. Worth a read.
DevBox looks cool.
It's a command line tool that lets you easily create isolated shells and containers.
You define a list of packages required by your development environment,
and DevBox uses that definition to create an isolated environment just for your app.
It's built on top of Nix and Docker,
but the readme assures us we don't have
to learn Nix, and Docker is only required if you want to create containers. The shell functionality
works without it. Getting started seems pretty easy. After installing Nix, Docker if you need it,
and DevBox itself, you run devbox init, which creates a devbox.json, excuse me, dot json.
JavaScript object notation.
There's a lot of argument about how you pronounce that.
I strictly don't care.
I think probably the correct pronunciation is json.
In the current directory, then you can add command line tools from Nix packages,
such as Python 3.10.
When you're done, run debbox shell,
and you'll be in a brand new shell with Python 3.10 installed.
Just exit when you're finished, and you'll be in a brand new shell with python 3.10 installed just exit when
you're finished and you're back at your regular shell this tool was first shared by tamar sayla
in the ship it channel of changelog's community slack if you haven't joined our community yet
let's fix that bug it's high signal low noise full of nice people and 100 free join today at
changelog.com slash community why not not, right? Let's finish up with
a fun one, shall we? James Williams set out to find the shortest URLs on the internet. Can you
guess what they are? If you're thinking Google's g.co or Facebook's m.me, you're close, but no
cigar. James says, quote, there's nothing stopping TLD registry operators serving A records at the apexes of their TLD zones.
For example, if Verisign, who's the operator of the.com TLD registry,
wished they could add an A record at the apex of the COM TLD zone,
COM would then resolve to that IP,
and your browser would connect to that IP when you visited https://com, end quote.
With that knowledge in hand, James scanned the interwebs
to see if any registry operators actually do this,
and the answer is yes.
One example, if you visit HTTP colon slash slash AI,
you will hit a retro landing page for offshore information services
who maintain the.AI TLD.
Crazy, huh?
That's the news for now. We hope you enjoy our
new chapters feature. We'll dive into all the details behind it, including the new open source
library we had to build to make it a reality, on this week's Kaizen episode of Ship It. That
episode will drop into the Ship It feed as well as the Master Feed on Wednesday. Have a great week.
We'll talk to you again real soon.