Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
DEAL: For $25 - Add A Second Phone Number To Your Smartphone for life! Use promo code SLASHDOT25. Also, Slashdot's Facebook page has a chat bot now. Message it for stories and more. Check out the new SourceForge HTML5 Internet speed test! ×

Journal Journal: The End of Ubuntu 4

I have just upgraded my machine from Ubuntu 11.04 to 11.10 and everything is broken.


It began with Unity. The horror. If there's a way of finding the main menu, I wasn't able to discover it. Menu bars have entirely disappeared from applications, to be replaced with the mac "menu on top" paradigm, a.k.a. one of the main reasons I've never used a Mac since 1994. You can't even log out of the bloody interface, let alone tweak it. Even the fonts are terrible.

It took me about 15 minutes to figure out how to get rid of Unity and replace it with Gnome 3 and I can't say there's really much of a difference in terms of usability. All of my default Gnome 2 desktop settings have been blown out of the water. Completely. My panels and taskbars and lauchers are either deleted or are all over the place. Even if I wanted to change them back, everything is basically uncustomisable as far as I can tell. You can't move objects around in the taskbars. Yes that's right. You can't move objects around in the taskbars.

Is this what a desktop is supposed to feel like?

I feel like my computer window has been turned into a walled garden, like that on an iDink, which I am permitted to carress and fawn over, but have disallowed from making my own in any way. Will I have to download some kind of "App" from the "Ubuntu App Store" to gain back basic functionality? Do I have to dive into arcane settings and ppa just to get back the system which I had and liked only a few hours ago? Do I have to give up and choose Gnome 3, or move to XFCE, or move everything to the shell, or basically waste the next two weeks getting back what I had?

If that's the price of Ubuntu (and it is) then I am leaving.

Ubuntu and Gnome died the moment they allowed the UI designers to take over. The art students, the inveiglers, the smooth talkers, the wild eyed dreamers, the "visionaries", the people who didn't care what they were doing as long as it made them feel talented and superior. These are the people who have designed unusable,confusing systems and interfaces that delete years of carefully customised menus and discourage serious use of computers.

And as for the "boring" people, the programmers, the testers, the package maintainers, the people who listen to the community, those who put real thought and concern for users into their themes and interfaces, the people who don't go to conferences, who communicate with users directly via forum and newsgroup, who sit at their desks working to make distros better, often for no reward at all; what of them? Are they in charge in this brave new work? No. They are cast down and out, by a brigade of bullshitters too busy bopping on their iPods and blogging than in doing useful work.

If you let the wrong people into an organisation or a community, they can destroy it. Ubuntu and Gnome shows that this can happen to distros and open source projects just as easily and quickly as it has happened in the many industrys, countrys, and economies throughout the word. The destroyers will fail upwards, the blazing heat of their incompetence scortching all new pastures dry. The rest of us will be left behind to pick up the pieces and start again. In 5 years time, Ubuntu may be back on the path to being usable again, but I can't wait that long.

I'm thinking of starting off with Mint.

User Journal

Journal Journal: Why Donte has his name

Someone asked why my son had an unusual name and even suggested that Donte is due to the parents not being able to spell. Anyway its not a spelling mistake, although some muppet who registered the birth did put Donate instead!

There's no typo; my (ex) g/f chose it, and since his ancestry is black English on mummys side, I see little wrong in him having a name associated with African ancestry.

Dante may be the possible Italian/Latin original of the name. As I have a degree plus college level English I don't think spelling is a problem for me (with a few exceptions).

Donte has a sensible middle name (which I chose) which he can use if he wants, and there's little wrong with shortening Donte to Don if he wants later. But having said that, having an unusual name also makes you memorable which can be an advantage.


Journal Journal: Freedom of Speech v Privacy 1

The argument about whether the press can publish about relationships and gossip is not an argument about public interest; it is clear that the public don't really have a need or right to know who is shagging who, at least not directly.

However, it can be argued that the injunction conflicts with Freedom of Expression. Essentially the injunction brings into play where the balance between a right to Privacy and Freedom of Expression lie.

