Skip to content

geek

New Company: Full Motion Racing

After over a year of working silently on this, finally my new company is coming out of stealth mode.

Introducing: Full Motion Racing

Video Hosting courtesy of vMix

Full Motion Racing is building a Racing Simulations Center in San Diego, CA. Our facility will offer guests networked racing on 3DOF motion platforms. We're still a bit out from the official opening, so check out one of our upcoming public exhibitions

Second Life Tech talk @ Google

Saw this incredible video over at Zac Bowling's site. It's a tech talk by the creators of Second Life about their systems. Very high geek content, especially with the prospect of SL switching over to Mono.

I've been staying away from MMORPG's because I just don't need that kind of time-suck in my life, but once you add a compelling programming model on top of that, the temptation is just getting way too strong. So far I resist, but once they have mono integrated, I may have to poke around a bit.

Last time I got sucked into something like this was back in the early 90s, when I started playing around with LambdaMOO which was completely object oriented and user editable. The language I always thought was a variation on Scheme, but Wikipedia claims it a derivative of Algol. Either way, it was a lot of fun to program in and create the world around yourself. But it was addictive. My roommates all got sucked in and at some point you couldn't call our house because someone was always on LambdaMoo (yes, the day of modems... 2400bps modems).

The only thing that makes Second Life less dangerous is that it's build around a thriving economy. So, it's not only conceivable, but an actual reality that you can finance this habit by having the habit and sitting in there coding. I think i'm still going to stay far away for my own sanity.

Fraps, scriptable encoding, multi-angle DVDs

I came up for a non-porn use for the multi-angle feature of DVD. Unfortunately, the lack of adoption of this feature by the major DVD community means that documentation on this is rather sparse. Plus I ran into some other issues that I also found no answers to. Figured I'd post them here, see what comes of it.

Fraps captures w/ anti-aliasing

I'm running P4 3Ghz, nvidia 6600GT and that produces about 92fps for LiveForSpeed. Drops maybe 10 frames if i turn on anti-aliasing. If i use Fraps to capture w/o anti-aliasing it records at the requested FPS, but the moment I turn on any anti-aliasing, the fps drops to about 10-15fps. Is it my card, LFS, fraps? Anything I can do?

Automating encoding from Fraps to DVD

Once captured, I have an avi in the FPS1 codec. I can transcode it with VirtualDub or TsunamMPEG, but both of those tools are GUI and can't be scripted. I tried using ffmpeg, but that doesn't seem to support the current Fraps codec. I was unable to find any scriptable transcoders that can use the codec DLL provided by Fraps.

Automating multi-angle DVD burning

Best tool for automating DVD burning I found was dvdauthor. However it does not support multi-angle burning. Only tools I found that do, are high end DVD authoring packages, all of which are GUI applications.

And even if i found one, i can't even find out what the requirements are for multi-angle. I saw some comments that made it sound like that all angles have to share a single audio track. Is that correct? How about getting the video synced? Got the impresssion that there was some nasty timecode stuff, beyond just getting a couple of video tracks of the same frame count.

Ah, more questions than answers..

Emacs Keybindings in VS.NET 2k5

Just discovered that VS.NET 2k5 has a preset under Keyboard mapping scheme's for Emacs... Yay! It only remaps things that exist to Emacs commands, i.e. you don't get a killring on Ctrl-Y, but it's something.

The new math.. er--trig

A friend of mine just pointed out DIVINE PROPORTIONS: Rational Trigonometry to Universal Geometry. Having had to refresh my Trig understanding for a number of recent projects (basically any time graphics are involved), I like the concept of getting rid of sin, cos, etc. in favor of simpler rational math.

But what's even more interesting about Divine Proportions are its implications for graphics processing. Being able to get rid Trig functions in 3D calculations and replace them with simple squares and fractions should allow some significant speed increases in processing. Curious how this plays out.

CPAN for .NET

Maybe I just don't have my feelers in the .NET community like I did in the perl community. Actually, know I don't... Anyway, I think a CPAN for .NET would be a fantastic community to build. http://csharp-source.net/ looks like a nice site, but it's project oriented. And otherwise, I haven't really found any good aggregators for C#. Sure, there are tons of components, but you gotta google each one.

I'm thinking of a site that's more tightly focused on components. Maybe have a common prefix namespace, then authors would sign up for sub namespaces for their components. You'd have dev and release versions, where a release component projects would have to include nant, ndoc and nunit and have the componnent strongly named. Users could then report back to say whether they were able to build on their system, or even add automated buid/test farms.

Users could then have a certain expectation of what a component from this community archive is like. You'd also have place to start looking for new components. Any time i started something in perl, i first hit search.cpan.org first to see if there was something that already did what i needed or provided stepping stones. And i wouldn't get back a list of projects that build some of the pieces i want but tightly integrate them into a project that otherwise doesn't meet my needs.

It would also be a place that keeps you up to date with the development, instead of having to navigate each developers site, hoping it goes you some piece of information on whether the project is alive. You would have RSS feeds, for project status, etc.

So if I just happen upon some free time... Hold on, gotta catch my breath... that one was funny... erm... Anyway, I'd love to build this, but i just don't know when. Maybe i should float the idea on one of the mono dev lists?

Heisenberg and Properties

There are two reasons that I'm using log4net with increasing, rather than decreasing frequency, despite the excellent debugger in VS.NET:

  1. When doing multithreaded programming, it lets me more easily see what threads are doing in parallel
  2. Heisenberg's Uncertainty Principle as it it relates to Properties

Let me expand on 2)... The Uncertainly Principle, simply put, states that the act of observation changes the observed. Now, he was talking about electrons, but when using the debugger in VS.NET this very principle can really come to bite you. The problem is that Properties do not have to be mere member variable accessors. They can have all sorts of logic attached. You may consider it bad form to have the act of observation (read: the getter) enact some sort of write behavior, and that is a position worth arguing. But even a simple "lazy load" put inside a getter can alter the behavior of the object if executed outside the normal flow.

And that's precisely what happens when you start stepping into the Debugger. Unlike Methods, Properties are shown by default and therefore cause execution of the getter. So if you have a problem with some internal value not being properly set when you run your program, but it being set, if you step through it, look at your Properties.

Now, how does log4net help this? It's still going to cause the getter to fire! Well, in some circumstances yes, but in many others, the reason you are getting this behavior is because the debugger fires all getters, not just the ones you want to look at, likely causing the problem via some part of code you really don't want to be firing off at the time of observation.

New InSimLib w/ source

InSimLib is now at version 0.5b. I consider it feature complete and have excersized it with a number of little Apps i've written, so I'm relatively confident it's ready for use. If someone comes across any problem, just drop me a line at insimlib at claassen.net.

Binary only Dll w/ Windows.Forms tester is here.

Source for the Lib is here

And NDocs are still here

Mouse Clicks and LFS

Wrote a little program that launches LFS, clicks the appropriate buttons and sends strings to connect to a server defined by IP (it's called local in LFS for some reason), puts the player in the game and starts the game.

All works nicely, but man, is it ever an ugly hack. Hard-coding screen coordinates, putting in Thread.Sleep(n) so the UI can catch up, etc. But at least there is a way to automate the client.