making assert(…) even more informative

If you are like me, you use assert all over the place. Even when compiled out, it serves are useful documentation as to what is going on (or what is supposed to be going on).  I recently learned another trick that I could have been using for the past 30 years, even when I first met C in the early 1980s. Continue reading


I have dozens of open source software projects, in various stages of development.  I have three wood working projects waiting in the shed to be finished. I have phasmid populations studies I haven’t written up yet.  I have  four book reconstructions that I haven’t finished.

If you had 6 days to live, what would you work on? If you had  six months? Thirty years?

For me, my mind never stops.  It’s always coming up with ideas.  There is always software to write, there are always things to make with wood (and power tool therapy).  So, faced with a body that is failing, and a mind that isn’t, what would you work on?

The answer is: work on something you want to work on, you will anyway.  Work on something personally rewarding, or personally useful.  It turns out, the time limit is almost entirely irrelevant.

I’m working on a major release of Aegis, but also pecking away at other software projects, as brain capacity and haemoglobin permit.

I work on bug fixes and feature requests for my OSS projects if I feel like it; but that’s how OSS works.  Send me a patch, on the other hand, and I’ll integrate it the same days as I get it.

“Start a new project!” — Robert Collins.

Oops, yes, I did this, too.


On the 11-Dec-2012 we start a third  chemotherapy sequence, this time using Bendamustine and Mabthera.  The list of known side effects of Bendamustine is very long.  What it will do to me is unknown, except that I will be allergic, and we will treat the symptoms and keep right on using the drug, because it’s my best bet, right now.  The treatment regimen has 2 days on and 26 days off, times 4 cycles.  In what looks like an emerging pattern, the Bendamustine isn’t on the PBS, so once again I am paying for a chemotherapy drug out of my own pocket.

We decided to start the chemotherapy now, rather than wait until after christmas.  My preference is to be doing, rather than waiting, even when doing will be confronting.  To procrastinate, to do nothing, is to choose to die.  I choose the option with at least a chance of living.

I accept this gift.

Gnome Shell: Not for me

Last week I posted about Ubuntu’s Unity desktop environment.  I have spent time since using the Gnome Shell for a similar amount of time.

  1. The two environments (Unity vs Gnome Shell) feel like different themes skinned over the same thing.  It is a complete mystery as to why the Unity folks felt the need to start their own project, rather than just make Gnome Shell theme-able, and then skin an Ubuntu theme over the top.
  2. The gnome shell uses considerably less CPU and GPU to render the environment (but still more than Gnome Classic No Effects).  The laptop is much quieter and quite noticeably less warm running Gnome Shell than when running Unity.
  3. The Unity interface is very “child’s plastic toy” themed, when compared to the slightly slicker Gnome Shell theme.  The notification pop-ups take a bit of getting used to, but tend to be nicer than notify-osd.
  4. The methods for choosing and switching between tasks and windows is equally revolting in both Unity and Gnome Shell.  The Gnome Classic task bars are still a clear ergonomic winner, for me.  All this whizzing around of window thumbnails is cool the first time, but it gets old real fast, by the second day it’s where the hell do I disable that? Yuck.
  5. The only good thing was that Gnome Shell uses the Metacity algorithm for window placement.

Just as with Unity, I can’t recommend Gnome Shell as a productive work environment.


Unity: Underwhelming

I have been looking at alternative graphical desk tops for Linux, given that Gnome Fallback Mode is going away soon.  In an effort to be fair, I try to use each one form more than 24 hours.

The machine I’m using is a Dell with an Nvidia graphcs card, with the Nvidea proprietary driver enabled.

Unity 3D

Without any customisation, or any apps running, Unity doing nothing eats 25% of both CPUs, and the GPU runs at 89C.  The laptop fan was maxed-out and constant — and loud.  With a bit of googling, I discovered that turning off CCSM->OpenGL->Sync-to-Vblank dropped the CPU usage markedly.  (WTF are they using a busy wait?!?)  The GPU was still running hot, though.

I find the unity Dash to be a very unpleasant interface.  I can’t browse to find what I want, I have to remember its name, instead, and then I have to type it.  Ugh.  The Dock down the left hand side looks like a Fischer Price toy computer.  There is no way to choose where you would like the dock (or you can use some random guy’s PPA to install a rotated-to-the-bottom dock).

