<?xml version="1.0" encoding="ISO-8859-1"?>

<rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
>
	<channel rdf:about="http://radiac.net/diary/rss/">
	<title>Radiac's Diary</title>
	<link>http://radiac.net/</link>
	<description>The daily ramblings of Richard Terry</description>
	<items>
<rdf:Seq><rdf:li rdf:resource="http://radiac.net/diary/id/1316"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1315"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1314"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1313"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1312"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1311"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1310"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1309"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1308"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1307"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1306"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1305"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1304"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1303"/>
<rdf:li rdf:resource="http://radiac.net/diary/id/1302"/>
</rdf:Seq>
	</items>
	</channel>
	<item rdf:about="http://radiac.net/diary/id/1316">
<title>A Short Interlude</title>
<description>&lt;p&gt;So, my new site is ready on my dev machine, but when it came to deploying it to this server, I ran into a bit of a dependency issue. Long story short, I can either plough ahead and risk breaking important things, abandon my deployment system, rip out half my code, or get a new server.&lt;/p&gt;

&lt;p&gt;Seeing as the first three will be a pain and I was going to be replacing this server soon anyway, I'm not really tempted to spend the night trying to get it to work here. The catch is that I can't shut off this machine until a certain unnamed client leaves; they promise they'll be ready to go "at the end of this month", but they have been promising that since August 2012 - so I'm reluctant to pull the trigger on the new server and have to run an extra one at a loss for months just for this site.&lt;/p&gt;

&lt;p&gt;I do have other servers I could put it on, but for various reasons none of those would be ideal at the moment. I'm having fibre broadband installed later in the week, so maybe I'll just run it over that for a couple of weeks. Who knows.&lt;/p&gt;

&lt;p&gt;I may have a change of heart in the morning, but for now all I'm going to say is: the new site will be up soon. Hopefully. Still, at least this will give me some time to improve the easter eggs...&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1316</link>
<dc:date>2013-06-17T23:53:53-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1315">
<title>All Change</title>
<description>&lt;p&gt;Last year I made an important decision: it was time to quit my job.&lt;/p&gt;

&lt;p&gt;Regular readers will know that I don't exactly have a job - I've been freelance since I left university, picking up work wherever I found it, mostly working directly for people who want websites. The problem has been that most of my clients' priorities were things like design, content and SEO - but I'm a programmer at heart, so didn't exactly find that enjoyable. Not that you can expect any job to be fun and games all the time, but I also made some terrible decisions which meant I found myself doing really massive chunks of boring work for free. All work and no money makes radiac a dull idiot.&lt;/p&gt;

&lt;p&gt;So I decided that it was time for a change. Over the past few months I have completed my outstanding client work, have handed off the larger sites which kept me busy, and I'm now free to spend the next few months working on projects for myself.&lt;/p&gt;

&lt;p&gt;The first thing is a new website here at radiac.net. Given my track record with this site I'll probably regret saying this, but I'm aiming to have it ready next Monday - that will be radiac.net's 13th birthday, so seems somewhat appropriate.&lt;/p&gt;

&lt;p&gt;I want to get back to writing more diary entries; in 2006, a couple of my clients had mentioned something I'd written about on here, which kinda freaked me out - it was like getting out of the shower to find your boss standing there asking for your TPS report. I changed my work e-mail address so new clients wouldn't know about radiac.net, and decided to write posts assuming that it would be read by everyone I had ever met - but that just meant I'd get halfway through a new post, think about how someone would find it inappropriate or boring, and throw it out without posting. Then I just got out of the habit of writing anything at all; for years I haven't said anything about work, holidays, gaming, my cats - hell, I haven't even ranted about UKIP since 2009.&lt;/p&gt;

&lt;p&gt;I'm therefore going to try splitting up my diary into two parts - personal and tech. That way I can put personal stuff on my site for my friends and stalkers, without clogging up the feed for strangers who want to read my tech-related ramblings. I actually started working on this &lt;a href="http://radiac.net/diary/id/1289/"&gt;in 2009&lt;/a&gt;, when I toyed with the idea of making an entirely separate website, but having two seemed rather egocentric. I'll be publishing separate RSS feeds, but current subscribers will continue to get everything.&lt;/p&gt;

&lt;p&gt;I've also worked on a lot of personal projects over the years, with a view to eventually releasing them with an open source license; some have been sitting around for a long time, and the world probably doesn't need another perl framework or django cms now, but I think I've written some bits here and there which others may find useful. Over the next few months I'll be splitting out components, putting them on github, and making mini sites for them here on radiac.net.&lt;/p&gt;

