Ministry for Crap Design

Every year our heating breaks. Every darn year. Aparrently the way to get a reliable central heating system is to have one that’s 15 years old. Ours is a bit newer and part of the series of heaters (aparrently all of them) that suffer from the Ministry of Crap Design getting involved (meaning they break every year).

It’s bloody freezing in here. maybe 12 degrees. It’s 10 outside.

Bloody miserable cold winter.

I almost feel like getting in my car where the heater works and working from there (wireless signal should be strong enough).

still get called for tech support…

okay, when it’s family you can’t really say no. But it does seem a bit strange when you have no idea.

Problems getting new printer to work. My advice is reinstall driver, remove device, reboot. Some random stuff. Remove from device manager, plug in again, see if it changes.

That’s the total of my windows troubleshooting knowledge (hey, apart from all that stuff i know about 3.1 from back in the day).

I’ve done dev work here and there on the platform – inside more unixy areas (software that interfaces with unix, or has been ported from). In other words, no, I don’t speak Hungarian (nor have any wish to).

That said, I’m fully supportive of efforts to make sure our software runs well on the platform. If, for whatever reason (lack of enlightnment or lack of enlightenment further up the chain), someone has to use it, then darn well, our stuff should work well and as expected.

Also, being portable is always a good thing – you never know what the next big thing is going to be like (Okay, it’s unlikely to be VMS or Hurd) but if someone wants a product you sell ported to platform X and yours is more portable than the competitor, odds are you’re the one going to get the sale.

Also, other platforms can help you fix bugs. Fixing bugs is good.

Listening to: Rage Against The Machine

GDB bugs

Well, there’s a GDB bug (in the known-problems list) that I am regularly hitting. It makes it go “gdb internal error, would you like a core of GDB”.

I’m running 6.3, what comes with Ubuntu. However, I’m now rebuilding gdb 6.1.1 in the hope that this will be more stable for me.

6.3 is proving to be not very useful when I need it most (i.e. when strange things are happenning).

Aparrently this only happens because my distro and architecture still uses LinuxThreads instead of NPTL.

Oh how I wish for the day of NPTL on ppc.

Helgrind

To try and help in debugging, I’ve been playing with some of the extra tools that come with Valgrind.

Everybody knows that if you aren’t using Valgrind you are living in sin.

I’ve recently tried to have a go at using Helgrind. It’s suppossed to be able to help you in finding race conditions in multithreaded applications.

Well, mysql is multithreaded, and so is NDB (cluster), so, this could be rather useful (especially since, with some new work being done, i’ve found race conditions, i just need to find out where).

From the manual:

Basically what Helgrind does is to look for memory locations which are accessed by more than one thread. For each such location, Helgrind records which of the program’s (pthread_mutex_)locks were held by the accessing thread at the time of the access. The hope is to discover that there is indeed at least one lock which is used by all threads to protect that location. If no such lock can be found, then there is (apparently) no consistent locking strategy being applied for that location, and so a possible data race might result.

sounds reasonable enough.
Now I’m actually chasing up one of it’s possible data races and seeing if it is, in fact, a race.

Has anybody else had any experience with Helgrind? Thoughts?

Don’t you just love being compatible?

/* Force server down. kill all connections and threads and exit */

#if defined(OS2) || defined(__NETWARE__)
extern "C" void kill_server(int sig_ptr)
#define RETURN_FROM_KILL_SERVER DBUG_VOID_RETURN
#elif !defined(__WIN__)
static void *kill_server(void *sig_ptr)
#define RETURN_FROM_KILL_SERVER DBUG_RETURN(0)
#else
static void __cdecl kill_server(int sig_ptr)
#define RETURN_FROM_KILL_SERVER DBUG_VOID_RETURN
#endif
{
DBUG_ENTER("kill_server");

(from sql/mysqld.cc)

There just has to be a better way to do this….

maybe we need a kill_server which is platform defined (e.g. in a mythical win32.cc, netware.cc or generic_sane_unix.cc) and the generic _kill_server in mysqld.cc? possibly some variation of… some platforms seem to do strange things.

i don’t know. it just doesn’t look that clean to me…. maybe i need more coffee.

Why – o – Why does this happen to me?

/build/buildd/gdb-6.3/gdb/linux-nat.c:1208: internal-error: wait_lwp: Assertion `pid == GET_LWP (lp->ptid)’ failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
/build/buildd/gdb-6.3/gdb/linux-nat.c:1208: internal-error: wait_lwp: Assertion `pid == GET_LWP (lp->ptid)’ failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n)

Interview with Sybase CEO where MySQL is mentioned

(insert disclaimer about this being my own ramblings and nothing to do with my employer)

Try and Buy, or Buy and Buy? :: AO

So, the Sybase CEO doesn’t get it.

The Sybase ‘free’ offering is in no way free. It is proprietary software that owns you.

Yes, Stallman was right – you do not own proprietary software, it owns you.

By giving the user the first hit for ‘free’ and placing an arbitrary limit on when they have to start to pay (and only pay you, so they have no real freedom of choice) ties the user in chains. It is not ‘express’, it is a demo – a cinema preview and nothing more.

