Older blog entries for CharlesGoodwin (starting at number 14)

Just saw Mark McLoughlin's post about adding wireless support to gnome-netstatus which is cool. Calum did the UI but I wonder why the '100%' is to the right of the indicating bar graphic. Shouldn't it be to the left for English (and other left-right reading languages) since that's where our eyes naturally look first?

I wonder if that's part of the Gnome HIG. It probably is and, if in the unlikely event it isn't, probably should be.

Last night was the best sleep I've had in ages. Perhaps I should stay up all night more often as I did the night before. It certainly forces me to get to bed early the next day.

Then again I slept in 'til 9:30am when luckily a phonecall woke me up.

Must get job... or get contract work... or anything. A good few hours of cold calling. Fun fun fun!

16 Mar 2004 (updated 17 Mar 2004 at 10:23 UTC) »

[Didn't realise Advogato doesn't support blog titles] Am I the only person... ...that's getting annoyed by Michael Meek's constantly edited blog? I get the Gnome Planet RSS and it seems that every time Straw syncs the RSS, he's done a minor edit of his most recent blog. 20 or so times daily. Which means that whenever I'm using my computer (more than is healthy) I keep getting interrupted by a non-update. Argh!

Or am I getting the wrong end of the stick and is this a Straw or GP bug?

Either way it's damned annoying. And if it is the former, and if Michael ever reads this: you aren't limited to only one blog per day! And it needn't be perfect!

Gave myself a crash course in XSL/XML today. Found out that to merge together XML documents you need to use XInclude. It's crazy how hard it is to find out about XInclude given how useful it is.

My father once told me that I'd know I was grown up once I started to get irrationally paranoid, and that I'd know I was an adult when I recognised my responsibilites.

Whenever I use cheap shampoo I swear I get uncontrollable dandruff. I'm beginning to think it's a ploy to make you purchase the more expensive shampoos... "Pay up or accept ailments!".

I've been out of work for too long, it's time to get a job to make sure I can pay my mortgage.

Development pace has been disappointing. I made progress with Ibex, with quite a few widgets now working including a rudimentry tabpane implementation! But my GNOME Office work has been slow and I've failed (despite making promises) to deliver the website this weekend. It is now a priority.

It helps if you don't have to spend the best part of 2 hours washing dishes. At one point it felt like an insurmountable task. Battered and bruised, I only just survived.

Never let the girlfriend cook a fry-up for Sunday dinner - I spent a couple of hours recovering from severe indigestion. I never have indigestion. At least, never before now.

There is hope! [1] [2]

We've made some real headway with Ibex over the last few days. Adam finally awoke from his slumber with a mass of patching ensuing. (He'll disappear for weeks but then code in a few days more than most developers could do in a month.)

Anyway, his patches introduced a few regressions which we (myself and Tupshin) quickly backed out [3]. I know there's a few undocumented bugs still with the core that I've encountered - documenting them was difficult until some of the existing bugs were fixed - but now most of the important bugs are fixed, I should be able to isolate them over the next few days.

[1] There's quite a lot of Ibex code (code running on Ibex) involved in those simple widgets, a lot of what we need to go onto create the more complex widgets. Stuff like org.ibex.theme.base.border-img or ibex.lib.selectable which will both be widely used.