&lt;p&gt;And as for a long-term business plan? It's simple - I'm going to make this site so incredibly awesome that I attract a horde of rich patrons who shower me with so much cash that within three months I'll be writing a diary entry describing the mojito I'm drinking on the beach of my private island in the Caribbean. That could happen, right? Yeah! I cannot see how this could possibly fail.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1315</link>
<dc:date>2013-06-12T11:47:55-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1314">
<title>Happy Christmas etc</title>
<description>&lt;p&gt;It's that time of year again when radiac.net puts on its christmas costume and rolls out the TCMI! Sadly I'm phoning it in again this year - I've been working on a new design for the site on and off for the past few months (mostly off), but haven't found the time to finish it yet, let alone do a christmas version. Play the old &lt;a href="http://radiac.net/advent/"&gt;advent calendar&lt;/a&gt; and pretend it's new!&lt;/p&gt;

&lt;p&gt;In fact, 2012 has been a bit of disaster as far as radiac.net is concerned - only 4 diary entries, an all-time low. I did actually manage to put a new code project onto the site this year, but given it was just a trivial cookie law disclaimer, it has predictably been met with nothing but electronic tumbleweed and a lone comment expressing displeasure. Rather depressingly, visitor analysis undeniably confirms that my most significant contribution to humanity to date continues to be my article about chancel repair liability from 2010.&lt;/p&gt;

&lt;p&gt;For me personally though, 2012 has been pretty good - I've had plenty of work, started to make some progress at the gym, bought a nexus 7, our cats are doing well, we've started learning Spanish, and we've just come back from an excellent 3 week holiday to Chile and Argentina - more about that once we've finished sorting through the 2000 photos I took. I'm also in the process of moving away from working directly for people who want websites - bit of a change after 8 years, but I'll save the details for a future diary entry once things start to fall into place.&lt;/p&gt;

&lt;p&gt;Of course, 2012's not over yet - December promises to be pretty busy for me, what with finishing off my last 2 large client projects of the year and trying to balance the consumption of christmas-themed chocolate with time in the gym. I think I will be spending a lot of time in the gym.&lt;/p&gt;

&lt;p&gt;Happy Christmas, everyone!&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1314</link>
<dc:date>2012-12-01T00:31:40-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1313">
<title>Cookie Consent for Dawdling Developers</title>
<description>&lt;p&gt;I have written a JavaScript thing which will make it nice and easy for you to comply with the new EU/UK cookie law. It's called &lt;a href="http://radiac.net/projects/cookieuse/"&gt;cookieuse&lt;/a&gt;, it's small and customisable, and unlike most of the other cookie consent scripts that I've found, it was written after the ICO backtracked on implied consent.&lt;/p&gt;

&lt;p&gt;If you're a web developer who hasn't quite got around to doing anything about the new law yet because it was going to ruin your analytics and social media buttons, and you were hoping the ICO would come to their senses in time, cookieuse should help you dull the pain of compliance.&lt;/p&gt;

&lt;p&gt;Out of the box it will give you a little popup bar (or box depending on your CSS) to get implicit consent - you may have noticed it on this site, otherwise you can take a look at the &lt;a href="http://radiac.net/projects/cookieuse/example/"&gt;example page&lt;/a&gt;. You should be able to make it do whatever you want though - there's support for different levels of consent, and for taking actions based on whether consent was given or refused.&lt;/p&gt;

&lt;p&gt;If you haven't heard about the new EU/UK cookie law, it's pretty stupid: scared of the sort of information that Facebook et al have been collecting about us for years, the EU jumped to the rescue by passing legislation that says every website which wants to set cookies for visitors in the EU must get permission first. Not that big third parties like Facebook (the only ones in a position to actually do something nefarious) need to do anything, nor that websites should honour &lt;a href="http://donottrack.us/"&gt;Do Not Track&lt;/a&gt;, either of which would have been rather fair, sensible and practical options. No, the tens of millions of websites which use cookies each need to interrupt their visitor asking them the same question: "Can we give you cookies?" - each in a slightly different and more confusing way than the last.&lt;/p&gt;

&lt;p&gt;The law was supposed to come in a year ago, but nobody did anything because we hoped the ICO would come to their senses. They didn't, but they did say they'd delay it for a year, and have spent that year saying it's very important to get explicit consent by popping up a large box and making people opt in to cookies. We can't just use the standard "By using this website you agree to whatever we say", because that would be implicit consent, and that would be terrible.&lt;/p&gt;

&lt;p&gt;That was until about 12 hours before the law came into effect, when the ICO &lt;a href="http://www.ico.gov.uk/for_organisations/privacy_and_electronic_communications/the_guide/cookies.aspx"&gt;said&lt;/a&gt; "Actually, you know what? Implicit consent is fine." Nice one ICO, you &lt;a href="http://blog.silktide.com/2012/05/dear-ico-this-is-why-web-developers-hate-you/"&gt;screwed over&lt;/a&gt; the law-abiding internet, who had collectively spent a great deal of time figuring out the best way to get their users to say yes.&lt;/p&gt;

&lt;p&gt;Fortunately for the rest of us who were "working on our cookie policies", (aka waiting to see what everyone else did), it seems that a nice simple "If you don't like cookies, go away" will suffice. If you're in that position, hopefully &lt;a href="http://radiac.net/projects/cookieuse/"&gt;cookieuse&lt;/a&gt; will help.&lt;/p&gt;

