Older blog entries for taj (starting at number 18)

Hi Bob!

The jBoss project is quite impressive. It's eventually going to be a serious contender in the J2EE app server space and you can't beat the license. This is one of the few projects that gives me hope for large-scale enterprise applications written in free software.

Discovered some IBM JVM issues on Linux 2.2.x SMP boxes. Not really 100% reproducible either so I haven't tracked it down.

Nicole is down from Vancouver for a few weeks so not much free time to do a lot of KDE coding. The only visible thing I've come up with for a while is a patch for am_edit for Q_OBJECT detection. The bug reports for my apps are still coming in at a healthy rate - I wonder if I will have time for all this stuff before I leave. I hope I do, as it doesn't look I'll have the resources to do much programming in India. I need a laptop.

There is news floating around that someone has implemented rudimentary precompiled headers in GCC and it speeds up KDE compiles by a factor of 10 or more. Amazing! Can't wait to get my hands on it.

22 Mar 2001 (updated 22 Mar 2001 at 17:09 UTC) »

kjots is a real shame. The idea of having a Palm-like memopad is a good one but so many limitations! I wrote up a short perl script to try and sync up kjots memos with the palm but kjots behaviour and usage of files to store its memos is just weird, so only download from kjots to palm works right now. It's been abandoned for a long time, so I'll try and have a hack at it next week.

Looks like I've been certed master. I'm not sure what to make of it.

KDOC is getting really, really close. From last night it can correctly document the typedef struct { ... } var,... stuff that C programmers are so used to. I'm annoyed that it's taken this long and so much work to make this program worthy of "near completion" status, but in the process I've learned a few things about myself:

  • I appreciate languages that help me write good-looking code.
  • When writing free software, everything seems to me to be a grave bug or missing feature. Funnily enough I have no problem prioritizing these things when I'm at work.
  • I don't like perl as much as I thought I did two years ago.
.. and a bit about perl:
  • Cute features that make life easier when you're writing a short script won't scale. When you start writing a program and a prototype turns up to be roughly 1.5KLOC, it's time to think about whether or not the program is going to grow. If it is, it's time to start refactoring immediately. I don't find this so much of a problem with other languages as I tend to overdesign even the simplest apps. Perl's temptation to throw caution to the wind snuck up on me.
  • In a larger program with large data structures, more often than not you're going to be dealing with references. That's when you find out how strange-looking perl can get.
  • Sooner or later you're going to use the perl profiler, and that's when you learn how much just that one extra function call can cost. When that function call is just hiding some small but dirty code, the decision about what action to take can be a hard one.
I still like perl a lot, but I'm going to think long and hard before I use it to write a program that I expect to grow in a fairly amorphous way. When using C, Java, C++ or even python (at which I'm still mostly a novice), I factor this in without thinking. But somewhere in the perl<->taj interface this natural bond is not being formed.

It's been a good book month. I really enjoyed Yukio Mishima's Confessions of a Mask, Hannibal was a waste of precious time, Iain M Banks' Look to Windward was good in parts (I loved the ideas and descriptions of the dirigible behemothaurs) but it dragged on a bit.

oh and... test cricket is interesting again! Anyone who has been keeping up with the Australia/India series knows what I mean. :)

The wrong version of kdoc got shipped with KDE 2.1, so the head version will get shipped this time. This is a good thing, I've done a lot of heavy work recently and hopefully this will reduce the repeat bug reports I get. Surprisingly the number of people who complained about kdoc requiring perl 5.6 was quite small.

Time to make a new web page for it now. A good sample page for learning CSS for when I redo the kdoc HTML output with using CSS. I can understand why max doesn't have zope installed but it would be handy if it did.

Python support in KDOC, plus major bug shakedown (god weak typing is a pain sometimes), has been committed to CVS. The main limitation right now is that doc comments are not supported. As I am new to python I'm not sure what the generally accepted protocol is for these, but I'll hack out a decent attempt tomorrow. Once I can get passable generated docs for my python code, I can go back to programming python again. Not long now.

Nicole starts a new job today. My thoughts are with her.

This long-distance stuff gets old real quick. Gotta get my butt over there ASAP.

