Older blog entries for NickElm (starting at number 13)

Away from my current CSG implementation for a quick breather. This stuff is getting pretty complex, and I'm not sure whether my solution is very efficient and/or nicely designed. My approach to software design these days is very much based on my gut feeling as opposed to sitting down for hours with UML diagrams and design guidelines before doing anything. And this is after four years of university CS training! That only proves that design is a very individual process. I prefer to sketch my designs in code in something akin to XP, while others want (need to?) work it all out on paper before they implement something.

It's funny how design patterns change your life. Not that I didn't use them even before they had a name (of course I did), but I can't for the life of me remember how I used to think about stuff like trees, traversals and factory functions and so on. Actually, by now, I'm having a hard time remembering how I used to traverse trees before visitors, decorators and composites came along!

Ahh, well, enough with this, now it's time to go back and pick up where I left off with this CSG code.

I'm still here, burning the midnight oil (well, not really) while almost everyone else here at the Medialab are off on vacation and frolicking in the sun. Lucky for me, there isn't much sun to speak of here, and the weather is actually best suited for being indoors and working.

Disappointing weather aside, what is it that keeps me working here when I really should be off on vacation? My master thesis, of course. For certain reasons (more specifically, an attractive job offer), I need to finish it this summer (I will present it at the end of September), and so here I am, toiling away at 3Dwm for at least eight hours a day. It actually is quite fun, and I am getting a lot of work done.

My current order of business is implement CSG (constructive solid geometry) support in 3Dwm and integrating it with the 3Dwm scene graph. This is an interesting problem, and I am pouring a lot of time and creativity into my solution. Currently, I am thinking of using an object-based algorithm to generate an intermediate boundary-representation (b-rep) of the CSG tree (as opposed to an image-space one where you render directly from the CSG representation), probably with the use of BSP trees. This scheme will let me use hierarchical caching of the different components of the CSG tree, something that is very important in a distributed system as the 3Dwm display server.

Anyway, back to work! There are lots of polygons to split and vertices to generate.

Well, LinuxTag 2001 is over. Me and Rob are back from Stuttgart, Germany, and resting up after four days of standing around on the show floor for eight hours talking to interested people and demonstrating 3Dwm in action. In retrospect, the show was a great success, and I think that we really showed the visitors something they had not seen before. I am anticipating that this will help spread the word on 3Dwm even further.

In addition to demonstrating the system to visitors at our booth, we also got the opportunity to discuss design and development issues with some of the Berlin developers, notably Tobias Hunger (hunger), Mourad DeClerk, and Marco Herrn. Too bad that Stefan didn't make it this year, yesterday we were able to exchange some great ideas at the exhibition.

We were also approached by a French guy who invited us to the LinuxWorld Expo Paris 2002 where we would get a free booth with furniture. Unfortunately, I am not all that sure that we will be able to get funding for going there. We'll see what turns up.

My third full week here at Chalmers Medialab, and I'm desperately trying to think of a way to avoid having this diary entry follow the normal pattern of me banging my chest about what I'm doing. Well, don't think I can help it, so here goes:

3Dwm is still my number one passion, and will likely continue to be so for a very long time. This summer marks two full years that the system has been in development. That's quite an accomplishment by someone who used to have the attention span of a moth when it came to working on projects! Earlier, projects used to be exciting the first few weeks or months, and then decline in interest before they died out altogether. Ahh, what impressive projects have died at my hands! ;) So, there must be something special about 3Dwm for me.

At the moment, I'm cutting my teeth on the event mapping in the system. The problem is rather simple: how do we map raw input events from a wide number of heterogenous input devices to input commands that the system can recognize? Also, there comes the issue of global events, i.e. events concerning system-wide things like view control and system commands that should not be possible to override. stefan has helped me gain some insight here, and my current solution involves a special-purpose logic language to perform these things. We will see how it goes.

22 Apr 2001 (updated 18 Jun 2001 at 07:35 UTC) »

Still chiselling away at the event propagation stuff in 3Dwm. I actually spent Easter in Tarnaby/Hemavan a Swedish ski resort, so I haven't had the chance to do much than work on my tan and my downhill skiing, but now I am back in front of my computer again. My current challenge is computing the bounding volumes for the scene graph nodes and making sure that changes to these are propagated correctly in the graph. When toiling away at the design for this mechanism, I realized that this, and many similar things, are actually simply events that need to be routed and handled in the scene graph.

Armed with this discovery, I am now rebuilding lots of the scene graph code to also contain a generalized event framework. This will not only make it easy to add internal events like the bounding volume computation mechanism, it will also be excellent for input events that needs to be routed and handled by controllers in the scene graph.

