Zack Booth Simpson

  I am a software engineer, artist, and molecular biology researcher living in Austin, Texas.

  I have lived in Austin most of my life. I dropped out of high-school in 1987 and went to work for a software developer creating visual programming languages. In 1990, I joined the game development company Origin Systems (which later became a subsidiary of Electronic Arts) as a game programmer on the Ultima series. I became the Director of Technology there in 1993 and was fortunate enough to have worked on numerous projects including Ultima, Wing Commander, Crusader, BioForge, and finally in helping to start up one of the first large commercial MMPOGs: Ultima Online.  I later returned to EA as a Research Fellow where I conducted some of the first research in the economics of online worlds.

  In 1995 I left Origin with a group of friends and started Titanic Entertainment. We created one game: the critically-acclaimed but market-flopped game "NetStorm" (Voted by C-Net as "The Best Game of All Time that Nobody Bought"!). In 1997 Titanic sunk fulfilling the prophesy of everyone who told us not to name it that.

  In 1998 I started creating interactive art using various forms of camera detection that I invented including calibrated shadow detection and reverse infrared shadow detection (patents pending).  Working with input from many friends under the name "Mine-Control", my artwork is interactive, algorithmic, and seeks to place people into environments where they have agency that is both challenging and magical.  The natural sciences, especially psychology, ecology, biology, and physics influence all of my work.

  In 2000 I moved to Barcelona, Spain for a year.  In Barca I spent my time worshiping Gaudi's architecture and (to the dismay of my Catalan-speaking friends) learning Spanish; I also worked with the theatre group La Fura dels Baus creating theatrical digital projections.

  In 2004 I began hanging out in the molecular biology department at University of Texas at Austin, in the Marcotte, Ellington, Johnson, and Russell laboratories. I am now employed there as a Fellow of the Center for Systems and Synthetic Biology. I am particularly interested in bio-molecular signal processing and amorphous computation, but I have also done a lot of work on improving instrumentation.  My synthetic bio-hacker buddies and I at UCSF and UT engineered the first bacterial film which was published in Nature in 2005 (read about it here at the New York Times or here at National Geographic).

  I am interested in a great number of diverse subjects ranging from economics to sculpture and have written little essays regarding many of them. I hope that you find my work useful, if so, please feel free to contact me.

Cheers,
  Zack

Papers


Amusements


Source Code Archive

This is a collection of useful code that I've written over the years and which I hereby grant into the public domain. Each of these modules is as isolated from the others as is possible to increase reusability. If you find any of it useful, or find any bugs, please contact me.
 
Description Source Portability
Assert Wrapper Version: 1.0
      An improved assert handler that does stack tracing and emailing [zassert.cpp]
[zassert.h]
win32 unix
Fiber Wrapper Version: 1.0
      Provides a wrapper around Win32 fiber API [zfiber.cpp]
[zfiber.h]
win32
File Specificaiton Parser Version: 1.0
      A portable filename & path parser [zfilespec.cpp]
[zfilespec.h]
win32 unix
WIN32 Open GL Window Toolkit (!GLUT) Version: 1.0
      A glut-like window interface for OpenGL and windows. Written because glut had an unclear license status. [zglwin.cpp]
[zglwin.h]
win32
Simple Hash Version: 1.5
      A simple, fast, and decoupled hash table using string keys. [zhashtable.cpp]
[zhashtable.h]
[zhashtyped.h]
win32 unix
Hash-based Message Dispatcher Version: 2.0
      A hashtable based method of passing messages around. Allows for a header-free method of passing a message from one module to another via direct and indirect dispatching. Includes features for queing messages [zmsg.cpp]
[zmsg.h]
win32 unix
Socket Wrapper Version: 2.0
      A portable, simple, flexible socket fascade. Uses string based addressing for greater simplicity, portability. [zocket.cpp]
[zocket.h]
[zaddress.h]
win32 unix
Perl Compatible Regular Expression Wrapper Version: 1.0
      Provides a nice c++ facade around the Perl-Compatible-Regular-Expression (PCRE) SDK. (www.pcre.org) [zregexp.cpp]
[zregexp.h]
win32 unix
RGB to HSV conversion Version: 1.1
      Conversion from RGB space to HSV and vice-versa [zrgbhsv.cpp]
[zrgbhsv.h]
win32 unix
Serial Wrapper Version: 1.0
      A simple serial I/O interface [zserial.cpp]
[zserial.h]
win32
Direct Sound Wrapper Version: 1.0
      A fascade for DirectSound. Provides basic caching and the ability to play a sample more than once without reloading. [zsound.cpp]
[zsound.h]
win32
Win32 Stack Tracking and Symbol Decoding Version: 1.0
      stack tracking for win32 [zstacktrace.cpp]
[zstacktrace.h]
win32
Perl-like String Splitter and Manipulator Version: 1.0
      A Perl-like string/list class. Perl-like functions such as split are provided Very handy when you are doing text file processing. [zstr.cpp]
[zstr.h]
win32 unix
Telnet Server Version: 2.0
      A telnet server which can plug easily into an application and listen on a port. You may have more than one and it can be non-blocking. A simple callback function API is used to alert the app of incoming messages. [ztelnetserver.cpp]
[ztelnetserver.h]
win32 unix
High Precision Full Scale Timer Version: 2.0
      A portable time system that keeps track of time with high precision and UTC range as a double. Includes handy framework for real-time systems and games. [ztime.cpp]
[ztime.h]
win32 unix
Simple Inline String Constructor Version: 2.0
      This is a convenient class for creating inline strings using the familiar printf style without having to declare a separate buffer. Originally written by Ken Demarest [ztmpstr.cpp]
[ztmpstr.h]
win32 unix
DirectShow Video Capture without the Horrible Grief Version: 2.0
      A simple C style interface around the abysmal DirectShow video capture API [zvidcap.cpp]
[zvidcap.h]
win32
Wildcard Enumerator Version: 1.0
      A class for traversing filename wildcards. [zwildcard.cpp]
[zwildcard.h]
win32