Older blog entries for NickElm (starting at number 9)

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...

Things are starting to heat up here a bit, I'm currently keeping lots of things in the air. 3Dwm is coming along nicely, I'm adapting it to use the newly implemented Portable Object Adapter (POA) in omniORB 3.0, while at the same time trying to keep up with the rapid Berlin development and defining my 3DUI support stuff for that. Now, stefan is adding a low-level Console layer as insulation that will allow us to use just about any rendering lib (like GGI, SDL, etc) for Berlin. My task in all of this will be to build a cavelib implementation of the Console to enable Berlin to run in the CUBE and thus garner a few drools and stuff. :) Way cool!

I'll be sure to post any advancements in this area here... So if you're interested in gratifying eye-candy, then stay posted...

The days are going by quickly here, I've put the finishing touches on the 3Dwm build system and put up the system on the Chalmers Medialab Open Source Software (CMOSS) server CVS (phew, lots of links there). I've also started work on the 3Dwm client programmer's manual using DocBook (had some hassles to get jade working) in the noble spirit of defining the client interface before the implementation; let's see how far I get!

Oh, and I became an ACM member yesterday, just couldn't stand reading about all those nice articles in their Digital Library and not being able to read the whole text. It paid off immediately, I downloaded a bunch of PDFs from the proceedings of ACM conferences like CHI and SIGGRAPH. Now I can get my references in order when writing the 3Dwm paper. Highly recommended!

Enough with the meta-work already, I'm getting my hands dirty with some real coding now!

Just got back from a two-week vacation up in the glorious Swedish mountains, ahh, that's what I call fresh air. Now I'm back in the saddle and grabbing the reins of 3Dwm and, to a smaller extent, Berlin. Currently putting together an autoconf-based build system for the latter, and will get back to hacking the actual source soon.

What else is worth mentioning? Hmm, I'm being awfully influenced by the Berlin design and system architecture, so 3Dwm is probably showing more and more similarities to it. Which is okay since the two have different purposes and goals; I view 3Dwm as more of a short-term development effort for use in our Immersive Space Lab, and Berlin as a long-term effort for more general use.

Anyways, back to coding, CORBA beckons!

Well, here we are, my first Advogato diary entry. Didn't have a good place to put my rambling thoughts before, so this might as well become it.

My webserver Artoo is a little bit under the weather due to cracker attempts, so my homepage is currently unavailable. Too bad, I think I'm going to put it up on a server someplace else where they have an admin that has the time to apply the latest patches and fix any security holes and so on.

I'm employed at Chalmers Medialab as a free software programmer during the summer--great. Currently toying with the following:

  • Redesigning and rewriting 3Dwm from scratch. The new version is intended to be "full-strength" and built from the ground up to be robust and flexible.

  • Starting work on the 3D parts of the Berlin project, currently mainly trying to do the low-level stuff and looking at possible architectural changes that may be needed.

  • Co-developing a PHP-based on-line dictonary web application with support for on-line contribution.

Enough, it's time to go back to grokking the Berlin source...

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!