Me and my friend Robert Karlsson, also a member of the 3Dwm core developers, are going to be attending a press seminar at the Museum of Architecture in Stockholm on the 24th of April. We will be presenting the project and demonstrating the wearable computer that we will use as a hardware platform for the system.

Well, well, it was a while since I last posted something here, but I saw that steveh has been doing some updates, so I thought I should do, too. After all, we're both in the same boat, especially now when we are getting back into 3Dwm again.

Yes, I've been gone for a while since around Christmas, busy with personal stuff and school. A fun little incident involving an emergency operation got me hooked on the project again, though, and here I am. :) Now for some updates on 3Dwm...

3Dwm and Chalmers Medialab recently teamed up with Xybernaut, the market leader in wearable computers, to integrate 3Dwm on the wearable platform. Just a few weeks ago, we received a shipment of two wearable units complete with some very interesting peripherals, including a head tracker and a data glove. Very, very cool. We will be spending the next three months at integrating 3Dwm on the platform and adapting it to use the amazing capabilities that are available. Maybe this will be the first niche for 3Dwm that can gain widespread use of the system?

At the moment, I am looking into event propagation in the 3Dwm scene graph. Input events and intersection testing in the scene graph are the most challenging parts of this mini-project, but the technical solution is very akin to collision detection using bounding volumes and I think that a lot of my current work will be usable for view frustum culling if done right.

Anyway, enough with the updates, it's back into design and analysis for me now.

All right, a small update before I go back to studying. The school term is nearly over, and all that is left are two exams. While I'm studying for those, I'm preparing an article for Linux Magazine about 3Dwm (of course!). That's going to be a lot of fun, I love seeing my name in print (provided it does get in print and not on the LM website, which also is a possibility).

Monday was an amazing day, what with having a Xybernaut representative over at Chalmers Medialab and he showing off their extremely cool wearable computers. This could very well be the the niche for 3Dwm that I have been looking for. I am eager to maintain the contact with Xybernaut and see how things turn out...

Whoa, long time since I posted anything here. Well, I've been very busy (usual excuse), both in school as well as working on 3Dwm. With the midterms behind me and 3Dwm 0.2.2 out the door (it did seem to cause a slight impact on Slashdot), I'm free to concentrate on other stuff for a while. Trouble is, 3Dwm is what I like best in the world, so I'll probably not be able to take a break. :)

So, what's up with 3Dwm then? Well, last week we were part of Scandinavian IT-World, a large software/hardware/communication tradeshow held here in Göteborg. Me and Steve (formerly of 3dfx, now Kodak) have been busy working on the 3Dwm server, and we've implemented lots of stuff, such as VNC client support for distributed graphical desktops in 3D, distributed textures and materials, big texture splitting, a test suite based on the Extreme Programming (XP) philosophy, and so on. All in all, a very exciting time.

It was a while ago since I showed my face on the Berlin IRC, I think I'll do that soon. Berlin is another cool project that fights for my attention. :)

Seems like my summer of fun is over for this time, Friday was my last day at Medialab (and we, of course, went out with a bang by buying the staff lots and lots of pastries and cookies). Feels a little melancholic, especially seeing that Monday is my first day at school. However, being a fourth-year student, I anticipate a fun and relaxing year before I put my teeth into my masters. Which will, incidentally, probably be carried out at Chalmers Medialab and most probably focus on 3DUIs.

What else is new? Refactoring my homepage (and putting it somewhere more stable than poor artoo), working on various documents for 3Dwm (3Dwm will be featured at Scandinavian IT-World on October 25th and we need to do some serious work before that), wrapping up the GLUTConsole (which didn't quite work, unfortunately, due to GLUT not being thread- nor instance-safe) for Berlin, and now setting my sights on the fabled CAVEConsole. Wish me luck! :)

This must be, what, the fifth or sixth time I write a scene graph for a 3D application, and this time I do it for 3Dwm (and I am determined to get it right). So now I find myself writing icky 3D transformations all over again (doing everything by hand except for the actual matrix-vector multiplications, that's taken care of by 3D-card T & L processors). I'm actually noticing how I am influenced differently when writing scene graphs, my last one was heavily inspired by SGI Performer, while this current one is much more similar to Java3D and Berlin. Well, it'll all be over very soon and I'll be able to concentrate on more interesting things, like defining the node hierarchy and starting work on real 3D widgets.

One the Eastern front (the one that faces towards Berlin *grin*), we have some reassuring news. I feel like I have a rather good grasp at Berlin, now, and I am starting to see things where I want to do work besides "mere" 3DUI stuff. Anyway, 3DUIs are my main priority, and I'm currently writing the CAVEConsole and CAVEDrawable implementations that will enable us to run Berlin in the 3D-CUBE. Another member of Berlin's development team is visiting us here in Göteborg this weekend, I'd like to show him the system running in our CUBE. We'll see...

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