Category: Alaric

Time (by )

Tired of lying in the sunshine
Staying home to watch the rain
You are young and life is long
And there is time to kill today
And then one day you find
Ten years have got behind you
No one told you when to run
You missed the starting gun
Pink Floyd - Time

I've always felt rather cursed with the fact that I have an addiction to designing things. It's bad enough knowing that I can easily design something that will take a week to actually do in half an hour, and that I can do that designing while walking or driving or in the shower or lying in bed, while I can only actually do any making when free of distractions... I try to make the best of it, writing the best of my ideas up on this blog when I get time in the hope that some of them will inspire others in some way, as I can't bear the thought of them all being lost. I believe that ideas are cheap, especially for me, so there's no point in hoarding them - I can always come up with more!

However, the past few years have been worse than ever; I've been crucially short of time, so I'm lucky to get a day a month to sit down and make things. I knew that parenthood would take up a lot of my time, but I didn't reckon on pregnancy and childbirth making my wife an invalid, or our house flooding, or all the knock-on effects of these things. I'm running a Cub pack on my own, because nobody else can spare the time to help me; I'm already barely keeping up with the basic requirements of running the pack, and I can't put in any less time without shutting the whole thing down (which would weigh very heavily on my heart, as I love working with those kids, and couldn't bear to let them down). That takes up two or three evenings a week. And I lose a lot of evenings or weekend days helping Sarah build her career, to keep her sane (I don't want her being stuck in a dead-end life of childcare) and to help relieve our financial pressures. I lose three lunch breaks a week to transporting Jean. I'm barely keeping up with keeping the house clean; it gets worse all week and I catch up at the weekend if there is time. And yet most of the things that are taking up my time are the kinds of things I can do while still designing things in my head, so the creative output hasn't slowed that much, even though the time I have to follow up any of the ideas has nearly vanished. There just really isn't much time for me in the week; my one safe escape valve is my weekly visit to Bristol Hackspace on a Thursday after work, where I have two hours.

But then a second problem kicks in: When I do get some time without pressure, I often don't actually want to concentrate on things right away. Over the bank holiday weekend I got about a day to myself (in a few chunks of several hours here and there), and I think I spent at least the first three hours playing Cyber Empires; I only felt up to doing something mindless. After that I got stuck in and did some work on a couple of Ugarit tickets (4363bc7631 and 34e21d597f)... But it's too easy to spend my two hours in Bristol each week just nattering to people!

I've found I'm starting to get self-conscious about it. I'm feeling embarrassed about telling people about the fun ideas I've had, because I know they know I probably won't ever execute them.

There are too many people who go around being smug about the great ideas they have, that they can't implement as they don't have the skill (often, these folks feel that implementation is a mindless task to be given to hired goons). But you can't design something you couldn't imagine every step of the construction of; knowing the limits of the medium is essential to designing something that pushes those limits to their best... It's no better than a child triumphantly saying they have designed the best car ever, that drives at a hundred miles an hour AND flies AND has a laser gun AND has a fridge full of cakes in the boot. That's not a design; it's a requirements document (of sorts).

I don't want people thinking of me like that. Every time I've updated the ARGON web site I've put in more and more perrimistic estimates of my hope of ever implementing it. When I started it, it looked like a tractable project I could slowly work on over several years; now it looks like something I might manage to do in my retirement, at best. That makes me sad. I'm not a person who designs things they can't build (except when I'm doing science-fiction worldbuilding, at least...); I'm a person who just doesn't have the time to build the things they design...

Vomit-induced implementations of the 9P protocol in Chicken Scheme (by )

Last Saturday, I came down with what I suspect was Norovirus - the rest of the family (apart from the baby) having come down with it on Thursday and me having spent the past few days mopping up after them, this was probably unavoidable; although I'd tried my best by wearing a respirator when performing clean-up operations (it was also nice to not have to smell what I was clearing up...).

But, it meant I spent Monday off of work recuperating. I was too weak and exhausted to do any work from home, but I was bored senseless of just lying there on the sofa, so I decided to try and extend Chicken Scheme's 9p egg, which is a client implementation of the 9P2000 file server protocol, to also be able to act as a server.

This is something I want for Ugarit; it means that a Chicken Scheme app will be able to provide a virtual filesystem that can be mounted from a computer and used like your "real" filesystem. In particular, I want to be able to let people access their backed-up snapshots from a Ugarit vault as a live read-only filesystem, rather than needing to go in and manually "restore" their desired files back into the filesystem to access them. And it'll really come into its own when I implement archive mode, as it will make it possible to actually use the Ugarit archive seamlessly.

Unfortunately, being rather fuzzy-headed, I kept making rookie mistakes, but I eventually managed to get the core protocol implementation working. In doing so, I found out that a 9P server that puts incorrect lengths in the stat structures returned from directory reads causes 9P mounts in Linux to "hang" in a way that can't be unmounted and you need to power-cycle the machine as it won't even shut down cleanly... so be careful of that when mounting the few public 9P servers out there!

