Posts from December 2006.

Writing a Jokosher extension: a rambling essay

Jokosher is an extensible bit of software. We knew that we’d never be able to
think of all the stuff that people would want to do with an audio editor, so
we’ve set up Jokosher so that people can write their own extensions to it. So
if you want to do something particular, something very specific, something we
don’t like, or something we just haven’t got around to yet, you can roll up
your sleeves and do it yourself. This is the story of how I built the
Freesound extension, which lets you easily browse the comprehensive library
of sampleable Creative Commons licenced stuff at the Freesound system
and then easily drop the samples you like into your Jokosher project.

Jokosher extensions are, basically, tiny separate programs that can talk to
Jokosher itself in certain specific ways. So, the Freesound extension isn’t
really an extension so much as it’s a graphical browser for Freesound, which
happens to know how to talk to Jokosher a bit. For the moment, let’s pretend
it’s a separate program without any Jokosher bits at all. It works like this:

  1. The program starts up
  2. It checks to see if it knows what your Freesound username and password are
  3. If it doesn’t, it pops up a dialog for you to enter them, and then saves
    them away for next time when you do type them in
  4. It shows a window containing a search box and a Go button
  5. When you type something to search for in the search box, it runs a query
    at Freesound using your username and password, and the thing you searched for,
    and gets back some XML describing matches
  6. It puts a list of all the matches in the window, each with a description
    (that it gets in the XML), and a little waveform image (that it gets in the
    XML), and a play button (that it creates itself, but that plays the file directly
    from a URL that it gets in the XML)

…and that’s it. The integration with Jokosher only comes in two parts;
firstly, starting it up, and secondly, allowing you to add samples that
it’s displaying to a Jokosher project.

The first part’s pretty easy. Jokosher allows an extension to add itself
to Jokosher’s Extensions menu. The way you do this is pretty simple.

To write a Jokosher extension, you need to first create a Python file. In
order for that Python file to *work* as a Jokosher extension, it needs to
define certain things. Those things are:

Three variables, EXTENSION_NAME, EXTENSION_DESCRIPTION, and EXTENSION_VERSION
Two functions, startup() and shutdown()

So, to make a Python file into an extension, you add something like this
to the bottom of it:

def startup(API):

	pass

def shutdown():

	pass

EXTENSION_NAME = "Freesound search"

EXTENSION_DESCRIPTION = "Searches the Freesound library of " +\

  "freely licenceable and useable sound clips"

EXTENSION_VERSION = "0.01"

The variables are needed so that Jokosher knows what your extension is called,
and can display a useful description to the person using it.

When Jokosher starts up, and loads your extension, it calls your extension’s
startup() function, and it passes it one object: above, we’ve set the startup()
function to call that passed parameter “API”. The API object is how extensions
can talk to Jokosher. Now, it’s important to note that you don’t make your
extension do all its work in the startup() function. That gets called as
Jokosher itself starts up. Instead, we want the Freesound extension to add
a menu item to Jokosher’s Extensions menu, and then when the user clicks that
menu item we start doing the work. The API object has a function called,
amazingly, add_menu_item() to do exactly that. So, our startup function
should actually be:

def startup(API):
	menu_item = API.add_menu_item("Search Freesound", callback_function)

What this will do is add a menu item “Search Freesound”, and when the user
clicks on it it’ll call callback_function(), which is defined in our extension
somewhere.

Another minor thing is that anything you do in the startup() function has
to be un-done in the shutdown() function. The reason for this is that shutdown()
gets run if a user disables your extension. In our case, we need to remove
that menu item, which is done using the menu item’s destroy() method. So,
change startup() so that menu_item is a global variable (so it’s available to
shutdown() as well), and change shutdown() so it removes it:


def startup(API):

	global menu_item

	menu_item = API.add_menu_item("Search Freesound", mainwindow.menu_cb)

def shutdown():

	menu_item.destroy()

