Living with yaks

A “yak shave” — the performance of a task solely in order to continue one’s “real work” — has traditionally been a pejorative term in the software and programming world. Much like “real life” yak shaves (fixing the garage door so you can get the car out so you can go to the store so you can make dinner, each task discovered only in service of the one it depends on), shaving programming yaks is typically not considered enviable work. It’s all stuff you reluctantly attend to in order to get on with the thing you wanted to do in the first place.

Such a perspective makes taking stock of my professional life an equally grim business: the overwhelming majority of my technical work has been in shearing wooly yaks, some more cleanly than others: vast savannahs of code for extracting data from PDF documents, libraries for authentication and authorization, AWS APIs, byzantine dependency resolution, and teststeststests; then there’s tools everywhere I look, including more REPL guff than you can shake a stick at, contributions to programming languages, and too many little bits of glue code to enumerate in any comprehensible way. (Let’s not speak of yaks kept away from the harsh lights of github and open source in general.) All of this was done in order to do other things. More often than not, I’ve let my hands linger far longer than necessary on those shears, rarely ever moving on to my original plans and projects.

Being busy is the most perfect form of procrastination, so that’s one explanation. I also think the yak-shaving tendency is an affordance of modern programming, with its deep cravasses that are sooooeasy to slip into, only to emerge 15 years later with a lot of experience in SOAP and WS-$WHATEVER. Why did I learn about OpenId in the first place? No one knows. Why do I still remember the Swing APIs with such exactitude that I’m confident I could knock out a moderately-complex Java GUI without looking at docs? Please, let me find blissful forgetfulness.

It’s too easy to gripe and grumble about this, though. We all have this experience of yak shaving, and occasionally regret for the time spent with such noble creatures, but I now think it’s disingenuous to lament. These computers we pound and tap on are things of our own creation: we choose our own legacy through our use and abuse of them.

When I look back on the computering I’ve done, I’m much more forgiving of my follies than I used to be. I can’t say I’ve accomplished what I originally set out for myself; but then, I can’t judge the work that was done too harshly, either. Most of it works well, most of the time, and many have found good use in it. I can’t ask for too much else, and I think I see now that hardly any other programmers (and perhaps, any other creative folk in general) are any different in this respect: we all struggle with whether we did good work yesterday, whether what we’re working on now is what we want to be working on, and whether it’s a stop on our path to something else, or a place where we might rest for a while.

Being at ease with this ennui puts the long years I hopefully have ahead of me in a much more pleasant light. It’s easier to be more thoughtful about the work I plan for, as well as more forgiving of the yaks that lay in wait for me along the way.


I talked about all of that so I could tell you a little story:

While idly twittering recently, a friend asked if I was talking about one of my “pet” yaks (I keep a number of forever projects around the house, their foraging is good for the lawn and they keep critters at bay):

The idea and visual of a World Yak stayed with me. Half-serious as it is (anyone even vaguely familiar with the workings of these stupid machines would recognize the truth in the sentiment), I couldn’t stop giggling about the visual. I eventually commissioned a wonderful artist to bring the meta-yak to life:

meta-yakI don’t know what exactly I’ll do with this burdened animal, but metayaks.com and @metayaks is a fun start.

Empathy and optimism

When talking with others over the past year or so, I’ve occasionally mentioned how I’ve been “working on my empathy”. This usually prompts confused, awkward moments, but I’ve meant it wholeheartedly. The most basic way I’ve found so far to describe what this means is I’ve been attempting to be as mindful as possible in my interactions with others, and in my apprehension of their stories and personal testimony. My objective isn’t just to comprehend what I’m reading, watching, or being told, but to do my best to re-experience, at least as much as is possible within my own head.

(Amusing, telling anecdote: after watching an “original series” Star Trek episode [or maybe it was an early movie?] featuring Spock successfully suppressing his baser human and Vulcan impulses, I said to my mother, “Wouldn’t it be great if we could all be like that?” She told me years later that my posing that rhetorical question worried her deeply for some time afterwards.)

Far from some kind of wispy daydreaming exercise, this is a laborious process. Since our phenomenology is apparently automatic (“System 1” thinking, in Kahneman’s terminology), assessing the uncountable set of signals and flashes that makes me feel like me is effortless, an instant-on flow state. Working on appreciating others’ experience as more than an abstract intellectualization of circumstances demands the careful, conscious construction of a completely different mindset, replacing as much of the sinewy underpinnings of my own identity as much as possible, and allowing myself to slip into the result like a bath filled with ice water.

