View profile

123dev #30: Resiliency and new domains

123dev #30: Resiliency and new domains
By Justin Garrison • Issue #30 • View online

A paper clip and spring bend back into shape automatically when exposed to heat
A paper clip and spring bend back into shape automatically when exposed to heat
Code and systems break all the time. At a certain scale it’s important that your start building software that can heal itself. It’s sometimes confusing what that means because what state should the software return to?
While it was bent out of shape the paper clip wasn’t broken, but it wasn’t useful as it was intended to be. Software is similar in that it may still be functioning but not usable for its intended purpose.
Unfortunately, there’s no code that I know of that automatically can bend back into it’s intended state when exposed to heat. It’s something we as developers have to make it do with carefully tuned systems to check and verify the current state.
Resiliency on top of unreliability
When telegraph usage was ramping up in the world there were two big problems for adoption—cost and reliability. To solve the problem of high cost many companies created codes that would compress a message into the lowest cost possible. The lowest cost was sometimes the shortest amount of characters but not always. Compression also helped with being able to communicate faster but that was a side affect. Messages could be encoded at one end and decoded on the other to convey a lot of information. One example I found from a theatrical code book was the word “Filander” which translated to “are you willing to appear in tights.”
As telegraph lines got longer there was another problem of how to make sure the message was correctly received. Not only could there be encoding errors but without repeaters data loss could happen regularly at long distances. In order to validate messages checksum letters were added which made the message longer but it was still cheaper than sending it twice.
That story reminds me it’s possible to build reliable systems on top of unreliable technologies. Packet switching networks and TCP/IP is another great example. By assuming an unreliable connection the creators were able to design very robust communication.
This post series has a lot of great introductions to building resilient systems. Most of it is focused on designing systems and is still good information for developers to know. Bonus points because the first post has a terrifying gif.
Patterns for Resilient Architecture — Part 1 | by Adrian Hornsby | The Cloud Architect | Medium
I’ve known about .new TLDs for a while but I didn’t know how many there were. This list has everything from creating new docs and calendars to jpgtopdf which rolls right off the tongue.
I’m only sad that isn’t a redirect to register a new .new domain.
.new - Google Registry
Some great lessons in this post that are true from my experience too. I especially liked the tips that great teams make you exponentially better and writing code for humans.
I’ll add that you should make sure you write your code for humans in the future who will have to solve unknown bugs and reproduce the context of the problems you were trying to solve and probably hate the code they’re reading because it uses old frameworks and the author left the company with only a vague git commit message that says “fixing bugs”.
The 10 Most Valuable Lessons I Learned As A Developer
Did you enjoy this issue?
Justin Garrison

1 gif, 2 comments, and 3 links to make you a better developer and person

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Powered by Revue
Los Angeles, CA