That takes care of hooking the extension into Jokosher; the user can now start
up and use anything that the extension can do. (Since this little discussion
is about how to write Jokosher extensions, we won’t discuss how exactly the
extension talks to Freesound. Just take it as read.) The part that’s left is:
how do you get samples from the extension into your project itself?

The way the user does it is to drag a sample from the extension window onto
an instrument in Jokosher. Now, Jokosher understands dragged-and-dropped files;
you can drag a music clip from Nautilus or from Firefox or from any other
application straight onto a Jokosher instrument and it’ll work. So the
Freesound extension just has to know how to allow users to drag things from it.
Technically, this is called being a drag source. How to do this in Python
is described in the PyGtk Tutorial — basically, you use
code something like this:


e.drag_source_set(gtk.gdk.BUTTON1_MASK, [('text/plain',0,88)],gtk.gdk.ACTION_COPY)

e.connect("drag_data_get", self.returndata, sample)

...

def returndata(self, widget, drag_context, selection_data, info, time, sample):

	selection_data.set (selection_data.target,8, sample.previewURL)

where “e” in the first snippet is the widget displaying the sample, and
“sample” is our actual Sample object which we’ve created from the FreeSound
XML. In essence, the Freesound extension works like Firefox; when you drag
a sample to a Jokosher instrument, Jokosher says “what’s this thing you’ve
dragged to me?” and the extension says “it is a URL at Freesound”; Jokosher
then thinks “aha, I know how to load URLs”, and loads the sample from that
URL.

This is a good example of how working with the Jokosher team can be important
for extensions. Jokosher didn’t, when I started writing it, know how to load
a sample from a URL (it only knew how to load one from your hard drive). To
make it work, that needed to be added to Jokosher. (In this case, I added it
myself, because I’m a Jokosher developer, but if I wasn’t then the team would
have happily added it for me.) The Extension API, the way that extensions talk
to Jokosher, deliberately isn’t complete; we’ve put the infrastructure in place
but we haven’t tried to think up everything that everyone would want to do.
Instead, if you’re writing an extension and you realise that you need Jokosher
to be able to do something that it currently can’t for your extension to work,
talk to us: we’ll add that extra part to Jokosher so that your extension works.

This has been a relatively brief summary of writing a Jokosher extension, but
hopefully it’ll give you some ideas. Now you can get extending!

The fog of libraries

It’s pretty foggy at the moment, here in the Midlands in the UK. It’s been like it for two days. Stepping out of work the other day, after dark, with each street light at the centre of a glowing aura, made the street I work on — in the centre of Birmingham — look like something Victorian. Like a woodcut from a Sherlock Holmes book. I wouldn’t have been at all surprised to see a hansom cab pull up and a man with a sword-stick get out.

Of course, I wouldn’t have been surprised to see Jack the Ripper hiding in a doorway either.

It made it feel like it was nearly Christmas, which it is. It was really rather difficult to remember that it’s still the same old modern street underneath.

So now I’m going to talk about JavaScript libraries. You’ll see how the fog is relevant in a bit.

There’s been quite a bit of discussion of libraries recently. Jeremy Keith writes:

There’s a lot of talk about JavaScript libraries, including a lot of hype and cheerleading, but I think that maybe the discussion is disproportionate to the amount of people actually using libraries. Personally, I’m somewhat mistrustful of using other people’s code (I’m a bit of a control freak) and I thought I was in the minority, but having spoken to people like Stuart and PPK who share my feelings, now I’m not so sure.

PPK himself says:

a quick and non-scientific poll @media showed that only a minority of JavaScript developers use a library; the others just code by hand. But JavaScript libraries are cool nowadays and will remain so until the Ajax hype blows over.

Chris Heilmann complains mightily about libraries in general, although about specific details rather than about the concept of using libraries as a whole.

And Roger lays into people who use them, too:

Overuse of JavaScript frameworks/libraries. Back to the 90’s, baby, except they were called DHTML libraries that time around. What is it with people learning a JavaScript library instead of learning to write JavaScript? It’s like learning Frontpage instead of HTML. Yes, script libraries can be great. But not when people use them because they can instead of because they should.

