Principal2002 - PRESENTStellar Software Pty, Ltd.
Technologies: iOS, Swift, Objective-C, Xcode, Cocoa Touch, UIKit, Core Data, Core Graphics, GameKit
- Designed and developed four turn-based, multiplayer game apps currently in the App Store, with more in development.
- Developed more recent applications in Swift.
iOS Software Developer2020 - 2020Halfspace LLC
Technologies: Swift, SwiftUI, UIKit, iOS, Xcode
- Worked on Sculptura 3D, tasked with converting the user interface from UIKit to SwiftUI.
- Created SwiftUI Views. Refactored UIKit UIViewControllers into SwiftUI Views.
- Used UIViewRepresentable, UIHostingController, NSHostingController and Xcode, Swift, SwiftUI, MetalKit, Git/GitHub.
Senior iOS Engineer2018 - 2020Cognizant Technology Solutions
Technologies: UIKit, SwiftUI, ARKit, CoreML
- Developed POCs using ARKit and CoreML.
- Completed courses or tutorials on scikit-learn, TensorFlow, and SwiftUI.
iOS Software Developer2018 - 2019ANZ
Technologies: UIKit, Cocoa Touch, PDFKit
- Developed for ANZ’s main consumer application.
iOS Software Developer2018 - 2018Suncorp Group
Technologies: UIKit, Cocoa Touch, RxSwift, Swinject
- Developed for the greenfield Suncorp App on iOS.
iOS Software Developer2017 - 2017Medibio Limited
Technologies: UIKit, Cocoa Touch, ResearchKit
- Added Fitbit server data download to an existing healthcare app.
- Refactored an excessively large legacy storyboard.
- Created a new application focused on ResearchKit.
Senior Software Developer2017 - 2017Megabus Pty, Ltd.
Technologies: C, C++, SQL, Embarcadero RAD Studio, Btrieve, Windows XP
- Helped prepare Marlin GTX for introduction to the US market.
- Maintained features and fixed bugs.
iOS Software Engineer2016 - 2017Australia Post
Technologies: iOS, Xcode, Swift, Cocoa Touch, UIKit, AlamoFire
- Worked on the Digital ID project.
- Developed native iOS apps in Swift.
Software Developer2016 - 2016Musikyoshi
Technologies: iOS, Xcode, Swift, Cocoa Touch, UIKit, Core Data, CoreGraphics, AVFoundation
- Developed an app for teaching musical instrument performance.
Software Developer2015 - 2016Tennis Australia
Technologies: iOS, Xcode, Objective-C, Cocoa Touch, UIKit, Core Data, CoreGraphics
- Added features to existing apps.
- Handled the successful submission of the AO Player app to the App Store. The AO Player app is for the use of players at the Australian Open. The 7+ other apps are for internal distribution and are part of the operation of the Australian Open.
- Covered the user interface, data entry, and display.
Software Developer2015 - 2015Fob App, Inc.
Technologies: iOS, Swift, Xcode, Cocoa Touch, UIKit, Core Data, CoreGraphics, MessageUI, AWS SDK, Facebook SDK
- Created an iOS application focused on image manipulation and composting, using images from the device. The app uses the camera, image picker, and gesture recognizers and connects to AWS and Facebook cloud services, sharing images with Facebook, Instagram, and other social networking sites and external apps.
- Contributed to the user interface, database design, and display.
Software Developer2015 - 2015Startup Company
Technologies: iOS, Swift, Xcode, iBeacons, Foundation, UIKit, Core Data, Core Location
- Created new apps, added new features, and fixed bugs on existing apps.
- Implemented the apps to use iBeacons in a proprietary manner as a key component of the system.
- Used JSON to wrap the data to and from a REST API. The work covered the user interface, data entry, and display.
Senior Developer2014 - 2015Praemium Limited
Technologies: Visual Studio 2013, Microsoft SQL Server Management Studio, C#, Visual Basic, Transact-SQL, SQL, XML, Microsoft SQL Server, Windows Server
- Worked mostly on incremental features and bug fixes covering the user interface, data entry, and display. Also worked with business rules in the front end, Windows services, and SQL stored procedures.
- Modified database schema (added/changed tables).
Senior Software Developer2012 - 2014Megabus Pty, Ltd.
Technologies: C, C++, SQL, Embarcadero RAD Studio XE3, Btrieve, Windows XP
- Worked on broad incremental features that were manually applied across all modules.
- Fixed a problem due to the structural design of the run-time architecture of how the application ran its modules. Modified (outside of rewriting a key part of the run-time library) almost 200 dialogs and all the places that create those dialogs.
- Made dialogs asynchronous, which required all the creators of those dialogs to use callback methods. Wrapped the dialogs in several library classes. Created asynchronous versions of these classes and callback wrapper classes so that a minimal amount of identical new code needed to be added to the existing codebase.
- Wrote extensive documentation about the problem, describing its cause and the solution. Included documentation of the new classes and developer guides for modifying existing code and creating new code using the new classes. I conducted a training session for the development team.
- Handled maintenance (bug fixes and features) of the user interface, data entry and display, and business rules.
Senior Analyst Programmer2012 - 2013IGT (Australia) Pty, Ltd.
Technologies: C++, C#, SQL, Transact-SQL, XML, Visual Studio 2012, Visual Studio 2010, Visual Studio 2008, Microsoft SQL Server Management Studio 2008 R2, SSRS, Microsoft SQL Server 2008 R2, Windows 7, Windows XP
- Worked on incremental features and bug fixes.
- Created SSRS (SQL Server Reporting Services) reports, including associated SQL stored procedures.
- Designed and implemented a New Promotion Wizard to improve the user interface.
- Designed and implemented the reorganization and combination of several configuration dialogs.
- Added DirectShow support for USB cameras for ID photos, etc. within a C# module.
- Wrote specifications for the Promotion Wizard, the configuration dialog reorganization, and the addition of some new features.
- Handled maintenance (bug fixes and features) of the user interface, data entry and display, and business rules in both the client-side application and on the server-side in stored procedures.
Senior Developer2010 - 2011Momentum Technologies Solutions Pty, Ltd.
Technologies: C, C++, C#, XML, Visual Studio 2008 (Visual Studio 9), Direct Show, AES encryption, Windows 7, Windows Server 2008, Windows XP, Nant, Eclipse, Windows Driver Kit (WDK), Wowza Media Server
- Added AES-256 encryption/decryption to Windows-based C# broadcast and media server applications, using the Bouncy Castle C# library. Used the Crypto++ library for the C++ ActiveX control.
- Expanded the use of DirectShow filters in the encoding software, standardizing the mechanics of the construction of the filter graph. Incorporated encoder, motion detector, and de-interlace filters from Leadtools. Developed a filter to flip or rotate the video frame. Created classes to configure the motion detector filter and provide detection callback objects.
- Used the Windows Driver Kit. Built (from open source software) a device driver to monitor the GPIO port on the video capture platform.
- Reconstructed and documented the build system, setting it up on a set of Windows 7 virtual machines, providing portability, reproducibility, and backup. Created the next-generation build system to support building the next version of all applications and their installers.
- Investigated and developed a proof-of-concept broadcast system using the Wowza Media Server to rebroadcast live video from a proprietary media server to a wider range of viewing platforms. Modified and tested Flash players using Flash Builder 4.5.
Senior Software Developer2009 - 2010Megabus Pty, Ltd.
Technologies: C++, SQL, XML, C++ Builder 2010, C++ Builder 6, Embarcadero RAD Studio, Btrieve, Pervasive SQL, Perl, Windows XP
- Worked on a project to rewrite/redesign/migrate/convert a legacy system into a modern GUI, Marlin GTX. Rewrote Microsoft PDS Basic programs into C++ on C++ Builder 2009, and also rewrote Watcom C++ and C++ Builder 6 applications using Btrieve into C++ Builder 2009/2010. Changed the database implementation from a Btrieve file-based model to a more SQL-compliant one. Worked on object, class, and user interface design.
- Refactored a set of 42 data integrity calculation applications into one base C++ class and 42 derived constructor classes, and one singleton factory class to create the different calculation objects for each calculation type. Refactored because originally each calculation application was a separate application, with little common source code, and half of them were written in Basic, and the rest used a discarded database API; therefore, no smart refactoring tools could be used.
- Refactored a second set of 38 data update applications written in Basic into one base C++ class, five derived modifications, and one singleton factory class to create the different update objects based upon a table of parameters for each update type.
- Maintained (bug-fixes and features) the user interface, data entry and display, and business rules.
- Converted all the project files for the entire system from Builder 2009 to Builder 2010. Wrote a small Perl script to change all text that previously included hardcoded link names and paths in the almost 200 project files.
Senior Software Engineer1994 - 2009Barnum Software
Technologies: C/C++, Visual Studio .NET, Visual Studio 6, Visual C++, CodeWarrior, XML, Wise Installation System 9, Installer VISE 8.5, Director 8.5 XDK (Xtra Development Kit), Windows XP, Windows 98, Windows 95, Windows 3.1, OS X, OS 9
- Expanded the graphics supported from CGA to include EGA, VGA, and SVGA modes by converting the Quarter Mile Math program to use the FastGraph graphics library. Added animated horses to the existing animated racing cars.
- Ported the program to OS 9 by creating a Mac toolbox replacement for the parts of FastGraph that we used.
- Converted the math topics into Macintosh "code fragments."
- Converted the original assembly language interrupt service timing code into C, which then ran on the Macintosh and was key to finally porting everything to Windows 3.1.
Senior Software Engineer1992 - 2009LibraryWorld, Inc.
- Developed the LibraryWorld family cross-platform Windows/Macintosh applications. Supported Windows XP, OS 9, and OS X using a common database.
- Based the proprietary database around the MARC record. Used proprietary indexes to provide adequate performance on the desktop systems of the early 1990s.
- Designed and implemented a proprietary report script and report engine for the LibraryWorld product line using a then state-of-the-art dot-command syntax. Implemented the report engine to display reports on-screen, print them, or write them to a file—all from the same script.
- Planned the project to be stable and reliable, and my code has remained unchanged through 4-5 UI design evolutions.
- Worked on the original LibraryWorld web version. Removed the UI, building a family of CGIs around this code. The CGIs provided most of the functionality of the LibraryWorld programs through the internet. LibraryNet was released in 1998 as a product for IIS and Apache on OS X. In 1999 and 2000, I created the LibraryCom web service, which replaced LibraryNet. The current LibraryWorld 2 web service was developed by LibraryWorld based upon my earlier designs.
- Added library catalog record lookup on a web service and publishing catalog records to the web service by adding an asynchronous Telnet client to the applications.
Senior Software Developer2007 - 2008Trimble Planning Solutions Pty, Ltd.
Technologies: C/C++, Visual Studio 8, Visual C++, SQL, XML, Microsoft SQL Server 2000, Enterprise Manager, Query Analyzer, Firebird SQL, Windows XP, DirectX, COM
- Completed a project to add support for internationalization to our application. Included migration of the source code from ASCII text to Unicode. The user interface text had to be extracted from the C++ source code and added to the resource files where it would be accessible to translation tools.
- Managed translation of the language database and added automatic translation database maintenance and resource text translation to the build system.
- Migrated the rest of the development team to the new version. Created installation and usage guides for the tools and source code changes. Directed and managed the transition of the development team to the new source code and new tools.
- Began migration of the application data store from a proprietary flat-file system to a SQL database. Created a database schema representing the current data and planned enhancements. Developed a set of object templates to encapsulate the relational database and additional business logic. Developed a Visual Studio wizard to generate source code and store procedure scripts from the tables in the schema using those templates.
- Converted the user manual in FrameMaker into a Microsoft help file.
- Maintained (bug fixes and features) the user interface, data entry and display, and business rules.
- Created and used a series of Visual Basic macros within Visual Studio to semi-automate the movement of text from the source code files into the resource files.
Software Engineer2006 - 2007IGT Systems
Technologies: C++, SQL, Transact-SQL, XML, Visual Studio .NET, Visual Studio 6, Visual C++ 6, Microsoft SQL Server 2000, Enterprise Manager, Query Analyzer, Windows XP
- Worked on the Commission-based Program Play (CBPP) module in requirements analysis, functional and technical specifications, user interface design, database specifications, software design, and programming implementation.
- Developed an initial prototype of the module for the CBPP feature and used that prototype as a requirements analysis tool to elicit a greater degree of detail from the client regarding their functional requirements. Based on this, I developed a second prototype. Spent four days at the client site leading discussions with the client stakeholders to help them understand and decide upon the operation of the new feature so that I could refine and complete its specification.
- Specified the database schema for configuration and operational data. Designed and wrote the application code to create, configure, and manage the CBPP programs and to calculate the rewards and commissions and the SQL stored procedures and functions for using and manipulating the data. Designed and implemented the user interface for all of this. Implemented the business logic in stored procedures and triggers that interacted asynchronously with other distributed applications and services. Except for the stored procedures and triggers, all programming was on the client-side. Also provided deployment support for the system’s installation in Macau.
- Worked on an interface between the Advantage system and an external third-party CRM system. The interface was used to synchronize data and report events between the Advantage system and the CRM system. The interface was implemented as multi-threaded asynchronous TCP/IP client and server Windows services. The services, threads, asynchronous client, and asynchronous server were all implemented using the .NET framework, and the interface to the Advantage database was implemented using classes based upon ATL templates.
- Maintained (bug-fixes and features) the user interface, data entry and display, and business rules.