&lt;p&gt;Any feedback will be gratefully received, and let me know if you decide to use it on your site.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1313</link>
<dc:date>2012-05-28T20:06:40-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1312">
<title>A Plan for World Peace</title>
<description>&lt;p&gt;Another day, &lt;a href="http://www.bbc.co.uk/news/science-environment-18210642"&gt;another depressing UN climate meeting&lt;/a&gt;. I find myself becoming increasingly incensed by the constant destruction of our world by people who are only interested in personal power and financial gain. If you are an idiot you can argue against climate change, but you can't dispute the rampant pollution, deforestation, over-fishing and unprecedented pace of the destruction of nature that our species is now capable of - and yet, somehow, our elected politicians manage all that and more.&lt;/p&gt;

&lt;p&gt;In the linked article about the climate meeting, someone from Greenpeace says "It's absurd to watch governments sit and point fingers and fight like little kids while the scientists explain about the terrifying impacts of climate change". It is absurd, but the thing that most people must surely have noticed by now is that most governments simply don't care about the long-term repercussions of inaction, because politicians are too preoccupied with polls, re-election and/or self-gain.&lt;/p&gt;

&lt;p&gt;It's time for us to give up on politicians and solve the problem ourselves.&lt;/p&gt;

&lt;p&gt;First we need to come up with a better way of generating power. I must admit, I didn't pay enough attention during physics to achieve this on my own, but someone out there must have a smart idea. Fusion reactors, a gigantic array of solar panels in orbit around the sun beaming the power to ground stations, or one of those perpetual motion machines powered by magnets which always seem to show so much promise in YouTube videos. We need to get together and come up with some good ideas for creating limitless clean power.&lt;/p&gt;

&lt;p&gt;Next we need to implement the ideas. We'll need to get our hands on a decent budget to achieve our goals. Sponsorship, bake sales, fun-runs, armed insurrection - however we get funded, we'll then split up into teams and implement the ideas so that we can generate unlimited power.&lt;/p&gt;

&lt;p&gt;Then we give the power away to anyone who wants it, for free. Apart from politicians, who have shown they don't deserve power in any form.&lt;/p&gt;

&lt;p&gt;With unlimited power, all sorts of things will be possible. As everyone knows, E=MC&lt;sup&gt;2&lt;/sup&gt;, so once we have enough E, we can start making some M. It's a pretty simple equation, so I'm guessing it should be pretty simple to put into practice. We'll build a machine (I call it a "replicator") which generates matter from energy. We just have to build one, then we can use that to build more replicators and give them away to everyone who wants one.&lt;/p&gt;

&lt;p&gt;An unlimited flow of free goods will destroy the economies of the world, but that's ok, because who needs money when you have free stuff. We can now all dedicate our lives to the arts, to recreation, and to figuring out how to &lt;a href="http://www.buildtheenterprise.org/"&gt;build massive space ships&lt;/a&gt; with warp drives so we can live in space while wearing uncomfortably tight one-piece spandex jumpsuits.&lt;/p&gt;

&lt;p&gt;Yesterday I watched SpaceX's Dragon capsule dock with the ISS for the first time, and was struck by just how significant that achievement was for our species. No matter how you feel about the commercialisation of space, our civilisation has reached the point where one man can decide he wants to put something into space and achieve it. Not only that, but we can make it dance around and hook up to something else we put up there, with incredible precision. That is the sort of thing we are capable of. We have figured out how to walk on the moon; how to build tiny boxes that fit in the palm of our hand and contain the sum of all human knowledge; how to pull apart and manipulate the very building blocks of life.&lt;/p&gt;

&lt;p&gt;With all we know and have accomplished, I refuse to believe that we are incapable of finding a solution to our apparent incompatibility with nature. My plan may be absurd, but until smarter and more powerful people than me decide they want to fix the problems we have created, it'll have to do.&lt;/p&gt;

&lt;p&gt;So. Anyone have any magnets?&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1312</link>
<dc:date>2012-05-26T10:44:19-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1311">
<title>Why the London olympics will suck</title>
<description>&lt;p&gt;I have been passed a transcript which my source assures me is of the meeting where the olympic committee planned the design brief for the &lt;a href="http://www.bbc.co.uk/news/uk-17457729"&gt;new GB olympic kit&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;

&lt;p&gt;"After the disaster of our olympic logo, the terrible mascots, and the abysmal failure of our plan for ticket sales, we really need to come up with an amazing olympic kit for our athletes."&lt;/p&gt;

&lt;p&gt;"Absolutely! Well, we've got this globally recognisable flag which is red white and blue, that's a start. But we don't want to be boring - how can we mix it up a bit?"&lt;/p&gt;

&lt;p&gt;"I know, lets take out the red. Nobody will be expecting that!"&lt;/p&gt;

&lt;p&gt;"Oooh, and lets introduce a new blue! How about Turquoise!"&lt;/p&gt;

&lt;p&gt;"Excellent work, team! But I'm guessing someone will complain about the lack of red. Lets try to head off any criticism from the press - any ideas?"&lt;/p&gt;

