Older blog entries for taj (starting at number 12)

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.


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.

A long and somewhat self-indulgent story, but perfect as a diary entry.

About 4 years ago I replaced the old foxpro-based timetabling system for the department at which I used to work at my old university. I rewrote it using C++ CGI and mysql on linux, it took me about 8-9 months to write. A lot of time was spent coding around the weird schemas that we had to keep to maintain compatibility with the old foxpro-based administration interface.

For a good few years it ran beautifully on the only "server" they were willing to give me on their meagre budget, a tiny old (now) 486/66 that didn't sweat under the load for many years.

Last year however, about a year after I moved on to the corporate world for good, they figured it was running so well that the rest of the university decided it was time to buy into our system and soon little old "lift" was handling over 70% of the university's 30K undergrad students, allowing them to view, edit and approve their timetables over the web.

Lift was finally at the end of its useful life as our timetabling server. Load was at around 15 most of the day, mostly because of the CGI and the size of the database. So I took a few days off to go and help the guys out and moved the entire system to a P2/350 they had sitting around. Everything was ok again, and load came down to ~ 1.5 at the heaviest periods of usage.

I was left with a nagging fear that even though I had put a lot of effort into writing the application well, the cruft from the old admin schemas and the fact that the whole thing was C++ didn't bode well for whoever took up maintainence of the system and it was likely that they'd come running to me for help whenever they needed a new feature. So last week I redesigned the schemas rewrote the whole thing in zope and a little python, including the admin system, in about 10 days of hacking whenever I felt like it.

MY god how far web development has come in the last few years! I can only partially attribute this hack to an increase in my own skill and focus as my experience grows, but a few years ago people were still writing non-persistent CGIs in C++ for anything more than toy apps. I'm almost mortified.

I've finally got a really good excuse for my friends at the School of Physics to never bother me with timetabling problems again. I'm happy about this, because they're really cool guys and I'd have hated to leave them hanging on a project that is at once invaluable to the entire university and paradoxically (common at this university), heavily heavily underfunded. They're smart, and I know they'll pick up enough zope to keep the system up to date in about half an hour.

A happy ending for all, a great weight off my shoulders, and an eye opener at the speed at which the ease of developing complex applications is growing.

My giving up gvim for a full-blown IDE, however, seems quite far away at this point. Especially now that I have the brilliant Konqy to complement gvim and konsole.

4 Jan 2001 (updated 4 Jan 2001 at 13:02 UTC) »

Hmmm turns out P::R is pretty slow. What a surprise. I guess it has something to do with not being able to parse directly from a stream, a perl limitation. It works a lot better if I split the stream into statements and parse a statement at a time, but then there's the annoyance of having to break it into statements again. grr

Good party at Emi and Mick's on NYE. They're going to be great together. Too much shiraz cab, painful monday.

TestGridTESTgridtestGRiDgot a week to get this project wrapped up so in can get to linux.conf.au on the 16th without a guilty conscience. I swear I'm too nice a guy.

One of the worst things about dictating that a company standardize on a development platform is that it makes it harder to use the right tool for the job. A few of the projects we are doing could be done in a fraction of the time using zope, but would be "easier" in an infrastructure and management sense, to maintain if we stuck with weblogic for all our stuff. How does one approach this problem? One can't dictate that the company always have an expert in each deployed playform at hand at any time. Otherwise we'd still have a guy just looking after our crappy old filemaker sites.

Additionally more and more of our larger clients are entrusting their internet presence to server-side Java, so our larger projects, technical issues aside, cannot really be done in anything but J2EE.

Zope is really a wonderful thing, already there are rumblings amongst the self-proclaimed "digerati" that python and zope in particular are a new wave in web development. I'm inclined to agree (particularly because I've grown quite fond of python), but both the language and its killer application have some growing up to do. Sun have really put a lot of effort into defining APIs and standards to write the kinds of applications big companies want.

Even though J2EE is large and cumbersome, I do not believe that an interface that addresses such a large number of enterprise software issues has yet been created on any platform. IMHO in the matter of Java vs Everyone Else, Everyone Else has some catching up to do. Most of these technologies have existed for decades in the form of disparate products, but nobody has so far tried to - or had enough influence to - pull it all together like J2EE.

God I can't wait to get to the conference. CALU was so much fun, and this looks like it's going to be bigger, better, faster, MORE!!!!! etc

Filling out and sending yet another timesheet to the pimp reminds me of my life goal to remove all drudgery from my life through computers. I'm sure there's a business plan in there somewhere...

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