Lots of people are getting into the whole idea of using a JS library. Among the cognoscenti, though, there’s starting to be a bit of a backlash. “Putting guns in the hands of children” is how the discussion was phrased during our JS panel at @media 2006. The idea behind this discussion is that libraries give developers access to lots of cool powerful stuff — hiding and showing areas of the page, Ajax requests, animation — without them having to really demonstrate that they know what they’re doing. It’s an argument with a certain amount of truth in it; it’s used a lot by gun-control advocates as well, because if you have to go through five years of training to become a karate black belt then you’re much less likely to kill someone after leaving the pub, and much less likely to accidentally kill a member of your family, than someone who’s bought a Saturday night special and hasn’t had any training.

On the other hand, it’s a pretty elitist viewpoint. Apparently, you shouldn’t be allowed to use JavaScript unless you’re an expert. New developers, people just looking to get their job done, someone who wants to apply a cool effect: these people are not wanted in our glorious new revolution. Dammit, programming ought to be hard: it keeps out the idiots. This attitude comes up a lot, a lot, in the Linux world, and it’s one of the reasons why Linux is perceived as being harder to use than, say, a Mac: I’m surprised that there are Mac people out there who are highly happy* with the ease of use of their computers and don’t have to understand one iota about how they work under the covers, but still believe that JavaScript developers should be held to a higher standard.

What drives adoption of technology is real ordinary people, people who come in at 9am and clock off at 5pm and don’t think about work outside those hours, being able to use those technologies. JavaScript libraries bridge that gap. I’ve changed my opinions on this quite a bit; I used to hand-code all my JavaScript myself, and now, for quite a few of my projects, I use jQuery. I just got sick and tired of thinking: how do I hook up events in IE5.5? Is it different to 6.0? Where’s that cut-and-pasted code for creating and using an XMLHttpRequest object in every browser? I’d ended up building a tiny library for myself of bits of code I cut-and-pasted into every project, and my library was inferior to others because I don’t do as much testing in every browser. So, why not use a library? I couldn’t think of a reason. Now cross-browser testing is John Resig’s problem, which is handy.

The fog hid the nastiness of Birmingham. Libraries hide the nastiness of cross-browser scripting. While it’s easy to say that you should have to know about the nastiness, this is the season of goodwill. It’s nice to step out of your office into a foggy lit street that looks like a scene from It’s A Wonderful Life. Let’s not take that away from people.

This doesn’t answer Chris Heilmann’s objections, though, and that’s because they’re a damned good set of objections. The libraries we have are in general not well documented; a list of functions that the API provides does not help if you know what you want to do but not how to do it, because you have to guess at what the library might have named this function. Making the documentation available only online doesn’t help either, although this is something that really could be fixed by someone other than the main library developers — most documentation issues, including a proper decent set of examples of how your library can progressively enhance a page, with a case study or two, can be fixed by people outside the core team. So if you really hate this issue, jump in and get involved by building some docs for the library you like the most.

None of these problems are insoluble, though. Part of the issue is that JavaScript developers divide into:

  1. People who aren’t hugely experienced with JS; these are at least some of the target market for a lot of libraries
  2. People who are experienced and are writing a library
  3. People who are experienced and think that you shouldn’t use libraries unless you have the experience to not use them
  4. People who are experienced and willing to help

Of those, category 1 people aren’t going to help write documentation very much, or case studies, or browser support matrices, because they’re consumers of that information rather than creators. (Those of you who think “yes! we’ll have a huge army of people contributing!”, take a tip from the Linux world, where we’ve been using that model for code since the beginning; it happens, but not all that often.) Category 2 people are too busy writing a library to build supporting stuff around it. Too many of the remaining: people who could be helping to make the libraries we have better, and better documented, and more appropriate, and less stuffed to the gills with flashy but bad effects, are too busy repudiating the entire concept of libraries. They’re in category 3. If we can collectively, as a community, move from category 3 to category 4, and make the libraries we have great, then there won’t need to be any kind of objection to them. Let’s try and help.

