Recent blog entries for rossigee

Oops. Looks like I've neglected to blog again. So, quick update...

We settled the balance for our piece of land, cleared away the overgrowth and now we've nearly finished building a house to live in. It's gone well over budget, so money's very tight at the moment. We're already living in it, so when the rent runs out on our rented house at the end of the month, we can move all our old junk here and we'll still have a roof over our heads. The new house has got a phoneline, so my infrequent trips to the Internet cafe are no longer necessary.

Work's been a bit of a pain. I took on a job that 'should only take about ten days', back when I last posted, but it's dragged on horribly for various reasons. Half of it is because the design is based on a set of webpage mockups (supplied as PDFs!), with no verbal explanation of the requirements of the application, or what should happen and when. I've just been told to 'guess' and fill in the gaps, which has led to several designs for the underlying databases and classes etc being worked on and then scrapped - lots of time wasted. And to top it off, I didn't even get a deposit to start the work and I don't get a penny until it's finished, so I'm having to live on fresh air. If I hadn't already put a great deal of time into it, I'd probably just scrap it and find a new project to work on (one that pays at least a little bit up front, or at certain milestones). However, nothing else is forthcoming just at the moment and I'm determined to finish it off and call in the money it owes me. Sadly, when the money does come in it will all go toward paying off existing debts, so my dream of getting a new laptop for my birthday in a couple of days is just not going to happen. Mine died horribly shortly after my last post, so I'm borrowing P'Chai's (horribly slow Celeron) laptop to get my work done.

I finally branched gtranslator and started committing all the stuff I've been working on off-line over the last few months. Nice to get it off my laptop and into CVS where others can chew it over. However, it's still far from usable and in particular needs a certain amount of GUI love. I'll have to sit down and get into a GTK+ frame-of-mind at some point. When it's ready, it should be a massive improvement over previous releases and due to the fact that a lot of the buggy code has been completely cut out and replaced, it should also knock most of the existing bugzilla bugs out in one foul swoop (hopefully).

I've also spent a fair few hours recently doing GNOME sysadmin work. As well as dealing with the day-to-day enquiries, I've made a suggestion or two to the (closed) mailing list, and started looking into resurrecting Bonsai, which seems to be sorely missed by a lot of people. I'm also preparing to produce a monthly sysadmin summary for public consumption, so the rest of the community can see what new issues have come in, and what progress the team has made towards fixing stuff on our team todo list.

Enough for now...

Travelling

We left England on Saturday evening, just as the weather seems to have started taking a cold turn. Arrived home in Ban Krut after a fairly uneventful flight via Dubai to Bangkok (Sat/Sun), and a similarly uneventful train journey down to Ban Krut, in the Prachuap Kirikhan 'jungwut' (district/county). It's still rainy season, and although it has been mostly hot and muggy, we've had some pretty spectacular thunder and lightning storms and torrential rain.

We're staying with P'Chai at the train station. We're still looking for a house to rent. The owner of the land I'm buying showed me the extent of the land - it's a lot bigger than I first imagined! Looking forward to getting the sale completed so we can spend a day cutting down the overgrowth. Although it was nice to see everyone back in England, it's also nice to be back where I can continue building a future for Mee and I. Also looking forward to seeing the hordes of people who have promised they'll come over to visit (yeah!). At least my Mum and my Gran will be coming in February.

Work

My current work priority seems to be making fairly slow progress. Whilst I'm very happy (and proud etc) of the design, I'm struggling to bring it to completion due to various problems and distractions. I've had to do some technical support cover, fix a few problems with another customer's site (which I admittedly broke trying to fix something else), and my laptop battery has finally given up the ghost, leaving me with a laptop which dies whenever there is a power glitch. My main issue at the moment is that although it works great on PHP5 with the new DOM XML and XSL APIs, when run on PHP 4.3 (the platform it is expected to be hosted on), the crappo deprecated APIs don't seem to behave in the same way. I am wrapping all XML and XSL calls in the application program using the HDOMWrapper and HXSLTWrapper classes from my