Working on being empathetic in the way I’ve described is intense (how could it not be?), but one of its more surprising effects on my day-to-day life has been how it’s challenged my bias towards optimism. This bias has many roots; an impartial list might include the doctrine of American exceptionalism that I’ve been steeped in all my life; pop culture history of western society and technology that usually generalizes into a vector of ever-improving conditions for humanity at large; and my engineering and creative profession that is premised on the notion of individuals and small collectives being able to affect significant, tangible positive change.

There is truth in these influences, but each is a narrative better suited to providing comfort than actual enlightenment, like a fluffy, cozy blanket, so frail that the smallest poke or stretch yields a hole. The American project has always been fraught, its history pocked as it is with us repeatedly, collectively falling short of its promise. The postwar narrative of societal progress largely marks time on the backs of people overcoming adversity, usually spending far too little time on the fact that those adversaries should have been their brethren. The software engineering world I inhabit traditionally espouses a strictly technocratic problem-solving approach, fabulously appropriate when one’s objective is to build a bridge, but yielding catastrophic (yet ironically, invisible) consequences when applied to qualitative effect.

I knew all of this before, in the same way that I had previously coldly intellectualized others’ experiences. But the more I “worked on my empathy”, the less I could wave at the footnotes to my optimistic bias as incidental, temporary hiccups on the way to The Future, akin to having to break a few eggs in order to make an omelet.

In hindsight, this isn’t surprising: being as fortunate as I am, being empathic inherently requires trying to inhabit the stories of people that are or have been less so. Getting even a hint of the experience of people that have been failed by the American ideal (whether on its shores or abroad), people that are or have been treated as sub-human by their neighbours, people that have been ignored or personally injured by well-meaning but narrow-minded technologists…this made me question deeply those beliefs that previously sustained me so reliably. It seemed my optimism was a false idol, and I was despondent for a while.

What broke the malaise was my returning to the stories of people that embodied an eyes-wide-open sort of optimism, and trying to capture some of what made them push forward. Martin Luther King, Jr. remains front-of-mind for me, especially his last speech at the Mason Temple in Memphis on April 3, 1968 (multipart video), popularly remembered as ending with King prophesising his assassination the next day. Much of the speech is occupied with the particulars of that time and place, but some other passages spoke to me. In particular, King talked about the parable of the Good Samaritan, emphasizing the exercise of empathy in performing good works:

He got down from his beast, decided not to be compassionate by proxy. But he got down with him, administered first aid, and helped the man in need. Jesus ended up saying this was the good man, this was the great man because he had the capacity to project the “I” into the “thou,” and to be concerned about his brother.

And later:

And so the first question that the priest asked, the first question that the Levite asked was, “If I stop to help this man, what will happen to me?”

But then the Good Samaritan came by, and he reversed the question: “If I do not stop to help this man, what will happen to him?” That’s the question before you tonight.

Here Dr. King is imploring Memphis’ black community to stand together, and not just pass on by those among them that needed aid. I found the fact that he felt the need to do this remarkable; a modern reader or listener might think that, in that time and place, poor blacks would do anything to support each other, but doing so was itself an act of protest, carrying risk to prospects and body. In the scheme of things, Dr. King’s plea here was both critically important and an incredibly modest goal relative to his broader cause, but he agitated for it with all the vigor and determination he exhibited when discussing his grandest visions of peace and equality among races. His solemn, unyielding commitment to an unlikely cause even when facing his own demise overwhelmed me.

Now when I think of “real” optimism, I think of projects that demand a compassionate perspective, and recognition of those most different than I as my kin. It is our flawed human nature that such projects are more likely to fail than they are to succeed, their objectives so lofty and their opponents so tawdry and powerful that simply having an opportunity to work another day is a step forward: the Good Samaritan may just as well have been betrayed by the man on the road, who could have been luring him for ill cause, just as Dr. King was ultimately betrayed by his neighbours even while he worked towards ensuring that his country fulfilled the ideals it set out to live up to centuries prior.

We live in brighter times today, and so it is harder to see the stars. Maybe this is why I was lulled into adopting a triumphant, up-and-to-the-right flavour of optimism, a just-so Schoolhouse Rock tune of potential and incessant progress that is easy to bop to but impossible to build upon without maintaining an improbable naiveté. By working on my empathy, I feel like I have finally learned what optimism looks and feels like, and simultaneously gained the tools to practice it, too.

My Mom has Multiple Sclerosis, and needs a new wheelchair van

