Older blog entries for mikehearn (starting at number 4)

Life

The first week of my holidays have been pretty hectic as I try and get everything together for travelling around Europe for a month with Ken (an old school friend of mine). I leave on Monday, should be good fun! I've travelled before, but not for such a long time.

Geek

The server (theoretic.com) that I share with a friend has started acting up again. Apache eats all the memory, and I don't know why. Originally I thought it was mod_perl, so I removed that, and it seemed to fix it, but a few days ago it died again (linux sucks at dealing with apps that eat all the memory).

I'm going to try and move autopackage to sunsite.dk, which has proper hosting. I applied earlier, we'll see what the results are. Doesn't solve my own problem though :(

Code

autopackage has been bobbing along nicely, lots of arguments between me and Hongli about the GUI design of the gtk installer frontend. There's still a lot of work to do, but I think the end result is going to be nice.

One problem we have is the lack of a decent animation format. MNG is too heavy, and doesn't fit into the gdk-pixbuf API well (it's more akin to flash than gif). I've been toying with the idea of hacking up a super simple APNG format or something that maybe could get better adoption. I might get time after I get back from Europe.

OTOH I also have a metric ton of other things to do, like trying to reduce my differential against WineHQ CVS to something sane again, doing some of the boring under-the-covers work on autopackage and so on. So, like most things, it will probably suffer from not floating to the top of the TODO list for a while.

My (ex)boss just emailed me, and wanted to know why the app I ported using Wine won't open the apps associated with a given file from Internet Explorer. Theoretically adding code to do this is not so hard, the main problem of course is the lack of a solid freedesktop standard for it. There's one in the works, but who knows how quickly it will be deployed.

A close shave

That's what I call it when you finish your project at work 2 hours before you're meant to leave. Fortunately, at the end it seemed stable, though not quite as fast as I'd like.

So - I did it. I won. I didn't think I would, and I almost didn't, but I'm getting fast enough at debugging crashes, deadlocks and other nasty bugbears in Wine that I wasn't thrown when at the last minute I raised the fd limit and found it crashed in yet another way :)

Hopefully I'll be able to do a patch dump next week, so others can benefit from my work even if I don't get a chance to merge it in properly.

Life

Tonight I have to pack - I leave for home tomorrow. I've been putting it off for a while, and now it's 7pm and I've still not started. As you can tell, I'm still putting it off.

Play

Funny how work and play interlocked towards the end. I tried out apbuild today, which is a program that lets you compile the source in such a way that it will run on older glibcs. It's still rather untested, but can do Xlib and Wine (with a bit of encouragement, Wine is hard due to the games it plays with pthreads).

Of course, just after I imported it to CVS (very raw), Hongli discovers an obscure option to ld intended for platforms like BeOS that would let us get around the problems with using the LSB stub libs! ARGH! Well I need to evaluate them to see which is best, now.

We have GUIs for autopackage! Very pretty they are too, one of the nicer installer UIs I've seen for a while. Hongli (foobarwidget) is a really great coder :) There are screenshots in my home directory if you're interested, but I can't be bothered linking right now, as it's all changing so fast. I reckon people will be impressed when we do the next release though.

29 Jul 2003 (updated 30 Jul 2003 at 12:46 UTC) »
elanthis: Actually, I can't agree that compile times are a problem in such systems. My experience of them has been that such an approach massively improves compile times, because the compiler doesn't have to parse huge volumes of header file. Typically, these languages don't have a preprocessor which can speed things up a lot.

For instance, Object Pascal uses the module approach, except that logically the file is divided into "interface" and "implementation". It has no preprocessor of any real worth (but that doesn't seem to hurt the language much), and is lightning fast. If you are fixing syntax errors, it's quicker to simply hit ctrl-f9 in the delphi IDE to recompile than move your hands from the keyboard to the mouse and back again to move to the next bug.

Part of the reason it can be so quick, is that (a) Borland make very fast compilers and (b) the Object Pascal language is conducive to fast compiles. The built in dependency tracking usually works very well - there are no Makefiles, it (spew) Just Works.

There are limitations of course. You cannot tie the interfaces of two units to each other (ie if you declare class A in unit UA.pas and class B in UB.pas you cannot have class B have a class A as a member and also vice-versa). That's a "circular unit reference" and is illegal. It can be very annoying at times, but typically if that occurs it reflects some problem in the design of your code anyway, so might as well do some refactoring while you are there.

Life

Friday was our farewell do here. I've been living in Great Malvern for about a year now, at this gap year job working for an R&D firm. We're all starting to drift away now the year is almost over (I leave in a week), so last Friday for our goodbye night seemed like a good choice.

It was a lot of fun. We went to a very nice Italian restaurant and took over most of it (there were about 20 of us), then off to the pub for a bit, then some of us went to Tramps which is a rather dire but nonetheless enjoyable nightclub in Worcester. Needless to say, I slept in the following day :)

Work

Well, the app I'm porting using Wine no longer crashes, or hangs. We're so close! Unfortunately, typing in the page editor is far too slow, the cursor lags behind heavily and what you type isn't rendered until you stop typing. I have no idea where the bottleneck might be. Time to investigate profiling tools. For the first time, I'm starting to feel confident about making it work before I leave.

Once I've left, I have a couple of weeks before me and Ken go travelling around Europe, hopefully I'll at least be able to manage a patch dump of my work, if not actually being able to merge it all in.

Play

Work has started on the GUI front end to autopackage. You can see actual screenshots here and here. There's a mockup of a different UI design that we're going to try here.

I haven't had much time to work on this lately, but fortunately there are several really hard working contributors now, which is fantastic. I'm psyched about this project, we have a clear direction and goals, and I think we're going to make them, even though they are pretty ambitious.

So, this is my first entry on advogato. I've been vaguely aware of the site for some time, but seeing the GNOME guys blog here made me think maybe I should too. I share a non-geeky (mostly) blog with some friends, but one devoted to my free software work seems fun.

Wine

I join this site at an interesting time - I'm engaged in a race against the clock. I have precisely 1 week, and 1 day left to make my companies app (a groupware product in development) work completely under Wine before my contract is up and I leave. If it doesn't work before I go, the porting effort will be abandoned, as I'm the only one there who can do it.

I've been working on Wine for about a year now, no real area of specialisation yet. I've worked on the common controls library, core window handling, I wrote the XEMBED/freedesktop system tray integration code (currently working its way through the peer review process), and at the moment I'm battling with COM/OLE. Hopefully the results of my work (which builds on work done by Ove at TransGaming) will soon be meaning a major COM/OLE upgrade to Wine.

Seeing an opportunity to get paid to hack on Wine full time was great, and I've been having a fun time for the past few months. As I reach the end though, I'm getting pretty tired, both mentally and physically - the areas of Wine/Win32 that I'm currently working in are poorly documented, partly incomplete and deal with parts of Windows that are old, rickety and generally massively baroque, even moreso than usual.

Stay tuned to find out who wins - Microsoft, or free software. It cannot be both :/

What else do I do?

I am the principal designer, maintainer and author of autopackage. It makes packages. They are kind of unique, in that they are distribution neutral, can do interactivity etc. If people are interested, I'm going to blog more on autopackage, how it works and why it's so important in future. I noticed there was an articles system, perhaps I'll submit something there in future.

OK - compile over. I have to get back to work, no time to lose. Rock on my friends.

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!