Weekly Head Voices #135: It’s all rainbows and unicorns, no really!

This rainbow unicorn, floating serenely on a cloudy background, is winking right at you. Down below, we are celebrating GOU #3’s second birthday. Photo taken with the expert assistance of GOU#1, age 11 going on 32.

Hi there friends, welcome back to the weekly (!!!) head voices! I missed you.

Software Release Frazzle

Releasing desktop software, even for a small group of people, can get tricky quickly yo!

Yes, people still write desktop software, and we do love doing it. However, compared to web-apps, there are some additional challenges.

One can’t easily roll-out an incremental fix while no-one is watching, because every release is a significant event where users have to go to the effort of downloading and installing your baby.

It’s a fairly new product, so our release process is still being refined. Long story short, we caught a bug on the release platform (we develop cross-platform, but deploy for a single platform) shortly before release and so we really had to scramble to fix. This, together with the fact that the preparations for the release were already generally intense, left me quite frazzled by Wednesday evening after dinner.

Lesson learned: In a cross-platform development, don’t allow any dependency version discrepancies between platforms, no matter if it causes developer inconvenience.

Unicorns and rainbows

GOU #3 turned 2 on Thursday.

The littlest genetic offspring unit seems to be verbally well developed. She’s already using words like “eintlik” (“eigenlijk” in Dutch, “actually” in English) in fairly well-structured sentences. I have taught her to say phrases like “universiteit” and “lekker internet”, which she does with a smile.

She is able to express her wants and needs at a level which exceeds that of some 30 year olds.

Anyways, yesterday we held a birthday party for her.

It was a fabulously enjoyable affair with far too many delectable delicacies, and more than sufficient amounts of craft beer and good wine (expensive local Chardonnay is my current preference, if you must know).

It was beautiful to see so much of the family together in one place, all connecting like we humans should be doing as often as we can, but often don’t.

Thank you little GOU #3, for everything.

Your complimentary grab-bag of interesting cocktail party conversational tidbits

Trump / Brexit voters were scared.

In my 2016 to 2017 transition post, I lamented the observation that for both Brexit and the Trumpocalypse, a lower level of education was the strongest indicator for a vote for leave and for Trump respectively.

A new study by the Queensland University of Technology has now shown that in both cases the vote for Brexit / Trump was also driven by fear. It also makes the scary point that the respective campaigns deliberately targeted this fear, which is more than worrisome.

Use this tidbit with care, or right before you were planning to leave the party anyways.

How to defend your exercise addiction

A recent study published in Aging Cell, showed that older people who exercised regularly (in this case cycling), had the same levels of T-cells as 20 year olds. In other words, their immune systems are as effective as people a fraction of their age.

One of the co-authors of the study, 82-year old Prof Norman Lazarus (who himself cycles 100km at a time), summarised it neatly in the media as follows:

If exercise was a pill, everyone would be taking it. It has wide-ranging benefits for the body, the mind, for our muscles and our immune system.

(I like how he casually takes aim at our pill-obsession.)

The Carmack Productivity Method (CPM)

John Carmack is the modern-day genius who was the lead programmer of genre- and era-defining games like Wolfenstein 3DDOOM (“one of the most significant and influential titles in video game history”) and Quake. During working on these projects, he invented a number of important computer graphics techniques.

It turns out that Carmack is not only a genius, but a productivity and focus monster.

In this 2013 blog post, a colleague of Carmack at id Software describes how Carmack would apparently play CDs while he was working. If he was checking his email, or if he was interrupted by a colleague, or he needed to go to the bathroom, in other words, if he was not focusing on the core of his work, he would pause the CD player.

By the end of the day, he knew exactly how much focused work he had done by how far he had gotten through his playlist.

Compared to the interrupt-driven way programmers work today (thanks internet!) this sounds like an amazingly visceral way to recognise and signal interruptions in your flow: THE MUSIC SIMPLY STOPS.

Would you be able to implement something like this for your work?

À bientôt

Thank you very much for stopping by! Have a productive week, and don’t forget to exercise.

I look forward to our next meeting.

Weekly Head Voices #134: SCARF.

Untitled artwork by GOU#2 (age 7), who is also known as My Most Favourite Middle Child.

I somehow forgot to take photos this past week. At the very last moment, GOU#2 delivered, as if commissioned, the piece shown above.

The WHV visual element lives to fight another day!

The rest of this post is divided into three parts: One for the programming nerds, one for the running nerds and one for the arm-chair psychologists. Feel free to pick and choose!