The European Convention on Human Rights gives states a wide "margin of appreciation" on where they may place the dividing line. For example, should the US ever become a signatory, it could legitimately claim compliance with the convention even though Freedom of Speech is regarded as a more important right than Privacy. In France, on the other hand, more importance is given to privacy. As long as both rights are protected to some extent, both nations would be regarded as compliant in terms of their implementation.

Censoring the Web is fraught with difficulty and could be challenged under those same rights.

When the UK implemented its Human Rights Act, which effectively ratified the ECHR in the UK, it was openly stated by Parliament that a high threshold would be required for matters of Privacy to overcome matters of Free Speech, i.e. Parliament wanted a Human Rights implementation closer to the US than France. Unfortunately, legal rulings have been quietly lowering the bar in clear contravention of this intention.

User Journal

Journal Journal: Posting limits 2

Really Slashdot? You're going to run a story guaranteed to have over a thousand posts but you're going to impose posting limits on subscribers? What am I paying for if I'm suddenly going to be cut out of the conversation and unable to reply?

User Journal

Journal Journal: Pacman coding contest 2

To celebrate 30 years of "Pac Man", at this year's Retromañï½Âa (University of Zaragoza, 8th - 12th November) there's a Pacman programming contest (with prizes!). Information about the contest and rules can be found here:


There's two categories - one for games programmed beforehand (so that people who can't go to Retromañï½Âa can put in an entry) and for those programmed during the event.

I'll myself be off to Retromañï½Âa, not for anything to do with the Pac man coding contest, but to demonstrate and explain the ethernet hardware that I've made for the ZX Spectrum (itself coming close to its 30th anniversary). Indeed that entire week is going to be an orgy of retro geekyness, the weekend leading up to it is R3PLAY in Blackpool (retrogaming event), then I'm off to Zaragoza for Retromañï½Âa, and then on the way back I go via Madrid for a small gathering of retroafficionados in a bar somewhere in Madrid. Three events in less than 10 days.

User Journal

Journal Journal: The reality of resources and population

The reason for this post is to point out that all the doom and gloom about the increasing population is unfounded, meaning that there are real, achievable solutions that don't involve totalitarian government controls or genocidal population reduction measures.

First off, how much will the population grow? If left unchecked will it continue to grow forever?

The answer to the second question is no, not if the developing world continues to industrialize. The answer to the first question is about 9 billion, give or take. As the standard of living increases people voluntarily choose to have less children on average. No coercion is necessary. So to get to a stable (actually slightly declining) population we need to remove barriers that prevent the developing world from reaching western levels.

The primary barrier is energy. All resource shortages can be overcome if sufficient energy is available. We can desalinize seawater and pump it to wherever is needed if the energy is available to do so. We can grow vastly more food than we do now if sufficient water and fertilizer are available. Liquid hydrocarbons (gasoline) can be synthesized from water and carbon dioxide. All these processes are known and understood, they just require energy.

So how much energy do we need? If the US experience is any guide we need about 350 million BTUs per person, per year. So with a worldwide population of 9 billion people that adds up to over 3 quintillion BTUs per year.

Can that much power be generated? Absolutely, but you aren't going to get there with wind turbines and terrestrial solar panels.

There's one element that exists on the planet in sufficient quantities to generate the required power for a long time and that element is thorium. Each ton of thorium generates 1 GW-year (30 trillion BTUs) of energy when used as nuclear fuel, so the world's energy demand could be entirely supplied by 100,000 tons of thorium per year (compare this to the billions of tons of coal we use annually now). With 120 trillion tons estimated to exist in the Earth's crust we've got a long time before we need to start looking somewhere else, like the moon or Mars.

So the solution to the population crisis, energy crisis and pollution crisis is to stop pushing fake solutions that won't do anything except cause misery for billions of people and let us use state-of-the-art (1960s era) nuclear technology to produce abundant clean energy for everyone.

User Journal

Journal Journal: Aggregating contacts is hard.

I'm writing this mainly to get my own thoughts straight before I take a stab at implementing this myself.