Quick Jackfield update

Not much news on Jackfield at the moment, because I’ve been highly tied up with Jokosher and a few other things, but I thought I ought to note that I’m aware that people want to see it. I was actually quite surprised; most people who expressed a preference either by mail or by comment as to what they’d like to see me talk about at SkyCon said Jackfield. At the moment, I’m trying to get it to work across different D-Bus versions, which is fiddly and awkward.

I’ve also been nudged about integrating it with Beryl. I like the idea of this, but I can’t do that work; I don’t have accelerated 3D, so no compiz or beryl for me. If someone else wants to look at that I’d be quite happy to talk about how I see the integration working, but making Jackfield operate properly with software I don’t have isn’t all that high on my priority list :-)

Geek Christmas crackers

Last night was the Wolves LUG Christmas bash, which was a great laugh. Traditionally, I do two things at the Christmas bash; I do a stand-up performance of the gorilla joke, which is a not very good joke that they all make me tell anyway, and I do some Christmas crackers with geeky mottoes in. This year, the mottoes were the following, if you’re doing something similar. Suggestions for next year are invited.

  • Look out behind you!
  • This fortune intentionally left blank
  • A very merry LUG Christmas
  • The world ends tomorrow AND YOU MAY DIE
  • Hope you like your Novell t-shirt
  • The Windows User Group down the road is more popular
  • Never trust an operating system you don’t have sources for.
  • Every time I think that perhaps we are an advanced race, I turn around and read ramblings on Slashdot, and realize I was wrong.
  • Geeks aren’t interested in politics because government doesn’t double its efficiency and speed once every 18 months.
  • Some software money can’t buy. For everything else there’s Micros~1.
  • Linux – It is now safe to turn on your computer.
  • Linux is like a wigwam: no gates, no windows and Apache inside. (Chinese proverb c. 610 B.C.)
  • sudo apt-get moo
  • got root?
  • I never finish anyth
  • </cracker>
  • help! I am imprisoned in a cracker factory
  • $ man curry
  • w00t
  • j00 r 0wned
  • stfu n00b
  • I am a cracker virus. Please pass on to the person next to you.
  • I’m blogging this.
  • meh.
  • SYN
  • ACK
  • you have opened the wrong cracker
  • crackr 2.0 beta

I’d also like to thank SitePoint, Fedora, and Novell for kindly sending me some free loot to give out to everyone. It was all appreciated, and now the bloke who runs the curry house we were in has an OpenSuSE hat, so thanks for that!

Freedom vs. Features

This entry is my opinion and certainly doesn’t represent the views of my employer, who couldn’t care less about software freedom.

I’ve been in lots of discussions about software freedom. I’ve been loud-mouthed about it at my Linux User Group, I’ve been loud-mouthed about it on LugRadio, I’ve posted about it here. I’ve also recently expressed the view that Ubuntu might not be quite free enough for me. I suspect it might be time to try and lay out my viewpoint in a bit more detail.

My viewpoint boils down to: all software should be free. You might agree with that, you might not. This has come up most sharply recently with the much-announced Ubuntu decision to attempt to compete with proprietary alternatives like Windows Vista and Mac OS X by enabling a better graphical interface if you have proprietary video drivers. I don’t agree with that shift, and my view on that point has been challenged as being inconsistent, a block on the future success of Linux, and just plain wrong.

One of the phrases I’ve used in the past, particularly on LugRadio, is “no compromise”. I’ve said repeatedly that we shouldn’t give up on freedom to get features, that we shouldn’t be prepared to embrace proprietary, closed-off software even if that rejection comes at some cost. And I’ve said all this while working for a firm who use Windows everywhere and happily taking money off them in my paycheque every month. How is this reasonable?