C++ quo vadis?

This week, we spent more than a day chasing an elusive memory-related access violation (big words for “crash”) in the software we recently released.

In the end, the bug was only really reproducible on Windows 7 (not on Linux, not on macOS, and only with great difficulty and infinite patience on Windows 10). It turned out to be hidden deep in a well-tested, industry-backed open source C++ library.

This and the specific nature of this bug again demonstrated to me that C++, although I love it dearly, simply has too many well-disguised flaws (let’s call them foot-guns) which will eventually lead to even the most experienced and sharp programmer making mistakes.

In spite of the recent language renaissance (C++11, 14, 17 with 20 imminent) and a slew of improvements, it’s still too easy to write unsafe code.

With contenders like rust (rustlang AJ, rustlang!) which enable programmers to write programmes which have C++-level performance but are by default safe, could C++’s days be counted?


It was time to retire my trusty pair of Asics Cumulus 18 shoes.

They had clocked just over 900km, which is perhaps a little too much. By the end, I could feel the bones in my big toe’s main joint (apparently also known as the big-toe’s MTP or metatarsophalangeal joint) crunching down with each strike.

Normally not prone to these types of visits, I had no choice but to pop out to the Run Specialist Store in Edward street on Thursday to get a new pair of activity-proof foot covers.

They let me run on a treadmill (whoohooo running!) with a high-speed video camera. In the footage, we could see that indeed my conversion to forefoot running had been successful (which was good to hear, because it had cost me about 100km of pain), but that I tended to land on the outsides of my forefeet.

The minimal shoes I had had in mind were not (yet) to be.

Instead the run doctor prescribed a pair of Saucony Kinvara 8s, which make my old Asics look like previous generation gardening shoes. I’ve since taken these out on two runs. They are super light, and super springy (everun FTW?), but I have to say that I have my doubts about the durability of the outsole. I’ll report back.

In February, I’m pretty happy that I managed to squeeze in just over 110km of running, which is not too shabby (by my standards, as always!) for the short month.


Yes, winter is coming, but this, although also quite useful, is not that type of SCARF.

I am still reading David Rock’s book Your Brain at Work, and SCARF is his mnemonic for Status, Certainty, Autonomy, Relatedness and Fairness.

These are five social needs, the threat or confirmation of which can have profound effects on humans.

If you feel that you are being unfairly treated, for example, this triggers a low-level threat response which fundamentally complicates dealing rationally with a situation.

Conversely, if for example an interaction grants you more certainty or even better autonomy, you are magically able to contribute significantly more cognitive capacity and creativity to that interaction.

Both the fundamental threat and reward responses go for all five of these qualities. Once you know what to look for, it’s easy to go through some of your memories and to see where one or more of the SCARF needs played a role.

Although one (hopefully) mostly intuitively integrates this in one’s daily dealings, I think it’s super useful being able to enumerate the SCARF social needs like this. It helps when managing oneself in any situation (especially when your prefrontal cortex is exhausted, which is just about always), and it certainly helps when you might find yourself in position where you are able to contribute to another human’s well-being.

The end

Have a great week friends, I hope to see you again soon!

P.S. if there are any arduino uno -> hardware serial -> xbee experts in the audience, I would like to have a word. (sparkfun shield. with software serial can talk to xbee. with hardware serial, and sparkfun switch in the right position, xbee won’t respond. uno is a robotdyn clone.)

Weekly Head Voices #132: Potato deadline.

Fragment of potato skin, taken with phone camera through GOU#2’s microscope at 100x.

