Kent Beck provides an excellent case for continued learning for software developers. Starting from a Smalltalk example, he shows how he searches the 'space' of possible solutions. He concludes that more experience means there are more solutions 'within reach'. "The greater my knowledge, the freer I feel."
John Pignata shows a great example of leveraging a UDP feature in Ruby to build a chat system. If you've read Working With TCP Sockets, but were hungry to learn about UDP specifics, here's a great start.
...as told by Rob Pike. Whether you realize it or not, UTF-8 and character encodings are central to what we do everyday, especially on the multi-lingual web. This is a fascinating, technical account of how UTF-8 was designed on the back of a napkin :)
Duff's device implements an "unrolled version of a loop by interlacing the structures of a switch and a loop". If this mystifies you, read on just to see what's possible (in C).
Different methods of visualizing TCP packets as they cross the network. Plotting things in this way can reveal data points that are otherwise hard to tease out when looking at raw data from something like tcpdump(1).
This is a great article on performance testing in general. In wanting to do some load testing for Sprout I came across this and found it ripe with wisdom. Load testing is hard.
Rob Pike is a long-time contributor to stuff like Unix and Plan 9 (and one of my programming heroes). He also co-created the Go programming language. This article tells you about his workflow and his ideal setup. The screencast of acme, a text editor he invented, is of particular interest.
The TTY DemystifiedThis is a fascinating look at the TTY subsystem. This subsystem is central to Unix, but I wasn't even aware of it until I read this article. It gives some perspective on shells, signals, and includes some fun shell commands to really stir things up.
Multithreaded Ruby was a hot topic at this year's Rubyconf. Tony Arcieri (author of the excellent Celluloid project) provides some insightful suggestions that would make multithreaded programming in Ruby a whole lot easier.
The Art of Unix Programming is a book about the philosophy behind good program design, taking specific examples from the history of Unix. The whole book is a great read to really 'get' the Unix philosophy. If you want a bite-size chunk, this chapter on application protocol design will give you an inside look at protocols that you're certainly dependent upon every day.
This is a favourite piece of mine, mostly about Unix history (can you tell that I like that topic?) Besides just history, it also gives you an inside look at some of the early design choices. If you dig around, you'll find out how stderr came to be, as well as an account of the first experience of using Unix pipes.
Ruby Under a Microscope
Pat Shaugnessy's ebook about MRI internals is a really fun read. Pat's style is really casual, with lots of diagrams to make things easy to understand. I haven't finished this one yet, but I already got a better understanding of Ruby's parser and the internal structure of the Object hierarchy.Grow Your Unix Beard Using Ruby
This book is my preferred reference for all things Unix. At 1500+ pages, it's not something to read cover-to-cover, but it's a really complete reference to programming with sockets, threads, processes, and more. Warning: author assumes you're a C programmer.