This is as days pass by, by Stuart Langridge

Ajax

Jesse James Garrett and the team at Adaptive Path have coined the shorthand term "Ajax" to mean the combination of all this cool DOM and CSS and XMLHTTPRequest stuff that everyone's going on about. Garrett's article, "Ajax: A New Approach to Web Applications"...

Syndicated from the SitePoint Stylish Scripting weblog

-----

Backups on a Bytemark VM

The server that this site runs on is a Bytemark Hosting virtual machine. Those of you who have been reading for a while will remember that we had a serious fuckup a couple of months ago and the site went away. And we didn’t have any backups. Fortunately, we were able to retrieve an old version of the sites hosted here, and reconstructed the data. But that’s not happening again, so I’ve set up some backups. Bytemark give you some free backup space to back up your VM. The following steps should give you full nightly backups of everything you want to back up.

First, mount your backup space over NFS. You need to get access to the backup space as a filesystem, although we’re not using NFS for the backups; we’ll be using rsync. Mount the backup space at /backup. All this stuff needs to be done as root.
mkdir /backup/.config
mkdir /backup/rsync
mkdir /backup/rsync/files
mkdir /backup/rsync/db
nano /backup/.config/rsync
Put the following line in that file:
VMNAME-backup:PASSWORD:::1:rsync
This sets up rsync. VMNAME must be the name of your Bytemark VM (NB: not the domain name you’ve got pointed to it; it’ll also be called something like foobar.vm.bytemark.co.uk, and foobar is your VM’s name.) PASSWORD is your choice of rsync password. Pick something random. Wait for ages. Rsync stuff only gets activated a few times a day, so go away and come back the following day or eight hours later or something.
mkdir /usr/local/backups
echo "RSYNC_PASSWORD_FROM_ABOVE" > /usr/local/backups/backup-password
chmod og-rwx /usr/local/backups/backup-password
Now we’ll test that rsync is working.
rsync -a \
--password-file=/usr/local/backups/backup-password \
/etc/motd \
VMNAME-backup@VMNAME.backup.vm.bytemark.co.uk::VMNAME-backup/files/test/
If that worked, there should now be a /backup/rsync/files/test directory with an “motd” file inside. That means that rsync is working! If it didn’t work then, er, rtfm, etc, etc.

Now to create two backup scripts, one to do your MySQL databases and one to do your files. If you don’t use MySQL, skip the DB one (or replace it with one that does your own choice of DB.)

/usr/local/backups/backup-databases.sh:
#!/bin/bash

# Dump all databases to a file, and rsync that file into the backup space,
# inside a directory named for data and time.

OUTPUT_FILE=/usr/local/backups/dbdump
NEW_BACKUP_DIR=`date +%Y%m%d@%H%M%S`

mysqldump --all-databases --user=root --password=_yourMySQLRootPassword \
   --opt | bzip2 > $OUTPUT_FILE

rsync -a \
--password-file=/usr/local/backups/backup-password \
 $OUTPUT_FILE \
 <em>vmname</em>-backup@_vmname_.backup.vm.bytemark.co.uk::_vmname_-backup/db/$NEW_BACKUP_DIR/

logger -t Backups Backup of all databases done to $NEW_BACKUP_DIR
Run that file to test it. It should create a directory in /backup/rsync/db named after the date and time, and put a DB backup in it of all your databases. /usr/local/backup/backup-files.sh:
#!/bin/bash
# Backs up files with rsync

NEW_BACKUP_DIR=`date +%Y%m%d@%H%M%S`
FILES_TO_BACKUP=/usr/local/backups/files-to-include
EXCLUDE_FILES=/usr/local/backups/files-to-exclude
LAST_BACKUP_FILE=/usr/local/backups/last-file-backup

# Work out what the <strong>last</strong> backup was, to use as a base for this one
if [ -f $LAST_BACKUP_FILE ]; then
  read LAST_BACKUP < $LAST_BACKUP_FILE
else
  LAST_BACKUP=nonexistent
fi

echo $NEW_BACKUP_DIR > $LAST_BACKUP_FILE

