Jolt Awards and Some Worthy Non-Finalists

As always, the last weeks of January are present-time for those of us who are judges in the Jolt Awards, which I launched 16 years ago (how old I am. How very old.)

This year, two books that I thought were exceptional didn’t make the final ballot: Vincent Maraia’s The Build Master and Michael Scott’s Programming Language Pragmatics. Maraia’s book is a look into the problems of operating an automated build system in medium- to large- settings (essentially, if the software takes more than a few minutes to compile and link) and, from the discussions of the judges mailing list, its absence from the finalist list is a real surprise. Scott’s book is more academic, but is a great discussion of a topic near and dear to my heart, which is programming languages as a worthy subject of study in and of themselves. Usually, such studies are integrated into discussions of compiler design and implementation, but Scott rightly sees these as two different subjects.

Of the books that did make the finalist cut, so far I’m most impressed by Peter Seibel’s Practical Common Lisp. I haven’t programmed in Lisp since I edited AI Expert magazine back in the early 90s and I’ve never been tempted to pick it up again — until I read Seibel’s book. He does an exceptional job of introducing (or reminding) readers to Lisp’s unique expressive power.

Geometry Wars Is A Multicore Program?!

I love Geometry Wars on XBox360; it’s a great arcade-style game that’s perfect for killing a couple of minutes. Amazingly, though, it’s apparently one of the few games that distributes its computation across the XBox’s three cores.

I find it wildly amusing that something that is essentially an updated “Asteroids” is using three times the computational power of Project Gotham Racing 3.

GetDelegateForFunctionPointer() across process boundaries?

O Lazy Web, I Invoke Thee:


I am trying to call a function in a DLL that I’ve injected into an arbitrary number of processes.


I need to call a function on that instance of the DLL running in the target process. So, I tried…


//hookedProcesses == List<ProcessModule> as you’d expect

//myDll == string initialized to path of my injected DLL, as you’d expect

//delegate void VoidDelegate() as you’d expect

foreach(ProcessModule process in hookedProcesses)


   if(module.FileName == myDll)


    IntPtr dllHandle = Interop.GetModuleHandle(filename); //Interop to Win32 GetModuleHandle()

    IntPtr funcPtr = Interop.GetProcAddress(dllHandle, “MyFunction”); //Interop to Win32 GetProcAddress()

    VoidDelegate func = (VoidDelegate) Marshall.GetDelegateForFunctionPointer(funcPtr, typeof(VoidDelegate));



   func(); //

Time to buy a second-hand Mac?

Apple announced the first Intel-based Macs today. Presumably, this will drive down the eBay-arbitrated fair market value of second-hand Macs, especially the FMV of what had previously been higher-end machines but which would now be “good enough to develop on,” machines. Hmmm…

Windows More Secure?

Via Joe Mayo, Via Sam Gentile “Reported by CNET, of all the CERT security vulnerabilities of the year 2005, 218 belonged to the Windows OS. But get this – there were 2,328 CERT security vulnerabilities for UNIX/Linux systems.”

My initial reaction to this was that it was apples to oranges, but after examining the original CERT bulletin, it seems to be a fair comparison. Both lists include vulnerabilities that are not in the core OS and both lists include multiple “distros” of the core OS (e.g., Win2000 & Win XP, Apple OS X & FreeBSD). While there are more UNIX/Linus distros than Windows distros, it’s also true that there are more Windows 3rd-party apps, so I think that’s a wash.

C for C# and Java Programmers

From the MAKE newsletter:

there’s a need for a Java-to-C guide–not just the language, but how it’s really used in major apps, how to account for everything you’re importing, best practices like unit testing, packaging, exception handling, etc.

It seems perverse at first, but the more I think about it…