Category Archives: General

Peak Codec

One day, I saw Suxen drol create a new page on the MultimediaWiki discussing something called the Peak codec. I was about to scold him for not uploading and linking to samples for this codec until I read closer. The Peak codec seems to refer to a theoretical best possible codec. Could such a beast really exist?

Based on everything I’ve read, perhaps On2’s VP8 is the Peak codec of lore: All things to all people.

Alphabet of Tracing

So I’m sitting in the tracing discussion at this year’s Linux Foundation Collaboration Summit. One presenter discussed a tracing facility called utrace. This got me thinking of all the different _trace utilities I could name off the top of my head: dtrace, ptrace, strace, and utrace. Then I wondered how many letters of the English alphabet already serve as prefixes to the word ‘trace’ as software utilities. My cursory research indicates 21/26 24/26.

Oh yeah, I looked them all up (and thanks to all who helped me fill in the blanks):

  • atrace: astrange’s raytracer
  • btrace: Tracing for Java
  • ctrace: multi-threaded trace/debug library
  • dtrace: Sun’s comprehensive framework
  • etrace: The Embedded ELF tracer
  • ftrace: Fast traceroute for Win32; also ftrace: function tracer
  • gtrace: Graphical front-end to traceroute
  • htrace: apparently an extension to windbg
  • itrace: not Apple-related (see ktrace); this stands for instruction strace
  • jtrace: Java rewrite of a speech recognition technique called TRACE
  • ktrace: Kernel tracing for certain BSDs including Mac OS X
  • ltrace: Linux utility to monitor library calls
  • mtrace: Memory debugger in the GNU C library
  • ntrace: Tracing for .NET applications
  • otrace: Oracle database tracing
  • ptrace: Process tracing in Linux
  • qtrace: Another traceroute utility
  • rtrace: Ruby-Trace almost qualifies
  • strace: Tracing system calls
  • ttrace: Tracing facility for multithreaded processes
  • utrace: Linux tracing
  • vtrace: System-wide profiling of WinNT or Win2K
  • wtrace: Provides information to debug methods (pertains to Tivoli?)
  • xtrace: Tracing for X servers
  • ytrace: Nothing
  • ztrace: Win32 tracing utility

So, if you must make a new tracing utility, atrace, etrace, rtrace, ytrace, and ztrace all seem to be open.

Thanks for sitting through another of my pointless surveys. Oh, and thanks also to Google for providing Summit attendees with free, unlocked Nexus One phones. I haven’t seen many other mentions of this. Maybe Google does this so often that it barely counts as news anymore.

Intentional Time-Consuming Work

A woman sat down across from me on the train, pulled out her knitting needles and went to work on what appeared to be a scarf. I briefly pondered the fact that she chose to busy herself with constructing a scarf the hard way when it’s obviously faster and cheaper to buy a scarf off the shelf.



Then I immediately pondered how many of my personal programming projects fall into this same category of wheels that don’t need to be reinvented. There are still plenty of projects I want to take on that would surely serve no practical purpose in the grand scheme of things, particularly when evaluated against what I could be spending my time on.

Video game console programming springs immediately to mind. I was interested in Sega Dreamcast programming long after the system had become obsolete. For that matter, I’m still interested in Sony PlayStation 3 programming, even though that community is about to be driven underground. I have long been interested in the technical aspects of the 8-bit Nintendo Entertainment System (NES) and have always wanted to write software for that console as well. A few years ago, I even purchased RetroUSB’s PowerPak, a CompactFlash-based game cartridge, probably the easiest method for testing code on an actual system. Mercifully, I recently gave away that item (and the console, an SNES-style top loader), so that’s one less area on which I can waste my spare dev time. I still have the DC and the PS3, though.

My FFmpeg colleagues should be pleased to hear that I do try to make my FATE work a priority above these arguably more frivolous pursuits.

IRIX CD-ROM

A little while ago, an article made the rounds which detailed a visit to The Weird Stuff Warehouse in Silicon Valley. Since I have a thing for weird, obscure stuff, I knew I had to pay a visit.

I didn’t find much interesting material there, though that’s probably more an indication of my own changing interests (there was a time when I would have enjoyed buying up vintage hardware for cheap). They did have an old MPEG-1 ISA bus video decoder board. There wasn’t much in the way of old entertainment software, which is my current interest. However, I did find an old SGI IRIX OS CD-ROM. Since SGI was more or less synonymous with multimedia back in the 1990s, I thought this disc might have some classic multimedia examples.



The manual that comes in the jewel case seems to focus exclusively on using FlexLM.

When ripped, ‘file’ identifies the disc image as “SGI disk label (volume header)”. Is that the same as SGI’s XFS? I installed Linux’s XFS module but was unable to mount the filesystem. Scanning through the image, I didn’t fnd any strings that would indicate more common multimedia types from the era.

Weird Stuff Warehouse also had an SGI Octane machine for running the OS. You have no idea how hard it was to resist the urge to buy it and run the FATE client on it.