Fun Monday Links
"Fun Monday Links" was a work related fun project in which I tried to lighten up the start of the work week by talking about an interesting link in a humorous way. You can find all entries (slightly edited) below:
FML #1
Welcome to "Fun Monday Links" (FML)! A weekly post about rad tech stuff. Our first edition is about our favorite topic: version control!
Who wouldn't want to tell their non-technical friends how cool git is, right? Well, good news! 5D Chess With Multiverse Time Travel is the perfect game to explain git. Be the star at any party while explaining concepts such as non-fast forward merges, cherry-picks, rebases or more advanced commands like git rerere.
And for the people who crave more, here and here are two videos about more fancy git features.
My personal favorites include:
git clean
to delete files that are not in version controlgit rev-parse --show-toplevel
gives you the current directory which houses your git repo. Very useful for scripting!git ls-files
to search files in your git indexgit grep
works the same as a normal grep but is limited to the indexgit reflog
for when I screwed up and I need a hero that I don't deserve
FML #2
It's Monday! Welcome to FML Episode #2.
We all know that computers are fast, right? But how fast are they really? Humans have no good intuition on the difference between nano- and microseconds. The following video link (8 minutes) puts things into perspective using a 1 Hertz CPU.
Here's the gist. This is a list of access times of a 3ghz CPU:
- Register: 0.3ns
- L1 cache: 1.5ns
- L2 cache: 3ns
- L3 cache 13ns
- RAM: 0.1 microseconds
- HDD: 6ms
- SSD: 80 microseconds
All these values seem "low enough", but let's compare them using a 1 Hertz CPU:
- Register: 1 second
- L1 cache: 4.5 seconds
- L2 cache: 9 seconds
- L3 cache: 39 seconds
- RAM: 5 minutes
- HDD: 9 months
- SSD: 1 day
The next time you say to yourself "oh cool XYZ only took a couple of minutes", think about how many centuries have past for a computer. It's insane.
FML #3
Another Monday, another FML!
This week is about performance as well. And some history: LMAX probably built the first open source financial exchange, a high performance, low latency system built for trading. You might think that the overall architecture is very complicated and that it was written in a systems language such as C++, but no. LMAX and the underlying main data structure (known as The Disruptor - yes, that's the official name) are built using Java.
Martin Fowler has written a long article about the project.
The Disruptor has influenced a bunch of other technologies, such as a new database called Tigerbeetle and it even found its way into the Linux kernel: iouring was inspired by LMAX as well.
Martin Thompson, one of the initial people who worked on LMAX/The Disruptor, is now developing a high performance, low latency messaging queue called Aeron. In Java. Obviously.
FML #4
Time flies when you love Mondays. Welcome to FML #4!
In the old times backup tools differentiated between "full" and "incremental" backups in order to safe space. Nowadays newer tools such as restic or borg use deduplication techniques to unify these backups into a single directory/repository. In a way every backup is now full and incremental at the same time.
Restic in particular uses (among other things) a technique called content defined chunking to split files into pieces. The cool thing about this technique is that it can also be applied in cases where you want to ship data updates to people.
This blog post describes how Riot Games (the company behind a game called League Of Legends) uses content defined chunking to ship updates to players/users.
FML #5
Monday, yay! FML!
Conway's Law states, that a software architecture mirrors the structure of an organization. In other words: If you have two development teams you end up with a software that consists of at least two components.
In this video Casey claims that Conway's Law is too optimistic. In his mind a software architecture mirrors all organizational structures that a company has and has had. That means that you will find abandoned code lingering in your code base of previous employees. He gives a concrete example using Windows 10, where you can find the same GUI to control volume settings implemented in 3-4 different ways.
If we consider a sociotechnical system where we humans are part of the software system, we are in a way responsible to grow but also to trim software since it can't do that on its own. So "dealing with technical debt" is more or less ensuring that we kill and recreate something so that components do not grow uncontrollable. Cell growth and an immune system do basically the same thing. And we know what happens in a biological body if stuff (cells) refuse to die, right?
FML #6
It's Monday! Time for another Fun Link. FML #6!
This is a presentation from Bret Victor in 2013. The fun bit is that he pretends to be presenting in the year 1973 (using overhead slides, of course). He talks about recent developments in computers and programming (remember, it's 1973) and explains how some cool ideas and concepts will shape the next 30-40 years. I could say "no spoilers" but we pretty much know "the future"…
FML #7
Happy New Monday!
I got a treat for you if your new year resolutions include "building something very nerdy": Crafting Interpreters is a book about building your own programming language. It's a great read and the online version is free ! Last year the book inspired me to write my own command line parser. It's a much more narrow, but also interesting challenge.
FML #8
Have a great Monday!
Ever wondered what Frameworks (e.g. Object Relational Mappers) and Cake Mixes have in common? In her lightning talk (<10min) Christin Gorman argues that they are beneath our dignity. It's a fun watch.
FML #9
Dear Monday Enjoyers!
Here's a handy page to help you get out of your most recent git-upsies.
FML #10
'member Napster? 'member KaZaA and others?
Back then I always thought that random people would upload their music to those platforms, but it turns out that most stolen long-term borrowed music was uploaded by a few individuals. The book How music got free tells that story.
FML #11
Another week, another Monday. Welcome!
Here's a talk by James Lewis where he talks about team topologies and complexity science. He talks about hierarchical fractal networks such as mammals, companies or cities and how they show sub-linear and super-linear scaling.
FML #12
Have a great Monday!
Ever felt like your Computer Science university courses were missing something essential? Well, MIT got you covered.
This free literature teaches a broad field of useful day-to-day stuff including:
- Command line tools
- Version control under the hood (how is Git actually built?)
- Debugging
- Cryptography
FML #13
Welcome to a non-technical edition of "Fun Monday Links"!
This blog post is nearly 10 years old, but re-reading it always gives some perspective.
FML #14
Hello Monday My Old Friend!
We all know that software has bugs. We sometimes forget that file systems are software too. Have fun watching Dan Luu talk about the horrors that lurk below… bugs in file systems.
FML #15
Happy Monday!
Last week we talked about how spooky file systems are. Good think that we can still rely on our trusty old friend the database, right? … right?
Watch Martin Kleppmann talk about ACID and how that term is more or less just marketing slang without any real meaning. My favorite bits from this talk: Hope that your red cross organization does not use Oracle Do you know the default isolation level of your database and what kind of read or write race conditions that can cause? Very spooky!
Martin is also the author of Designing Data-Intensive Applications. A terrific book!
FML #16
Oh Monday, how have I missed you!
Last week we told our self horror stories about transaction. Let's go a level deeper and talk about how buffered IO and fsync are fundamentally broken. Check out this presentation about Tiger Beetle, a database that deals with financial transactions that was built from scratch. The coolest bit is the demo in the second half of the video where they simulate several instances of Tiger Beetle communicating with each other in a freaking game engine. As the "player" you can simulate events such as network partitions or an instance becoming offline. Much cool. Very techy. Wow.
FML #17
I just got complains that FML #17 is missing. Sorry, I've lost sense of time since Mondays are just so fantastic.
The holy war between programming paradigms has been going on for all eternity. What's better? Functional or object oriented programming? If you are curious, Rafal Dittwald gives a great example of how the thinking between those two are different. Both paradigms agree that state is the root of all evil. But computers would just be expensive heating machines if we would just ignore state.
- OOP: state is hard. So let's split it and hide it as much as possible
- FP: state is hard. Minimize it or move all of this confusing stuff into one place
The video contains an example code in Java with cool color coding to highlight statements which are having evil side effects/state manipulation. Rafal then goes on to refactor the code into a more functional style while keeping the color coding.
FML #18
Monday, yay!
Anytime you're having a bad day, remember that somebody's code base might be even worse. Have fun reading the top comments in the Hacker News thread "What's the largest amount of bad code you have ever seen work?".
FML #19
Oh look it's Monday!
It's a rather old video, but I don't often have to laugh that much when watching a technical talk.
We know that computers are complicated, but scanners should be simple, shouldn't they? A scanner would never change the content of a piece of paper it scans, right? No scanner would do that. I mean why should they, right?! David Kriesel has some bad news for you.
FML #20
I'm happily married to a lovely wife, but as a grown man I still have my overly manly crushes on other man. One of them is Rich Hickey.
Rich used to be a C++/Java developer until the day he got fed up with writing the same programs over and over. He took a sabbatical (burning through his own money) to build a new programming language based on the JVM. Today we know this language as Clojure. Clojure became popular in some circles and Rich ended up with his own consulting company which was bought by a bank a few years ago.
The Rich Hickey Fanclub has the cool subtext "every time I watch one of his talks I feel like someone has gone in and organized my brain" which I find to be true. His insights about programming are interesting and I love to watch his talks. It takes some time to get used to all the Clojure related stuff, but the general ideas he has are often interesting.