We have a serious deadline coming up on Tuesday, so I’m going to make these few WHV minutes count.


  • Day zero has again been postponed, this time to June 4. We continue with our water saving efforts.
  • That unexpected side-project I mentioned in last week’s post did end up going live that very night. Armed with the Django Rest Framework and plenty of battle scars, it took about 17 hours from idea to fully deployed REST API, a large part of which was debugging the paper’s math and spreadsheets.
    • Django might be a slow runner relative to some of the other kids on the block (go with any of its web frameworks, nginx with openresty (lua right in your web server!), even apistar with uvicorn), but the completeness and maturity of Django and its ginormous ecosystem are hard to beat when it comes to development velocity.
  • There’s a whole blog on the nature of note-taking. I arrived there via interleave and org-noter, both emacs packages for keeping text (orgmode) notes synchronised with PDFs, both found via irreal, a great Emacs blog.
  • In the extra lessons I have with GOU#1, we studied electrical current from basic (atomic) principles. As I was getting all excited about the outer electrons being passed on from copper atom to copper atom (Khan Academy and I tag team these lessons), GOU#1 had to laugh at the goose flesh on my arms.
    • The Khan Academy lecture seemed to imply that Benjamin Franklin started us down the not-quite-correct path of conventional current (from positive to negative), whereas the electrons being passed on imply current flow from negative to positive, aka electron current. However, this physics StackOverflow answer more completely explains that current is defined as the flow of electric charge, with electron flow being one example, and hence both directions are correct.
  • To be honest, I became ever so slightly irritated with an episode of one of my favourite podcasts, CPPCast, as the guest said “like” so often that I had trouble following what he was actually like trying to say. This like led me to using Google’s machine-learning-based speech to text API one night to like transcribe the audio of the podcast to speech so that I could like count the number of like utterances. There were not as many as I thought, but still a whole lot. If you’re curious as to the stats, I wrote everything up in this nerdy vxlabs blog post.
    • On the topic of note-taking: Because I make lab notes of everything in my Emacs, including late night speech recognition experiments, publishing a blog post is a question of some copy pasting, and then telling Emacs to publish to the blog.
  • On Thursday, some dudes came to my house and, after somehow switching seamlessly from pick-axe to optic fibre splicer and back several times, left me with this (and more):
Two fibre strands into my house. They tell me one is for backup.
  • These are strange Gibson-esque times when there’s now permanently a laser transmitting all of these packets to you via the network of glass strands encircling the Earth, whilst many of us are still struggling to grasp the difference between fact and fiction.
    • “The future is already here — it’s just not very evenly distributed”, William Gibson, probably ’93.
  • We have a new president: President Cyril Ramaphosa! He was Mandela’s choice to become president of this country, but it was Thabo’s turn, and then things went pear-shaped with Zuma. Years later, the situation is quite dire, but so far there are many indications that Ramaphosa has the makings of a great leader (I have become convinced that we humans, all of us, need great leaders to advance as humanity; I hope to write a post about that some day). After Friday’s state of the nation (SONA) address by present Ramaphosa, I, along with many fellow South Africans, are hopeful for our future.

Ok peeps, have a wonderful week! I’ll see you NEXT TIME!

Weekly Head Voices #120: May you live in interesting times.

(Warning: Due to the momentous events of the past week, this post is 80% South African politics. If this is not your thing, eject right before the large warning further down! Maybe next week we’ll be back to our usual programming, all depending on how above-mentioned momentous events play out.)

Between all of the retinal excitement of the (gorgeous) new Justice League trailer and the release of the new Ghost in the Shell movie (pretty but soulless the reviews seem to be saying), you might have missed the new Valerian trailer.

This would be a shame, because it looks mind-expandingly stunning:

On Tuesday, March 28, 2017, when I arrived home and Genetic Offspring Unit #3 (GOU#3 for short) saw me, she all-matter-of-factly stood up and walked towards me.

My heart burst.

WARNING: What’s happening in SA politics at the moment, in 60 seconds.

One would think that one heart bursting per week is sufficient, but on Friday morning this happened again for unfortunately far less than positive reasons.

We woke up to the news that our president Jacob Zuma had fired 9 ministers shortly before midnight.

Capable ministers, especially so Pravin Gordhan, the minister of finances (who was doing a great job trying to steer our fragile economy in the right direction, often opposing deals that were bad for the economy but great for the pockets of Zuma and his bosses, the Gupta brothers) were replaced with ministers who might indeed be capable, but have clearly been selected not for that but rather for their loyalty to the Zuma network.

Amongst many other ramifications, this also means that the 1 trillion Rand nuclear deal with Russia is officially back on the table!

This was one of the many unhealthy projects blocked by Pravin Gordhan.

Besides crippling our economy and enriching Zuma, his patronage network, and the Gupta brothers (they seem to be pulling many of the strings, including those of Zuma), we really don’t need these power plants.

Our country’s renewable energy programmes will be able to supply all of our energy needs in a cost-effective way for decades to come, without any new nuclear plants in sight, thank you very much.

Nuclear power certainly has its place, but under these circumstances definitely not.

This cabinet reshuffle is the most recent in a long line of increasingly destructive moves by president Zuma and his supporters. The country is still reeling from the billions of Rands that have been and are still being extorted from the poorest of citizens by a foreign company, all right under the nose of minister Bathabile Dlamini.

Guess who did NOT get fired on Friday?

Loyalty seems to be sufficient to cancel out any amount of malice, greed and/or incompetence.

