Raising elephants is so utterly boring.

If you’re a Linux nerd, you should know what the post title means.1 Every couple of years, it’s time to start anew and eschew the utter boredom of importing posts, going through shortcodes that no longer exist, fixing tags… there are more important things in life than that.

This time, it’s not just a reboot – it’s hopefully also a change of directions. For years, I have tried to keep things separate, to write about what’s on my mind and what’s on my heart in separate fora, with each coming at the expense of the other. The truth is, the two are not that separate. As such, in this incarnation, the blog will feature things that you might not be used to. If you have read my more personal blogs, you will be struck by the occasional post about some esoteric aspects of a little known technical programming language. And if you’re a reader of my technical posts, you might find some raw honesty by the man behind the numbers.

As such, this is also an experiment. Does my technical writing improve if I am liberated of the constraints of subject|>forum? Do my personal insights benefit from accountability to the professional self (owing to society’s views on what we’re doing for a living, there’s a limit to how dumb you’re allowed to get when talking about something entirely different if you also talk about maths, statistics and software development, as if knowledge of any of these areas endowed you with some degree of universal smarts – a matter squarely contradicted by some spectacular doozies uttered by otherwise respectable scientists when it comes to issues of society)? I’m quite keen to find out.

As a precaution, I am categorising work and life posts separately, for readers whose sensitivities preclude them from discussions of faith and society on one hand or introspection in functional programming languages on the other. I’m hoping this will allow those with exclusive interests in one or the other to get just what they need and no more – although even to them I would say that sometimes, risking the whole man is worth it.

References   [ + ]

1.For the sane: it’s a mnemonic for REISUB, the sequence of buttons to mash together with Alt and SysRq (does anybody remember that key?) to restart a completely locked up Linux box that refuses to listen to reason.

If you love something, let it break your heart.

A few days ago, I finished re-reading Michele Cushatt‘s book Undone, an incredible journey through what she describes as an ‘unexpected life’. I cannot possibly do the book justice, save by telling you to go out and buy it, right now. I was reminded of her book today when thinking about coding and software development (which I do way too much for someone who is principally supposed to be a tool user, not a toolmaker).


There’s a style of Japanese pottery known as 金繕い (kintsukuroi), in which broken pottery is repaired with a mixture of lacquer and fine-grained gold or silver dust. The first time I saw a kintsukuroi bowl, I must have been about 12. It was unceremoniously stacked among a lot of other stuff in a side room of the Kunsthistorisches Museum in Vienna, which hosted an exhibition on Asian pottery. It was as close to a transcendental experience as I have ever had.

Kintsukuroi accepts brokenness as part of life. It accepts the fact that Things Break, and sometimes not all the king’s horses and not all the king’s men can put what was broken back together again. It is a brutally honest acknowledgement of what it means to live in an imperfect, fallen world. But at the same time, it is an acknowledgement of the fact that yes, sometimes, you cannot put something broken back together again with seams fitting in lattice-to-lattice perfection. But what fills up the empty spaces, what fills up the gaps of what used to be, can be valuable. Just as the few drops of gold lacquer in a kintsukuroi bowl are worth more than the bowl itself ever was, brokenness and healing can make us something more valuable.

Coding is hard. It’s heartbreaking. It’s sometimes frustrating. A few weeks ago, I spent hours trying to figure out what to make of a fifteen-line, completely obscure error message in R citing various Java code citing C++ code… I was near punching the screen.

It turns out it was the system’s way of telling me the server connection timed out. Did it say so? Heck no. It took hours of digging and debugging around to find out how a Java exception in the middle of R code even made sense. Those are the moments you just want to smash some of the objects in arm’s reach.

The only good thing about these moments is that there’s a faint chance you’ll remember them. That, by the way, is called growth.


Which leads me to the point of developing immunity to heartbreak. I wrote my first piece of code that I actually dared to share with the wider public in 2000. Github wasn’t around yet, so people shared code on mailing lists and messageboards. I posted this snippet of code I wrote to calculate the haversine distance, written in Python, that for some reason didn’t run.

Within an hour, I had 25 comments. They ran the gamut of “just give up already” to “this is some of the worst code I’ve ever seen”. In other words, the kind of feedback you aren’t allowed to give these days. Now, I’m not a particularly thick-skinned person, and it duly broke my heart.

I got upset… until I felt something stir in me, a resolve and an unwillingness to leave it at this. I decided I’m going to work on my code until I could turn out the best haversine implementation that I can. It took me the best part of a month. I posted it to the same messageboard, in the same thread.

The same people I thought were absolute jerks now sent appreciative comments. One even noted he learned a new trick from my code.

That’s when I understood the people who broke my heart only weeks ago didn’t do so out of ill-will or meanness. They did so because they, too, had their hearts broken day by day by the interpreter’s harsh output. And they knew that getting your heart broken by people is a lot easier than getting your heart broken by a machine.

Heartbreak is important. Heartbreak is what happens when you try to scale a mountain too high. Heartbreak is the sign that you’ve gone beyond your comfort zone.

And growth happens in that space. Growth cannot happen in a space of continual heartbreak – that’s just pure frustration, and frustration causes resignation, not growth. But a space without heartbreak has no challenges, no risk, no disappointment, no growth.

If you love something, go out and make it break your heart.

Then stand up, and try again.

And again.