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...
- GCC - C/
C++/ Obj-C/ FORTRAN compilers - LLVM - C/
C++/ Obj-C/ Swift compilers - X Window System - window system
- Motif - GUI library & window manager
- Netatalk - Apple file-sharing server
- GhostScript - printer drivers