After returning to my previous employer, there’s a been a lot to do. Though I’ve been reading books at the usual rate, I just haven’t had time to type up notes on them here. However, it’s time to catch up, so here’s a list of some good books and papers from recent times.
Linux Observability with BPF by David Calavera and Lorenzo Fontana
I did a lightning talk at work on eBPF. I’d been hearing about eBPF for a while in various blog posts, and the idea of being able to attach VM code at points in the kernel is fascinating, particularly if that code can change the behaviour. I read this book, which turned out to be a great introduction to the subject. It goes though the various parts of the eBPF story – the VM, the places you can attach the code, the BPF tools packages that sit on top of everything, and then covers the networking side of things where eBPF really started. It’s a fairly thin book, but is dense – there’s a link to a GitHub repository full of lots of good examples, and also instructions on how to set up a VM to run them.
eBPF is an amazing technology and is well worth reading about. There’s a quick primer on writing a simple eBPF function here.
Type checking papers related to Haskell
We have been thinking about type checking in our weekly functional programming lunch at work. As part of that I’ve been reading a few papers related to type checking GADTs and type families in Haskell. This paper is a good introduction to type checking GADTS before you take on the full Outside In paper.
Microservices Patterns by Chris Richardson
There’s so much talk about Microservices, and we’ve been trying to get to grips with it at a weekly video lunch we have been having. This is a brilliant book, which pulled together all of the ideas that I’ve seen in a number of talks. It covers everything – the reasons that you’d take a monolinth and break it into Microservices (and when you’d keep a monolith), how you’d organise the services, how you get transactions between the independent services (sagas and compensation, with various mail box patterns to ensure delivery of messages), querying via an API gateway and read models, and testing strategies and contract tests.
The book is full of examples which makes the concepts a lot easier to follow.
Programming Typescript by Boris Cherny
We’ve been using TypeScript at work and this book helped me understand some of the more advanced parts.
The type system of TypeScript can be used to do some complicated things at compile time. This repository shows some good examples.