Let’s look at an analogy. I smoke. Have done for years. I also have a six year old daughter. Now, if my daughter asked me if she should smoke, what should I say? Some people would say that I have no right to stand there with a cigarette in my hand and tell her not to do it. Others would be fine with the idea of me advising her against. Very few people would suggest that I should encourage her to do so.

If I, then, told her that she shouldn’t smoke, and that it would be bad for her, would that make me part of the holier-than-thou hypocrite brigade? Should she ignore my advice on that basis? Should she ignore any other advice that I give her, like not sticking her fingers in electric sockets, because I’m a holier-than-thou blogger who doesn’t practice what he preaches?

When I was a kid I got told that two wrongs don’t make a right. Myself smoking and her not is a better goal, overall, than myself smoking and her smoking too. Obviously, a better end still would be neither of us doing so. However, it would be better to at least start by making her Free of the bad thing, even if I haven’t managed it yet.

That someone suggests an idea but doesn’t do it themselves doesn’t make the idea a bad idea. That I smoke doesn’t make my advice to people to not smoke be worthless.

Back away from the analogy again, although I imagine you can see how it’s related to the topic. That I want to hold people to a standard of Freedom that I haven’t yet achieved myself isn’t a fault with the idea of being free. It’s a fault with me, that I haven’t got that far yet. If you’d like to help, I’d be interested in your input on how I might make Ubuntu free enough for my needs.

If you’re using Linux, right now, it’s a reasonable assumption that software freedom means something to you. There are people, plenty of them, out there who are using it purely because they like it or because it’s the best technical solution for them, but a high proportion of the Linux userbase are part of that userbase at least partially for ethical, as well as technical or financial, reasons. If that’s the case, ask yourself: would you be happy to see Linux have a 50% market share but have the principles of free software, of being able to hack on it all, be partially compromised (there’s that word again) to get that far? Some of the nature of Free software is difficult to choke down at times; that someone can take your work and sell it and not give you any of the money, for example. Or that someone else could take your code and change a few bits and make something better, and get most of the credit. That’s what it’s about, though; that’s what the Debian Free Software Guidelines, and the Open Source Definition, and the Free Software Foundation, that’s what they’re all talking about. If you believe in that, if you want to be in a position where not only can someone sell your work or improve on it, but also where you can sell someone else’s, or where you can improve on another person’s program, you have to support Freedom. If you really wouldn’t mind if your next Linux distribution (or the one after, or the one after that) was only, say, 60% hackable, because the rest of it is proprietary — so we can keep up with the competition, of course, or because we need that hardware — then you should have no qualms about the decision at all, and good luck to you. You’re welcome to feel that way. If you don’t like that idea, though, perhaps you take offence at being lumped into a holier-than-thou zealot category.

A phrase you’ll hear, sometimes, is the end justifies the means. Perhaps it does, perhaps it doesn’t; you can think of arguments for each side relatively easily, I suspect. Ask yourself, though, what happens if you decide to step away from your principles for a while and then find yourself unable to get back to them later. It’s not a pleasant situation to be in, to hold something dear to your heart and find yourself unable to achieve it because of some bad choices you made in the past. Making those wrong choices might make it impossible to ever get to your goals. Some doors can only be closed once. It’s difficult to know ahead of time whether the choices we’re making are of that type, but you owe it to yourself to consider the possibility. Make your views felt; be rational and reasonable about it, and clearly outline what might happen, so you can’t be dismissed as a zealot or shouted down by people who don’t realise the seriousness of what they’re contemplating. But be part of the conversation.

Free Ubuntu

I use Ubuntu Linux. Have done since the day it was released. And I like it. However, I’ve had more than one argument with Jono about what I perceive as its increasing move towards encouragement of non-free software. I don’t want to get into that argument right now, so simply take it as read that I’m concerned about it, and feel free to consider me wrong for being concerned; I don’t mind.

Some people will be saying at this point: what about GNewSense? That’s Ubuntu with all the non-free stuff removed, isn’t it? Well, yes, it is. I’d like to use it. However, I can’t, for (as ever) two reasons.