&lt;p&gt;"I know - red shoes!"&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Everyone yells "Cheers!" as they raise their cocktails to each other, before relaxing back onto their sun loungers on the tropical beach where they hold their meetings.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's a monumentally poor design decision, the latest in a series of monumentally poor decisions surrounding the games. People will be sitting at home watching the games on their TV (because nobody can actually get there in person) and they'll be saying "Who's that in white and blue? Finland? Argentina? Is the UN fielding a team this year? I thought we were in this race?"&lt;/p&gt;

&lt;p&gt;Brace yourselves, people of earth. The entire olympics will be like this.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Those who can, do. Those who can't, organise the London Olympics.&lt;/em&gt;&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1311</link>
<dc:date>2012-03-22T15:28:27-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1310">
<title>Radiac's Tips for Christmas Day</title>
<description>&lt;p&gt;This is the last working day before society dictates that we all have to take half a day off to be with family, so I thought now would be the perfect time to share with you my top tips for a productive Christmas Day.&lt;/p&gt;

&lt;h4&gt;Plan your day&lt;/h4&gt;
&lt;p&gt;There are certain activities on the day itself which are marginally enjoyable - the meals are often above par, and while we all find the unwrapping of presents to be tedious at best, the activity often produces many useful items, such as pens or socks. Once you have decided which activities you wish to attend, you can then start to plan how to optimise your time.&lt;/p&gt;

&lt;h4&gt;Schedule some automated alerts&lt;/h4&gt;
&lt;p&gt;This can be a great way to cut short an activity to get back to work. For years it was sufficient to surreptitiously send yourself a text message, but these days family members are increasingly wise to this ruse, and with the proliferation of touch-screen phones, it is quite difficult to send the message while your phone is still in your pocket.&lt;/p&gt;
&lt;p&gt;However, do not fear, technology to the rescue! Just install asterisk, hook it up to a PSTN gateway, and schedule your call with a simple:&lt;pre&gt;&lt;code&gt;echo "asterisk -rx \"originate SIP/mobile extension 1@angryclient\"" | at 11:17am Dec 25
&lt;/code&gt;&lt;/pre&gt;
At the appointed time, your computer will ring your &lt;code&gt;mobile&lt;/code&gt; SIP client and connect it to your &lt;code&gt;angryclient&lt;/code&gt; extension context, which you should configure to play a recording of a client with an urgent complaint.&lt;/p&gt;
&lt;p&gt;For added efficiency, answer the call by "accidentally" putting it on speaker phone - your family will hear the whole thing, thereby avoiding any unnecessary conversation with them - you can get back to work with a simple "You finish unwrapping the presents without me, I'll be back as soon as I can".&lt;/p&gt;

&lt;h4&gt;Charge your laptop&lt;/h4&gt;
&lt;p&gt;When all else fails, although societal conventions mandate that you physically have to be &lt;em&gt;with&lt;/em&gt; family, it is perfectly acceptable for you to be there while using your laptop. Any complaints of "I hope you're not working, it's Christmas Day!" can be dispelled with the trusty old &lt;code&gt;alt-tab&lt;/code&gt; from your text editor to Solitaire - "No no, see, I'm having fun like the rest of you."&lt;/p&gt;
&lt;p&gt;Additional resistance can be anticipated from certain relatives when you set your laptop upon the dinner table, but one of my favourite tricks is to load it up with some cheerful Christmas songs - everyone loves those! When asked "Why are you typing?" simply explain that you are queuing up songs for the rest of the meal.&lt;/p&gt;

&lt;p&gt;There are, of course, many more techniques for turning the day into a productive paradise, but these simple steps should be enough to get you going this year. Christmas day no longer needs to be the ocean of boredom and dispair that it once was!&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1310</link>
<dc:date>2011-12-24T11:56:44-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1309">
<title>How to lose a customer</title>
<description>&lt;p&gt;I have recently had the pleasure of having needing to contact the customer services department of three companies. Two will be getting my custom again, one will not.&lt;/p&gt;

&lt;p&gt;Firstly I had to phone Dell about my broken XPS M1330 laptop. Apparently nvidia hadn't counted on their graphics chip getting hot, so when it does it basically expands, pops its solder, and no more laptop. Despite being a year out of warranty, all I had to do was mention the Sales of Goods Act 1979 to the Dell chap, and before I knew it I had an engineer booked to come the next working day, for free, to fix my laptop, for free. They might make shoddy hardware, but they have great customer service. Happy customer, will buy again.&lt;/p&gt;

&lt;p&gt;The next company was Amazon. Well, I say Amazon - it was actually one of those random companies who sells through their market place. I ordered a cheap headset for my desk phone, and when it arrived, it was not "Condition: new" as advertised - it was covered in detritus consistent with it having been previously inserted into someone's ear. Two short e-mails later, and I'm keeping the device and getting a partial-yet-significant refund - they must have lost money on postage alone. The pressure of keeping a good rating in Amazon's marketplace seems to ensure good customer service. Reasonably happy customer with device now sitting in bleach, will shop in the marketplace again, and have even left this particular company good feedback.&lt;/p&gt;

