Recent blog entries for doxxx

Wow, my account still exists. And I remembered my password. :)

I've started contributing towards the Bazaar project. A lot has changed since the days of JPythonJB and Python 1.5...

Well now. How's that for a "long time, no post"? 4 months. Yeesh.

I am now ensconced in Hamilton, Ontario, Canada. My application for employment authorisation is in the works and I have all my appendage crossed in the hope that it will be approved. The company is really cool, one of those ideal techie companies.

Katy is coming along nicely and I've recently released version 0.3 which is a total rewrite for KDE2. Tons of things still left to do on it though 8) You are cordially invited to give it a whirl.

I also have been inducted into the glorious bliss of cable TV and cable internet access. I'd better watch out or I'm going to become one of those addicts!

Well. Today is the big day. Canada, here I come.

Heh. Well. I am now one of the unemployed. Packed up my things, said goodbye to everybody and walked out on Thursday afternoon. Bearing in mind that this is only the second job I've had (and I was fired from the first one by the samurai-sword-wielding-psycho-boss) , it's a bit weird not having to go to work every morning. ;)

But of course this doesn't mean I am without permanent free Internet access. Time to visit my g/f at university! ;)

Katy-wise, I've done some more work over the last week which has improved the rendering of the text especially when tab characters are involved (evil things that they are). You can also move the cursor now ;) You can even select text while doing so! *the.crowd.goes.wild*

Flippancy aside, next up is mouse support (click to move cursor, drag to select, etc.) and then add in CTRL-Left/Right word jumping. Oh yes, and text insertion/deletion/etc. ;) Preferences should probably come next so that the morons.. err.. users can select fonts and things.

Quiet weekend. Bought humungous suitcases on Saturday afternoon for our trip to Canada. Saw Charlie's Angels on Sunday evening. Quite cool in a Matrixy/KungFu kinda way 8)

I've put Katy v0.3 into CVS on SourceForge (project page) and will continue working on getting it up to the level of Katy v0.2.3 as soon as possible. My last day of work is Thursday, so from then on I should have more time to hack on Katy and other goodies that deserve my attention 8)

15 Nov 2000 (updated 15 Nov 2000 at 15:10 UTC) »


Katy v0.3 is coming along nicely. I did some more work over the last couple of nights and it now has decent session management support and is coded as a "unique" application -- only one instance will ever run and starting a new instance just sends a DCOP message to the existing instance. This all works funkily and in combination with session management too ;)

We also have a flashing cursor now. But you can't move it yet ;) I.e. next todo = keyboard support.

More EJB Unit Tests

I've had to come up with a method for unit testing our product's EJBs and I've settled on JUnit. It's quite cool. For the moment, since we're using Inprise's AppServer for our testing, running the unit tests is really simple (the vbj command sets up the environment nicely and then starts the Java VM with the JUnit test runner class) and I haven't had to add anything to the JUnit framework for EJB support. But to test this stuff on any other EJB server is going to require some sort of global setup thingy to be added to the framework which does the initialisation necessary for the EJB server in question. And that I haven't figured out quite yet because I couldn't get the TestDecorator subclassing to work which seemed to the Right Way (tm) to do it. "Bother," said Pooh.

Stackless Python and Funky-Eye-Candy Games

Stackless Python is a modification of the standard Python 1.5.2 runtime so that it does not use the C stack. This has some quite cool benefits and it seems to have convinced a game company to write (at least partially) a game using Stackless Python. The game in question being EVE-Online. Can you say EYE CANDY?

High-speed Internet Access in Canada

Since I'm going to Canada, I'm curious to know what sort of high-speed Internet access options there are? Cable modem? ADSL? Something else? Coming from South Africa where 56K dialup is the most common for home Internet access and the only faster option being weird satellite hookups, I really am clueless about this sort of thing. Info, anyone?

EJB Unit Tests?

Seeing kbob's diary entry 1 Oct 2000 on unit tests, I'm wondering how one would apply this to EJBs?

