Recent blog entries for msa

Well, I solved one of the problems in disttest. Now each slave node spawns their own Xvfb that acts as that slave node's X server, thereby eliminating the congestion on any ~/.Xauthority file or on the listen queue. However, for some reason Xvfb sometimes spontaneously segmentation faults! This happens relatively seldom, but is still an annoying bug in Xvfb. I haven't been able to pinpoint the reason yet. All in all, disttest is still a useful tool for distributing the testload on several computers, reducing the time almost linearly with respect to the amount of computers (I've tried over 10 nodes), restricted by the greatest execution time of a test.

We also released version 0.8.1 of Coral, a general-purpose modeling and metamodeling tool, supporting XMI as input/output format and the Diagram Interchange standard for diagram information in UML 1.4 models. The summer interns have been working on a constraint checking tool, which seems to do its job really well. Other new stuff in this release is improved round-trip support for Eclipse EMF models, as well as various bugfixes and improvements. Unfortunately we seem to have lost some compatibility with Poseidon, since they have started to use some UML 2.0-like constructs in their I/O format.

With Microsoft publishing their DSL tools, and although there still might be a considerable hype factor involved, one wonders if open-source programmers should try out more modeling and code generation techniques?

As an example, in Civil we had some state machines written in Python: the user interface was stateful and the army units had their plans and states for their current and forthcoming actions. Although code-wise we certainly could have done better, we could also have tried having some diagrams and plugged in some code where needed.

As another example, one would think e.g. a common format for specifying interfaces using UML diagrams and generating interface declarations in different languages could be useful, although that is a lot easier said than done. SWIG is an impressive effort, although I have not been friends with its idea of "This object "belongs" to the C++ code, whereas this belongs to Python", which sounds, and is, horrible. Objects in current mainstream languages like Java, C#, Perl and Python do not belong anywhere; when the refcount drops to zero (or the VM finds a cycle), the object is garbage-collected by calling the finalizer and reclaiming the memory, that's it. Then again I understand the pragmatic point of view, since SWIG can be used to wrap old C and C++ libraries for new languages with moderate effort. Also, if there were no issues in creating wrapper interfaces, then a specific language would not really offer any significant benefits over some other language, would it? They would all be the same language, like the CLR.

Put up two programs we've been using a bit on our projects.

Disttest is a distributed unittesting runner. You simply set the DISTTEST_HOSTS variable to a space-separated list of hostnames to connect to using SSH, and then run "disttest". The nodes must all have the same filesystem (usually an NFS-mounted /home) and have the Disttest program installed. You even gain a bit with just one computer by setting the variable to "localhost localhost". :-)

There are currently two annoying problem with it, though. For some reason, 1) the unittest program connecting to the X server sometimes fails to provide the correct authentication, and 2) sometimes the actual connection to the X server can't be established. I think these are related to 1) congestion on the shared .Xauthority file, and 2) a too small listen() queue on the forwarding port by the SSH daemon. Both problems show up when using too many (over 4?) hosts, which is the whole point of the program! Sigh.

PyCov is a python code coverage calculation tool. It can be used to check how much of the code your unittests use, to detect functions or whole classes which are unused. Admittedly it's a bit of a rush job, which shows up as an ugly interface and a lack of understanding of inner classes/functions etc...

Tried to find documentation on the Eclipse EMF metametamodel, but could only find some old pictures in a book; finally had to surf some JavaDoc pages and by trial-and-error, the head version of Coral currently seems to be able to load ECORE models (Eclipse metamodels).

Went to the EWMDA-2 workshop in Canterbury. Not much to say, I was sick during the whole trip. Perhaps I am allergic to the MDA initiative?

Didn't see any ghosts either. :(

Went to the UML2003 conference. Held a presentation about difference calculation between two models, and taking the union of several changes done to a base model. The conference was nice, with the panel discussions and invited speakers being the most interesting.

San Francisco was an interesting city as well. Hills up and down, looong streets, neatly laid out in a grid. Weird how the setting changed so quickly. First you're in the tourist area, then in the "better" apartment areas, then Chinatown, Financial centre, shopping centre, and suddenly in some less appealing places. And people were extremely nice, which surprised me. Several people just nodded to me and greeted in passing, which would never happen here (.fi).

It's been a great summer! I went to the University of Twente in Holland to the MDAFA2003 workshop which was really nice. It seems to be a bit of a "thinktank" for modelling-related questions. Friendly and clever people. I also met a relative whom I hadn't seen for ages, and spent a couple of evenings with him and his friend. We've also decided to go to the UML 2003 conference in San Fransisco later this year.

I've moved to a new apartment here in my home town. I'm very happy with it, and after buying a new computer and getting the ADSL line moved in I'm ready to surf again ;)

I'm back! I somehow managed to lose my Advogato password and cookies. Not wanting to create another user, I was a bit lost. But then I got hit by luck: the Mozilla password database.

I had at some point said "remember this id/password", and it actually did know it! So logging in was easy, as long as Mozilla's database was ok. Unhappy with the situation, I naturally wanted to extract the password from Mozilla. Unfortunately (well, you could say smart design), I didn't know how to do this. So, away with cookies, start Mozilla, tcpdump port 80 traffic and let Mozilla log in myself. Password easily extracted from the traffic dump. Schweeet.

So, what has happened? Well, I did graduate. It feels great, I recommend it to everybody :-). Then I've been doing my PhD studies for a couple of months. Without an actual subject, I've been looking yet more into modelling and metamodelling, as well as some other stuff people here at the department are specialised in. That's the theory side, in practice I've been coding some C++, which is less cool, given that salaries here are, naturally, academic... We are writing a paper for the next UML conference. The deadline is pretty soon, so we'll see shortly how things are going...

Hmmm not very active now am I?

We've been working really hard on Civil, it is looking much more playable than before. Which is good. Downsides are there are quite a bit of stuff that is either broken or unimplemented, but we'll get there... Cool news is that Mandrake Cooker picked it up in the contrib section :-)

Personally I'm going to bits and pieces with my thesis.. Working is ok, explaining your work is boring. And I have a deadline. Bah.

Civil has reached version 0.80, woot! This release has debian and redhat packages available, so I hope we will get some feedback, chakie and TheCorruptor have worked really hard to get so far. Unfortunately we almost immediately found a couple of severe bugs, I do hope people won't be too disappointed and instead see that it has a great potential of being a very playable game!

Mantis seems ok for small enough projects, but I really dislike how it doesn' integrate into the SCM at all - one has no idea what commit fixed a certain bug. Also, it doesn't keep a very deep history of the bug's state, only the most recent state.

I've tested the bugtracking system Mantis a bit. It's seems quite good for small enough projects, but some features seem to be missing. I'll say more when I've used it more... The maintainer seems to be active, which is a very good thing.

Civil got some nice gfx by TheCorruptor, very good-looking small infantry figures :). Can't wait to see the cavalry and artillery units! Made the editor faster, and added a primitive undo function.

Had my last exam on Tuesday, and it went quite well. Only things left are a laboratory work (deblurring of images) and the thesis... The course in computer vision has been interesting, even though it's quite basic stuff. But how i hate Matlab! As a programming language, it simply sucks bigtime and forces one to use bad solutions, because of a totally underdeveloped language. Argh!

Work on civil has been nonexistant for me, but others have been a bit active on the AI side. Sweet.

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!