Software chronology

This is a bit of an experimental page, where I go into the greatest detail possible about the various technologies I’ve worked with over the years, basically since the beginning of my career, or even earlier than that. This can serve as a résumé of sorts, but it’s more for me to remember and keep track of all the things I’ve gotten familiar with.


  • Downloads of DiskDigger for Android exceed 50 million.
  • Downloads of DiskDigger for PC exceed 100 million.
  • Experimented with Oculus Go, and developed a few sample apps using Unity.
  • Deployed my apps to the Samsung Appstore and the Huawei Appstore.


  • Purchased a Google Home unit, and experimented with various DialogFlow projects.
  • Made a rudimentary 2D game using Unity.
  • Deployed my apps to the Amazon Appstore (in addition to the Google Play Store).


  • The Android version of DiskDigger no longer requires devices to be rooted!
  • Number of downloads exceeds 10 million.
  • Number of downloads of the PC version of DiskDigger exceeds 75 million.
  • Experimented with Google Daydream


  • Experimented with Google’s Project Tango tablet, and created a prototype app that saved a point cloud of an enclosed space, and made it viewable in 3D afterwards.
  • Experimented with Google Cardboard. Created an app for viewing .MPO files (pictures from 3D cameras) on Cardboard.
  • Experimented with Samsung Gear VR. Created a planetarium app that displays stars, planets, and nebulae in the VR viewer. Accurate star positions from the HIPPARCOS catalog.


  • Joined Wikimedia Foundation
  • Wikipedia app: 30+ million installs.
  • Released Android version of DiskDigger, only for rooted devices.
  • Number of downloads of the PC version of DiskDigger exceeds 50 million.


  • Consulted with a local startup company to create an Android app for patient surveys and information delivery for hospital waiting rooms.
  • Wrote C code for a PIC controller (PIC16F505) to send modulated pulses controlled by a push-button, to be received by a mobile device through its headphone jack (interpreted as modulated variations in microphone input).


  • Released version 1.0 of DiskDigger: a full-featured and more mature data recovery solution. Rewritten in C#, with the goal of better cross-platform support, and with a goal of running on Linux without any changes.


  • DiskDigger: a simple data recovery tool for Windows. (Written using C++Builder)
  • The LifeHacker bump (Washington Post, etc)
  • Joined Think-a-Move (a small company specializing in speech recognition for military and medical applications)
    • Speech recognition SDK (originally based on the open-source Sphinx / PocketSphinx)
    • Ported to embedded Linux (Gumstix) devices
    • Ported to Android
    • Ported to Windows CE (Motorola MC75A0 or similar?)
    • Ultra-wide-band communication with storage tags (UART)
    • Ported to Tempus Pro (Also running Windows CE)
  • Experimented with Google Glass.
    • Communication protocol (over Bluetooth) for syncing UI with Glass in real time.
    • Started developing personal Android apps.
    • Unit conversion app — 100K downloads.


  • Rewrote communication library for welding equipment in .NET (C#). Included communication over TCP/IP (custom protocol), serial (RS-232), and CAN (interfacing with proprietary hardware.
  • High-speed data acquisition from welding equipment (patents granted)
  • Custom network protocols for discovery of construction equipment (panents granted)
  • Experimented with Java ME (apps for mobile phones of the time) using NetBeans.


  • Mostly using C++Builder (by Borland, later Inprise, later Embarcadero) for work and personal projects.
  • Built communication library (.DLL for use in various other software projects) for welding equipment in .NET (C#). Included communication over TCP/IP (custom protocol), serial (RS-232), and CAN (interfacing with proprietary hardware.
  • Created bindings for the above DLL for most languages, including Python, Ruby, and even LabVIEW.
  • Built numerous high-level utilities for Windows for interfacing with welding equipment, for diagnostics, configuration, sequencing, reflashing firmware, etc.
  • Created ActiveX components for use by other applications.
  • Created PalmOS apps that communicated over IR (infra-red) and WiFi, used CodeWarrior as the IDE.
  • Created sripting components (Microsoft JScript).
  • Created a parallel-port driver for communicating with a label printer.


  • Used LabWindows/CVI (from National Instruments) to build statistical analysis tools for analyzing welding waveforms.
  • Finished university.


  • Built and programmed a communication interface for a TI-83 calculator.


  • JPEG decoder in pure QuickBasic.


  • Finished high school.
  • Joined Lincoln Electric part-time while starting to attend university.


  • MeltManager: Software that interfaced with an industrial iron powder machine via RS-232 (PC serial port), and gathered statistics and diagnostic information from it. This machine took scrap iron from other manufacturing processes and turned into a powder form. The software ran in MS-DOS, and was written in Turbo C. All of the routines for communicating through the serial port were written from scratch, as well as the text output routines, etc. Although I still have the compiled binary version of this program, the C source code has unfortunately been lost forever.


  • First experiments with BASIC
  • Very first experience was with GW-BASIC
    • Then QBasic
    • Then QuickBasic
    • Then QuickBasic with x86 Assembly routines
    • Then QuickBasic with compiled C libraries (VESA and Mode-X graphics, and BIOS and DOS interrupts)