My mom has been battling secondary-progressive Multiple Sclerosis over the last 30 years (I’ve written about her a bit before). Over that time, she went back to school in her 30’s and graduated from the University of Massachusetts, worked as a substitute teacher and home health aide, and raised a son throughout. Unfortunately, she’s been quadriplegic for the last several years; despite this, she lives at home with the help of family and a number of personal heath aides, and maintains an independence and level of energy inspiring to everyone around her, even managing to continue pursuing her greatest passion, writing, now about her day-to-day experience living with MS.

Her current wheelchair van is shown in the photos below. While it’s never been much to look at, it has over the last 10 years been essential in allowing my Mom to go about living her life to the fullest: enjoying concerts and movies, going shopping for food and clothes, seeing doctors of all sorts, and visiting family, especially her mother and her new grandchildren (twin girls, if you hadn’t heard :-)).

This slideshow requires JavaScript.

The van was already very used when it was purchased, but my father (a skilled auto mechanic) has thankfully been able to keep it in reasonable running condition. It’s at the end of its road now, though: it needs a new transmission (it can’t go in reverse anymore!), the air conditioning has failed (a serious thing during the summer for someone with MS), and the body has rusted beyond any hope of repair.

So, my mom needs a new wheelchair van. To make this possible, we have set up a fundraising page, aiming to raise $10,000:

We hit our fundraising goal! Read the updates below…

Brand-new wheelchair-accessible vans often top $30,000, but we don’t need anything so fancy. We’re looking to purchase a new-used van in good shape that will last for a long while. We don’t have a particular van in mind yet (though we have been keeping an eye out), so the exact cost is not entirely clear yet. If any funds are left over after purchasing a van, they’ll be used to defray the costs of insurance, taxes, and repairs over the coming years.

(It kills me that I can’t simply take care of this myself without such a public appeal; while my wife and I will absolutely be helping her with this purchase, the realities of recently having bought a house and having twins makes doing so on our own impossible at the moment.)

I, my family, and my mom will be grateful for any little bit you can spare to help!

Update 2015-03-22

My mom’s birthday was a few days ago, but we all gathered to celebrate today. She knew about the fundraiser before, but didn’t know how far we had gotten until this afternoon (60% toward our goal!). She wanted to record a few words to pass along to everyone that had helped so far, whether by giving generously, or sharing the fundraiser via Twitter, Facebook, and other channels:

Update 2015-03-25

In just four days, we’ve reached the goal for our fundraiser! It will be hard to sufficiently thank everyone that helped, either by donating, or by sharing the effort with others on Twitter, Facebook, etc. I’m incredibly grateful to the various communities that pitched in, moreso than I can readily express at the moment. Of course, my mom is similarly amazed, and looking forward to being able to get around far more easily and comfortably!

We will be shutting down the fundraiser properly later today, pending tying up a few loose ends with the site that’s hosting it. We’ll also be periodically putting out updates, especially once we have found and acquired a suitable van.

Thank you so, so much. <3

My Mom has Multiple Sclerosis

She’s likely had it since at least ~1983; the first sign was a temporary bout of optic neuritis that left her half-blind for a month or so.  All was well for years, until 1996: we were walking out of the DMV — we went so I could get my driver’s permit — and she suddenly stopped walking in the parking lot…and couldn’t move any further.  After a minute or two of my asking what was wrong, and her looking a bit panicked and not knowing what to do, her legs started working again.  Turns out, I had gotten my driver’s permit just in time; I drove home that afternoon.

In the years since, a lot has happened: diagnoses (“secondary progressive multiple sclerosis”), various attempted treatments, the walker, then the wheelchair, then full quadriplegia.  My father, my wife, and a cadre of part-time nurses (thanks, everyone, for your contributions to Medicare/Medicaid/MassHealth) have helped her remain as independent as someone in her position can be.

No doubt, it’s been hard on everyone involved, but I think we’ve done okay, and made the most of a genuinely shitty situation.  Of course, it’s been hardest on my Mom.  I can’t imagine what it’d be like to be in her position (though believe me, I’ve tried), but — understandable dips in the road aside — she has remained remarkably upbeat, engaged, rational, and hilariously concerned with others’ well-being.  Courageous, that’s what she is, and I’m so proud of her for it.

But, I write all this not to share my perspective, or tell my story, but to suggest that you should listen to her tell hers: she recently started a blog, Living with Advanced Multiple Sclerosis.  If you’ve gotten this far in this post, you should go read it.