So I'm trying to get my internal system clock back to Australian time. I had forgotten how much weekday mornings sucked. But getting home before it's dark is quite cool; tomorrow I shall depart the office at exactly 5pm with impunity.

Registered for Blast Radius 3. BR2 was good fun and I hope not to get my arse kicked as badly as it did last time. I guess I couldn't have expected any less considering I picked up a copy of UT the day before just for the LAN. :) Bring em on boys. Someone's got a little practice in.

Why are these nvidia drivers so damn buggy, though? Surely a set of drivers that won't lock your card when you quit X is not asking far too much.

dum de dum summer's almost gone. gotta chase it

After KDOC got a new(ish) lease of life from the KDE java binding work that Richard Dale did, I was inspired to add python support to it. It was surprisingly easy, parsing python is trivial. Most of the work went into preparing kdoc to accept another parser backend. Now I've done that, I guess I can properly incorporate the java and Objective C parsers that have been lying around rotting for a year. It's nice to be able to get python API docs in a familiar format, it basically looks exactly like the KDE API docs (for better or worse...)

I'm done with the plumbing for my finance app now, linked controllers and views seem to work perfectly now so I can spend some time making it look pretty and generating nice reports. It would be a useful exercise to try to replace gadfly with something like postgres, too.

KDE 2.1 is just so l33t. That time spent reworking the guts of kdelibs from the 1.x days sure paid off in the end. I'm constantly amazed at the lego-like flexibility of our framework. It's all coming together...

I managed to get my app together in time and showed it off at my talk tonight. I was SOOO late, but the folks at the meeting were quite forgiving and even appeared to not fall asleep during the talk.

  • There are more python programmers out there than I realized.
  • Fixed around 10 kdoc bugs since my last entry.
  • A KDOC bug reporter mentioned a showstopper feature that should be quite easily implementable using the infrastructure I built around the @defgroup/@group tags. Externally overloaded operators need to be logically associated with the classes they customize in the docs.
  • Dimmu Borgir make some scary music, nordic black metal isn't dead yet.
  • Tempted a great deal to use napster after checking it out at a friend's house, but I still can't get myself to use it. I can't reconcile myself to wholesale piracy.
I expect people to respect the licenses and copyrights I associate with my software, so it seems right to respect those of the distributors of the music. I'll just go out and buy some more CDs instead - that is one of the advantages I had hoped for by going out and getting a real job. Then I'll sit back and try to find some other way to encourage the music distribution revolution.

Wish Baldur's Gate worked under Linux. I guess the upside is that I play it a lot less this way...(ie not at all - can't remember the last time this machine was booted into windows)

Finally upgraded to Zope 2.3.0 at work, I really like it. For example the GenericUserFolder stuff is a godsend, I wonder why it took till this release to add something like that. Most "serious" zope apps will have their user data and/or authentication routines external to the zope object db (eg PAM or RDBMS). ZPatterns is also looking good, I wish I had some more time to fiddle with it.

I'm trying to think of ways to help sell Zope to my colleagues in the ecommerce business. The most common comment I've heard is "if it's so good then how come nobody's using it?" It's even more annoying that so many people who choose to be professional software developers are so closed to learning new stuff. I used to think that my reckless appetite for technical information was normal in this business, but after seeing so many people close their minds to learning their tools well...

I've begun to use Qt's signals and slots quite heavily in my python app. It's often overlooked that signals and slots are a nice way to build OO frameworks (GUI or non-GUI) using very loose coupling. In this case I've implemented a nice MVC system, with coupling between controllers and views and other controllers done via signals and slots. I'm hoping to show it off at my PyQt talk next week, so if you're reading this and are in Melbourne on the 27th, come down for the LUV Programmers SIG meeting. :)

Speaking of speakings, Telsa was nice enough to put up the notes she took at my LCA talk. Now I have to turn this into something less rambling and disorganized than my talk. Next month...

Self pity. (aka "Oh Woe is Me!") Can't say I like the whole song and dance about the Ximian/google/KDE thing, but there is no question in my mind that ad is rather tacky. Even two years ago, who would have thought that free software project rivalry would come to this?

OTOH, It's an unwitting admittance from Ximian that their business model depends on the demise of KDE as a real desktop contender, which is quite scary.

