Tapioca VoIP happiness

Tapioca – TapiWiki

and specifically, the Landell front end as it supports the use of a http proxy.

I’ve been able to call Kit and chat while I’ve been on the road this time. Means we get to avoid nasty GSM roaming charges (or any charges) and even though there’s some lag (like a second or so) and the voice quality isn’t brilliant – using Landell/Tapioca and Google Talk on her end means we get to stay in touch without feeling guilty about massive phone bills.

I totally heart free software.

Welcome to Beijing (day 1)

I’ve just come back from lunch. I’ve managed to eat Chinese food, in China, with chopsticks and not totally embarass myself. Ate some new food, new vegetables and a seemingly different type of seaweed than I have eaten before. It tasted good though. I even think Kit would have liked some of it (once she got over the fact that it looked different and some things were green things).
I arrived safely after a flight that was fine (except for getting up rather early to get to Sydney to then take a sane timed flight). Beijing seems to be a bit like the firefly world, except with less flying cars. You’ve got heaps of stuff in English and Chinese. It could be really interesting to live here and experience things.

There’s a national English language newspaper which is fairly up to date on world events – the fact that our dear Mr Howard is going to go to the election seems to be news here! It’s not packed with local news, which would be interesting to read (although I think I’ll have to learn to read first).

The hotel is a short walk from the office (down the street, across the road). Oh, the roads are at least 7 lanes – they’re big!

Hotel is pretty nice, probably about half the price of what I’d expect to pay back home. Breakfast was good – some totally delicious watermelon. Honestly thinking of just having watermelon for breakfast tomorrow :)

Although it’s rather obvious that the hotel is aimed at western visitors. At breakfast you could only really tell you’re in China by: looking out the front window at all the Chinese writing or looking at the waiters and waitresses and noticing they all a) spoke Chinese to each other and b) were Chinese. About 5 languages before my first coffee – what a way to start the day!

At some point I’m going to have to have some Chinese tea – it seems like a real obvious must-do. Although maybe I should give in at some point and buy coffee from starbucks as well….

Uninviting a Vampire

Brian “Krow” Aker’s Idle Thoughts – Know your rights

Brian muses on if you can uninvite a vampire and thinks this wasn’t addressed in Buffy or Angel.

Angel was uninvited in Season 2 (in the episode Passion).

I’m pretty sure Dracula was uninvited too, but I think I have to rewatch the episode (shock!)

Spike was uninvited and couldn’t enter Buffy’s house in Season 5.

So at least in the Buffyverse, you can uninvite a vampire.

Beware Digital Rights Traps

I’ve added the “Beware Digital Rights Traps” buttons to both my blog page and the main page of flamingspork.com.

iownmydvds.org

iownmymusic.org

I’ve also taken a photo I took ages ago and used it as a header image thingy. doesn’t look to bad on the front page… not 100% happy with the wordpress theme integration atm.

Heroes in Tyrol

23rd Mostra – “Heroes in Tyrol”, by Niki List (Austria-Sweeden-Germany)

I managed to see most of this film a few years ago. Anybody know where or how I can get a DVD of it? (with English subtitles). I know somebody in the wider community has to know where (hence why i’ll put this entry in the MySQL category – i know somebody there has to know something about this film).

Besides – it has drinking songs, and MySQLers will get the connection.

MySQL Bug Deskbar plugin

Over at my junkcode section, I have mysqlbug.py which is a plugin for the GNOME deskbar panel applet.

If you’ve used Quicksilver on MacOSX, then you know the kind of app that Deskbar Applet is.

This one lets you type “bug 1234” and be given the action of “open mysql bug 1234”. If you type “edit bug 1234” it gives you the option of editing that bug number.

We’ll see if this proves useful.

Many thanks to kamstrup (one of the Deskbar developers) on #deskbar on gimpnet for helping me out with the plugin.

I totally heart Deskbar. It’s awesome.

copies of the “Don’t Ban Digital Innovation and Consumer Rights” petition

I’ve just picked up a number of copies of the petition from the printing place. They’re ready to go out. If you (or your LUG, your business or friends) can get signatures on it and would like a number of physical copies to hand out, let me know and I’ll mail them to you.

Bundles could be going out as soon as tomorrow.

I also sustained a paper cut while carrying them upstairs. See, I spill blood in this cause!

Maemo 2.0 (Nokia 770 Internet Tablet OS 2006)

Installed the Beta on my 770 the other night – rather cool I have to say. A few small niggling things, but it is BETA.

Things feel snappier, the thumb keyboard thing is actually pretty good, the handwriting recognition seems faster, perhaps a bit more accurrate (but still nowhere near even the Newton MessagePad 120 – with version 2 of the OS of course).

I still need to get the screen fixed on mine though, as soon as you get much black (or blue) you get ugly stripes and it becomes unreadable.

Can’t wait to get GPE PIM stuff working. Oh, and actual syncing with Evolution.

Arjen’s MySQL Community Journal – HyperThreading? Not on a MySQL server…

Arjen’s MySQL Community Journal – HyperThreading? Not on a MySQL server…

I blame the Linux Process Scheduler. At least it’s better than the earlier 2.6 days where things would get shunted a lot from one “cpu” to the other “cpu” for no real reason.

Newer kernel verisons are probably better… but don’t even think of HT and pre-2.6 – that would be funny.

A Followup on: a bug on failure failure

Ramblings » Blog Archive » a bug on failure failure

I blogged about MySQL Bug 17928 a little while ago. Well, I’ve submitted a patch that fixes the problem. I wrote rather a rather detailed explanation in the Changeset comments (and I encourage every body who commits code anywhere to do the same). You can see the patch over on the commits list (or here if you don’t want to sift through the archives).

