Daily learning of new languages or skills

Aside from progressing personal projects, I learn something new about programming or technologies each day.


#1 in SQL Practise

Commercial Development Experience (all Melbourne, Australia based)

(1998 - ) Davies Collison Cave Intellectual Property and Trade Mark Attorneys

MS Word contents into an email with document processing (inline/attachment)

  • C# app to put iManage DMS contents into an email with auto-addressing and subject utility for users to take a DMS document and inject it into an email as body, attachment, or both and then allow the case information of the document determine the email’s subject and recipients.

Optimising SQL reports and queries

  • Convert SQL queries with cursors, joins, cross queries and functions to temp tables to get 60x performance boost. Indexing then provides even more performance (or aligning the queries to use existing indices)

Optimising configuration

  • I designed an algorithm to determine the best two arrangements of a user’s UI to make overall load time most efficient based on their required usage of functionality.
    This was constrained by wanting only a small number of possible arrangements to simplify maintenance.

Levenstein algorithm to collect like sounding clients

  • In order to provide the business with sales and supply figures based on a collection of client records that have similar spelling, I used the Levenstein algorithm to group the name records together.

RFID bridge client

  • Two-way connection of a production RFID linux system to a production case management system in order to keep the location of files consistent between what was record by users in the case management system and the handheld location recorders of the RFID system.

Document queue monitor - web software

  • Provide a low resource using view of the documents in the practise management system that have not yet been produced and saved into the document management system.

System monitor (docgenmonitor)

  • Monitor the health of servers and services in a way that updates frequently and provides the Tech Services department with up to the minute information on the health of their services.

Email to case list

  • Users provide the filing department with five different ways to request files by email. Implemented a way for the emails to be searched for official numbers and turned into a report with the locations of all required files and other information required by the files department.

IPAustralia to iManage

  • Documents available from the national intellectual property office website can be downloaded as a zip file, unarchived and manually saved to the local document management system. This was automated by taking the zip file, unarchiving it and automatically filing it to the document management system based on official number associated with the document.

Used Reflection to Instantiate Dynamic Data-Aware Classes

  • By inspecting the properties of data modules in Delphi, I generated the properties of classes on the fly instead of hand-creating classes that would access the data modules.

Wrote a VBA code Generator

  • Our document generation engine needed to be migrated to VBA. I wrote code to generate about 100K lines of code from the existing code and configuration so the our new document generation system behaved similarly to the old one.


  • Development of Outlook/DMS/Practice Management software integration
  • Development of in-house practice management system using Inprise Delphi 4-6 and Microsoft SQL Server 6.5 – 2008
  • Development of billing system
  • Multiple legacy system data migrations
  • Vendor-supplied product testing, debugging and enhancement of SQL
  • Development of various utility and monitoring software
  • Development of document generation system

(2011 - 2016) Allballsin Pty Ltd

Co-founded Allballsin Pty Ltd to develop and sell iPhone and Android apps.

  • fbShoosher app – removes ads and spoilers from Facebook feed
  • RightsFinder app – schedule searches for copyright and Trade Mark infringements
  • Carpad app – record used car evaluations
  • TuneFetcher app – identify song currently playing on radio

(1998) DNS Australia

  • Developed a web-based communication system for online tertiary education.
  • Used Active Server Pages and SQL Server 6.5.

(1998) BBL Funds Management Limited

  • Developed software on contract basis for marketing and financial reconciliation purposes.
    Used Delphi 3, and MS SQL Server 6.5

(1997 - ) PC Blues http://pcblues.com

  • Performed all tasks associated with bringing two software products to market on the internet
  • Developed products using Delphi, C
  • The Upgrade Suite - simplify and manage software distribution across intranets, corporate networks and the Internet
  • EasyRead - read large amounts of text on a screen easily
  • Hummer – hum classical tune and identify title

(1996 - 1997) Sausage Software Startup Software Company

  • Programmed on team to develop world-famous web-authoring tool
  • Developed an internet product (Jackhammer) that was bundled with retail version of Netscape Communicator
  • Developed English to JavaScript tool
  • Developed using Delphi 2 and 3

(1995 - 1996) JLM Software Shareware Distribution Company

  • Developed interactive help system to reduce the number and length of phone calls for assistance
  • Programmed in C, Formula (Multimedia), and Delphi 1 to create menu systems for the CD-ROMS
  • Worked in three-person team to program multimedia CD-ROM magazine using Formula Graphics, Adobe Photoshop, Paint Shop Pro
  • Oversaw maintenance of office computer network (virus protection, system back-ups, hardware maintenance)
  • Provided technical assistance over phone to customers and retailers for all of our products
  • Initiated conversion of telephone customer help to a new first contact system of mailed out help sheets covering the most common problems

Tertiary Education

(1991 - 1995) Bachelor Computing ( Computer Science ) Hons. Monash University (Clayton, Australia)

Final year studies included:

  • Unix/C large scale software maintenance project
  • Data Communications and Networking
  • Programming Paradigms
  • Fundamentals of programming languages
  • Artificial Intelligence
  • Databases
  • Microprocessors
  • Machine Learning
  • Computer Organisation
  • Software Engineering II
  • Computer Graphics

Programming/Database Languages


  • MS SQL since 1998
  • C# since 2014
  • VBA since 2000

Not so much now

  • Objective C since 2011
  • Swift since 2015
  • Delphi since 1996


  • Python
  • Ruby
  • Java
  • C++
  • CGI
  • C
  • ASP
  • HTML
  • XML
  • XSLT

Operating Systems

  • Mac OSX
  • Linux
  • MS DOS through Windows 10 (missing ME, Vista)
  • IBM OS/2
  • CP/M
  • Plan 9

Some Other Products Used

  • WordPress
  • Crystal Reports
  • MS Reporting Services
  • Joomla

Other Personal Projects/Interests

  • Raising kids
  • Non-fiction Writing
  • Novel Writing
  • Song/Poetry Writing
  • Music Composition
  • Policy Development
  • Video Production