Category Archives: Philosophy

Making Progress

It’s hard to believe that it’s almost two months since I started my toilet project.  Yes I know.   However things are still moving in the right direction albeit a little slowly.  Most of the delay has been introduced – not because of a lack of time to do things but because of a lack of decision on some of the essentials and of course things take a lot longer than you imagine they will.  Flooring and tiling have to be chosen and ordered and it’s best to install both of these before hanging the toilet itself.  One can tile around the toilet afterwards but the effect won’t be as clean and I’ve no intention to cut corners on this job.

At least now the old toilet is out and the new frame is in.  Here is a work in progress from a few weeks ago.

Toilet frame

The Geberit corner frame is really simple to fit – four bolts hold it to the walls and floor.  The waste pipe is easily cut and snapped into place but one thing I overlooked was how the plasterboard would then attach to the frames.  Probably I was missing the Geberit rail system for this however as things turned out I had enough purchase with the existing insulation joists to make a solid enough fit for these thick panels.  As you can see though they are now on, the sink is in place, the walls are insulated and plasterboarded completely.


Underfloor heating has been considered, discarded and considered again but it seems overkill so we’re erring on the side of an electric radiator for the room.  Once the floor is insulated (with the plywood subfloor you can see below) and the vinyl tiles we’ve selected glued down it should certainly be warm enough underfoot.

The next step will be to get some professionals in to plaster and tile the room.  The finish is important and I don’t want to mess up the finishing touches.  I have tiled before, and I am tempted to do it (and still may yet be) but like I say, the finish is important.

Then once we have a radiator I also have to fix up or replace the window in the room and also replace the glass above and in the door, then we can paint and we’re done.  Hopefully by the spring time..

I promised something to follow up on my post about one-man projects.  And I have a lot of thoughts on this stemming from both software and toilets, however, this post is going to have to wait a little longer.

Happy New Year to all those handy, software people out there.

The Cosseted Programmer

It appears we have come to a juncture in information technology where the sheer weight of data is forcing us to draft everybody into the ranks.  Over the years there have been multiple plays to gamify programming – make it cool – make it understandable – rather have people just stare dumbly at that results and prod occasional buttons.  Our limbic system flinching in response to sounds and colourful 3D shapes was previously considered satisfactorily.  Now we are encouraged to buy virtual stuff inside other stuff to make our experience more valuable.  And it works – because unlike pharmaceuticals – these things aren’t licensed and our kids are hooked into them from an early age.


And it’s no longer enough to just consume these goodies – we’re also taught to create.  Creation is cool.  Photos, videos, blogs, apps.  It’s a self perpetuating cycle of creation – no destruction, just additive, endless piling upon piling of bits into bytes into terabytes into hard disks in drawers and burned onto disks and stored away never to be looked at again.  The world may soon fill up soon like the Stross/Doctorow dystopia planned and we’ll be forced into living in the Clouds ourselves or turn the solar system into one big computer.  Our bodies slumped in the corner of our living rooms while the substrates fill up with our souls emancipated by the combined efforts of humanity – from east to west – working together to abstract our lives away from a flawed meatspace.


So there are these guys like Bret and Light table guy and Anonymous Game Framework Guy who probably all live on the West Coast in the sunshine and think purely in terms of web servers, big data, shiny tablets, closed feedback loops and turning everyone into a developer.  And that is all well and good and also sometimes I think like that and the world is all shiny and exciting – but there is somehow a missing element here.  Our thoughts turn to the lack of boredom thanks to smartphones.  The gap between waking and sleeping where we’re not sharing our lives with each other or silently just consuming others thoughts or the thoughts of machines.  How many of those twitter people you’re reading are actual people typing stuff and thinking stuff?   Are we even paying attention enough to pass our own Turing Test?


A lot of effort, direction and money is being spent/burned/created/transferred in order to capture and inspire developers.  To draft a few inferior souls into the wake of conglomerates who have spotted our Achille’s heel and are making us all believers of a doctrine whose only basis is that inaction and not thinking of anything better to do is a good reason to glance down and lose ourselves again in our hand held worlds.  At the same time as these real businesses – ones that provide a service and get a payment for that service – are making a lot of money out of this shuffling around we are held fascinated in the glow of the Gorilla[R] glass.  We are marking time.  This developer for all, creator for all – as I read it this week the ‘democratizing’ of the development landscape – is no such thing.  And despite these tools being wonderful and in their own way addictive (so that one can become addicted to simply learning more development tools) occasionally it’s just nice to sit around and do something worthwhile and with merit rather than worrying about what technology it needs to use in order to attract the most attention.