One thing that did decline as her disease progressed was her interest in her most fervent passion in life, literature and writing.  She was an English major in college, and along with helping me become the language pedant I am today, she helped cultivate my love of rhetoric and the written word.  While it was sad to see her stop reading and writing for so long (it can be hard to keep up with it when neither your arms or eyes work well, or at all), it made seeing her start to write again that much more joyful.

So, check out her blog, and pass it along to anyone that you think might appreciate it.  I know she’d love to know that other people are following along, especially if they are also on a journey with a degenerative neurological disease like Multiple Sclerosis, Parkinson’s, Muscular Dystrophy, and so on.  It’s no Shakespeare (something she’d readily admit; since her nurses type for her, she can’t meticulously edit and fret over every word for hours like she once did).  No, it’s better: her unvarnished voice talking about life, something I love seeing on the “page” again.

Originally posted on Mostly λazy…a Clojure podcast:

Recorded November 12th, 2011, the fourth and final recording in a series of conversations from Clojure Conj 2011.

Chris Houser (usually known as chouser online) has been working with Clojure longer than nearly anyone else; he started tinkering with the language in early 2008, and was a fixture in #clojure irc and on the mailing list for years.  His contributions to the language, early libraries, and community through his always genial and insightful presence are hard to overstate.  More recently, he has coauthored the excellent Joy of Clojure along with Michael Fogus, and is now working with Clojure daily over at Lonocloud.

It’s been my privilege to know and work with Chris a bit over the years, and, as always, it was great to talk with him in person.

Enjoy!

Listen:

Or, download the mp3 directly.

Discrete Topics

  • “Everything I learned, I [learned] on irc?!”
  • Macros…

View original 111 more words

Originally posted on Mostly λazy…a Clojure podcast:

Recorded November 12th, 2011, third in a series of conversations from Clojure Conj 2011.

I caught up with Hugo Duncan and Antoni Batchelli (everyone calls him Toni ;-) during one of the lunch breaks at the Conj.  These guys have been on a tear with Pallet, an open source Clojure project that Hugo started in early 2010 to shave one of the hairiest yaks around, the automation of provisioning and management of computing infrastructure.  The result is a tool and library that provides a classically Clojure abstraction for controlling nearly any environment, from cloud nodes to virtual machines to the rackmounts you have downstairs.  Since it is their full-time job — Toni and Hugo have built a business around the project — most of our discussion centers on Pallet, its history, and how people are using it.

Near the end, Hugo and I talk some about his other…

View original 270 more words

Your life is a vector

I drew something like this in my notepad a few months ago while thinking about the progression of life, what it means to achieve and attain satisfaction with one’s life.

I’ve started to find it useful to think about different decisions as adding another N-dimensional vector to my running sum to date.  Does this choice nudge my aggregate in a positive direction?  Can I bring enough magnitude to it to have a meaningful impact?

I’m probably reinventing the most obvious parts of ages-old conceptualizations of these things, in a soporific way at that. If so, links and references would be most appreciated.

Opa

Right now, I’m sitting across a table from my grandfather. He’s remarking for the hundredth time today that he can hardly see, though he’s spotting specks of planes flying in the sky and clearly enjoying bathing in the sunlight streaming through the westerly huge windows of the dining room of the rehab/nursing facility he’s moving into today. Sitting in a wheelchair, he seems content for the moment.

Meanwhile, I’m exhaling in the relative peace.

This is the man who first exposed me to electronics and soldering when I was so young, maybe five or six years old. I remember him having a sharp, skeptical mind, a vigorous devourer of news and debater of politics. The youngest of a huge brood of first-generation Russian immigrants that fled when things went south there in the early part of last century, he was a World War II veteran in Europe, using his fluency in Russian and German as a field translator. An electrician by trade, he worked on “high steel” helping to build many of the largest buildings that still stand in downtown Hartford and Denver. He survived the war, the job (which was ended by a 30-foot fall), a heart attack, and a series of strokes about ten years ago. Throughout it all, he’s been my Opa (German for “grandfather”).

Now, he’s barely recognizable. Those strokes that caused aphasia for a few months were the starting shot for a slow, inexorable decline. He lost interest in news and politics. His short- and long-term memory slipped away, bit by bit. His default reservations about others grew into something approaching xenophobia. And bit by bit, especially as I became more and more involved in his care, I learned about this other man who was more and more separate from the kind Opa I knew when I was younger.

