Older blog entries for doxxx (starting at number 11)

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

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 ;)

RMS or ESR?

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: http://www.doxxx.net/. You may also mail me at gordon@doxxx.net. 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*

26 Oct 2000 (updated 26 Oct 2000 at 14:15 UTC) »

I've just hacked up an HTML version of my resume. Please have a look at it if you're looking for a geek/techie/programmer type of person to employ in the Hamilton, Ontario area (or within a reasonable commutable distance).

Do you have any idea how difficult it is to find a job from the other side of the planet (i.e. in Canada from South Africa)? Well, let me tell you, it's not easy. I guess in this "electronic" age, physical presence still counts for something. I have applied online at various jobsites and my current employer is using their contact with a recruitment agency in Canada to try find something but nothing has come up. It's rather discouraging...

P.S. If you want to offer me a job, you're in the Hamilton, Ontario area (or within a reasonable commuting distance), and you're willing to sponsor me for a tempory work authorisation visa, give me a shout.

I'm contemplating/investigating registering a domain for myself: doxxx.net. For the moment, I would want to just have a URL forward on www.doxxx.net to my Xoom website as well as email forwarding to my current email address.

However, at a later stage I would like to be able to maybe point the domain at a permanently connected machine of my own and administer the domain and net myself.

So basically, I'm not really interested in hosting services or anything like that just a cheap registration and some placeholder DNS with web and email forwards.

If anybody has some suggestions on this matter, please mail me.

Created pages for my two current projects: Katy and JPythonJB . Katy is a text editor for KDE and JPythonJB is an OpenTool for JBuilder which integrates JPython.

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