Software

Languages & Compilers

J++ - Jason's C++ Compiler
21,109 lines (352 pages) of C++ & Yacc/Lex
C++ compiler written as my undergrad honors project, targeting MIPS RISC and Motorola 68k CISC architectures, showing it's possible to use low-level, RISC-like intermediate code and still perform good instruction selection for older, complex instruction sets.
VGO - A Very Global Optimizer
200,000+ lines (3,300+ pages) of C++
Binary executable optimizer based on my PhD research. Information about VGO is currently restricted to those who have signed non-disclosure agreements (NDAs).

Libraries

IGE - iOS GUI Extras
8,887 lines (149 pages) of Obj-C++
GUI library that provides new views and controls for iPhone/iPad app development, including a grid view that matches the look & feel of the iPhone home screen, enhanced buttons, labels and view controllers.
istring
1,790 lines (30 pages) of C++
Internationalized UTF-8 string class that smoothy interacts with the underlying OS's natural representation(s).
Jt - Jason's Toolkit
2,712 lines (46 pages) of C++
Library of specialized data structures and other generally useful miscellaneous things.
Memory++
1,904 lines (32 pages) of C++
Library of specialized memory allocation facilities such as memory pools, object pools & class-based garbage collection.
Pit - Portable Interface Toolkit
28,584 lines (477 pages) of C++
Cross-platform GUI library, a wrapper over the native GUI libraries of Mac (classic), Win32 and X11/Motif.
safe_popen()
251 lines (5 pages) of C/C++
Replacement popen() function that does not invoke or require any command shell and does argument processing itself, for secure chroot jails, containers etc.
Threads++
7,472 lines (125 pages) of C++ & assembly
Threading library supplying threads, thread pools, locks, a synchronized pseudo-keyword (via the auto_ptr trick), tasks and task queues.
Timerz
1,370 lines (23 pages) of C++ & assembly
Library providing various high-resolution timers, down to cycle-accurate if possible.
XCloseColors
374 lines (7 pages) of C
Interposing library to override the X Window System's color-allocation functions for old systems with 8-bit PseudoColor graphics, to better handle large numbers of colors.

2D/3D Graphics

macrestoxpm
563 lines (10 pages) of C & Yacc/Lex
Utility to extract XPM icons from Macintosh resources.
myfsel
503 lines (9 pages) of C
Replacement open/save dialog for LightWave on IRIX/Solaris.
SliceAllPolygons
58 lines (1 page) of LScript
LightWave extension to slice one 3D object with another.
tgxres
87 lines (2 pages) of UNIX shell
Custom resolution utility for Sun TurboGX+ graphics cards.

Video

bitrategraph
565 lines (10 pages) of Python
Utility to graphically chart the variable bitrate of video files to help fine tune video encoding settings.
MP4ify
112 lines (2 pages) of AppleScript
Utility to convert QuickTime MPEG-4/H.264 .mov files into the more standard .mp4 container format.
MythTV Channel Icons
High-quality, "un-stylized" MythTV channel icons for free-to-air broadcast TV.

Geology & GIS

assaysnormalize
257 lines (5 pages) of C++
Utility to sanity check and normalize geological drilling & geochemical assay data.
blockmodelnormalize
419 lines (7 pages) of C++
Utility to normalize and convert geological volumetric block-model data into 3D models.
drillholestoobj
2,847 lines (48 pages) of C++
Utility to convert geological drilling & geochemical assay data into 3D models.
pointgridtoobj
79 lines (2 pages) of C++
Utility to convert GIS point data (eg: LIDAR) into 3D surface terrain models.
popmap
646 lines (11 pages) of Java
Utility to visually overlay population data or other statistical data onto maps.

Desktop Apps

The Chartist
10,274 lines (172 pages) of C++ & UNIX shell
Stockmarket charting & analysis application, first written when I was 13 years old, greatly expanded over about 25 years, not finally retired until 2014!
Microsim
3,619 lines (61 pages) of C++ & assembly
Visual, programmable microarchitecture simulator and debugger, with nice graphical user interface, intended to be used teaching the concepts of instruction-set architecture, microarchitecture and microcode, but sadly never used.

Mobile Apps

Cool Photo Speed Dial
9,717 lines (162 pages) of C++ & Obj-C++
Dialer app which let you see photos of your friends, family and other people you call frequently, then contact them with just two taps – one on the photo and one to choose the type of call (phone, FaceTime, texting or email). A graphical dialer back when the iPhone's phone app was all text.

World Wide Web

BandwidthDetect
145 lines (3 pages) of JavaScript
Quickly, semi-accurately detects the bandwidth of a viewer's Internet connection, for selecting different content (eg: video quality) based on connection speed.
EmbedVideo
1,583 lines (27 pages) of JavaScript
Intelligently embeds video (and other things like Flash & VRML) into a web page by detecting the available plug-ins and video codecs on the viewer's system, back when such plug-ins were necessary!
Internet Config Dump
102 lines (2 pages) of C++
Utility to dump all Mac OS 8/9 Internet Config settings to a text file for easier administration of a fleet of Macs.
JasonsScripts
1,123 lines (19 pages) of JavaScript
Small JavaScript library providing various features & polyfills.
jasons-cgis
1,751 lines (30 pages) of C++
Handful of small CGI programs for web sites.
linkcheck
1,134 lines (19 pages) of C++
Simple, fast utility to check the internal links of a web site.

Miscellaneous

fsinv
334 lines (6 pages) of C++
Utility to take a full filesystem inventory very quickly to check for changes, essentially a simple but fast tripwire.
gs-gui
426 lines (8 pages) of MetaCard & C
GhostScript printing dialog box for EPSON Stylus Color inkjet printer settings.
hunt
Utility to search for a string and print the next N bytes, useful for data recovery and other odd situations.
iboot
Utility for controlling a Dataprobe iBoot network power switch.
idleize
Utility to run a subprocess during idle time only.
linkdir
Utility to make a symbolic link copy of a directory.
pkgmake
Easy-to-use utility to make Solaris SVR4 packages.
pppstat
Utility to analyze PPP dial-up Internet link performance.
Shutdown OSAX
Mac OS 8/9 AppleScript extension to invoke system shutdown.
spindown
Linux background daemon to spin down external hard disks when not in use.
squidstats
Utility to analyze the performance of Squid web caches.

Games (from Childhood)

Chess
Chess game, written when I was 17 years old in first year university, launched at a university open day along with a simpler tic-tac-toe game.
Indy 500
Car racing game for the Commodore 64, written when I was 12 years old – not the very first program I ever wrote (that would be: PRINT "HELLO WORLD"), but close!
Super Skiier!
Snow skiing game for the Commodore 64, written when I was 13 years old, given to my brother & family as a fun Christmas gift.

Other Open-Source Projects

Small pieces of my work can also be found in various other, larger open-source projects...