However, people in the know expect serious fireworks the coming weeks.

I am hoping that they are right, and that these will be the right sort of fireworks. With a bit of luck and the willingness of many good-hearted and talented people who have started speaking out and coming into action, our country could soon find itself with the kind of leadership that it desperately needs.

Keep your fingers crossed. I look forward to seeing you on the other side!


The 2016 to 2017 transition post.

Following the rich tradition over here of year transition posts, having just rounded off a brilliant outdoorsy take-your-mind-off-of-everything vacation with friends, and also inspired by wogan.blog’s nicely personal 2016 review post, I decided that a farewell-2016 how-you-doin’-2017 post was in order.

By the way, by rich tradition I mean that I wrote the grand total of one (1) similarly titled post previously, as the year ticked from 2009 to 2010, and at least one other, disguised as a weekly head voices, as we entered 2012That last one is worth another read, early 2012 cpbotha had some really good tips. There might be more such posts, this blog has been around for more than 15 years and much of what I’ve written is not available from my short-term memory, which is nice.

Warning: This post is long (1800 words+), rambly and sometimes even a bit mushy. I hope you enjoy it!

2016: The Review

The bad, with a hopefully slightly positive outlook at the end

Let’s get the bad stuff out of the way as soon as we can…

For me the biggest disappointments of 2016 were the double-whammy of the Brexit followed by the Trumpocalypse.

I really did not expect either of these events to go the way they did.

This is probably because I was, ever the optimist, over-estimating the level of human development of British and US voters.

The exclusionist, nationalist, xenophobic and in many cases even white supremacist thinking associated with Trump’s support in the US and the Leave vote in the UK are truly abhorrent.

I understand that there were many other factors at play. However, these voters were either throwing out the baby with the bath water, or, much much  worse, agreeing with the abhorrent sentiments mentioned above. Especially this second possibility depressed me greatly after the US election.

After such setbacks, one needs to look for solutions.

After Brexit, analysis showed that education level was the strongest indicator of a vote for leave or remain. Higher education was strongly associated with remain, whilst the opposite was the case for leave.

Leave / remain voter analysis by The Atlantic. Click to go to article + interactive version of this graphic.

For Trump voters, you probably guessed it, it was more or less the same idea. Less educated citizens voted for Trump, more educated citizens for Clinton.

This is yet another strong indication that we should really be pouring every resource we have into the education of our people. (yes, correlation and causation, I know. hence the terms “strong indication”. discuss in the comments if you like.)

Lawrence M. Krauss, superstar theoretical physicist and author of the book A Universe from Nothing, recently tweeted this 1920 quote by H.G. Wells:

Human history has become, more and more, a race between education and catastrophe.

The way things are going now, that thought, and movements like #feesmustfall, are more important than ever. There can be absolutely no excuse for neglecting the highest quality and accessible education (basic up to tertiary) of future generations of humans whom we expect to further our civilization.

The running and the mindful

In 2016, I ran 440km.

There are a great deal of people who have run much more than that, but those are my 440 kilometers and somehow they brought me a great deal of deep satisfaction.

During the year, my per-run distance and speed have gradually increased.

Besides fitness gradually increasing, I discovered experimentally that shorter, quicker steps get me further and a higher pace. It took a biomechanical friend to explain to me that this was about muscles operating within the more efficient middle of their full extension/contraction ranges. I could probably just have read this somewhere, but doing it the hard way and then having a friend explain it on top of Table Mountain definitely added something to the experience.

For the last 200 kilometres or so, I have listened to the exact same album: Skin by Flume. Every single run, I start that exact same album with the exact same sequence of tracks. As I learned from the SwimGeek’s blog, finding your soundtrack and putting it on repeat whilst exercising is apparently a thing.

With the surroundings over here being what they are, it does not take much to slip into a state of mindfulness.

No doing, no planning; just absorbing all of the surroundings, physical and mental, the music, and feeling how the meat-based machine that houses me propels us forward.

On the topic of mindfulness, for the last few months I added a repeat event to my todoist, helping me to spend five minutes every morning before work doing the breathing exercise. More recently I do this without any voice track, but previously Prof. Mark Williams at one point would say (original quote is due to Jon Kabat-Zinn, PhD):

Each breath a new beginning; each out-breath a letting go.

There’s a whole lot in there. I have spent quite some time with it and I am far from done.

The blog

The first rule of blogging: You don’t blog about blogging.

