The third issue of Weekly Digest is here! Today you can read, among other things, about taking over a dead IoT company, learn a bit about how Golang package mirror works, play snake in your browser and why Japan is in a bad situation in regards to software engineering.

If you find this interesting drop me a line on social media - MastodonTwitter or LinkedIn!

1. Taking over a Dead IoT Company

https://blog.kchung.co/taking-over-a-dead-iot-company/

What was NYCTrainSign, why it failed and how to unbrick a device built by a company that doesn’t exist anymore? So many questions, but also so many answers - the guy acquired an IoT device, which was created by the company that doesn’t exist, analyzes it and recreates API to allow all owners of devices to unbrick them. Neat!

2. Fake it until you automate it

https://understandlegacycode.com/blog/fake-it-until-you-automate-it

Did you ever have a situation in project when only a single (or only a few) guy knows how to deploy software to production? That happens sometimes and the article shows how to step by step create automation to deploy - starting with “fake deploy” which is… instruction as a code!

3. How to store your app’s entire state in the url

https://www.scottantipa.com/store-app-state-in-urls

Sometimes applications in the browser do not store a lot of data - why not store them in the URL? That gives some features out of the box - like undo/redo with browser history or sharing with other people!

4. URL Snake - just a Snake game, from URL

https://github.com/lukebatchelor/url-snake

Saving app state in URL? Pfff, let’s save full Snake game in URL!

5. mongovi - MongoDB client for your terminal

https://github.com/timkuijsten/mongovi

Have you ever tried to incorporate MongoDB into your shell scripts? Now you can!

6. My Coffee Maker Just Makes Coffee

https://bt.ht/one-thing/

A short article about fancy and simple coffee maker - do our products really needs a lot of features? More features mean more complexity and in the end - Nothing can break when there is nothing to break.

7. Always use [closed, open) intervals

https://fhur.me/posts/always-use-closed-open-intervals

When working on intervals you always need to make a call - where is the beginning and the end. Shortly - [closed, open) is the way to go - easier to implement, less buggy. And even Dijkstra (yep, that guy whose name is used to call one of the graph algorithms) prefers it (in 1982!).

8. SourceHut will blacklist the Go module mirror

https://sourcehut.org/blog/2023-01/2023-01-09-gomodulemirror/

More like the news, but it gives a nice insight into how Go module mirror work. And what load it does on the SourceHut.

9. Why do domain names sometimes end with a dot?

https://jvns.ca/blog/2022/09/12/why-do-domain-names-end-with-a-dot-/

Did you ever wonder why sometimes domains end with a dot? After reading this you will know. And also learn what is a DNS zone and how domains are looked up.

10. Choose Boring Technology

https://boringtechnology.club/ and corresponding essay https://mcfunley.com/choose-boring-technology

Why when working on a product or a new feature you should select technologies that you already know? Boring doesn’t mean bad!

11. The forgotten mistake that killed Japan’s software industry

https://www.disruptingjapan.com/the-forgotten-mistake-that-killed-japans-software-industry/

Written version of the 200th Disrupting Japan episode - why despite cool hardware Japan is embarrassingly bad at software? To answer this question there is a need to go back to… late 1800s!

12. Manage like an engineer

https://ben.balter.com/2023/01/10/manage-like-an-engineer/

Can a software engineer be a manager? Yes, because why not! But can they use a software engineering toolset like pull requests, markdown files and so on? Sure! This way even automation is possible!