As for the laptop, given all the problems I listed (on a previous Advogato post), I don't see much point in wasting money trying to fix it. Hopefully, by my birthday in a couple of months, I will be able to buy a PowerBook. I am looking forward to getting it to dual-boot MacOSX (which I was fairly impressed with when I saw it for the first time the other day - it has a shell!) and Ubuntu Linux (PPC). I managed to shoehorn Ubuntu Linux (i386) onto this machine (a long story in itself), and am fairly happy with it so far (glad I came back from the RPM-based Fedora for workstation use). However, having a few minor package dependency problems trying to install the correct set of libraries to compile PHP5, so have entered a world of pain trying to get it to work using the stock Ubuntu PHP 4.3 package. The problem boils down to the fact that, with the DOMXML API on PHP4, the XSLT processor does not look for the 'xsl:included' stylesheets in the right place. I rewrote part of the XSLT wrapper to use the actual 'XSLT' (Sablotron/Expat) module, but then that fails with invalid tokens when parsing the output from a libxml-based 'DOM-to-string' function (and gives a rather useless error message which means I still haven't tracked down why - bloody Sablotron!). I've decided to not let PHP4 problems from keeping developing going. We'll have to decide when it goes live whether to upgrade the server to PHP5, host it on another server with PHP5, or attempt to debug any outstanding PHP4 XSLT problems.

Due to the fact that I don't yet have a telephone line, I am having to work offline and spend a couple of hours a day at the local Internet shop, which is a bit of a pain. After using ADSL again back in the UK, the 56k dial-up is painful to use, especially when trying to sync large amounts of data, especially when others in the shop are doing stuff. I definitely need to find out when DSL is coming to Ban Krut, and see if there's anything I can do to bring it on.

Non-work

No time for any significant progress in any particular open source area, except for a dealing with a few very minor GNOME sysadmin issues. I attacked the Gtk2 version of Gnucash but found that there are problems with the Debian guile (f**king scripting languages in applications again!) dev libs mean that I can't compile it. No way am I going to start building Guile from source or fixing f**king Guile problems. If I'm going to do any work on GnuCash, the first thing will be to remove the dependency on any languages other than C, probably by rewriting the important bits in C and making anything else a compile-time dependency. Proper PITA that I'll have to install a shedload of GTK1 libraries just to keep my accounts up-to-date.

Apologies to anyone waiting for progress with gtranslator! I'll try to get my work on that finished, tested and released before I start digging into other stuff like GnuCash.

Had a nice few days in Jersey, except for my laptop problems causing me pain and embarassment. I've decided I'm going to aim towards getting a 15" PowerBook (w/ATI gfx) for my birthday in November and struggle by with this one for now. Going to the airport in a couple of hours. Looking forward to getting home, but am feeling a bit rough after drinking all sorts with my brother and a few mates last night, so I'm not looking forward to spending the night in an economy class plane seat to Bangkok (with a connection in Dubai).

Oh, I should point out that I was completely wrong about GnuCash. It does rely on some nasty scripting (via Guile), but it is actually mostly Gtk2/Glade-based and not python-based as I suggested. I don't know where I got that idea from! I've started playing with the Gtk2 branch of GnuCash now, but it doesn't compile cleanly for me just yet.

o/~ We're going home... We're going home... o/~

Only one more week left in the UK. We're up tomorrow morning early to head down to Weymouth, where we're going to catch the ferry to Jersey too stay in St Aubin for a couple of days with some guys I'm working for. It sounds like they might be putting a lot more work my way, so it'll be nice to meet them. It'll also be nice to see Jersey, and a nice experience for Mee's last week in the UK.

Laptop/Ubuntu

It is now becoming almost unbearable. I listed all the niggles I've got with the hardware in a previous post. I switched (why!?) from Debian Unstable to Fedora Core 2 a couple of weeks ago, which broke a lot of stuff. I had to frig around to get MP3s working, and even now I haven't got half the useful applications working that I had before. I then made the situation worse by installing GNOME 2.8 (out of CVS) into /opt/gnome, which has taken out some of my panel applets, keyboard shortcuts (Alt-Tab) and other stuff because when I did it I ran out of time too tie up all the loose ends. I decided I wanted to go back to Debian, and along came Ubuntu Linux.

So, I downloaded and cut a CD, but for some reason my laptop (Dell Inspiron 8100) just freezes during the initial stages of the Debian installer. I cut another CD and checked MD5SUMs, so it's not a defective CD. Now, I must struggle on and get some work done on an 'only-just-usable' laptop. I'm now considering my next laptop purchase, and if I can hold out long enough to save up for one, I'm considering one of the new PowerBooks (15" or 17" would be fine!) with the ATI graphics cards (nVidia can suck my cock). Which brings me nicely to working out how to pay for it...