Ode to a Preemptive Multitasking Kernel

The login prompt gave you no clue,
If I/O bound or CPU,
Free RAM was high and cycles free,
As you unpacked directories,
then uptime indicated that,
you fork your process, vmstat.

This tiny bud of bootstrap code,
Blossomed therein motherlode,
A caustic strain that cause rendition,
Hit resource boundary condition,
Dumped a core and left you blue,
And scratching chin upon the loo.

Another try, tweak’d interlocking,
Perhaps those mutexes were blocking,
Assign some new shared memory,
Eye pee see ess, min-us emm pee,
And at last you seem now able,
To run in some semblance of stable.

Your server program is now ready,
To accept connection from Blackberry,
Client packets and block’d ports,
Iphone, Android java sorts,
XML, decrypting blobs,
A panoply of resource hogs.

These jobs they come and then they go,
The process table tells us so,
With clarity we do recall,
System V, BSD, all,
those antecedent behemoths,
whose children make clean from their dust.

You mask and storm an interrupt,
Which I ignore and push above,
An essence, your priority,
With threads all flailing to run free,
You time your sleep and so quiesce,
(I take a moment to persist).

The walls fall quick, the mem’ry snaps,
Hex explodes into our laps,
The dissolution of connection,
Teardown lasting microseconds,
Leak’d bytes free again to spill,
light process destruction thrill.

The login prompt gave you no clue,
If I/O bound or CPU,
Free RAM was high and cycles free,
As you unpacked directories,
now uptime indicated that,
you fork your process, vmstat.

Creative Commons License
Ode to a Preemptive Multitasking Kernel by Richard Bown is licensed under a Creative Commons Attribution 3.0 Unported License.

Inspired by a lively disussion. Thanks to Chris and wiki and Rosegarden as ever. I’m experimenting with CC licences for the first time so don’t shout at me if it’s all wrong.

Pi or the Sky?

Last week’s S3 cloud outage gave the cloud world a timely reminder that it doesn’t matter how big your infrastructure, you’re going to have some downtime at some point. With the continued migration to cloud solutions for not just B2C and B2B but increasingly intranet apps the question for a lot of organisations is, will the cost saving justify the risk and is that risk acceptable?

Where do we head next? Metacloud? Distribution across clouds? Or do we look to home hosted solutions? Or all of these?

One thing to bear in mind with cloud scale solutions is that they only work because they already use ubiquitous technology. The mechanism that makes them work is something any business of any size can leverage themselves if they know what they’re doing. The same is true for distributed computing as it is file systems but of course with storage you need to think about replication if you can afford it.

So when we talk about the cloud we need have no migration or lock-in fear. We should use it as we use our own servers, our desktops or even our Raspberry Pi. By using a combination of solutions we provide resiliency and availability. Nothing is going to be bulletproof but by anticipating failure modes during planning we can reduce downtime. Additionally we shouldn’t discount local solutions both for backups and for providing redundancy and uptime. The cloud or any geographically distinct storage solution no matter how big is only a part of the solution -and like any part if you rely on it completely then at some point you will have no other option.

Get Real Coders

The next time you’re asked to do a coding test in a job interview, ask them why? If your potential new bosses aren’t able to determine from your CV and from talking to you what level of experience and understanding you have then you probably don’t want to be working for them in the first place. Take it from me, they’re just trying to fill headcount – this is fine if you just need a job (because let’s face it, sometimes you just need a job right?), but if you want a career then forget about them or at least as them “Why?”

I’ve had lots of interviews and I’ve given lots of interviews. I’ve never given anyone a coding test and I never will give anyone a coding test. The attribute that every coder must have is honesty – honesty to themselves firstly and realising that you are fallible as well as honesty to others and realising that what you build affects other coders, users and everyone who will come into contact with your solution. Having a nice portfolio is useful, having experience is perfect, but honesty about yourself and your abilities is more important to me.

Spending an hour telling someone who is really not that interested in hearing it what polymorphism is, or the difference between an abstract class and an interface is a waste of everyone’s time. Do they not know themselves? What are they trying to prove by having you tell them? How does this help you fulfill the dead-end job they’ve got lined up for you?

Don’t spend the rest of your life working for idiots. One of these days I’ll be hiring.