&lt;p&gt;But the third one was Ebuyer.&lt;/p&gt;

&lt;p&gt;I last bought something from Ebuyer in 2005. My experiences with them back then were dubious and limited, and since then I have only heard bad things, so I usually buy my computer bits from either overclockers or amazon. Having said that, I do try to shop around and get the best deal, so when it came to buying a cheapo stick of ram for my netbook, I figured it would be worth giving Ebuyer another try, given they were nearly £5 cheaper than Amazon, and I didnt need the memory for a week and a half.&lt;/p&gt;

&lt;p&gt;Oops.&lt;/p&gt;

&lt;p&gt;Three times they told me the product was in stock, but three times they then changed their mind and told me they couldn't deliver it. Twice customer services told me it would be sorted. When they missed the delivery date, they told me they'd push it through and give me free next-day delivery. Finally when I complained on twitter that it should have been here yesterday, they promised me a phone call.&lt;/p&gt;

&lt;p&gt;Even after their relentless incompetence they could have still saved the situation at this point, and turned me into a repeat customer. If a company screws up repeatedly but then apologies and does everything in their power to get me my order as soon as possible, I'd totally forgive them. I'd probably sing their praises to anyone I could for the rest of time, like I did and do for Amazon and Dell. Especially if the company did it for a trivial order and made a £1.91 loss due to having to switch from a discontinued line. I'm not expecting free stuff or compensation, I'm just expecting good customer service, and to receive what I ordered.&lt;/p&gt;

&lt;p&gt;This is what I expected from my phone call, but it seems I expected too much - at least from Ebuyer.&lt;/p&gt;

&lt;p&gt;Firstly, the phone call never came - they only rang after I complained on twitter for the third time. Sure enough, they fell on their sword and admitted that they had been out of stock all along, but then they told me that they have cancelled my order, and as compensation have added a free next-day delivery token to my account - regardless of the fact I'd already been given a free next-day delivery token the day before, but it had done me no good. &lt;/p&gt;

&lt;p&gt;I expressed my disappointment at the delay in no uncertain terms - which is quite unusual for me - and she gave me some line about how the customer service girl was new. I'm not sure exactly how is that an excuse, it just means their training and systems suck. She finished the call by saying that she wouldn't want me to think that it's representative of their normal level of service.&lt;/p&gt;

&lt;p&gt;Well, it might not be, but I'm never going to find out. Even though their memory is still cheaper than anywhere else, I've ordered it from Amazon. I refuse to give Ebuyer another penny.&lt;/p&gt;

&lt;p&gt;Next time you are looking for some computer hardware, may I recommend Amazon or the ever-awesome &lt;a href="http://www.overclockers.co.uk/"&gt;Overclockers&lt;/a&gt; - even if they are £5 more than Ebuyer. At least it'll arrive.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1309</link>
<dc:date>2011-10-25T18:33:31-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1308">
<title>There is never enough time</title>
<description>&lt;p&gt;It has been a busy couple of months since my last entry. As ever, there has been a lot of work to be done - my to do list is down to a mere 70 items. Not that I'm complaining of course - with the economy continuing its merry journey to the bottom, it's good to still have lots to do.&lt;/p&gt;

&lt;p&gt;On a sadder note, my gran passed away last month, at the impressive age of 105. These days I try not to let this diary get too sentimental, but thought I would at least mention it, as she made the &lt;a href="http://www.thisiskent.co.uk/Town-s-oldest-resident-dies-age-105/story-13343876-detail/story.html"&gt;front page&lt;/a&gt; of the local paper. It's quite remarkable to think of all the changes she saw the world go through since she was born in 1906. For those reading this who knew us 10 years ago, she is now buried with my mum in Sevenoaks Weald.&lt;/p&gt;

&lt;p&gt;For those who enjoyed my last entry about archery, I have taken part in 2 of the 3 archery competitions I mentioned, and really sucked at both. One was in gale-force winds (that's my excuse and I'm sticking with it), and although I had a new heavier bow for the other one, I struggled to reach 100 yards, ending up with a score that was almost half that of when I used my dad's enchanted bow - although I did get one arrow in the inner gold (some may say by more luck than judgement, but they would be mean-spirited sore losers), and I won £2.50! I will try not to spend it all at once.&lt;/p&gt;

&lt;p&gt;I have several large projects scheduled over the next few months, so don't expect too many entries in the immediate future - but if things go to plan, once they're out of the way I should be able to start wrapping up some very long-term projects - and start releasing stuff after 9 years of code silence. Pencil in to check back at the start of January...&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1308</link>
<dc:date>2011-10-13T07:58:49-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1307">
<title>Archery</title>
<description>&lt;p&gt;My dad is an archery enthusiast, and so, therefore, am I.&lt;/p&gt;