The first is that there is no upgrade path from Ubuntu to GNewSense. If I want to move, I have to do a fresh install of GNewSense. that means reconfiguring everything to work the way I like it to work. If you’re thinking that I can just back up my configuration and copy it over to my new gnewsense installation, then, well, perhaps, if I knew where it all was. I don’t have records of every config file I’ve changed; I don’t know where they all are; I don’t know if all my configuration will work on GNewSense because I don’t know what I’ve tweaked. I was surprised that I can’t just add the GNewSense stuff to my list of software repositories and tell my machine “go ahead and upgrade”. Apparently that’s not a goal for the GNewSense team; OK, no problem. I’m not going to tell them how to run their project. It strikes me that a reasonable proportion of their potential userbase is people who already use Ubuntu but want a genuinely Free version, but I don’t want to assume that everyone’s like me.

The second reason is that GNewSense is based on dapper, Ubuntu 6.06. I’m running edgy, the newer version, Ubuntu 6.10, and I don’t want to lose the improvements that edgy brought me. Now, again, I’m sure that that’s not a deliberate decision but just a lack of time on the part of the GNewSense development team, but this reason and the other one lead me to not be in a position to shift to GNewSense.

So, what’s the alternative? Well, I can’t really see how making a completely Free version of Ubuntu wouldn’t just involve (a) removing some packages and (b) rebuilding a few packages. I just don’t know which ones. I was hoping that I’d be able to find that out from the GNewSense people too, with the goal of me writing a “Free My Ubuntu” script which does all the removals for you: to get a completely Free Ubuntu without any restricted kernel modules, simply download real Ubuntu and run the script and you’re done. However, the GNewSense team’s workflow is oriented around you building a whole distribution using Ubuntu as a base, rather than about you taking an existing Ubuntu installation and turning it into GNewSense (or any custom version you’ve made) and so they don’t really have that sort of script.

Some people (different people to the ones who suggested GNewSense above) may now be foaming at the mouth about how I’m a free software zealot who’s standing in the way of progress, and that Ubuntu is Free, and that I should just shut up. Again, feel free to consider me wrong; I won’t mind. I’m not suggesting that Ubuntu isn’t Free enough for you, I’m just saying it isn’t enough for me, and luckily, because of the nature of open source software, I have the ability and the permission to take the 99.5% of Ubuntu that I like and combine it with 0.5% of my own stuff to create my own perfect operating system.

What I’d really like to see, in the fullness of time, is this entirely-Free approach be supported by Canonical and the Ubuntu distro, so there are no restricted modules, I don’t get offered the choice between free and non-free video drivers, that sort of thing. My wireless card won’t work, and I’m happy with that. Of course, I can understand why Canonical aren’t devoting a lot of resources to that, and I can understand and sympathise with the arguments in favour of the (very few) compromises in the direction of non-Free software that Ubuntu, the distribution have made (binary drivers being an example here, to increase market share and make it look as good as everyone else), and that Canonical, the company, have made (the commercial repositories, for example). If someone comes up with Frubuntu, or GNewSense changes its goal, I’ll happily move to them; in the interim, I’m thinking about, and trying to work out, what the best way is of stripping all non-Free things, binary firmware blobs, etc away from my Ubuntu installation. Feel free to comment on why you think I’m wrong but bear in mind that I have heard most of the arguments against before. I’d welcome help and suggestions here on how to do what I’m doing; in particular, if you have a comprehensive list of things with a disputed Free status then I’d be very interested in seeing it.

The Jokosher Solar System

Last night myself and Jono were invited to West Yorkshire Linux User Group to talk about Jokosher. We did it in three sections: Jono spoke about the origins of the project and where it’s going next, we did a very quick demo so people could see what it looked like, and I did a section. My section was named “Jokosher Solar System“, and it was about all the other sub-projects that are part of the Jokosher universe but aren’t the audio editor itself. We’ve got a website, some discussion forums, documentation, bug tracking, and loads of other things. The point behind it all was that, although most of our development effort goes into Jokosher itself, you need all these other supporting projects going on in order to turn it from a good bit of software into a good bit of software that people can use.

