Category Archives: Art

Replacing an Art Deco toilet

I’m lucky enough to live in a nice neighbourhood in Amsterdam dating from when the Olympics were last in town in 1928.  The style of the houses is the know collectively as the Amsterdamse school and is typified by an Art Deco and Expressionist theme – curves, use of repeating lines, horizontal ladder effects, extensive use of marble and occasionally opulent materials all go to give the streets an almost magical character if you’re a fan of the style.  These themes are continued in wood, window frames, chimney breasts inside the houses.

While our house is not amazing to look at from the outside it has some lovely detailing in plaster and wood, big single glazed windows and high ceilings which look fantastic but have of course made the place pretty cold and prone to draughts.  This goes double for the toilets which both are on external double brick, uninsulated walls that are tiled with a stone floor.  Having survived three cold winters with these toilets we (particularly female house members) finally have had enough of their cold beauty and I’ve plucked up enough courage to start to tackle them.

So prompted by impending Winter this weekend I’ve finally made a start on the first toilet with a view to improving thermal performance and make it reasonably modern looking while preserving its Art Deco heritage.  Here is a before photo:

Note the beautiful stone floor, the large amount of tiles, the precariously perched sink, the lovely window frame and the hideous glass above the door.  It’s a real mixed bag of a room and currently it’s very cold with no heating.  My plan is to put in a false wall with 2cm polystyrene insulation along with a free standing corner built floating toilet.  Finally we’ll cover that freezing floor with some thin space-age insulation I’ve found and on top of that some form of easily maintainable surface.  The sink will be replaced with something sympathetic but less splashy (see the current height of the tap) and we may even put a heated towel rail in there too.

So far, I’ve stripped the tiles and made a start on the plasterboard and insulation.  As it’s double brick I’ll have to watch the ventilation as the bricks will still need to breathe out the moisture they absorb if they’re not to freeze and crack.  I’ll be saving some of the original tiles for re-use.  A lot were already damaged and broken on the wall as they had been applied directly to brick in mortar and patched up multiple times.  Despite that though they seemed to come off easily enough…

Next week I’ll work up to replacing the toilet itself, mounting the new sink and finishing off the walls.  Then the part I’ll be really looking forward too is the detailing and seeing what I can re-use and save from the room, what I can improve.  The intention is of course it should be a lot warmer but I also want this room to become an updated version of its original intention.  If I can get it right here then perhaps I’ll get motivated enough to tackle the other toilet, the kitchen and the million other things that will then need doing.

C++ (chew slowly)

I spent a some time on the weekend looking at Rosegarden for Windows for the first time in a while.  I’ve been meaning to get the device allocation working correctly with RtMidi and get the MIDI recording also working but it’s slightly more challenging when you have to pass stuff back from it’s own thread rather than having access to all the nice Driver level features we’ve built into Rosegarden.

Rosegarden has the concept of a Studio – originally this was designed around the idea of device templates and the autoload document in Logic Audio – so essentially you can set up your external MIDI and audio devices once and then save it all to your autoload file and every time you hit ‘New Composition’ you get a fresh canvas with all you devices all set up and raring to go.   In my original design I’d also expanded the idea of the Studio to encompass audio placement eventually so that you’d be able to mimic acoustics of virtual instruments and such like – so being able to place MIDI and audio instruments in the stereo (or more) sound field and have consistent effects.  However it just became a layer in the end whereby we could try and put sensible names onto MIDI instruments and provide something approaching a consistent interface across audio and MIDI.   Perhaps in this regard it wasn’t such a good idea simply copying the Logic Audio model because to be honest it wasn’t a very elegant solution – I just didn’t know any better.

Have a look at Albeton if you want to see a way that this can be addressed for recording purposes.

Anyway – I digress – Rosegarden has a Studio concept which is an abstraction of MIDI and Audio devices and I need to tie up my outgoing and incoming MIDI events to the Studio model if I’m to make Rosegarden understand what the events are and where they come from.  So I have to jump through a few hoops to make the MappedStudio (as it’s known at the sequencer level) available to the MidiThread.  At this point I got a great remind of how hokey C++ syntax is – as my RtMidi event callback is a static method I have to declare any data structures that it wants to use also as static.  As I’ve been used to the wonderful world of C# for a long time now I tried to write:

static public MyStructure m_myStructure;

In the class definition.  Forgetting of course that my scope definitions are section based in C++.  Then for the life of me could I remember how to initialise this static public structure in the code and where?  No – first I tried in the header (of course no joy), then in the body but of course I got the naming convention wrong.  Eventually I got my definitions correct after a lot of fiddling and probably some swearing and of course waiting for the rebuilds (don’t forget the linker errors) but it demonstrates to me just why I moved on around 2004 and tried another language or two after being mired in C++ land for a while.  It can all drive you insane and I’m just now thinking that I’ve not even started to think about debugging the undoubted mistakes I’ve made in memory management with the changes I’ve made.

So bear it in mind, C++ is wonderful for connecting across the seemingly impassable chasms of disparate functionality and fixing holes between APIs but it takes a bit of your soul with you every time you lose your temper.  So take small bites, chew slowly and keep topped up with plenty of fluids.  It’s going to get warm and shouty out there.

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.