In all theory it shouldn’t be hard to enable multiple simultaneous backups for Cluster. How useful this would be is very debatable. Arguably of little use of all (it’s a REDO log backup). Of course, testing for this (as we test Node Failure) would start to get horrific. Any good arguments one way or the other are welcome.

Ubuntu and more than 1 audio device

Welcome to a new category of blog post: heart-it-or-fart it.

This is an extenstion on the “Inciting Hatred” category, also allowing for praise.

I have a headphone socket on my laptop that seems a bit loose or a connection is dodgy. So, I’ve pulled out my old-and-trusty iMic – a device that came around so you could (for example) have sound input on a bunch of Macs that didn’t come with it (like my old 500mhz iBook). It also happens to have great audio out.

So, plug it in. little thing pops up saying “found new sound device, would you like to open the sound preferences panel”. So far, so good. So that’s what I do, open it, select my audio device and close it.

Then, if i’m lucky, it’s actually seleted it. More likely I have to go back and select it again, kilall esd, select it, relaunch rhythmbox.

Then i can play.

Maybe one song.

Then it skips over everything else in the playlist without playing them.

Quit rhythmbox, start it up again, works. for one song.

rinse, repeat.

Or, if you’re more lucky, you’ll get a fraction of a second of sound out of rhythmbox before it skips over everything. you even get a red stop icon next to the song. If you click on it, you see “Playback Error. Not negotiated”. Hrrm… not a very good error message there.

Oh, the other thing, if you succeed in playing your playlist, you then get, at the end, ALL OTHER SOUND EVENTS that happened for the ENTIRE TIME your playlist was playing. Because what pleases me more than ever is hearing 80minutes worth of gaim sounds one after another.

In the old days i would just “killell esd; esd -d /dev/dsp1”. This doesn’t seem to work anymore.

Verdict: fart it.

(oh, and before anybody says anything – i will be filing a bug report. just the sort of bug that you’re amazed that it was let out as a non-beta release)

Matt on Ruby resource management (and why you can do it elsewhere)

ERROR: The requested URL could not be retrieved (yeah, site didn’t work when i clicked on it from RSS).

Matt uses this bit of ruby code to demonstrate that here you can’t ever not close the file handle:

File.open('something.txt') do |fd|
# Manipulate the file through 'fd'
end
# File handle is now closed

Which seems pretty cool. However, a good C++ programmer can also acheive the same (or better) things!

For example, in NDB (well, in the portability library we use inside NDB) we have a class called Guard. The constructor for Guard pthread_mutex_locks a mutex. The destructor unlocks it. So, for when you’ve got some simple mutual exclusion you need doing, you can have bits of code like this:

{
Guard g(m_config_mutex);

if(m_config.foo<10)
return -1;

// other_stuff
}

Guess what, those nice little error checking bits that should just return -1 look a lot cleaner and you can never forget to unlock the mutex! You’ll see code like this in the management server (ndb_mgmd – source in storage/ndb/src/mgmsrvr/ mostly in MgmtSrvr.cpp).

In fact, you can do this with files as well (multiple ones)  and have them all closed on exit from the block. It’s all a matter of having (or writing) some good classes. I’m no Ruby expert – but I think you’d have to have more indentation to do that with two files?

a bug on failure failure

I’ve been working on BUG#17928, which is all about “testBackup fails in error handling testcases” which appeared after we merged in some work to the 5.1 tree (which is okay in 5.0) that changes some things in the way that online backups are done in NDB to better support recovery in the event of various types of failures and various times in the process.

Anyway, not all systems are affected by this bug… I’m at least reproducing some of the failures on my laptop and have spent the past while in the depths of the BACKUP and NDBFS blocks trying to work out what’s going on and why we’re hitting this assert.

NDBFS is an interesting block as it’s the file system interaction for NDB – so we’re doing things that could take an arbitrary amount of time. We don’t like waiting for those sorts of things in cluster, so we go on and do other work.

For backup, we buffer up writes and send FSAPPENDREQ (File System Append Request) to NDBFS only when we have a reasonable amount of data to send. For example, for very small rows being put into the log file, no use making a write() call for each row – batch them into big chunks!

Back to the bug; I’ve got a theory[1], half a patch and some work to do tomorrow.

[1] excluding gratuitous Buffy quote

Call for Comments on MySQL Online Backup API – Jay Pipes

Call for Comments on MySQL Online Backup API – Jay Pipes

It’s been interesting watching the ideas develop for online, consistent Backup for MySQL.

I should expand that… consistent across storage engines. Other RDBMS vendors get it easy – they just have one storage engine to back up. We have several – and people want them done consistently (especially when you have multiple transactional ones).

For Cluster (NDB) we have added complications because you’re then wanting a “cross storage engine consistent backup” and there’s synchronisation down inside the cluster to make that happen. Greg and I have been discussing possible ways we could make this work. Not sure if it’ll be in the first version though :)

This is really interesting because AFAIK this is the first time that anybody has tried to solve this particular problem.

So go check it out and see what you think of our ideas.

the special level of hell

“reserved for child molesters and people who talk at the theatre”

(also Malcolm Reynolds if he takes sexual advantage of “Mrs. Reynolds”[1])

I’d like to add to that people who don’t merge their patches.

Special hell.

[1] If you don’t get the Firefly reference you haven’t watched Firefly enough. Go do that. Now. No, you can’t do work first. Firefly, now!

it’s also good to note that this is mostly tongue in cheek. although MERGE YOUR FRIGGEN PATCHES BEFORE PUSHING. Every time you don’t, a cute bunny and baby dies.