Finger info for

Ok, well, I'm cleaning this .plan out. Just because you don't see some
 previous project listed here doesn't mean it isn't being worked on anymore,
 it just means there isn't anything worth noting at the moment. Most will
 reappear over time. Also, right now a lot of what I'm working on hasn't
 been cleared to mention publically, even though they aren't Big Fancy Top
 Secret Projects. Time will change this, too.

But in the meantime...

Don't email me asking for updates. You really just aren't entitled to any.
 Sorry if that's rude, but really, so are most of your emails.

 2.4.0 for Linux is in beta testing Right This Very Minute. The MacOS version
 isn't far behind. I expect the Mac one to go to beta during WWDC, if I can
 find somewhere to upload the whole thing. Like Windows, there will be no
 patch from 2.3.0, so expect to be downloading the whole thing. There is no
 patch because the patch version was basically the same size as 2.4.0's full
 install...2.4.0 is the first version based on ut2004's codebase (all the
 previous ones were sort of a pre-ut2003/ut2004 potluck thing), so basically
 all of the data file formats changed. The next version after 2.4.0 will have
 a patch from 2.4.0, for what that's worth. In the meantime, start making
 friends with people that own both cable modem and a DVD burner. :)

Postal 2:
 If you're buying Apocalypse Weekend from and want one CD
 that has Mac, Linux, and Windows installers, you have to ask for it (it's
 the one labelled "Meal Deal #3: Minority Combo". The other combos are
 a Windows-only disc, but here's a 4 megabyte downloadable installer for
 MacOS that will work with the Windows disc:

 Also, there's a new MacOSX patch for Postal 2 (1409.1):

 The Apocalypse Weekend installer will install the 1409.1 patch if you aren't
 patched to at least that version, so you don't need both files if you are
 installing AW.

 Obviously, you need a retail copy of Postal 2 to use Apocalypse Weekend.
 Linux versions of all this coming soon.

Unreal Tournament 2004:
 So the latest Nvidia Linux drivers added support for the extension
 GL_EXT_framebuffer_object, which, to those not in the know, gives OpenGL
 functionality roughly equivalent to Direct3D's concept of render targets...
 this is the render-to-texture support that has been sorely needed for several
 bits of important functionality: namely, detailed shadows, motion blur,
 the Hellbender license plate, and the scoreboard in DM-Morpheus. I have this
 roughly working in my codebase already (the extension is sweet and
 exactly what I've wanted since ut2003 shipped). An hour of effort got me an
 upside down license plate and blocky shadows, so this isn't ready for the
 public yet, but it looks like you'll have this sooner or later after all. If
 the extension shows up in MacOSX, I'll support it there, too.
  Screenshots, warts and all:
  (ArmyOps 2.4.0)

Other stuff:
 Blatant Plug: Buy Brian Hook's book, "Write Portable Code". I proofread
 some earlier drafts, and it's got some really good information for anyone
 who's developing's useful even if you're just targeting
 Windows, and anyone that's serious about writing quality code should have it
 on their bookshelves.

 From the "Fix the Fucking Finder" department:
 I am genuinely sick of Launch Services being so overagressive about caching
 information. I hate working with icons in an app and having them not show
 up without logging out or restarting the machine, or other wierd things, like
 trying to launch a program with a broken binary, which Launch Services
 obviously can't help, but then when you fix the problem, you still get the
 same cryptic failure ('open[3294] LSOpenFromURLSpec() returned -10827'...
 what the hell?).

 So here's a little C code to tell Launch Services to recache an app that
 it has bogus information about. Yes, it's really 2005, and we're still
 rebuilding the desktop database. How awesome.

 * build with:
 * gcc -Wall -Os -s -o lsforceregistration lsforceregistration.c -framework Carbon
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/param.h>

#include <Carbon/Carbon.h>

static void force_reregister(const char *file)
  char fname[PATH_MAX];
  if (realpath(file, fname) == NULL)
  printf("realpath(\"%s\" failed on element \"%s\"\n", file, fname);
  CFURLRef cfurl = NULL;
  const char *urltype = "file://";
  size_t len = strlen(fname) + strlen(urltype) + 1;
  char *url = (char *) alloca(len);
  snprintf(url, len, "%s%s", urltype, fname);
  printf("(re)registering %s ... ", url);
  cfurl = CFURLCreateWithBytes(NULL, (const UInt8 *) url, len, kCFStringEncodingUTF8, NULL);
  if (cfurl == NULL)
  printf("URL creation failed...?!\n");
  OSStatus rc = LSRegisterURL(cfurl, true);
  if (rc == noErr)
  printf("failed! (rc==%d)\n", (int) rc);

int main(int argc, char **argv)
  int loop;
  for (loop = 1; loop < argc; loop++)


/* end of lsforceregistration.c ... */


When this .plan was written: 2005-06-17 13:54:29
.plan archives for this user are here (RSS here).
Powered by IcculusFinger v2.1.27
Stick it in the camel and go.