GnuCash

I've always had a love/hate relationship with GnuCash. One one hand, it lets me track all my financial accounts and transactions, but on the other, it's written in Python, and looks ugly with it's GTK1 interface. I've got nothing against Python as a scripting language, I just think that desktop applications should be implemented in C. I now have a considerable amount of data built up in GnuCash files, some of which I need to do a certain amount of post-processing that doesn't seem to be possible in GnuCash. Also, GnuCash won't work on my iPAQ, which is how I (eventually) want to input transactions.

So, I figured I'd start by analysing GnuCash's XML format and preparing some C data structures for them. I'd then write file parsing and writing functions, and wrap them up in some kind of 'libgnucashfile' library. I figured this shouldn't be too hard, and would pave the way for a set of Glade interfaces and some code to provide a GUI to maintain the files. Eventually, you could re-implement all of GnuCash this way, or just use GnuCash for the bits it does better.

gtranslator

I've made a lot of progress with converting the internal translation message structure to use the new gettext API directly. I found that I was wasting a lot of time trying to fix up things that I didn't feel belonged in gtranslator (at least, not in a GTK2-based program), such as colour-schemes and configurable fonts etc. Also, code to uncompress po files before editting, or work on compiled po files seem to me to be a kind of 'feature bloat' now. All this stuff is handled by other programs (e.g. fonts and colorschemes are now handled by GNOME/freedesktop, and users file manager should uncompress a po.gz file and run gtranslator on the temp file - no need to attempt this in gtranslator). Re-writing all this unnecessary stuff to work with the new internal structures proved to be more hassle than it was worth.

So, I'm stuck with a monolithic patch that changes far too much and wondering how to commit it in a clearly defined set of stages without reducing gtranslator in CVS to a largely rewritten beta version. I want gtranslator to follow the upcoming six month GNOME development cycle, and have a fully-featured translation editor by the time GNOME 2.10 (or whatever) hits the mirrors.

Why do people set up virus filters to report back to virus senders when most of the time the virus has forged the sender address?

It usually just means they end up mailbombing innocent bystanders and mailing lists with false 'virus notification' e-mails. For some lesser-technical people, this can cause them to panicky and paranoid that their (otherwise perfectly healthy) PC is infected and waste time and money getting re-assurance from techies that nothing is wrong.

So, help spread the word. If you, or someone you know is running anti-virus filtering software on your mailserver make sure the virus notifications are disabled. If you receive a virus notification to one of your e-mail addresses or via a list you are subscribed to, write back to the virus filter's e-mail alias (CC the 'postmaster@' too!) and tell them to cut it out and maybe point them at this diary entry or somewhere else that explains the pain.

The world could really use a VirusCop service (similar to SpamCop). Forward your virii to it, it will scan the headers, identify the source by IP (not by sender address, doh!) and contact the ISP. Only the ISP are going to know enough about the originating IP address to be able to do anything useful with regard to letting the user know they have been infected and/or getting them disconnected until it's resolved. A VirusCop RBL would also be useful.

GNOME software

Bruno Haible has provided me with gettext-0.15pre1.tar.gz, with a *much* improved public API that allows programs (such as gtranslator, kbabel etc) use it's po file parsing, hook in a custom error handler to the parser, update translations in the parsed messagelist, and write translations back to a po f ile. Basically, I can now start ripping out the custom parsing/writing code from gtranslator and use this instead, which is a far cleaner solution. Then, as this will provide easier access to the plural form translations, I can provide a nicer UI when editing them. I have most of this done already in a proof-of-concept branch, but it just needs to be reworked a bit to use Bruno's new gettext API. I'm excited.

GNOME sysadmin

Lots of fun with the content_filter (amavisd/spamd/clamd) on menubar.gnome.org. Jeff disabled it as he thought it was causing multi-hour mail delays (not good near the end of a release cycle), but it turns out it was DNS failures. I tried using SpamCop's RBL for a bit, but it turned out it would have caused a few too many false positives, so we'll just rely on RCVD_IN_SPAMCOP_RBL for now.

I briefly looked into the CVSROOT loginfo file. I was annoyed that it only runs the first match in that file. It means my 'cvs-commmits-po-list' hack was not being reached if the commit was being handled by one of the other (more important) scripts further up. I figured we needed a hacked martin-log.pl that would 'Cc' that po commits list if a '.po' file was one of the files affected. However, I don't think my Perl skills were quite sharp enough, as it seemed to put an invisible spanner in the works, resulting in a handful of (test) commits not generating the mail notification, so I reverted it. I'll have to find a better way to test it at some point.