The Alt-Tab application switcher is too fiddly to actually use.  One slip of the finger of the Alt key and it does some bullshit random thing you didn’t want.  And what ever you do, don’t Alt-Tab and then let both keys go (the thing I expected to do to have to app switcher persist until I had made my selection).  I find the app switcher inferior to the bottom panel in Gnome Fallback Mode.

Unity 2D

After 24 hours of constant fan noise, I switched to Unity 2D, foolishly assuming that the only difference would be the graphics rendering.  I’ve been using Unity 2D for several days.  I had assumed they used the same code for both, just with different graphical back ends.  Alas, no.

The window close/ min/ max buttons are on the right in Unity 3D, and on the left in Unity 2D.  The Alt-Tab application switcher is missing a couple of things that Unity 3D has, including “minimise all windows”, something I use often.  Neither 2D nor 3D have an “un-hide the windows just hidden” option.  This is probably the tip of the iceberg when it comes to unexpected inconsistencies between two desktop environments that, going by their names, create an expectation that they will be identical, except for some visual bling.

When using Unity 2D, the fan noise if far less than 3D, because it is running at its lowest speed.  The GPU is at 70C, which may explain why the fan never actually turns off.  For some alternative desktop environments, there is no fan noise, because the fan is off because nothing is happening.  My laptop used to be silent except when compiling (or a javascript in firefox went rogue).

Global Menu Bar

I dislike the global menu bar. I hated it on the Macintosh 20 years ago, and it turns out I still do. It may make sense for a mobile device with a touch screen and limited screen real estate, but it is absurd for a mouse desktop.  It is really tedious to have to mouse 3/4 of the screen in order to get to the app’s menus; this is not a good use of my time.  Why is it that in order to turn off the global menu bar, I have to actually uninstall the software package that implements it?  Why is this not a simple on/off preference?

The skinny scroll bar is also unpleasant.  It is too thin, too fiddly, and PITA when the scroll bar is on the right hand edge of the screen. Why is it that to turn off the stupid skinny scroll bar I have to actually uninstall the software package that implements it?  Why is this not a simple on/off preference?

Window Placement

The unity new-window placement algorithm leaves much to be desired.  It frequently puts new windows in the top-left corner, even when there is more than enough clear space for the new window elsewhere.  (Or is it an admission that anywhere else on the screen makes the global menu a pita?)

I hadn’t noticed just how much I use and like Metacity’s slightly sticky window edges, so than when moving a window, it briefly sticks to window and screen margins, allowing easy alignment without sub-pixel accurate mouse movements.  The absence of this feature in Unity, I discovered, is quite frustrating.

Why can’t I drag-n-drop windows in the workspace switcher?

Another thing that trips me up constantly is the “maximum gesture”.  If you click-and-hold on a window title bar, and then move right rapidly, this maximises the window.  As you can imagine, when you want your new window anywhere other than the top-left corner, you are going to do this.  Grumpiness ensues.

Gnome Panel

One of the things I missed in Unity are the top and bottom panels I have been using in Metacity.  I tried running gnome-panel anyway, and it mostly works.  The bottom bar is back as usual, and the top bar is alternating between Unity and Gnome Panel, but switching the two is a matter of mouse gestures, no clicking, no typing.


I could not recommend Unity 2D or Unity 3D to anyone.  I will continue my search for a new desktop environment for Linux, but in the present winner is Gnome Fallback Mode combined with Metacity.

Interaction Strategies

When my son was 8 years old, we uprooted him from Canberra and moved to the Central Coast.  I wanted a lumpy horizon (Canberra is flat) and my wife wanted a sea breeze (Canberra is inland).  As a result, my son Rowan started third grade in a situation he was unfamiliar with: he had to make an entirely new set of friends. Continue reading

Fundamental Unit of Concern

“Frankly, my dear, I don’t give a Damn.” – Rhett Butler, Gone With The Wind

One thing I learnt while on chemotherapy in 2010 is that everyone has a finite number of Damns to give. When you are fit and well and healthy you have a huge supply, sometimes it even looks infinite. But when we are unwell, the supply of Damns is smaller, and events and activities have to be important to you if you are to give them a Damn at those times. When you are seriously ill, ill enough to need chemotherapy, the supply of Damns is very limited indeed. Continue reading