(They're just plain text files so I don't know why Epiphany is being so anal about opening them up, especially when it displays .wmv files inline as garbled text. I hope stuff like that is fixed for GNOME 2.6 which I'm eager to switch to.)

[2] Check out the antialiased text. That's freetype compiled into mips and run using mips2java at runtime. That way we can make anything that can be compiled into mips code run over Ibex. Crazy stuff but very preferrable to having to rewrite Freetype in Java.

[3] Darcs rules. It's one of those relatively unknown gems out in the Free Software world. It certainly makes our development life a lot easier than CVS or any centralised server.

As HP writes: In other news, increasing dependencies on the proprietary JDK in OO.org, which forces the codebase shipped by Red Hat, Debian, and other companies who won't rely on a JDK license from Sun to diverge more and more from the mainline. Not to mention the StarOffice vs. OpenOffice.org delta.

If ever there was a case for needing GNOME Office, that is it. Otherwise most Distributions will be finding themselves dependent upon licenses from Sun. I think Ximian backed the wrong horse with OOo. I just hope I can help the GO team prove it.

Hacking on the Ibex widgets continues. Hopefully tonight the first few widgets will be complete. A few bugs in the core, however, will prevent us from releasing a demo. There's not much I can do about that, though, than wait on and nag the core developers.

I'm so tired right now. Still, I wasn't overly fond of HP's take on GNOME Office.

GNOME Office was not viable 2 years ago as anything other than a meta project. A lot of hard work by the AbiWord, Gnumeric, and GNOME-DB teams has changed that. Now a GNOME Office suite is a viable target, and the excellent work by the 3 member projects (member, not associated) at moving towards a shared architecture looks set to deliver that.

Jody is abstracting the plugin framework, among other things, out of Gnumeric into libgoffice which will provide an excellent starting point for decent integration between the suites.

And whilst there may be differences - such as the cross-platform implementation - between the projects, this is nothing that would be solved by a merger. No, what is needed is cooperation and collaboration. And Jody, Dom, Rodrigo, and the other involved talented developers have been working towards that for several months now.

Hell, we have developers from Inkscape, Conglomerate, Planner, and even GnuCash in on the discussions. There is even a rudimentry presentation app bundled with Inkscape called Inkview that may well develop further.

Now the opportunity is available to make GNOME Office a competetive suite. We now have viable, world class applications that can and are aligning their direction and goals.

I just dropped my car keys 3 times between getting out of the car and the 5 yards to my front door. Sleeping improperly really does affect motor control and I'm just glad the mistakes were that trivial and not occuring from behind the wheel. Must not drive tired.

Also I think I'm obsessive. I was pissed off that I didn't have any worthwhile email after my 4 and a bit hours of sleep.

Now it is a choice between going for a run and going back to bed. I should go for a run... but sleep is so nice.

Just saw MisterP's comments on BURT and emailed him about GnuCash which sounds like a closer match.

Speaking of GnuCash, the GNOME Office list has been alive this week with discussions on how GnuCash could use parts of GO and vice versa. It started off really well but the deteriorated a little as linas went off on a bit of a tangent, writing off the Gnome-DB project for use by GnuCash (or more specifically, QOF, a project spawned by GnuCash) by:

  1. Confusing the role of libgda ("my project is better than your project" - no, it's different)
  2. Judging libgda using 2-years-ago experiences of (what was then an immature) gnome-db instead of the current state of the project

All along Rodrigo (rodrigo) kept politely pointing out QOF might be able to use libgda rather than manually do all the datasource abstraction work itself. He did well to stay civil.

Anyway, it seems that the GnuCash/QOF guys are intent on doing everything the hard way. Which is amazing considering the barely-dated statements regarding the state of the GnuCash project. There's no indication that they will compromise or be pragmatic about anything. The GnuCash team have admirable goals for the project, but they're just so unrealistic for the short/medium term.

My opinion: AbiWord and Gnumeric (and even Gnome) have become great applications by setting realistic goals and achieving them relatively quickly. GnuCash has floundered by setting ludicrous targets, taking years to get there, and then wondering why the project is so far behind the rest of the field. But they'll tell you it's because of a lack of developers and manpower.

We're not going to see GnuCash2 this year which is a crying shame, especially when the developers claim that, "Our users are everything." The users want a Gnome2 port! Now! Not a robust, multi-user, server-client, swiss-army-knife, uber-majig.

I just dropped my car keys 3 times between getting out of the car and the 5 yards to my front door. Sleeping improperly really does affect motor control and I'm just glad the mistakes were that trivial and not occuring from behind the wheel. Must not drive tired.

Also I think I'm obsessive. I was pissed off that I didn't have any worthwhile email after my 4 and a bit hours of sleep.

Now it is a choice between going for a run and going back to bed. I should go for a run... but sleep is so nice.

Another eventful day.

Progress today was great on the Ibex widgets, as I narrowed down a number of issues and put together some templates that effectively implement margin/pad from CSS (good for HTML devs learning Ibex quickly) and worked out how to play correctly with resources.

An Ibex resource:

(which happens to point to the north image of the bevel2up border)

Obviously the border template has to be much more generic, so the idea was to pass it a resource. In the end, this turned out to be fairly simple [1]:

.org.ibex.theme.win2k.image["bevel" + thickness + form]
(which is passed to the border template as the base for a border)

Border then takes over:

border ++= function(v) {
    // 'cos border also has to accept strings
    if (typeof(v) == "object") {
        $nw.fill = v["nw"];
        $nw.fill = v["nn"];
        $nw.fill = v["ne"];
        $nw.fill = v["ww"];
        $nw.fill = v["ee"];
        $nw.fill = v["sw"];
        $nw.fill = v["ss"];
        $nw.fill = v["se"];

Anyway, once that was established, progress was quite rapid and I probably managed to get 3-400 loc done in a few hours despite the girlfriend [2].

Note: the ++= syntax is for registering traps, which are a powerful form of event notification used in Ibex (something I haven't come across elsewhere). The above code is a write trap which is fired when the border property is put to. A read trap (fired on a read) is done the same way except without the argument for the function, ie function() instead of function(v). And you can register and unregister as many traps as you like on any property, so you can create a powerful cascade of traps for handling complex behaviour through just a single property.

Anyway, gotta end the blog before it becomes a lecture on Ibex... I'm just enjoying it, lots. Why else would I be up at 4am when I'm gonna be dragged out of bed in 5 hours time? XAML ain't seen us coming (despite a Microsoft employee being subscribed to our dev list)! ;-)

[1] The string-based method for manipulated resources is resource["subresource"], which allows for some really clever tricks (a topic for another time!) although it can get verbose for manipulating several levels. That requires nesting the square brackets (.res["sub"]["sub2"]["sub3"]) instead of using a string version of the dot-syntax (".res.sub.sub2.sub3") as I had been trying to do.

[2] She wonders why I frequently stay up til 2am or 3am (or 4am as it is tonight) just to struggle to wake up at 9... it's when I get the most peace and quiet as she's sleeping but I can't tell her that as I don't like to be on the receiving end of pain. Best to fool her into believeing I'm a geek! ;-)

5 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!