Recent blog entries for joshb

13 Sep 2003 (updated 13 Sep 2003 at 19:10 UTC) »

Here are a couple of screenshots from an OpenGL-based 3D game engine I've been coding in my spare time for a while:

screenshot 1

screenshot 2

Some if its features right now are fully dynamic lighting, md2 model loading, stenciled shadow volumes (not shown in either of these screenshots because my ancient video card, a Voodoo3 2000, doesn't have a stencil buffer, and it's too slow in software rendering to get a good shot), particles, smoke, heightmaps, and simple AI (you can see two characters fighting eachother in screenshot 2). It's written in C++ and uses SDL for input and such.

Maybe some day I'll get around to releasing something based on this. The only bad thing about 3D/game development for me is that I can't create very good art to use (the model used in screenshot 2 is the "rhino" quake2 model, which I got from polycount, and all of the textures were made with GIMP filters). Oh well.

Been a while since I've posted anything here.

Last month I wrote a PCX image loader for gdk-pixbuf. With the help of some GTK+ hackers, it's now in the GTK+ HEAD cvs branch. I guess it'll be in the 2.4 release.

Recently I implemented dynamic lightmaps and stenciled shadow volumes with OpenGL, and put a demo on my website.

12 Feb 2003 (updated 12 Feb 2003 at 23:30 UTC) »

Been working on prtunnel quite a bit lately after a few weeks of inactivity. The IPv6 support was pretty cool to work on, and it seems to work well. Now what's really needed are some prtunnel packages/ports for Debian, FreeBSD, OpenBSD, etc. (anyone interested in helping out with that?)

3 Jan 2003 (updated 3 Jan 2003 at 00:46 UTC) »

I spent a couple of hours today working on a new daemon mode for prtunnel. There's one daemon process that listens for new connections; when a connection is made, it forks a child process to handle the connection and the daemon process goes back to listening.

The only trouble I had was with waiting for the daemon's children after they're done. The first working solution I had was to make the bound socket non-blocking, put the accept(2) call in a loop, and, when no connection is returned, do a waitpid(2) and usleep a bit inside the loop. That was just too bad of a hack. The current solution is to use a SIGCHLD handler to waitpid(2) and have the accept(2) call loop when it's interrupted. This seems to work OK and will probably be in the next release.

That's it for tonight as far as coding goes. Happy new year, everyone!

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!