This is nothing like the free copies of free software. It is merely a proprietary product packaged for a free software platform. Letting people live in a partial freedom. It’s an improvement, but is a gift to your customers (of partial freedom), not the free software community.

John Chen even says something that is totally misleading.

“You download it and develop it and use it…”

DEVELOP? What the? How can I download anything that lets me develop sybase? hrrmm.. they have the source up there? I don’t think so. I’m sure he meant ‘develop on top of it’. In other words, for a database, use it.

The MySQL way of “you can download it, develop it and use it” is just that. Download it, the source, actually hack the database, write a new storage engine, change the parser, the optimiser – hey, even go make it something that isn’t SQL (for example Fred’s Query Language or something). Or, if you’re just going to use it for your web site, just do that. You have the freedom.

MySQL AB (the company) makes money of being the most knowledgeable and well qualified group to provide knowledge, support, training and development of the MySQL database. We don’t hold our users hostage – they are free (all the freedoms granted to them under the GPL) to go support themselves, or get somebody else to, or even to go and develop the database themselves.

So, here’s to not holding your users hostage!

(this isn’t an attack on Sybase being a good database or not – i have never used it, i don’t think – and don’t really have an interest to. It’s an attack on proprietry software, and especially proprietary software throwing around the term ‘open source’ to try and look good. Proprietary software is what it is, and people should know what that is.)

still recovering

taking a while to get over jetlag. also a bit sniffly – i bet that isn’t helping.

I’m only a couple of hours off local time now.

It could also have something to do with how easy it is for me to sleep in my own bed. for some reason, morning has never really appealed to me. especially when i’m warm and asleep.

I’m going to have to get some photos up from prague no doubt.

watch this space. i may even set up gallery or something intense like that.

revision control

Brian Aker has blogged about BitKeeper versus CVS

no doubt this has stemmed from somebody’s rant on the BK license. Now, this is a valid rant, but, really – it’s getting[1] old.

Personally, I quite like the GNU Arch Revision control system. Unfortunately, the UI is sort of sucky and takes a bit of getting used to. Bazaar is one to watch for improvements on this front (although I haven’t made the switch, mainly due to there not being enough hours in the day).

One thing that Arch does really well is cherry picking changesets. A simple ‘tla reply’ will do the equivilent of ‘patch -p1 < foobar’, but preserving where it came from. BRILLIANT. I wish bk did this. I once looked at branching in CVS and quickly ran away.

A smaller player, Darcs is one to take a close look at too. The UI is really sweet. I’ve only used it to test/submit fixes upstream on a small project (namely xseq – a project that is way cooler than the name suggests[2].)

In the future, bazaar-ng (back online soon) will probably be the way to go. Now is the time to bombard it with ideas though :)

At least we’re not stuck with Visual Source Safe. Full on MS people bag that pile of poo.

[1] Many would, in fact, believe i should be leaving out the word ‘getting’.
[2] I’m sure Andrew would be appreciative of funky names as well.

Update: why, oh why does this edit post thing think it must fight against the will of the correct closing tags?

Update 2: it seems that wordpress doesn’t want to save an update if you’re only fixing your markup. you have to add text. the suck.

what you don’t want to see from gdb

/build/buildd/gdb-6.3/gdb/linux-nat.c:1208: internal-error: wait_lwp: Assertion `pid == GET_LWP (lp->ptid)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) 
/build/buildd/gdb-6.3/gdb/linux-nat.c:1208: internal-error: wait_lwp: Assertion `pid == GET_LWP (lp->ptid)' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) 

Install Day (Semester 1, 2005) – Monash IT Society (Clayton)

Install Day (Semester 1, 2005) – Monash IT Society (Clayton)

So, back at uni (you know, that place you’re at when you’re a student), and back with the old computer science club (but under a different name… well… ah…urrr…because… who the fuck knows why) they’re having a linux install day next week.

i’ll probably go along for a couple of hours and hand out lots of ubuntu cds that i’ve got lying around and probably get asked a lot of mysql questions.

maybe it’d be cool to have a “MySQL CD” with all mysql stuff for all platforms on it (with lots of autorun stuff). esp if we could make them cheaply enough to give away at a bunch of events (like install days).

Maybe i’ll burn a couple of CDs to take along (windows, mac, linux binaries)

OpenOffice.org 2.0

Well, I installed the preview packages in Ubuntu on my desktop this morning – just to play with for a few mins. Guess What? It looks like it doesn’t completely suck!

Some of the UI still feels/looks really weird – but that seems to be a legacy of the strange widget stuff that it used to use.

The “File->Send->Document as E-Mail” and “Document as PDF Attachment” are pretty funky things (assuming they link into evo properly).

The presentation module, Impress looks to have improved no-end. 1.1 was sucky (just like PowerPoint). If you’ve ever used Apple’s Keynote, you know how good presentation software can be. The new one looks to be usable and may mean I swear a lot less when preparing presentations.

Although why OO.org has it’s own package manager is totally beyond me.

I do wish the MySQL connectivity worked out of the box though… maybe it’s just this beta (or the fact that when you select OO.org in synaptic, it doesn’t load up all the Java stuff needed for JDBC connectivity, or ODBC).

Note that I still love Gnumeric and Abiword.