Merging and synchronizing contact information between all the various services that a person might use appears to be to be an unsolved problem. I've looked high and low and I can not find a single piece of software that will:

  1. Maintain a definitive list of meta-contacts and mappings (i.e. map a Gmail contact to a Facebook contact)
  2. Import data from every service I use
  3. Automatically export information that missing from one member of a metacontact but present in another member (when the underlying service supports this)
  4. Gives me means to both access and edit this information both on my PC and on my mobile phone
  5. Present an editable, unified view that eliminates redundant and obsolete data.

Accessing the data is the easy part. Most services have API functions that let you access it in either a read-only or read-write format. In some cases though all you have to work with is a CSV file.

So for this to work I need to a way to gather all the required information, put in into relational form and find/create the appropriate mappings

This is where it gets tricky. Very few software projects properly handle contact information. The data model needs to include all the metadata about the contact that you care about and meta-metadata. A person can have an unlimited number of email addresses, for example. Any particular email address might be a home address or work address. It might be an active address that you should send mail to or it might be an old address that is no longer in use (but you want to keep it associated with that person so you know who all those old emails came from)

So creating a robust relational structure in your database is non-trivial, but solvable. The hard part is wrangling the data from the other sources into relational form. Most data services do not have a unique, invariant identifier for each contact. Each and every attribute is subject to change. Usually matching based on name or email address will work but contacts can and do change both of these from time to time.

Once you get all the information pulled into the database now it's time to eliminate duplicate information by merging all those subcontacts into their respective metacontacts. Each subcontact should map to exactly one metacontact. The metacontact itself should NOT have any attribute information (name, email address, phone number, etc) directly associated with it to prevent data duplication.

Once you get the subcontacts merged into metacontacts now you should merge the metadata to eliminate duplication. The easiest way to do this is to aggregate all the information from every subcontact and display anything that not a duplicate. If Facebook and Google both say the John Doe has a email of jdoe@example.com then we only need to display that once. If they have different email addresses then we should display both. Finding duplicates isn't always easy: +1 (800) 555-1212 and 8005551212 are actually the same number (from the point of view of a caller in the US) but a simple text search will not reveal that. The former would be better to display so ideally you'd just update the latter data source, but what if it's read only? In that case you need a way to prevent certain subcontact attributes from being pull into the metacontact. In addition certain attributes shouldn't allow duplicates. If a person only has one canonical name, then should you use their Twitter username, their Facebook user name or the name stored in their associated Gmail contact? The user must decide and the database needs to store this choice.

So after we're all done with this we'll have a nice, unified view of all contact information. This unified view should be editable and any changes made to the underlying data should be pushed out to all services which are not read-only. In the case of the read-only services the stale data should not roll up into the metacontact, unless and until the underlying data changes. Example: someone in their Facebook list their phone number as 800-555-1212 but I edit this number to include the country code because I want to be able to call him from outside the US: +1 (800) 555-1212. This change can be pushed to Gmail but not to Facebook. So from now on the mapping between metacontacts and subcontacts should exclude the mobile number from the Facebook subcontact, unless my friend changes his phone number on Facebook to something else. If that happens the new number should roll up into the metacontact.

Some services do not support attribute metadata. A CSV file might just have a "address" field without specifying if it is a home or work address, physical or mailing, active or deprecated, etc. So this meta-metadata will need to be stored in the database itself. Meta-metadata as possible should be synchronized to the maximum extent supported by the underlying service.