However, I hope you don’t mind me breaking that rule to mention that in 2016, this blog was viewed 133 thousand times. I already get happy when one other person reads a post. You can imagine how happy it makes me to know that there are even slightly more people who have come here to consume some of the words I have written, and even some who have taken the time to leave behind comments!

The lion’s share of those views were due to focused posts that got picked up by some of the more popular nerd sites. I have to admit that I derived the most enjoyment from the more personal posts that were only read by friends.

Whatever the case may be, this has to be my most satisfying hobby. Thank you for the crucial role that you who read play in it!

The new life

In early(ish) 2016, our third daughter, affectionately known as Genetic Offspring Unit #3 (GOU#3 for short) around these parts, was born.

This wonderful little cellular mega-cluster is currently making noises that have the primary purpose of being immensely cute, but are also slowly starting to make sense. Her ambulation capabilities have increased immensely, and she is on the verge of standing up by herself and so we will probably have to re-arrange our interior. Again.

Long ago, I wrote here about my unexpected new role as someone else’s Tooth Fairy. In the meantime, working as a part-time tooth fairy and a full-time papa to three little humans has turned out to be a more fulfilling career than I ever could have imagined.

2017: Not much planned yet, you?

I prefer making resolutions in secret, then carrying them out or not, and only then reporting on them. However, that would mean that I would have to wrap up this post right now, and for that I’m not quite ready yet.

Experiment Alcohol Zero

One resolution that I am already executing on, is performing an interesting little experiment. After reading about the effects of alcohol on one’s (running) performance and general energy levels, I have decided to go for 30 days without a drop of alcohol to try and get a subjective idea of its potential impact.

Those of you who have spent more than 8 seconds in my or my blog’s vicinity know that I absolutely adore craft beer (this includes local, but also special beers of the Belgian type) and local wines, both of which are regularly consumed by me and “business partners” during “business lunches” in the not-unattractive local surroundings.

This decision was not taken lightly.

It is mid-morning of day 2 of Experiment Alcohol Zero (EAZ) as I write this. With the air full of smoke due to local vegetation fires, I have not been able to go running yet, but I am imagining that my energy lasted later last night, and I got up easier this morning. I have 29 more days to investigate.

Reminders for a hopefully better life

Every day, I remind myself to be the kindest I can possibly be to everyone I come into contact with. We have infinite amounts of kindness to spread.

I also remind myself to be grateful. It takes continuous practice to identify the many things one can be grateful for every day, but it is definitely worth it.

I often remind GOU#1 (#2 and #3 are not old enough yet for this lesson) that, besides the guidelines above, we have to keep on working on two more related characteristics: being useful, and being likable.

Being useful means continuously developing and refining skills that enable one to contribute value to one’s surroundings. Being likable means understanding and appreciating how we humans stick together. Kindness, see above, is an important component of this.

In 2017, I would like to write more (on this blog probably), and read more.

Rapidly morphing goalposts jumping randomly through even more randomly pulsating hyperspace, with a slightly positive outlook at the end

Yes folks, this is going to be my parting thought.

When I was much younger, I used to believe that one’s life could be “cracked”. That is, if you searched, and you worked really hard at understanding yourself, your people and your surroundings, you could come up with some kind of answer with which you would be able to attain contentment.

In the meantime I’ve come to the realisation that that Much Younger Me, although quite dashing, was of course utterly wrong.

Life is utterly dynamic. You Now are a different person from You Last Year. The same goes for people around you, and the same goes for everything around you.

The goal posts are not just moving all the time, they are an illusion flashing in and out of an hallucinogenic and especially dynamic perception.

One trick to help one deal with this, is to stop thinking about goals in the first place, and instead consider the directions of your movement.

Also keep in mind that there are no answers, only choices. You work to make the best ones you can with the means at your disposal at that moment.

Importantly, in this restless environment, some peace can be found by realising that a large part of the restlessness originates from within you. Fortunately, you have slightly more say in you than you have in your surroundings.

What one can do then, is nicely summarised by Prof. Mark Williams in the audio accompanying his mindfulness book:

The deep stillness we seek does not arise because the world is still or the mind is quiet. Stillness is nourished when we allow things to be just as they are for now, in this moment, moment by moment and breath by breath.

The End (for now)

Alright friends, that was it from me, for now. I hope that you have the best 2017 possible. I hope especially that your kindness and that of those around you flows deeply and freely.

As a parting gift, here is the high-resolution panoroma I made from the top of Table Mountain, after hiking up Platteklip Gorge with friends:

The view from the top of Table Mountain, photo by cpbotha.net. Click for high-res.