Around the web
This simple advice is part of a wider pattern: primitive obsession. When reaching for a basic value type or data structure, ask what is this being used to mean? Should I instead represent that meaning, rather than its storage?
Many people with deep experience in C have experience with avoiding nasal demons. I have warned C programmers about nasal demons. Creators of post-C programming languages have used the threat of nasal demons as a reason to prefer their own wares.
Nasal demons weren’t real. The C standard at the time gave a range of permissible responses to UB, all of which were entirely reasonable.
I love my old computers, but as Andre Garzia points out it’s hard to use them on the interwebs. That’s not (for the most part) because the media is too complex: obviously my Amiga is not going to broadcast to Twitch but the only reason it can’t manage this mailing list is because the cryptographic algorithms haven’t been backported to let it connect to a recent HTTPS server. So, Andre says, decouple the service from HTTPS.
Back in the early days of the web, most RPC services available over HTTP were also shared over something else: IIOP for example. Email used to be accessible via a choice of protocols: webmail over HTTP, IMAP, or POP (my university mail service additionally supported NNTP). If we get back out of thinking “internet means HTTPS”, how many more computers, and people, can we reach?
There's an interesting trade-off being explored here: if a platform does everything then it is seen as heavyweight and bloated; if it doesn't do something then it is missing that key feature.
The Python language has gone through an evaluation of this trade-off. Originally it was batteries included: anything you wanted to do in Python was available in the standard library. Over time, bits of this standard library became unmaintained, or no longer represented best knowledge of the domain, and tying updates to releases of Python slowed down fixes to these important parts. Therefore “dead batteries” are being removed to slim down the standard library and help programmers find supported third-party libraries.
The linked article though is about web browsers: browsers are basically all-bloat because they are a small SGML document viewer with a very large application runtime attached. Browser apps are an acknowledgment that none of the pre-internet platform vendors managed the transition to an all-online world well enough to “win” the platform wars: a second system was needed to paper over the cracks.
“What metrics should I use to measure my engineering team’s performance?” Believe it not, there is a Right Answer: the so-called DORA metrics.
Those metrics are: deployment frequency; lead time for changes; change failure rate; and mean time to recovery. I remind you that “our highest priority is to satisfy the customer through early and continuous delivery of valuable software”, and note that this set of metrics only measures rate and success of delivery.