I think I've got enough there to keep me busy for a while. I'm going to try to build a proof of concept of this but I may not get very far before I throw my hands up in disgust or someone else implements it (maybe Akonadi, but I haven't seen anything that indicates that it will have robust metacontact functionality)

User Journal

Journal Journal: That was Britain's first Vintage Computing Festival 1

So the VCF finished yesterday afternoon.

It lived up to and exceeded my expectations, what a fantastic event. Unfortunately, I didn't really get to see all of what was going on since I was manning my own stand a lot of the time (four Ethernet-networked Sinclair Spectrums, with a MicroVAX fileserver - all of this connected to the internet! - plus a Vectrex since people seem to really like them). My stand and Chris Smith's were next to each other (he reverse engineered the Spectrum ULA for a book he's writing, which charts the history of Ferranti's ULA technology and Sinclair's use of it) - we were hoping to get his Harlequin (100% accurate Spectrum implementation consisting of 74HC logic ICs) onto the network too but his stand was so busy he spent all his time talking to visitors!

The Spectrum twitter client went down very well. I think there were about 8 pages of tweets from the Speccy by the end of Saturday. I really ought to have put a counter in the client to give a definitive count of how many tweets had been made.

I picked up a double density disc drive for my BBC Micro while I was there, and also fixed one of my 128K "toastrack" Spectrums (all it had was a bad transistor in the power section and a dodgy keyboard membrane). Unfortunately I forgot my USB lead for the camera so no pictures till I get home.

Probably the highlight of the show was the talk by Sophie Wilson (designer of the BBC Micro and the ARM CPU, that last bit being very highly significant). If I had the choice of seeing Sophie Wilson or Bill Gates at a computer show, it would be Sophie Wilson every time. She may not be 0.1% as famous as Bill Gates, but I think she is actually a lot more important and significant than Bill Gates. Nearly anyone could have been a Bill Gates, he got where he was due to luck and sticking his neck out a bit (at no real risk to himself, he was already backed by a very rich familly) - if Compaq hadn't cloned the PC, and if IBM had been more closed about the PC specification, Bill Gates and Microsoft may have been just another footnote, remembered only for their truly dreadful BASIC on the Commodore 64; once PC cloning happened, for Microsoft to make money off DOS was about as difficult as falling of a log. But on the other hand, ARM only came about through lots of real intelligence and thought and grit and determination - and today ARM ships 1.25 *billion* units per *quarter*, more than every other microprocessor architecture put together. When the ARM was designed, Hermann Houser jokes "we gave the ARM team exactly what they needed, no resources and no money" :-)

And without the microprocessor designers, where would software people be?

User Journal

Journal Journal: Sinclair Spectrum Twitter client 2

It's the UK's first Vintage Computing Festival next weekend, so I've been getting some stuff together for my Speccy exhibit. Of course I've been working on the Spectrum ethernet card, and while things like the network filesystem it provides are handy, I thought I needed something that VCF attendees could appreciate.

A while ago we did a "hack" of a Twitter client (over a pint of beer, in a pub in Oxford - while getting strange looks from all the "normals") but it was just that - a hack - with the tweet and the login details hard coded into a short asm program. This time I've written a proper http library, and some user interface. Most of the work is done by the HTTP library (parsing headers, putting headers into the request etc), and it's all written in C.

If you can't get to the VCF, you can at least watch a video here:


User Journal

Journal Journal: Giving all users database server access by default. 3

Especially with KDE applications there is a need for each user on a system to have access to a relational database to get full functionality. Usually this is provided by MySQL. Every database server for linux that I know of has its own concept of usernames and passwords which must be configured seperately from the users on the system because traditionally a database server served clients over the network, not local users.

Is there any way to set up MySQL or a MySQL-compatable database that gets username and password information from PAM and stores data in each user's home directory? This would make database access work just like mail delivery, as long as a user exists in the system and has a ~/.mysql_data directory he or she has full access to any database stored in that directory with no per-user configuration required.

It seems to work for mail, why not for databases also?

User Journal

Journal Journal: Cooking for Friends - Mushrooms in white wine sauce

Thanks to a friend via Facebook, I discovered a good food ideas site, called "Cooking for Friends" - or at least, "Cocinar para los amigos" (it was from a Spanish friend). I saw a recipe go past the other day that I thought looked awesome, so I made it last night - just for myself, I like to test recipes out on myself before I try them out on other people :-)

And it is indeed awesome. For the benefit of those who don't know Spanish I'll repeat it here. The original is here:

Mushrooms in a white wine sauce

It's a very easy recipe to make. All it needs is garlic, a glass of white wine, some grated bread (to thicken the sauce) and parsley. The recipe as made also includes a small amount of chili (I didn't have the little ones that he shows in the video of the recipe, so I just used a small amount of fresh chili I had in the cupboard. I think it needs just a *small* amount, it's not supposed to set your mouth on fire...) I also made half the quantity that the recipe demands, on the grounds that I was trying it out on myself, not trying to do a starter or a side for four people.

500 grams (1lb) mushrooms
4 cloves of garlic
a little olive oil
a small heap of breadcrumbs (basically, enough to fill a wooden spoon heaped up)
a branch of fresh parsley, chopped finely
a little chili (I've not seen the tiny chilis that were shown in the video anywhere near me, so I used a small amount of sliced chili)

Put some olive oil in a pan, enough to start cooking the garlic and put on the heat, drop in the garlic. Once the temperature has come up and you've got typical "starting to fry" sounds, add the mushrooms. After 2 minutes, add the glass of wine. Give it a stir and allow to simmer for about 10 minutes with a lid on the pan. After 10 minutes, add a little water, the breadcrumbs and the chili. Let simmer for about 20 more minutes with the lid on - the sauce should be thickening nicely from the grated bread and the evaporation of some of the liquids. Then add most of the parsely and stir for a couple of minutes.

Then serve, sprinkle the remaining parsley on top.

This will make a great starter - I'm going to cook it next time I have friends or family over for dinner.

User Journal

Journal Journal: Britain moves one step closer to thought crime


This is the very problem with broad legislation like the Terrorism Act. Not only cases like this, but these days it is an offence to have "information that may be useful to a terrorist" (and the onus is on the defendant to prove that it's not, which reverses the principle of the accusers bearing the burden of proof). A recipe for a bread roll is, after all, information that may be useful to a terrorist, a terrorist has to eat after all.

User Journal

Journal Journal: CrossFit

I remember seeing this article when it was first posted but I really didn't pay attention to it. Now I wish I had. I'm on the second week of a month-long introductory CrossFit course and it's the first time in my life that I actually enjoy intense exercise. Based on what I've seen in just one week it really does live up to the hype.

User Journal

Journal Journal: Spaghetti Sauce 3

A couple of weeks back I went to an Italian restaurant with some friends from work. I had a salmon dish (since I don't speak Italian, I can't exactly remember what it was called) - basically, salmon fillet baked with lemon. The side was spaghetti and spaghetti sauce. Two thoughts struck me: (1) the food is incredible and (2) it can't be at all difficult to make at home.

So I made it. What makes it really is the contrast between the lemoned salmon's tartness and texture, and the sweetness of the spaghetti and sauce. I just guessed at what to do with the salmon and it turned out good. The spaghetti sauce - I had a look at various recipes on the internet, and in the tradition of open sauce (yes, go on, groan now) I decided to use ideas from several to come up with sauce code (yes, groan again) that I thought I'd like best. And in those traditions of Free Sauceware, I'll share what I did...

The salmon is easy, each salmon fillet (adjust quantities to taste, but I reckon this is a good starting point)
* 1 salmon fillet
* About a tablespoon of olive oil
* A thin slice of lemon
* About 2 tsp of lemon juice
* Just a pinch of sea salt
Wrap in foil and put in the oven for 20 mins at 180 celsius (if you have a fan oven). I found it was good to prepare the lemon and salmon in the morning and let it sit and marinade until the evening.

The spaghetti sauce (enough for 4 people, or two very hungry people):
* 500g small (cherry) tomatoes
* 1 tube (about 150g) tomato puree (if in your locality it's called tomato paste, make sure it contains nothing but tomato)
* 2 tsp brown sugar
* 1 tablespoon basil
* 2 tablespoons rosemary
* 5 cloves of garlic (or to taste), finely chopped
* 4 tablespoons of olive oil
* 1/2 teaspoon sea salt
* 1 onion

Chop the tomatoes (into quarters I think is best), slice and dice the onion into small bits, and chop the garlic finely. (I have a device with a handle on that you wind for mashing garlic rapidly into small bits, I don't know what it's called - I inherited it from my grandfather and it's at least 40 years old but it's so insanely useful I'm sure they are still available today) and put in a bowl and add the rest of the ingredients. Then give it a good stir. Once again, I found it was best to prepare it in the morning and allow it to fester in its own juices until dinner time.

To cook, put in a pan and stir on a medium heat until it's ready. Generally it should take less time than the actual spaghetti.

The way the Italian restaurant served this was to leave the salmon in its foil, sitting in the lemon juice and olive oil and serve the spaghetti and sauce as a side. I think that works very well.

Slashdot Top Deals

Technology is dominated by those who manage what they do not understand.