I've read a bit of the extreme programming concept and I always thought it was a good idea but it needs the participation of the entire team and to start applying it to an existing project seemed difficult.

But I digress. How to apply this to EJB? Just off the top of myhead... Each EJB implementation class has an inner class called UnitTest? And then any EJB can be tested by creating an instance of that Bean's UnitTest inner class and calling it's test method. For example:

public class FooBarBean implements SessionBean
    public static class UnitTest extends AsbtractUnitTest
        public void test()

... }

A few notes:

  • The UnitTest innerclass is static so that you can create an instance of the UnitTest without an instance of FooBarBean.
  • The AbstractUnitTest class defines an abstract method called test which is overridden in FooBarBean.UnitTest. I'm not sure whether it should be an interface or an abstract class. I went with abstract class because it provides the option of providing helper methods and data in the abstract base class (like logging, pretty printing, etc.) that can be used by the UnitTest subclasses.

But this construct can be applied to any kind of Java class. There are special considerations that need to be made for EJBs. EJBs need to run in an EJB container. For clients of those EJBs (i.e. the UnitTests) to access them, they need to have the container-specific classes for accessing that container on the classpath, they need to know what class to use as the JNDI provider, what JNDI URL to look up objects in, JNDI authentication details (if any), etc. Now one could either put in infrastructure (possibly in AbstractUnitTest) to handle configuring all that when running the unit test or one could fake it. By faking it, I mean faking the fact that the EJB is running in an EJB container.

An EJB implementation class is a passive thing. It is called by the container to perform various operations (create, load, store, active, passivate, etc.). Thus, just like an EJB container generates implementation classes for the Home and Remote interfaces which call upon the EJB's implementation class, the unit testing framework could do a similar thing. However, this means that extra classes need to be generated and compiled just for unit testing which may not be desireable. One solution could be to use generic implementation classes that use the Dynamic Proxy Class technique available in JDK1.3

Yeesh, I yak too much. Basically, I think it would be possible to build a generic EJB unit testing framework but it's not trivial. ;)

I have dilemma on my hands. My main project Katy as it currently exists is a KDE1 application that is semi-stable, with a few useful features. What with the advent of KDE2 and my subsequent installation thereof, I have started re-writing Katy for KDE2. It's going quite nicely (one always seems to do better the 2nd time round) and I'm hoping to have something useable with at least some of the features of the old Katy in a week or two.

But now what do I do about the KDE1 version? I'm sure that there are people who will continue to use KDE1 and will want to use Katy (maybe ;) and so I don't want to just dump them. But on the other hand, KDE2 is where it's at now and I can do so much more cooler things with it than I could with KDE1.

Should I try to develop both in a parallel fashion? Should I just keep Katy 0.2.3 as the last KDE1 version and say KDE2 is required for all future versions?

Hmmm... I must admit that I'm inclined towards that last option. It seems like just far too much work to keep two parallel versions going.

Besides, Katy needed a rewrite anyways ;)


This evening (well, really yesterday evening, it being 1:42am), I was able to attend a talk by Eric Raymond. Eric is in Cape Town to present a talk at SAICSIT-2000 on Thursday morning. Our local Linux User Group, CLUG, met him at the airport, dragged him around to see Cape Town's sights (that was the plan, last I heard) and then brought him to UCT for the meeting.

I enjoyed it thoroughly! He's a pretty good speaker and what he said made a lot of sense. Not having been to a talk by Richard Stallman on Free Software, I can't definitively say whether I am an RMS or ESR person. But! My current leaning is very much towards ESR. He has a practicality to his viewpoint that, quite frankly, RMS lacks. And it appeals to me.

DNS Goodness

Thanks to the generous donation of DNS hosting services by sh, my homepage may now be viewed at: You may also mail me at Much bowing and scraping in gratitude to sh. 8)

Of course, now I just have to find a decent (and preferably free, but who am I kidding) web hosting service that doesn't plaster banners all over the place and is willing to have a DNS entry pointed at their webserver.

Certification Duty

Oh my golly gosh. I had a look at the people list. How am I ever going to get through that? *faint*

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