I know I started hacking on KDE back when it was first announced because I loved Qt from the moment I wrote my first cheap little mandelbrot set viewer. I never thought that I'd get involved so deeply with the dark underbelly of free software politics and feuding.

("Are you the Judean People's Front?" "We're the people's front of Judea!"... "Whatever happened to the Popular Front of Judea?" "He's over there")

Watching this stuff is very demoralizing, and takes away some of the pure enjoyment of programming for its own sake.

Still, one can't but help feeling defensive about a project into which one has sunk thousands of hours, even if my initial goal was to enjoy programming for programming's sake.

End sob story. I'm enjoying Python and Qt a great deal, and have been getting in to work quite late as I've been staying up and hacking on finans/finanswers/fin...blah blah (why is it so hard to come up with a name for a program? I've never had this problem before...). Having an SQL engine in the form of gadfly built into the app, even discounting gadlfy's limitations, proved to be a good decision. I'm proud of me.

When faced with many things I wanted from QListView (eg in-place editing), I was lamenting the lack of something like Delphi's TStringGrid component in Qt when I found QTable/QTableItem. What a great widget! Better than T*Grid in every way, and infinitely customizable. Reggie really did a great job on this. The Trolls hit a goldmine when they hired him.

On reviewing this entry, it seems I will continue to use cliches in my diary entries till the cows come home.

7 Feb 2001 (updated 7 Feb 2001 at 09:47 UTC) »

Since my last entry the following things have been achieved:

  1. Simple graphs in the finance app, using QCanvas. It was easy to do but I'll probably have to rewrite it for printing to work properly.
  2. Volunteered to have a friend's birthday party at my house. oh no! what was I thinking? Two days to make stinkybachelorpad presentable.
  3. Got the Solaris version of WebLogic 6.0 working on Linux. Not expecting BEA to support us with this one. :)
    taj@hubris ~wls> ./weblogic600_sol.bin LAX_VM $JAVA_HOME/bin/java

  4. Closed 14 KDE bugs. Expect to close another 10 or so tonight.
Random observations:
  • IBM JDK is quick.
  • Python is wonderful.
  • I like my new Palm IIIx. Must learn how to program it.
  • I have no vegetables and my video player is broken.
  • Setting up a cross g++ for arm linux on i386 is a road fraught with peril.
  • Compiling KDE out of CVS for 4 days straight hoping nothing breaks the compile and that ld won't choose to sig11.... is also fraught with peril. Imagine that by the time you finish compiling the latest CVS on a netwinder, you are out of date by 4 days. Huh.
  • xg++ == lesser of two evils.

  • Must try FreeBSD on llama before I have to sell it.
  • Living alone for 3 months leads to the annoying of other KDE guys on IRC.
  • Mosix seems very impressive. I'm sure it can help me make my room full of junk computers moderately useful again.

The Big Day Out was crowded, tiring but lots of fun, Rammstein stole the show as expected with their fiery and very very camp performance. I am convinced that Rammstein are the noughties equivalent of 80s stadium rock. The highlight was running into Byron of SYL, who was wandering around scoping out the crowds for their upcoming Australia tour in April. I honestly felt like a giddy teenaged groupie for a moment, but we ended up having a good chat.

Real-life TODO list is becoming smaller, which allowed me to create a first run of my as-yet-unamed-cbb-like-PyQt-application. It works pretty well but it's not spectacular - it does everything that cbb does except the graphs, but it's going to need to be far more snazzy before anyone is going to download it.

It has proven a point though - writing it was extremely easy, especially considering I'm not exactly a python expert. The code is legible and required almost no debugging during development (past my learning bits and pieces as I went along). Additionally I have something for my little show-and-tell at the Programmers SIG next month.

The most striking side-effect of using a non-native GUI toolkit with Python is that python doesn't appear to recognize the ownership of Qt objects created in python code, by other Qt objects. For example, if you create a set of QListViewItems and populate a QTableView with them, you need to maintain a reference to them in python or they will be GCed at the first opportunity. The fact that the QTableView maintains references to the items internally is understandably overlooked. It was an annoying artifact to locate but easy enough to work around once writing code. I guess it should be mentioned in the PyQt docs.

Starting a new project at work from next week. Got a few days to wrap up my current project and pass on the reins to some poor maintenance sod. Life is vaguely satisfactory.

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