I suspect my failure – or, perhaps, unwillingness – to integrate those two personas is simply a self-defense mechanism. Surely I want to preserve the better memory I have of Opa, separate entirely from the husband of my grandmother that so irredeemably slipped into irrationality and disablement through the ravages of unexercised, untended old age.

In some ways, it is far more important to me to understand the process by which he got where he is now, rather than the end state he has settled into. Recalling it now, the occasional odd behaviour and inappropriate comments over the years that only in hindsight were laid bare as hints of what was to come, I’m forced to consider, contemplate, and recoil from the prospect of my own decline, presumably (hopefully!) many decades from now. As much as I have ever prized my own mental state, I’d like to think I now have a more nuanced appreciation for it as well as a thoroughgoing awareness of how fleeting it may actually be. And, in the background, terms like dementia, dignity, and end of life have shifted from comfortable abstractions to present conundrums and likely permanent riddles.


Why talk so publicly about what is a usually shrouded in silent time away from work for caregivers, greeted with sympathetic, impotent condolences from friends and coworkers? Because nearly everyone must face these or similarly challenging circumstances, but our glossy collective expectations have little time or patience for the grit of real life and the grim choices and hard work that it demands, except perhaps as a gaudy spectacle. It’s too easy to fall into the trap of thinking that success and satisfaction must come from hustle and deals, a Series A and a smiling spread in BusinessWeek – and, if we stray from that plastic, purely linear path of ambition, we are somehow sullied. Through the course of the last weeks, I’ve discovered that I have far more constitution than I ever dreamed possible, allowing me to care and provide for family through thick and thin, and keep pushing ahead, inch by hardscrabble inch, in my business, its products, and my book, never sacrificing one part of my life in a gambit to attain glory in another.

Next time I see him, I think I will silently thank Opa for his part in this.

– Written on or around March 17, 2011

Update, September 1, 2011

My grandmother (I call her Oma) wanted to have her husband’s obituary published in the local paper.  It was, but that seems like quite a memory hole to me — the paper’s website only retains obituaries for 2 months (!).  So, here it is, hopefully in a place that will have a little more permanence in the world than that.

Daniel Agayoff, 89, of Hadley, MA, husband of Anna Marie (Döebberin) Agayoff, passed away on Wednesday, July 6, 2011 at Hadley at Elaine surrounded by loving family.

Born in 1921 in Fall River, MA, youngest son of the late Daniel and Mary (Opanacenko) Agayoff, he lived in Canterbury and Enfield, CT; Denver, CO; and Santa Barbara, CA before moving to Hadley four years ago.  A veteran of World War II, he attained the rank of Seargeant within the U.S. Army Signal Corps before being honorably discharged in 1948.  Daniel was then a union electrician for 30 years, working to help build many of the largest buildings that now define the skylines of Hartford and Denver before retiring in 1983.

After retirement, Daniel found joy in various hobbies, including a continued interest in electronics (such as installing custom-built remote controls into the family television before they were widely available), classical music, current events & politics, and a newfound love of painting inspired by Bob Ross.

Daniel is survived by his wife Anna, beloved daughter and son-in-law Darleen and Charley Emerick, and grandson and granddaughter-in-law Chas and Krissy Emerick.  He was predeceased by three sisters, five brothers, and his two sons, Daniel and Jerry.

There are no funeral services or calling hours. Burial will be at the convenience of the family.

“Full Screen” Wiki Editing in FogBugz

I’ve been doing a lot of writing in our FogBugz wikis of late, and I eventually found it irritating that so much of my vertical screen real estate was being eaten up by the FogBugz controls and such that take up permanent residence at the top of the screen.  So, I put together this simple Greasemonkey script that installs a full-screen toggler link in the upper-right corner of FogBugz wiki editing pages.  It should work with any standard FogBugz 6.x install — if you’ve styled your wikis significantly, or if the wiki in question is open to the community, then all bets are off (mostly because I didn’t test the thing that much!).

Normal view:

“Full Screen” view:

It’s only about 100 pixels or so, but that can be a lot when you’re doing some technical writing and are regularly scrubbing up and down a document as you go along.

Here’s the full source of the GreaseMonkey script:

// ==UserScript==
// @name           FogBugz - expandable wiki editor
// @namespace      http://snowtide.com/fogbugz
// @description    adds a button to fogbugz wiki editors that toggles the editor to fill the browser window; this works on fogbugz 6.x sites with default styling (although it doesn't work on the edit page you use when you first create a wiki)
// @include        *default.*?pg=pgWiki*
// ==/UserScript==

