Older blog entries for taj (starting at number 14)

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.

Nerd Social. Caught up with Paul Dwerryhouse, Sharkey and his brother Nick last night at the Napier, another good geek night out. Paul still stands as my first recruit to the KDE cause. Pity that the Dutch have given him so much to think about that he doesn't really maintain kticker any more, but he seems to be happier just using Linux rather than developing for it. kticker is a cool little program, but knewsticker already seems to have taken over its little niche on the Desktop.

Muzak. Hacking my as-yet-unnamed PyQt hack to Devin Townsend's latest album Physicist. What a guy. I just go out and buy his CDs (SYL I & II, Ocean Machine, Infinity, Christeen and now this) and I haven't been disappointed with one. Nobody mixes extremely fast and heavy grooves with melody like he does - no matter which genre you put him in, be it prog rock, melodic rock, death, speed or black metal, the established bands had better watch out. Of course having Gene Hoglan (after chatting with him last year, I can see why he's such an aggressive drummer), Jed and Byron on your side doesn't hurt, and his production is spot on as usual. Maybe I'll be able to meet him in Vancouver and give him a big hug for all the hundreds of hours of sonic happiness he's given me. :)

Unnamed PyQt Project. Wrote a psql-like utility to use with gadfly in 40 lines. Rip out the command line and put in a QListView-based query browser - 45 lines. I like python, I love Qt. Writing a cbb clone is just not a challenge, I estimate around 200 LOC. I'll implement it and then aim a little higher. I want to be able to do expenditure and balance projections, and really take advantage of the fact that I've got a fullblown SQL engine built into my app.

Oh my God. I'm doing financial programming again VOLUNTARILY after promising to myself I'd never do it again after my stint at AXA. Hmmmm... what's changed? Maybe it's coz I'm not dealing with actuarial systems guys this time, nor with that horror C++ Builder. Admitted, it's very very basic as yet but who knows where this will lead.

I can almost see the actuaries grinning. Welcome, welcome young man, back to the joys of programming money. Welcome back to the fold.

*shudder*

Noted that gadfly doesn't fully implement the current Python Database API spec. Maybe I can fix some of that and send the author a patch. Being able to rip out gadfly and plug in another transactional SQL server is very important to me.

Bah. It only took BEA one revision to turn a decent platform to a crap one. Weblogic 6.0 really sucks It's flaky, doesn't conform to the EJB 2.0 spec properly, and provides so little runtime feedback that one gets the impression that they want you to buy WebGain Studio just to debug your application. What use is an error message like "JNDI name does not exist" without mentioning WHICH JNDI name??? On top of that 6.0 doesn't come with a Linux version yet. grrrr I knew this would happen, as soon as I noticed that 5.1 had 8 service packs.

The only reason I allowed the team to start using this piece of garbage is because we needed the 2.0 MessageBean, because of course nobody thought that a bean might want to listen to a JMS queue! The options were WLS 6.0 or start a separate JVM just for the queue listener. In hindsight one more JVM per deployment is nothing in the face of flaky software and unavailable documentation.

That said their support team has been pretty good. But a support team is not a supplement for written documentation, or even DTDs for config xml files.

Until I can get docs and run this server on my Linux workstation (or even, heaven forbid, our linux servers), I'm going to bitch and moan like a burn victim. I don't have the time to hunt down a solaris machine, install the program there and copy it a linux machine... and hope that they actually meant what they said about "100% pure Java Solution".

Perhaps a change in career is in order. I could become a decent chef or a carpenter.

Back from LCA, what fun! I've decided that airplanes are generally ok except for the landing bit. On the trip back from Sydney, the pilot today was obviously having some trouble due to the strong winds. Add to that the fact that economy class seats are not designed for shoulders like mine (ie people sitting next to me better be ok with getting cozy) and I've come to a life decision that I will try to sleep through every single moment of every trip I will henceforth take in a commercial airliner. I'm guessing this whole New Economy stuff doesn't apply to airline passengers.

My talk went as well as I hoped, and all 5 people who turned up instead of going to Rasterman's Pretty Picturefest seemed happy enough with my brand of monotonous drone. I didn't get through all of my material and ran out of question time, luckily my abrasive personality didn't stop many of the 5 people coming up to me and chatting after the show.

I got to chat with a LOT of people at LCA, and I'm glad I got some email addresses coz I would forget too many of the conversations.

Meeting two rather famous GNOMEs was one of the major highlights though. Now if only I could meet some KDE developers...

I've committed an autoconf test to require perl 5.6 for kdoc. Let's see how many "kdoc hangs!" reports are now replaced with "kdoc didn't require perl 5.6 before!" (note to self: prepare a boilerplate reply)

If this works my life will be 50% better.

I just read Bob Alsina's little one-man-army flamewar on linuxtoday. I prefer the "write three words, but make them the truth" approach, myself. But Mr. Schaller can bring out the worst in anybody.

I've promised to do a talk at the LUV Programmers' SIG either about my talk at LCA, or about PyQt. Since I remember feeling like I was pulling out my own teeth at the LCA talk, I think I'll try to get a working version of my gadfly/PyQt hack complete and talk about that instead. I have a whole month, woohoo. I'm happy that TestGrid is effectively finished and the folks at work now owe me some Open Source hack...er... Software Engineering time.

15 Jan 2001 (updated 15 Jan 2001 at 12:13 UTC) »

After fiddling around writing applettes (not applets!) with PyQt, I've taken the plunge and started writing a small database-backed (using gadfly at this point, what a cool python hack!) personal expenditure program, somewhat like cbb at this point. This serves me in a few ways:

  • Find the strengths and limitations of PyQt
  • Doing some real KDE hacking after a long interval
  • If it turns out to be a killer app (heh heh) it may lead to PyQt and PyKDE being accepted as a viable alternative to writing serious applications for KDE.
This last one is of particular interest to me, because I feel many of the smaller applications written for KDE could be written with PyQt in a fraction of the time (I've empirically tested this theory so feel free to take my word for it). However like most language bindings it will take larger, compelling applications for users to accept the need to install these extra libraries, and for python-based applications to be accepted as a standard part of a KDE install. Hence my little financial programming distraction.

Off to Sydney tomorrow morning! whew if there is a better excuse to take 5 days off work than heading to Australia's biggest geek party yet, I've yet to hear of it. I might even get some time to play with PyQt when I'm not basking in Linux Gods' light.

And when I get back, it'll be almost time for my big day out! Hmm let's see... Bizkit, Rammstein, PJ Harvey, Superheist, Powderfinger etc... etc .. Carl Cox and the good old Melbourne doof-doof music mainstay, Phil K in the hothouse. Choices, choices... if anyone reading this is going, remember to TAKE LOTS OF BOTTLED WATER - the punters were paying 4 bucks for a bottle of water last year. I'm sure there's some sort of law against that.

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!