Toni seems to be showing some enthusiasm towards getting RT (Request Tracker) packaged up for window, which will be good. He's also looking at getting NAGIOS up, so we can react to and track service outages a bit better. I'm also thinking of making a more concrete proposal for setting up MRTG monitoring of load and system/network I/O on the various boxes, which I think would be useful/interesting.

Whacky ideas dept.

Now my lappy keyboard is giving up the ghost, and I'm starting to wish I could get information into my iPAQ quicker than tapping it's touchscreen, I came up with an idea. Quite a few years ago now (when TV presenters had big hair and bushy sideburns, and wore brown jackets with big ties), I saw a show called Tomorrows World, which demonstrated how a someone with only a few days experience using this one-handed keyboard was able to type faster than the fastest touch typist in the world on a normal keyboard. I was impressed, but I never heard anything more about it after that.

Well, I found them. They are Infogrip, and they make the BAT. Your hand rests with four fingers on four black buttons, and your thumb free to move between three coloured buttons. By pressing the keys in a certain combination (chord), you can simulate just about any keypress from a standard keyboard. Apparently, you can learn all the chord combinations in a few hours, and can be up to a reasonable typing pace in just a few days. Hopefully, I'll be in a position to order one in a few weeks time.

I like it, but I thought maybe I could do one better. I thought about a small, kind of cylindrical device, moulded a bit like a joystick handle, with the four main buttons along the front, and the three thumb buttons on top. It would contain an AA battery, and would simply send signals (via Bluetooth) when a key is pressed or depressed. This just means that you would need to buy a USB Bluetooth dongle, and write a keyboard driver to convert the received signals into keycodes. Theres probably a little more to it than that, but not much.

You could go even further and give the transmitter the concept of channels. So that, with a certain chord, you could switch between sending your input to different devices (your desktop, your laptop, your PDA, your mobile phone, your TV, your cashpoint, your other electronic device).

I guess there would be a few security issues involved here too, but they could easily be addressed during my next daydream. For now, back to writing PHP code to keep the bills at bay (yawn!). Maybe someone from Infogrip wants to pick up where I left off :)