rsync -a --delete \
  --password-file=/usr/local/backups/backup-password \
  --include-from=$FILES_TO_BACKUP \
  --link-dest=../$LAST_BACKUP \
  / \
 VMNAME-backup@VMNAME.backup.vm.bytemark.co.uk::VMNAME-backup/files/$NEW_BACKUP_DIR/

logger -t Backups Backup of files done to $NEW_BACKUP_DIR
You’ll also need to create /usr/local/backups/files-to-include. The syntax of this file is a great big pain in the arse. Mine is below:

# List of directories to back up
# If you want to back up directory /a/b, then you need the following lines:
# /a         (since otherwise we never get as far as b, because a is excluded)
# /a/b       (the directory we want to back up)
# - /a/*/    (don't back up any other directories in /a)
# - /a/*     (don't back up any files in /a either)
# Yes, this is completely shit. Rsync's fault.

/var/
/var/www/
- /var/*/
- /var/*
/home/
/etc/
/usr/
/usr/local/
- /usr/*/
- /usr/*
/usr/local/backups/
- /usr/local/*/
- /usr/local/*

# Directories to explicitly exclude. Note that you don't need all
# that parent directory shit here; just put in dirs that you don't
# want to back up for whatever reason.

- /var/www/jonobacon.org/mysqlbackups/
- /var/www/jonobacon.org/mysqlbackups.old/

# Don't fuck about with the stuff here; it ensures that logs directories
# aren't backed up, and neither is anything else in / (otherwise we'll
# back up the whole machine or something equally dreadful).

- **/*.mp3
- **/logs/
- /*/
- /*
Pay attention to the comments. I mean it.

This is actually a super clever backup method. All the magic is done by rsync’s—link-dest option. What that does is, every time you tell it to back up, it creates a tree of hardlinks in the backup space from the last backup. Then it rsyncs any changed files over the top. This means that every single backup is a full backup, but it only takes up the space of an incremental backup. This only works because hardlinks exist. I love Linux, I really do.

Anyway, those two files should do the job of backing up everything. Stick two lines in your crontab to kick them off.

/etc/crontab:
# ########### Backups ###############
# mysql
30 5 * * * root /usr/local/backups/backup-databases.sh

# files (4.40am)
45 5 * * * root /usr/local/backups/backup-files.sh

and it should all work.

Note that these instructions probably won’t work for you right off, but they will at least give you a starting point.

What is a blog

Now, I hate the word “blog“. I go out of my way and contort sentences to avoid using it. “I run a weblog.” “Yeah, I posted that on my site.” “Which weblogging system do you use?” But I’m rapidly becoming convinced that it has two meanings anyway. You see, a blog is the website, yes? But each individual post also seems to be a blog. Does the verb mean “to post to a blog” or “to create a single post“? Bloody word, I hate it.

A mantra

This cycle has happened to me several times. I have an idea, but either somebody points out a flaw or I find one myself. I put the idea on a shelf, and a little while later it pops up, often with the same flaw. Lots of people use it, and then the flaw gets fixed…My plan for this year is to pick a few ideas and push through them, even if they have some problems. I will cross bridges when I come to them. I will go boldly. I will listen to mp3s on my computer and remember that a solution with some problems is better than no solution at all.

If you’ve gotta have a goal, a mantra, that’s not a bad one, Aaron. Kudos.

-----

Carphone Warehouse customer service

A while back, I bought myself a cool Bluetooth car kit. Finally, after a month of waiting, it was fitted Saturday. And it was pretty cool. I rang half the people I know in the car on the way back from Kidderminster just to say “woo! look! I am talking to you without holding the phone! I am so l33t!” Now, however, I would like to register a number of complaints about it.

  1. There’s some kind of odd interaction between it and the phone. Sometimes the phone registers that it’s there when I get in the car and sometimes it doesn’t. Turning them both off and back on again always fixes it, but I should basically never ever have to turn my phone off, so that’s shit.
  2. The voice recognition seems to be arse. I can’t get voice dialling to work at all; it doesn’t recognise the names I say, no matter how much I try. I think that this is because I record the voices by speaking into the phone, but I dial the voices by speaking through the car kit’s mic, and they sound different. However, as far as I can tell, it’s not possible to record a voice dialling name through the car kit, so that puts me SOL on that front.
  3. The bloke was not all that helpful in terms of what’s actually required. I asked if I had to leave Bluetooth turned on on my phone to make it work, and he didn’t know; I don’t really want to leave it on and discoverable all the time, because my phone will get 0wned. I could experiment, but this is enormously complicated by item 1.

None of these things are very serious. It’s a cool piece of equipment. But there is one other complaint I have which is more serious.

It’s stopped fucking working.

That’s right. Three days after the bastard was fitted, after a month of waiting, it doesn’t work. It just won’t turn on. It’s driven both through its own on/off switch and through the ignition; either will turn it on, so you don’t have to remember to switch it on every time you get in but you can have it on while the car’s not running. Neither of these things turn it on. If you try and turn it on when the engine’s not running, the speaker makes a sad little crackle-pop sound and nothing else happens. Possibly the same thing happens when the ignition turns it on, but I can’t tell that because, well, the engine’s running and so I can’t hear it.

So I rang Carphone Warehouse. They were ridiculously unhelpful. I can’t take it in on a work day, because I’m at work, duh. I got told, well, you’ll just have to wait for the next Saturday appointment. Three months away. No. That’s totally fucking unsatisfactory. You sold me a product and now it’s broken; I am not going to wait for months until you can be bothered to fix it. Eventually, after ten minutes of phone wrangling, the bloke agreed to send someone out to fix it. Of course, he couldn’t give a time more accurate than a few hours, and it couldn’t be on a Saturday. So now I have to have a day off work and sit around the house waiting for someone to come out and fix the fucking thing.

Not happy about this.

Updated: redacted some frankly abusive posts at the request of Carphone Warehouse.

Further updated: nearly all comments redacted. See discussion on this point for why.

Licencing for my browser experiments

A correspondent reminds me that the licencing stuff for the browser experiments was a bit unclear. My intention is: all that stuff is under the MIT licence and that means that you can pretty much do what you want with it. I have now clarified that on the pages, and hopefully that’ll stop confusion.

It would be a nicer world if all these legal gyrations weren’t necessary.

-----

The power of pure CSS

With all this cool JavaScript and DOM stuff going on, it's sometimes difficult to remember that it's possible to contort some pure CSS and HTML into acting like an interactive site without any scripting at all. I suspect that most readers here will have seen Eric Meyer's css/edge...

Syndicated from the SitePoint Stylish Scripting weblog

-----

Documentation, documentation, documentation

It is truly said that if you didn't write it down, it didn't happen. With that in mind, I'm going to talk about a JavaScript-based mapping service that isn't Google Maps. Community Mapbuilder is

Syndicated from the SitePoint Stylish Scripting weblog

-----

Just another brick in the wall

Hello, world!

Syndicated from the SitePoint Stylish Scripting weblog

Use HTML 4.01, not XHTML

Kevin Yank, in the latest Sitepoint Tech Times, writes that SitePoint’s DHTML book will be published with HTML after some evangelism by the author of said book. Since said book is my book, and said author is me, I’ll note that I was really pleased that Kevin was open to discussion on this point. As he said, he tut-tutted my use of HTML 4.01 in the book rather than XHTML, and I responded (probably more forcefully than I should have) with my view that XHTML is a pointless and overhyped waste of time and energy at this point. Kevin, to his credit, took those views on board; he himself says that he’ll stick with XHTML for his own projects, but that the book will use HTML 4.01. Large kudos to him for not being taken in by the XHTML community’s hype on this!
(Cheers to Richard Rutter for alerting me to this.)

SSH tunnels on a Mac

The gang at the weekend tried to con me into writing up a brief thing about security for Mac people, some of whom (it transpires) are so hypnotised by all those pretty flashing lights that they don’t know beans about security. (Yeah, yeah, if you find this offensive, just think back to the last time that you told the whole Linux community that we don’t know what good UI is.) Anyway, I’ve been mulling over the best way to approach a short, punchy security bible (or possibly a security N Commandments) for OS X users, and Richard Rutter points out that Doug Bowman has just done it. That saves me a job, then :-)

The power of good software

My boss said, “The managing partner would love to see a diagram of how all our systems link together, because he saw one that another firm had done and was impressed. No big rush; some sort of Visio thing or something, if you get a chance.“. And then he left for the day. Off I went and downloaded GraphViz. Great little tool; I’ve never actually used it in anger before, but I’ve heard about it. Five minutes reading the manuals, and I discover that it’s an utter piece of piss. Simply create a file, mygraph.dot, like this:

digraph mygraph {
 system1 -> system2; 
 system2 -> system3;
 system1 -> system3;
 system3 -> "The Big Complex System";
}
and get a lovely PNG of the output with dot -Tpng mygraph.dot -o mygraph.png.

He just walked back in, ten minutes after he left: apparently a building has fallen down near the Mailbox here in Birmingham, and traffic is fierce. Was quite surprised to see that the graph was done. Visio! Huh!

Installing Hula on Ubuntu Warty, phase 2

OK, so yesterday I wrote the instructions for installing a private copy of Hula on Ubuntu warty. Today I’m here to say: it all works fine, except that you must run the server as root. I’m doing it with sudo, for testing, but that’s OK. It doesn’t work if you don’t run it as root.

More news as it happens!

The Hula Project webmail interface

Not getting your Linux box infected

rds slags off people who are running hula without checking it :

Also, for anyone wondering how easy it would be for some malcious idiot to infect a Linux box, ask how many people are now running Hula. Now, how many audited that code first? Now, how many had to run it as root to even get it to run? Now, how many people put it onto their box merely because it was released. Now, how many people, before installing it, knew what the fuck it even does? Remember: Linux is airtight, nothin’ll get in on one of those boxes, you don’t need to be careful, because you’re totally covered. Running a untested, unaudited network server as root? Spy/mal/adware? Bitch, please, it’s cool. We’ve got some no-exec patches compiled in and everything.

Probably right for dim people. Me, on the other hand, I ran it on my laptop, and it had no network connection while I was doing it. And then I stopped it before opening the network again. Perhaps it installed some spyware. I think it’s unlikely, frankly, because I trust Novell and I trust Nat Friedman, but perhaps Novell are interested in really really annoying their core community and installed some spyware on my machine. Then yep, I’ve been owned. On the other hand, as I have said before , bad programs don’t need to be root. How much safer would I be if I was running the software as my user account? It could still infect my apps; still hide itself all over the place. .gnome/AutoStart, an extension in Firefox, my .bashrc, my .bash_profile, my .xsession, my .xinitrc. In my Gnome configuration as an applet. Being root would allow it to install a few more places, but, like, whatever, man. Root stuff is less bad if I lose it than all the stuff that I can write as a user, because I can reconstitute all root-owned things with a quick blast from the Debian archives. That is, assuming that Debian haven’t decided to add spyware to my machine, just like Novell perhaps have. How are GPG keys going to affect that? How can we be snide about the problems of running Hula, from Novell, and not be equally snide about the problems of running Debian software?

SyncML synchronisation

If you’ve bought a mobile phone in the last couple of years, and it was, like, not totally crap (or a Pay As You Go one or something) then it will do SyncML synchronisation.
What’s that? I hear you ask.
Well, the idea here is that if a phone supports SyncML then you are able to synchronise the contacts and the calendar in your phone with a SyncML server, somewhere out there on the internet. This means, in short, that you won’t lose any of your data. Buy a new phone? Just sync it with your SyncML server and you get all your contacts back off your old phone. Wipe the SIM card by accident? Just sync your phone with your SyncML server and you’ll get all the contacts and calendar info back.

You’ll need your phone to be able to access the internet for this. That probably means GPRS. SyncML is clever enough to only transmit the changed stuff, so it doesn’t use a lot of data traffic, which means that if your phone does GPRS at all then you should be OK; you don’t need to pony up a lot of money for extra data transfer. You will need to be able to use that GPRS stuff as part of your talk plan, but you probably already can, and your mobile phone operator will be able to help you with that anyway.

You can run your own SyncML server if you’re desperate to, but don’t bother. Instead, wing your way over to mobical.net and sign up for an account. They’re bloody great. Once you’ve synced, they display all your contacts and a nicely formatted calendar containing your appointments. They’re free, and have sworn blind they’ll remain so. Better still, they know about lots of phones; if you go there and sign up for an account, and tell them your phone type and phone number, they’ll send your phone some connection details, which means you don’t have to bother typing in any configuration into your phone with the stupid phone keypad. Just wait for the SMS to arrive, say “yes, I accept these connection details“, and then off you go into the menus to find “Synchronisation“. (It’s in “Connectivity” on the K700i.) Hit that and, pow, all your contacts and calendar are now saved on the web. Very very handy indeed. Tell ‘em I sent you.

Installing Hula on Ubuntu Warty

So, I’m going to have a crack at Hula on my Warty box. Here’s the stuff I had to do to install it.

  1. I created $HOME/src/hula/install and $HOME/src/hula/trunk directories, and then cd $HOME/src/hula/trunk.
  2. Fetch the source from svn as described on the installation pagesvn checkout svn+ssh://anonymous@forgesvn1.novell.com/svn/hula/trunk/hula.
  3. Next, install a load of packages so that it’ll work. I had to install automake1.7, g++, libssl-dev. You might need others which I already had installed for one reason or another.
  4. Now do ./autogen.sh --prefix=<prefix>. I set the prefix to be $HOME/src/hula/install, because I’m going to try not running it as root; I want it to run n non-standard ports so that it doesn’t conflict with my existing SMTP and IMAP servers.
  5. make
  6. make install
  7. cd $HOME/src/hula/install
  8. ./sbin/hulasetup --domain=kryogenix.org --ldap=10389 --http=10080 --https=10443 --webadmin=10081 --webadmins=10082 --dns=127.0.0.1 (wait until it finishes)
  9. ./sbin/hulamanager (this will stay running)
  10. In your browser, go to http://localhost:10080/ and log in with username admin, password hula.

Well, that’s the theory. Actually, I so far can’t get it to run; in the syslog I keep getting ”localhost mwpref[3099]: Could not connect to NMAP server 16777343 (code:-1)” and I don’t know why. The people on #hula:freenode are pretty helpful, though. For now, I surrender; I’ll come back to this tomorrow.

On groupware

Tim Bray relates how Sun don’t have ‘groupware’ software, but instead manage very well with email, IM, and wikis. This follows jwz explaining to Nat Friedman how ‘groupware’ ambitions killed Netscape and why Hula shouldn’t be groupwarish. Wish I could get people to understand that we don’t need “enterprise” systems very much. Of course, I’ve just thrown away this month’s Legal IT which is all about enterprise bullshit. I’m in the wrong world.

Hula calendar server

Wow. Novell have built Hula , a calendar and mail server. Web-front end (decent JS/DOM scripting GMail-style thing), plugins for Thunderbird, Sunbird, Evo, the works. Bloody good job Novell. This is a critical project for Linux corporate acceptance (and the discussion we had on LugRadio nearly a year ago underlines the point; we said then that there was nothing that could replace Exchange, except Chandler which didn’t work, and when we recently picked that discussion up again we said that there still was nothing). The Kolab people might say that they’ve been doing this for ages, but there doesn’t seem to be much Kolab acceptance. Hula looks fantastic. I’ll be looking at this in more detail.

Pre-SXSW meet

So, on Saturday, there was a “pre-SXSW” meetup in London. It was a beer session for some of the top web guys in Britain, and me as well :) In attendance were: Jeremy KeithRichard RutterSimon WillisonPatrick GriffithsIan LloydDunstan Orchard – and Andy Budd. A few other people couldn’t make it, but we had a whale of a time anyway.
Beer was drunk, as can be seen from Simon’s snapshots – more shockingly, we went to the Apple Store in Regent Street. This isn’t shocking given the list of attendees; aside from Patrick (a Windows XP guy) and myself (Ubuntu Linux), they’re all Mac users. (Simon, in his defence, swaps about between operating systems, but tends to live more on a Mac.) So they all loved the idea of going. Me…I felt like a class traitor. “We are pilgrims in an unholy land“, as Dr. Henry Jones (Sr) said. It was pretty full, and pretty full of people who were all keen to get some of that Apple goodness; the queues to buy stuff were long. Having spent some time looking at all the gear, and particularly fiddling about more with the OS, I still don’t see myself with any particular need to use Mac OS X. There are a few nicenesses in there, and they are ahead of the game in areas including those nicenesses; configuring multiple monitors is really neat, for example. QuickSilver is also a heartily cool application for those who know their own computer well. But it’s still proprietary; as Mr Ben said in a thread on the LugRadio forums: “I don’t need to try OS X, because I know without trying that it is a closed source, proprietary operating system.” He’s quite right. A few extra snazzy bits don’t overcome my philosophical objections.
Anyway, aside from the visit to the Apple Store, we found a nice (and cheap!) pub (with a Cock Recharging Zone), ate dinner in the horrifically trendy Busaba Eathai restaurant (which was very tasty indeed), and everyone complained that my book isn’t out yet. I’m working on it. Shouldn’t be long now. I wrote the final appendix yesterday, and we’re well into the final editing process. Not long to go!
It’s thoroughly cool seeing all these people. They’re all off to SxSW and I’m not, but it’s great to see that there’ll be a British invasion to the conference, especially with Jeremy, Andy, and Dunstan all speaking or on panels. The BritPack. Cool. Let the domination begin!

LugRadio series 2 episode 9

Well, LugRadio 2×09 is out and has been linked from Slashdot. Server in “holding up fine under the strain” shocker, too, which is pretty cool news.
It was a really good episode; Miguel de Icaza talked about Mono, among other things. Go get it.

Yet more stupid JavaScript tricks for fun and profit

The header of this site now plays a game of Life. Writeup coming when it’s not 2.40am, but for now just take a glance at life.js and life.css for some clues. It’s all unobtrusive, as you might imagine.
Looks better on pages with longer titles, I ought to point out :)

Sending cluepackets to Dashboard from Firefox

Dashboard looks pretty cool. I reckon it’d be easy to implement a GreaseMonkey script that sends cluepackets to Dashboard from Firefox, as a prototype for a new extension. Another project for me, once I’ve decided whether I’m prepared to install Mono in order to get Dashboard.

Laptop batteries

Laptop life has been constant-ish, for years. You can get three or four hours out of a decent modern laptop; it used to be one or two, but it’s all of that order. Not enough for a full day without recharging. Do modern laptops use more power? They certainly do more stuff—CF readers, CD readers, better screens. Could you take a battery from a brand new laptop and use it to power your old P200 laptop for eight hours?
Well, of course you couldn’t, because they’re all different shapes. This is (charitably) because laptop designers need to craft everything specifically for each new model so that it all fits together as tightly as possible, to minimise size, or (uncharitably) so that you have to buy a new battery every time you buy a new laptop. But ignore that; imagine the shape and connections issues don’t come into it. Does a modern battery produce more power from the same size of battery? I imagine they do; technology marches on, after all. So if I took the battery from a brand new laptop and I put it in my old Toshiba Tecra 520CDT, which is a P166, would it run for eight hours? Or ten hours? Or 24 hours? It would be great if it would. Who knows about battery stuff?

Linux shows

We recorded the latest LugRadio last night (due for release on Monday) and I was really pleased with it. Interview with Miguel de Icaza, Mono conversion, talk about Firefox, lots of stuff. We’ve got some cool people lined up for interviews in the next few shows, too. It’s really nice to hear that all these busy clever people are willing to take some time out and appear on the show :)
Apparently there are some more Linux podcast shows coming out; obviously there’s us and TLLTS and have been for a little while (our first anniversary is the next episode!), but there are a couple of others too, so I am told. I shall have to see what they’re like.

-----

JavaScript triggers

A List Apart has an article by PPK on JavaScript triggers where he explains his way of making JavaScript unobtrusive. He says, with a certain degree of accuracy, that using the class attribute as a hook is somewhat limiting. His approach, however, is to create brand new attributes, and then solve the “but it doesn’t validate!” problem by running your own validator. Paul over at paranoidfish expresses my view better than I could when he says “it also seems that the suggested solution is significantly more complicated and harder to maintain than the setup it was intended to improve upon“.
I’ve used non-standard attributes a few times, and sometimes there’s no way around them. When I do it, though, I’m conscious that it’s a hack, not a good approach. Perhaps in an XHTML world this sort of thing is more reasonable, but this ain’t an XHTML world—IE doesn’t interpret your XHTML as XML, for a start.

-----

Sweetness

Adam Sweet’s got himself a weblog and started it off in classic style by ripping a new arse for Tiny/TIme Computers. Nice one the Sweet. I look forward to more!

-----

Site problems

We’ve been having a few problems over here, as you may have noticed. Jono has more detail on what was going on. It’s still not entirely fixed, and more work will be done today, but a crisis has at least been averted.

Early patent death

Christie’s are holding an auction of The Origins of Cyberspace. This contains much, much cool stuff. Turing’s On computable numbers, with an application to the Entscheidungsproblem. Capek’s Rossum’s Universal Robots , the play that invented the word “robot“. And the document that began the information revolution, Eckert and Mauchly’s Outline of plans for development of electronic computers.

And what do we see from Christie’s own description of that seminal document ?

Five weeks after the unveiling of the ENIAC on February 14, 1946, Eckert and Mauchly resigned from the University of Pennsylvania’s Moore School over a disagreement about patent rights.

Bloody patent people nearly strangled the digital revolution before it had even begun! What does this tell you?

I have tried to convince work that we should devote some of the IT budget to buying cool documents from this auction and displaying them, rather than the not-very-good art we currently have on the walls, but they are having none of it. Bah.

A prayer

Holy Mary, mother of God,
Can you keep me off the bog?

Please?

Setting up Pyblosxom

I’ve just mailed Sarabian a bit of advice on how I set up Pyblosxom websites. Note that this is probably pretty specific to me, but I present the advice below anyway in case it’s useful to someone else:

I tend to set it up like this:

/var/www/example.org
                    /html
                         /pyblosxom
                                   /pyblosxom.cgi
                                   /config.py
                                   /.htaccess [1]
                    /pyblosxom
                              /Pyblosxom [2]
                    /plugins [3]
                    /sites
                          /blogging-hacks
[1] content is:

<Files config.py>
deny from all
</Files>

[2] This is the Pyblosxom distribution
[3] Put all your plugins in here

Then set, in config.py, py[‘datadir‘]=‘/var/www/example.org/sites‘, py[‘plugins_dir‘]=‘/var/www/example.org/plugins‘, and set the base (the thing which tells it where Pyblosxom itself is, I can’t remember) to /var/www/example.org/pyblosxom. Then set up an Apache rewrite rule, something like
RewriteRule /weblogs(.*) /pyblosxom/pyblosxom.cgi$1

and then it should all work.

Nautilus plays mp3s

Perhaps everyone else already knows this, but I’ve just noticed that when you mouse over an mp3 in Nautilus it plays the first few seconds so you can tell what it is. That’s pretty darn cool.

Jeff Waugh calls the LugRadio team bastards

He certainly does. I think he stodd up very well to being interviewed at some horrible hour (for him) like 7.30am, especially as his tongue was itchy. Nice one Jeff.

This website belongs to Stuart Langridge. Contact details are available. Don't eat yellow snow. Valid HTML5, at least in theory, except for the bits that aren't because I'm that futuristic that I'm ahead of the spec, oh yes. HTML5 help from Bruce Lawson, among others. Fonts from the superb FontSquirrel. End.