&lt;p&gt;Growing up I was vaguely aware that my dad was keen for me to take up the bow - subtle little things, like an archery target appearing in the middle of the lawn, or him saying "I am keen for you to take up archery" - but until recently I have always been too busy learning too many musical instruments, or being too tired from my strenuous days spent typing away at a keyboard.&lt;/p&gt;

&lt;p&gt;However, I recently decided to take up archery, entirely of my own accord and without my dad pointing out that my local archery club ran beginners courses. Despite my reservations, I discovered that it was indeed a rather enjoyable pastime, not least because I got most of the arrows in or near the gold, the archery equivalent of a bullseye. Well, at least until I moved from a recurve bow to a longbow, and the distance went from 30 yards to 100. Now I mostly miss.&lt;/p&gt;

&lt;p&gt;Regular readers will be aware that I have neglected once-cherished activities, such as this diary, ever since I realised there was a causal link between how much I worked and how many DVDs I could afford. I therefore doubt you will be surprised to hear that since the beginners course I have not made much time for archery practice.&lt;/p&gt;

&lt;p&gt;In that light, I'm still not entirely sure why I have taken part in two archery competitions so far this year, nor why I plan to shoot in another three. Needless to say I embarrassed myself at the first, only managing to get 15 arrows on the target (the average was over 60). I did somewhat better in the second competition, despite a longer distance - but to be honest, I think that was mostly because my dad had lent me his bow, which I believe to be enchanted.&lt;/p&gt;

&lt;p&gt;As my school reports always used to say, must try harder.&lt;/p&gt;

&lt;p&gt;Still, at least there's one tenuous aspect of archery that I hope I'm not a total disaster at; I have just made a website for the &lt;a href="http://www.sevenoaks-archery.co.uk/"&gt;Sevenoaks Archery Club&lt;/a&gt;. If you live in or around Sevenoaks and think you would enjoy walking around behind a target trying to find your arrows (I jest - unless you use a longbow, of course), get in touch with them - coaching is available for beginners most Saturdays. And yes, for those wondering how I became involved, the club was indeed recently founded by my dad.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1307</link>
<dc:date>2011-08-17T11:43:34-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1306">
<title>Ubuntu 11.04 classic and separate x sessions</title>
<description>&lt;p&gt;Forgive me regular readers, it has been almost 3 months since my last diary post. As usual I have many excuses (lots of work, fair amount of DIY, and two holidays), but for once I have a lot to say, so I'll try to get writing real entries soon. For now though: I'm alive, and stay tuned for my next entry, which should be here in a day or so and will most likely be about cats.&lt;/p&gt;

&lt;p&gt;Now for a public service announcement. Here's a helpful hint for the two other people in the world who use Ubuntu with an nvidia card and multiple monitors, but who have failed to get separate x sessions on 11.04 working.&lt;/p&gt;

&lt;p&gt;Short version: restart compiz.&lt;/p&gt;
&lt;p&gt;Update: this will apparently not help if you use Unity, so it only applies for Ubuntu classic mode.&lt;/p&gt;

&lt;p&gt;I use two screens, and prefer separate x sessions to twinview, because the latter is pretty poor. It has always worked well in Ubuntu, but with the upgrade to Natty Narwhal my second screen stopped working properly.&lt;/p&gt;

&lt;p&gt;Those of you who follow me on &lt;a href="http://twitter.com/radiac"&gt;twitter&lt;/a&gt; will no doubt remember me complaining about Unity. I tried it when it first appeared in their netbook edition, and disabled it thinking it was a bad joke, so was astounded to find that in 11.04 canonical resolved none of the issues, but had somehow managed to find a way to make it worse, yet think it was good enough to be the default. I lasted 40 seconds before I switched to Ubuntu Classic, but in that time I did notice that windows on my second screen had no title bars. More Unity bugs, I assumed.&lt;/p&gt;

&lt;p&gt;However, under Ubuntu Classic, windows in my separate x session still had no title bars or other window chrome, and weren't even focus-able. Second screen was completely useless. It did work if I restarted in "Ubuntu Classic no effects" mode, but that had various issues, not least forgetting to redraw half the screen.&lt;/p&gt;

&lt;p&gt;After putting up with it for a couple of months, I finally gave up. Here's what to do to get the separate x session working under 11.04:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a script: &lt;code&gt;vi fix_crappy_narwhal.sh&lt;/code&gt;
&lt;li&gt;Put this in it:&lt;pre&gt;
#!/bin/bash
# After upgrading to Ubuntu 11.04, compiz fails to initialise the second screen
# This should sort it out
DISPLAY=:0.0 compiz --replace ccp &amp;
DISPLAY=:0.1 compiz --replace ccp &amp;
&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Save and quit&lt;/li&gt;
&lt;li&gt;Make sure it's executable:&lt;pre&gt;chmod 755 fix_crappy_narwhal.sh&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Run it manually this time:&lt;pre&gt;./fix_crappy_narwhal.sh&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;Add it to &lt;code&gt;System -&gt; Preferences -&gt; Startup Applications&lt;/code&gt; for next time&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Hopefully that's helpful to someone between now and October when Shuttleworth forces Unity on us in 11.10.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1306</link>
<dc:date>2011-07-03T11:46:20-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1305">
<title>Reinventing the wheel</title>
<description>&lt;p&gt;Sometimes things are good enough. Sometimes you can work around the problems and make do. Sometimes you have to start from scratch.&lt;/p&gt;