In order to test it, and as a utility for Chicken apps that would like to provide a 9P "control/status filesystem" in the manner of wmii et al, I started to write a simplified high-level virtual filesystem server library on top of the core server implementation. At the point where I made this status update to my friends in the Chicken Scheme IRC channel, directory listings weren't working (they now are), but you can see the idea - create a filesystem object from Scheme and register files and directories in it, and it appears as a live filesystem under UNIX.

Now I'm feeling a bit better today I've realised several other rookie errors I've made (not ones that cause bugs, I hope, but ones that complicated the code unnecessarily) - I'll fix those up before I submit all of my changes to the 9p egg's maintainer for merging in...

Then it'll be time to start on the Ugarit integration. THAT will be fun 🙂

Monster Creation (by )

I have made a short film about the creation of the Muse Monsters from my Monster Writing Game - they turn out to have a complex belief system - some of which is portrayed in this video. Also I like the effect I got with a bamboo flute I picked up a few years ago.

Video is up under Creative Commons Attribution which means as long as you say where you got the material from you can use it in your own creations 🙂

Happiness is Family Shaped (by )

A trio of trouble Family Snugs Happyness

Spring Cleaning (by )

I've spent more time building infrastructure than using it, I suspect. I love building infrastructure, so I've often built it because I can; however, with everything that's happened in the past six years, I've ended up struggling to maintain the infrastructure I already had. So I've had to change tack and become much more pragmatic about my infrastructure astronautics, such as getting rid of my limited company and migrating from a tightly-bound cluster to a single box for my hosting platform.

This has given me some time to tidy up and simplify the infrastructure I want to keep.

So this weekend, I got around to rebuilding the Kitten Technologies web site. This is where I publish my open-source creations; they were all version-controlled in Subversion, and I had a PHP site with some static pages, then a dynamically generated project browser that would pull out files called VERSION.txt and README.txt from the SVN repositories to build a description page, offered up tarballs of all released versions for downloading, and linked to an SVN web interface for browsing the repo. I wanted to get around to implementing ticket tracking at some point so folks could submit tickets.

However, for a while I've ached to migrate to Fossil for version control, mainly because it has integral ticket tracking and a wiki for each project, along with integral repository browsing; it provides a fully-featured project Web site, and it's a distributed VCS to boot, which is also useful. However, I wanted it to still all look like a nice integrated site for all my projects. So what I've done is to write a Fossil skin stylesheet that has my new look in it, then to build the wrapper site using the same CSS (eg, by using Fossil's names for div classes and overall page structure), based on Hyde; the CSS is actually generated from an scss master file that Hyde processes to generate the CSS as part of the static site, which the Fossil repos just refer to. My deployment script rolls the skin out to all of my repositories whenever it's updated, so they are all kept magically in sync. It still has a few rough edges (I want to improve the navigation with a consistent site-wide nav bar above the Fossil menu bar, that has the current project highlighted; this will be slightly more complex as I'll need to make the script modify the skin for each project to highlight the correct one) and I am still incapable of making non-ugly CSS, but it means that Kitten Technologies is now live on Fossil. I've a lot of projects still to migrate, but after I've done the "fiddly" ones that need some level of manual tweaking, I hope to produce a script to automate handling all the rest.

Secondly, I've been tidying up the home fileserver. It was down for some time for various reasons, which means that I've ended up with a new archive of photos, music, and PDFs forming on my laptop. I pulled our music collection out of the backups onto my laptop, too, which meant that I then had a diverging fork of that (as there was some new music on the file server since the last backup, which I later retrieved from the disks), so the re-unification of all those tens of gigabytes of files has been fiddly. But, it's now largely done, which is great; and there's now precisely one master copy of everything, and the home wiki is back up to date and pruned of outdated TODO items from several years ago.

However, this has increased my desire to implement Ugarit's archival mode. Rather than manually curating directory structures to organise my stuff (and the pain of merging changes to them), I'd love to just be able to pour files into a Ugarit library and tag them with metadata (maybe some time after the original import, if I'm in a hurry at the time), then create virtual filesystem views on that which reflect things like "All my music, organised by artist/album/title" or "All my photos, organised by who is in them, year, then event title". Combine that with the proposed Ugarit replication backend, and it will even manage replicas on my laptop as well as the home fileserver, all kept seamlessly in sync; having a home fileserver was easy when I worked from home on a desktop machine so I could just permanently mount the filesystem from the server, but it's a bit trickier with a modern laptop-based lifestyle.

Also, as the archive is already backed up into Ugarit, migrating it into a Ugarit "library" will be fast and efficient - Ugarit will automatically recognise that it already has the content of the files, and just need to upload the metadata!

I think with that and my workshop sorted out, I'm done with spring cleaning - my urgent tasks are now sorting out paperwork for my Cub pack, fixing an offline external disk on my fileserver, getting Ethernet to the workshop so I can do useful computer work in there (and move the home fileserver out of poking range of the baby, who loves to turn it off), resurrecting my salmonella install, hacking Ugarit, ring casting, and getting the foundry working so I can cast bronze, and wearable computer work! Not to mention endless minor DIY things in the house - we've got pictures to put up, dents in the plasterboard walls to fill, a flu to install for the fire, walls to repaint, ...

WordPress Themes

Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales
Creative Commons Attribution-NonCommercial-ShareAlike 2.0 UK: England & Wales