Weekly notes #1

Ruby, systems, performance, and programming links from last week.

Videos

RubyConf 2016 - Methods of Memory Management in MRI by Aaron Patterson - YouTube

How Ruby generational incremental GC works, what are some of the challenges in doing that correctly with respect to pointers across generations and how write barriers solve that. Some GC and heap inspection tricks in the last 10 minutes and work Aaron is doing at GitHub on inspecting and reducing heap fragmentation,

LoneStarRuby 2015 - My Dog Taught Me to Code by Dave Thomas - YouTube

Dave Thomas shares some points on writing maintainable code. I don’t agree with some of those imperatives, but hey, whatever works for him.

Systems we love

How Apollo Guidance Computer works. Real-time computer from the 60’s. Uses core rope memory a.k.a LOL memory, has interrupts, several programmable clocks with different precision and some funny trade-offs and bugs!

Less Ado About NTP An excellent overview of how NTP and algorithm that drives it works. There’s a consensus protocol in there, from before it was cool!

Man, ‘splained - 40+ years of man page history. Interesting to see that the UNIX manual started as an actual dead-trees book. Here’s a blog post written to support that talk.

Articles

Mastering Programming

Kent Beck’s guidelines for managing time, information and risk while problem solving (IMHO not just programming). Mostly about deconstructing problems, and juggling them in time and space until it’s easy to make a change that solves them. And measuring the state before and after. Interesting point about 80/15/5 rule.

Xchars.js by sylvainpv

Eval any JS code using six chars. Can you do better and break the wall-of-six?

Next Generation Linux Tracing With BPF - DZone Performance

Linux bcc/BPF Node.js USDT Tracing

With extended Berkeley packet filter (eBPF) and bcc toolkit, DTrace-like kernel and user space tracing is finally getting into Linux. Yay! Now is the time to push tools like ply, so that developers and sysadmins do not have to write tracing programs in bcc. Another front to tackle is the ability to add BPF probes in userspace applications, effectively enabling runtime tracing of (Ruby) code.