We’ve tried hard, and are still trying hard, to foster a community around Jokosher; there are dozens, hundreds, of projects out there on SourceForge or wherever which seem good but never got anyone using them, because they didn’t know about them or they had nowhere to file a bug or no way of talking to the developers or to other users of the project. This sort of thing is really important, and we’re concentrating on it. If you’re the sort of person who might eventually be a hacker on Jokosher, you could go through the following process:

finding out about it → using ittalking about itfiling bugs about it or requesting new featurescontributing to the documentationrunning the bleeding-edge versionwriting a Jokosher Extension → making changes to code → becoming part of the development team

No-one is expected to do that, not at all, and you don’t in any way have to do it in that order, but we really want to make it easy for people to take that next step up, to go from being a Jokosher user to becoming part of the Jokosher community, and then to helping to improve Jokosher for the next release if they want to go that far.

Anyway, the presentation. It’s called Jokosher Solar System, and you can view it in your web browser (thanks to S5). I’d be happy to come and tell other people about all the stuff around Jokosher (or anything else you want me to talk about); just contact me for details.

Speaking at Skycon

As mentioned a few days ago, the LugRadio team are going to be at SkyCon in Limerick in February 2007. Since we’re there anyway, they asked me if I’d like to do a talk. I said I was happy to, and they asked me to choose a subject.

Now, those of you who read this a lot will have noticed that the stuff I write about tends to be a mix of Linux and the web, and a mix of hard technical information and windy philosophising. So, that suggests something of a framework. If I were speaking somewhere and you were attending, what would you like to see me talk about? It strikes me that the talk could be about Linux or the web, and be either technical of philosophical. Your combinations therefore break down as something like:

The web + technical
This would likely be heavily DOM Scripting focused; JavaScript’s a growth area and it’s What I Do to a large extent. Think of this as something along the lines of bits of DHTML Utopia in talk format.
The web + philosophical
Where’s the web going? What’s the best way to use all this Ajax technology? What’s on the horizon? Why are we wasting web technology? That sort of thing.
Linux + technical
This’d likely focus on some bit of Linux software I write, like Jackfield or Jokosher; technical detail again of how we did the Extension API in Jokosher, for example, or a demo of Jackfield and what’s coming up for it, or some other bit of software I participate in.
Linux + philosophical
This is the sort of thing we talk about on LugRadio a lot. How’s the Linux desktop shaping up? Where does it need to go to be better? What’s the vision for the future? Why should you care?

What would you like to see me talk about? Maybe it’s something completely different to everything above. Post your comments now!

Shameless self-publication

Over the last little while I’ve been adding stuff to kryogenix.org. The first thing is a list of events that I’ve been at or am going to be at, on the events page, which picks up all its data from Google Calendar. Coming up are a talk next Monday at WYLUG in Leeds about Jokosher; Jono and I are talking about the project itself, the community, and all the bits around it. Next February the LugRadio team are going to SkyCon in Limerick, Ireland; we’re covering the conference and recording a show there, like we did at Guadec 2006. Should all be good fun!

The second added thing is a page about books I’ve written. Every time I looked at Chris Brookmyre’s book descriptions it made me laugh, so I thought I’d do something similar.

Thirdly: there’s now a nicer search engine for the whole site, using Google Custom Search.

I’ve got lots of other stuff planned, but it’s finding the time to do them…

Rock, Paper, Scissors

From Wikipedia, exclusive pictures of the 1939-1945 Rock Paper Scissors Championship!

Churchill plays scissors with his famous V sign, Hitler plays paper with the Nazi salute, which is why Germany lost the Second World War

The LugRadio Advent Calendar

The LugRadio community is a pretty wild and diverse thing, and we’re really rather proud of it. However, you might not realise just how wide and diverse it is. Now you can find out! Go see the LugRadio Advent Calendar every day from now until Christmas to find a note about a part of the community you might not have known about. Get involved!