&lt;p&gt;Last week I was tapping away in SciTE, trying to overlook its obvious shortcomings as a text editor, as I always do, since it's the best that I can find. I was writing a program to tunnel telnet over HTTP, because neither protocol on their own was good enough for what I was doing. I was writing it in Python, which doesn't offend me as much as some languages, but it's still not perfect. I tried using socket libraries, but none of them fit my exact requirements, so I decided to write my own abstraction, despite the obvious design flaws in sockets that I would have to work around. After a while, I was happy that my program did what I needed, and decided it was time to make it run in the background as a proper daemon process. I then began my hunt for python daemon libraries - and it turned out that although there were many, they were either buggy, unfinished, or missing crucial features. Eventually I found one that looked reasonable enough to use, with only a couple of obscure bugs. Only there was no documentation.&lt;/p&gt;

&lt;p&gt;If you have ever written a plugin or library that completely lacks documentation, I hate you.&lt;/p&gt;

&lt;p&gt;What is the point of you spending hours working away on something, just to release it to the world in a state where someone will need a thorough understanding of the problem to go through your code line by line to figure out how to use it? What is the point of writing thousands of lines of code without leaving any comments? What is the point of you? Nothing. Stop wasting my time and get the hell off my planet. Sociopath.&lt;/p&gt;

&lt;p&gt;It is at times like this that I often think it would be a good idea to write my own. From the past bitter experiences that are the many half-finished projects which litter my hard drives, I know this isn't always the right thing to do. Reinventing the wheel leads to anger, anger leads to hate, hate leads to not getting your code finished by the deadline. So this is something I generally try to avoid these days.&lt;/p&gt;

&lt;p&gt;But despite my best intentions, it still seems that almost every non-trivial project I work on needs a semi-abandoned yet somehow best-of-class plugin or library where the developer has spent the past 17 months filling their blog with useless posts about how the next version will be way more awesome, which is why they can't be bothered to fix any of the bugs. Almost every non-trivial project I work on therefore involves writing an abstraction layer between my code and their dross, letting me work around the bugs I discover and fill the rest of the file with comments to the effect that if there is a god out there somewhere, please will they smite the developer who has inflicted this living hell on me, so that someone else spots an opportunity to develop a marginally better library that I can write a new abstraction layer for, and fill with some new and more inventive insults.&lt;/p&gt;

&lt;p&gt;Sometimes things are good enough. Sometimes you can work around the problems. Like this time; I left it as it was, and ran it using &lt;code&gt;upstart&lt;/code&gt;. That'll do, pig.&lt;/p&gt;

&lt;p&gt;So if I solved that one, the reason for this post? Today I tried to get PIL to draw a rectangle with a 4px outline.&lt;/p&gt;

&lt;p&gt;Well, actually I was trying to get it to draw a placeholder image, a simple rectangle with diagonal lines from the corners. I wanted it to use 1px lines, but since I didn't want it to look ugly and PIL can't draw anti-aliased diagonal lines, I had to supersample, meaning wider lines. With such a well-established and mature library such as PIL, you can reasonably expect these sort of common requirements to be met, and the diagonal lines were indeed a couple of lines using reasonably sensible arguments. But for some reason the developers clearly decided that setting a width on the outline of a rectangle was something that nobody would ever want to do.&lt;/p&gt;

&lt;p&gt;Do I sigh as normal, leave a comment or two in my code, and work around it by drawing several lines or one rectangle inside another? No. Enough is enough. Developers of the world should be able to expect two similar functions in a library to accept similar arguments, particularly when it comes to setting the width of the lines on a rectangle. It is time to draw a line. Hur hur.&lt;/p&gt;

&lt;p&gt;I therefore announce with much pride and delight, that I have decided to write my own version of PIL. One which doesn't suck.&lt;/p&gt;

&lt;p&gt;My image library will have a sensible and consistent approach regarding line width, and will anti-alias your diagonal lines for you, if you want. While on the subject of images, I've never liked the common image formats, so my imaging library will use its own format, which is specifically designed not to suck. Of course though, there seems little point writing it in an imperfect language such as Python, so I will be writing my own programming language too. Since there are no decent text editors available, I'll also write a new one of those.&lt;/p&gt;

&lt;p&gt;While I'm at it, I figure I may as well come up with replacements for HTTP, telnet, sockets, and every other nonsense aspect of these terrible modern-day operating systems, so I can rewrite my program from last week in a more sensible way. In fact, I will use my new programming language to develop a new operating system, which will be better, faster, stronger. Although for a long time I've thought that machine code is terribly inefficient, so I think I may need to develop my own CPU too. I can probably do something to improve GPUs at the same time, so in fact, I'll be developing my own computer architecture to make sure that my image library will always be operating at peak efficiency.&lt;/p&gt;