My laptop is now falling apart. It's a Dell Inspiron 8100. I bought it when I was fortunate enough to be able to afford it. After two years of (ab)use, it now has the following problems:

  • The two batteries I bought with it no longer hold their charge. One doesn't even work any more, and the other powers the computer for about 2-3 mins before dying. However, if I can get from my current power point to another one within 2 minutes, I don't need to shut it down! Replacement batteries are around 200quid each, which is beyond my current budget. So, despite having wireless everywhere I go, I'm still tethered to a wall, and use in fields, cars, trains and aeroplanes is out of the question (lucky I've got an iPAQ, I suppose).
  • The power adaptor plug that plugs into the back of the laptop is beginning to get ruptured and goes to battery . I had to replaced the whole mains adaptor (for about fifty quid, IIRC) last year after the same thing happened. Unfortunately, if someone knocks the laptop, and/or I don't notice it go from 'mains' to 'battery' power, it dies. This is kind of my own fault, as I'm always moving my laptop around and not making sure the power cord isn't trapped somewhere, so it's been stretched and bent around probably more than it should. More easily replaceable (and universal) power connectors (that don't require replacing the whole adaptor) would be nice.
  • Worse still, the keys are starting to stick and fail. I regularly have to take off the keyboard and blow out all the dust, hair and biscuit crumbs with an air hose. The letters have mostly all worn off the keys, which I remedied by buying some stickers for the keys (which have now started peeling at the corners). Nearly half the left 'Ctrl' key has snapped, luckily not the part that allows it to operate. The metal springs that work the carriage return and backspace keys seem to have been bent somehow, and take some striking. I've lived with all this until recently, when my 'H' key has started to become temperamental. Again, it's because of the serious amount of use it gets. It's my daily workhorse, and evening hacking tool. I spend more time on my laptop than in any other pursuit in my life, so it's not that surprising it's worn out. Using an external keyboard with a laptop just feels *wrong* for some reason.
  • If the laptop is placed on an uneven surface (e.g. my lap), the rubber mouse thingy in the middle of the keyboard thinks it's being moved and the mouse cursor glides itself to the side of the screen. Luckily, that mouse has stopped functioning altogether, leaving me with the touchpad mouse, which I can get on fine with. It's a shame they stopped doing the rollerball mice - they were fantastic.
  • The screen is a fantastic 15.4" 1600x1200 LCD panel. Unfortunately, it started becoming temperamental about 8-9 months after I bought it, and I had to send it back to DELL to be fixed. Meanwhile, I went to Thailand, and after it was fixed, sent over to me and finally cleared Bangkok customs (never again!), I found that it has some strange vertical stripes that happen in every even 10th of the screen from left to right. They come and go, and are only noticable by a brightening of the color in some lines on that part of the screen. It looks hardware-related to me, but I've learned to live with it (not worth sending it back again). Oh, and I've lost a tiny screw at the back, which means the screen comes away from the laptop on the left if picked up by the screen (not that I ever do that!).
  • NVidia - wankers. I have been deprived of any kind of 3D acceleration, because of these twats. I was looking forward to flying (and hacking on) FlightGear, and playing some other Linux games that require 3D acceleration, but eventually had too many technical (and moral) problems using the binary-only driver, so I gave up and used the open source version without 3D (more work, less play - maybe NVidia is to blame for Johnny becoming a dull boy). Needless to say, my next laptop will not have an NVidia chipset in it.

Otherwise, I've been very impressed with the laptop, and it's done me very well. However, every day I use it and get vexed with the increasing number of problems, I am considering my next laptop purchase. I see a lot of GNOME hackers getting on famously with the Apple hardware, and dual-booting MacOSX with Linux, which could be very interesting. However, I'll have to see how long I can make this one last, as it'll probably still be a few months before I can afford anything more than a budget PC. Either way, before I buy this time, I'll want to be very sure about proper (non-proprietary) Linux support for all the components it is made from.

31 Aug 2004 (updated 31 Aug 2004 at 22:55 UTC) »

Bruno got back to me and proposed a revised gettext-po.h, which looks much more interesting. I had a quick tidy-up of gtranslator HEAD to remove some old unsupported/unmaintained code, so I'm all ready to start using the new API as soon as Bruno has implemented it. Superb.

My first week's work for my newest customer went fairly well. However, due to a major 'half-asleep on a Monday morning' mistake, I accidentally wiped out glibc on my laptop, rendering it fairly useless. It's taken me until now (Tuesday evening) to get things sorted, but the upshot is that I got it running Fedora Core 2 instead of Debian unstable. I seem to have overcome the major hurdles, most of which involved trying to build a kernel that would work with the prism2_cs module.

Had a day out in London with my mum, dad and Mee on Sunday. Took in 'the Big Bus company' red line tour of Westminster, finishing off with a ride in the London Eye, it was an interesting day out and a welcome break from the laptop. I think Mee is starting to get upset with the amount of time I am spending in front of the screen. I'll need to start sticking to some kind of 'work hours' and put off all non-essential stuff somehow for a while, otherwise it's not fair on her. Only another four weeks in the UK, then we'll be back in Thailand, so she won't be so lonely then.

Oh, and one more thing of note. I see that the GPE project (GNOME on iPAQ) are looking to form closer links with the GNOME community. I really need to get my ARM-compiler environment cranked up a level, so I can fix some bugs and produce updated ipkgs for my iPAQ. I'd really like to look at 'bigger' iPAQ projects, such as porting gtranslator (and other 'normal' GNOME apps, such as gedit and gnumeric) to iPAQ. My GPE iPAQ is great, but still has a long way to go wrt integration with the GNOME desktop (and PIM software etc). I hope the GPE guys can integrate better into the GNOME project, and attract more developers to the cause.

OK, so I landed some work and haven't done much else for a week or so. However, Bruno Haible got back to me on the gettext stuff I'd been doing, and has offered to expose the parser and write by extending the interface in 'gettext-po.h' according to gtranslator's requirements. Fantastic!

gettext/gtranslator progress:

Apply this patch to gettext from CVS. Build and install. Check out the 'gettext-hack' branch of gtranslator from GNOME CVS. It's basic, but it works. Another day, I'll build a dialog to display the errors, and polish it up a bit more. Enough for today.

I also moved the archive over to the gnome.org servers, as sf.net mailman is lame.

44 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!