Taavi had such an easy time on the plane to and from Germany, and such a swell time with loved ones there, that we’ve booked his next flight to loved ones in Chicago. Meanwhile, we’re enjoying our frequent quality time with loved ones 10 minutes from home.

My current programming project is developing several small programs to extend my favorite SMTP server. They’re written in C mainly because the C codebase they extend provides many useful abstractions, but also because I’m enjoying extending my C learning to Unix-specific facilities and idioms. I’ve been working on this code for months (in tiny, mostly unpredictable increments) and am relieved to finally be on the home stretch. Knowing I won’t have any more patience after the code’s finished, I recently took a brief detour to write the Unix manual pages first.

The final program is a kind of SMTP proxy. I tried writing it in C from the get-go, but found myself spinning my wheels needing to learn too many things at the same time. With the goal of getting to the finish line sooner, I stopped and did a spike in a language I already know pretty well (Perl) that happens to offer easy string manipulation and Unix system call bindings. In my spike, I learned first how to become an invisible filter between a client and a server, faithfully relaying all input and output without interference (using the system calls pipe(), select(), read(), and write()). Then I made sure of my understanding by refactoring to small functions with intention-revealing names and dependency-revealing signatures. Then I tried intercepting certain client requests and modifying certain server responses, as the real proxy will need to do. Now that I know how, I’m translating to C, one small intention at a time.

Can’t wait to ship it, maybe even this week. It’ll feel very, very good to be done, and it’ll free up my brain to refocus on much-much-much needed regular physical activity.

Looking further ahead, I’m in discussions with a potential employer. It’s a remarkable workplace and the gig would be right up my alley, so if we can find a mutually agreeable arrangement, I’ll probably accept that in a few months I’ll be leaving the nest with some regularity. Right now it’s still hard to imagine choosing to spend much time away from my wife and son. But it’s possibly slightly harder to imagine how I’d manage to never work again. Gotta do something, sometime, someplace. This here could turn into an excellent option. I’m hopeful.