&lt;p&gt;Actually, I've always suspected semiconductors are a crap way to do microelectronics. I should probably start there.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1305</link>
<dc:date>2011-03-09T14:45:06-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1304">
<title>A busy couple of months</title>
<description>&lt;p&gt;Once again, the diary has fallen silent while I've been caught up with other things.&lt;/p&gt;

&lt;p&gt;Work-wise, I've nearly finished the CMS, and I've written a bunch of Django components as part of it, which I plan to release gradually as separate projects, so I'm hoping they should prove interesting to those of you who like that sort of thing. I also have several other projects that are nearly there (sysadmin, javascript etc), so I'm hoping 2011 will be full of releases, although that depends on how much real work I've got on.&lt;/p&gt;

&lt;p&gt;Of course, I'll need somewhere to release this stuff, so I'm also in the process of refurbishing radiac.net to focus on personal stuff, and preparing to launch a sister site where I plan to move my code projects.&lt;/p&gt;

&lt;p&gt;Other than work, my voyage into the world of DIY continues. In the past few months I have partially boarded the loft, regrouted and resealed the shower, decorated most of the rooms, drilled lots of holes in walls, and soon I will be replacing the bathroom taps - if I can ever figure out how to turn the hot water off.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1304</link>
<dc:date>2011-01-31T19:02:23-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1303">
<title>Snow!</title>
<description>&lt;p&gt;Well, it's that time of year again, where radiac.net gets covered in snow! And unlike most years, the UK has joined this esteemed site in getting covered in snow too!&lt;/p&gt;

&lt;p&gt;Apart from Cheltenham, that is. Yes, that's right, while the rest of the country has been plunged into a delightfully extraordinary early winter and has been getting 10cm of snow a day, which everyone on TV and Twitter has felt compelled to point out with snow reports and photos, we managed a half-assed sprinkling of white ice on Monday, and haven't had anything since.&lt;/p&gt;

&lt;p&gt;Well, apart from the bone-freezing cold. We're getting plenty of that. It's times like this I really wish I hadn't picked up Tristan's habit of going out to the shop in all weathers wearing shorts and flip-flops.&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1303</link>
<dc:date>2010-12-02T08:53:09-00:00</dc:date>
</item>
<item rdf:about="http://radiac.net/diary/id/1302">
<title>10 for 10 on 10/10/10 at 10:10:10</title>
<description>&lt;p&gt;Hurrah! Happy 10/10/10 10:10:10 second, everyone! I &lt;a href="http://radiac.net/diary/id/1297/"&gt;had announced&lt;/a&gt; that to commemorate this amazing moment in time, and to celebrate (very approximately) 10 years of the very finest site on the entire internet (this one), I would release 10 of the projects that I have been working on! But since then, I had an even better idea, one that is about 10 times as awesome: instead of releasing 10 projects, I would release one project which is 10 years old! Yeah!&lt;/p&gt;

&lt;p&gt;This decision has absolutely nothing to do with several unexpected and time-consuming work projects, and is in no way linked to not having 10 projects ready for release.&lt;/p&gt;

&lt;p&gt;Without further ado, I proudly present my &lt;a href="http://radiac.net/projects/riscos/#fullwimp"&gt;BBC BASIC full WIMP skeleton library&lt;/a&gt;! Not only that, but I also threw in my &lt;a href="http://radiac.net/projects/riscos/#lightwimp"&gt;light WIMP skeleton library&lt;/a&gt;, and am re-releasing &lt;a href="http://radiac.net/projects/riscos/#dimager"&gt;DImager&lt;/a&gt; - a handy disk image reader/writer in its own right, but it is also written using the full WIMP skeleton library, so will serve as a useful reference in your own projects!&lt;/p&gt;

&lt;p&gt;What's more, if your browser supports JavaScript, you can see the source code in all its syntax-highlighted glory! Although if you find this code useful, chances are you'll need to find a more powerful computer - try borrowing a friend's mobile phone.&lt;/p&gt;

&lt;p&gt;For anyone looking to add syntax highlighting to their BBC BASIC source, you're welcome to grab my &lt;a href="http://radiac.net/projects/riscos/shBrushBBCBASIC.js"&gt;BBC BASIC VI brush&lt;/a&gt; for &lt;a href="http://alexgorbatchev.com/SyntaxHighlighter/"&gt;SyntaxHighlighter&lt;/a&gt;! Check me out, I just keep on giving!&lt;/p&gt;

&lt;p&gt;It took me a while to get the tokenised BBC BASIC files on there - I couldn't get Ubuntu to mount the floppy disk. There is also some documentation, but it's been 10 years, so do forgive me if it's a little high-level.&lt;/p&gt;

&lt;p&gt;Awesome or what?! Bring on 11/11/11 11:11:11!&lt;/p&gt;</description>
<link>http://radiac.net/diary/id/1302</link>
<dc:date>2010-10-10T10:10:10-00:00</dc:date>
</item>
</rdf:RDF>