// JQuery load approach from http://www.joanpiedra.com/jquery/greasemonkey/

// Add jQuery
var GM_JQ = document.createElement('script');
GM_JQ.src = 'http://jquery.com/src/jquery-latest.js';
GM_JQ.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(GM_JQ);

// Check if jQuery's loaded
function GM_wait() {
    if(typeof unsafeWindow.jQuery == 'undefined') { window.setTimeout(GM_wait,100); }
    else { $ = unsafeWindow.jQuery; installFullScreenToggler(); }
}

GM_wait();

function installFullScreenToggler () {
    var tbFullDisplayOpts = ['none', null];

    // I wonder what the best way would be to reliably identify a site as a fogbugz wiki page?
    var mainArea = $('#mainArea');
    var tbFull = $('#tbFull')[0];

    if (mainArea && tbFull) {
        mainArea.prepend($("<a href='#' style='float:right;display:block'>Full Screen</a>").click(function () {
            tbFull.style.display = tbFullDisplayOpts[0];
            tbFullDisplayOpts.reverse();

            // need to trigger the wiki editor's resize handler -- couldn't find a way to fire a dummy resize event
            window.resizeTo(window.outerWidth, window.outerHeight + 1);
            window.resizeTo(window.outerWidth, window.outerHeight - 1);
        }));
    }
}

Burn It Down

While at dinner with a friend of mine a couple of weekends ago, we got to talking about how certain programming problems, usually the hardest ones we’ve faced, are ones where we ended up having to simply workthe problem: stare at the code, stare at the reference / specification / dataset, hunker down, and plow through the tough stuff with more determination and tenacity than engineering or design rigor. While we were talking about this dynamic, I inadvertently summed up that kind of experience and approach with what I think is a pretty apt phrase: sometimes, you just need to “burn it down” (’it’ being the problem at hand).

The phrase “burn it down” has been rattling around in my head incessantly since then, so I’m hoping to exorcise it here. Perhaps the reason why it’s stayed with me so long is that there’s a pretty good chance that that phrase has a lot of applicability to life in general. Looking back over the years, I’ve often found myself in situations where the key to survival and (ostensibly) success has been my ability (tendency?) to wage a war of attrition against that which stands in my way.

The most immediate case is a programming challenge: you’re sitting there trying to solve a problem for the umpteenth time, and the algorithm in your head or on the page in front of you is laughing at your inadequacies. Ideally, you’d like to step up to the whiteboard, and bang out a description of how this data structure should look, a proof for how that graph-walking algorithm can be sped up by an order of magnitude, whatever. I’ve seen programmers do this – they’ll pull out a small pad, and in about 8 minutes, they’ll knock out some pseudocode for an implementation of some algorithm that might take you an hour to comprehend, never mind implement.

Unfortunately, only a vanishing minority can seize hard problems like that on a regular basis; the rest of us are left wanting to be smarter than we clearly are. So, despite all of your hopes, your text editor simply stares blankly at you, the whiteboard is inert, and you’re left with two options: failure, or the last resort of the almost-overwhelmed, unyielding determination.

(This is very simply the same thing that Edison talking about: “Genius is one percent inspiration, ninety-nine percent perspiration.” Of course, I don’t think we’re in genius territory here…competency, perhaps?)

I’ve experienced that exasperation so many times while working on PDFTextStream and other Snowtide products. I’m fond of saying that I’m a math idiot, and while few people believe me, it’s entirely true. There are things in PDFTextStream that required me to slowly, painfully learn more about esoteric corners of computational geometry than I would ever care to know otherwise, and the same goes for various other specialties in mathematics and computer science. For me, understanding formalisms in those fields is like feathering a chicken by running it through a keyhole. The only way I’ve been able to ship a single bloody line of code has been to Burn It Down.

Of course, programming is a very narrow domain, but I think the same strategy is the only tool that us humans have to use in coping with the crush of life and disorder that surrounds us. Through growing up, getting an education, finding a job, starting a business, sustaining a life partnership, raising children, and coping with the march of time, the only common thread of human endeavor is rage. Even that majickal 1% of prodigies and bona fide geniuses have areas of their lives where their only hope of enduring is to simply endure. In a way, it’s comforting to know that despite the pretensions of some, the only sure way to succeed in programming (and likely even loftier domains) is to lay siege to (or perhaps, depending upon your mindset, to practice judo with) whatever challenge is ahead.

The day is young. Burn, baby, burn.