David Goh's Resume
Personal Details
Website:	https://goh.id.au/~david/	
Email:	david@goh.id.au	
Phone:	+61 411 692 516	
Skills
Team Management:	
Planning and estimation of time and staffing requirements for multi-year software engineering projects involving up to ten people. Management of team member workload for the duration of the above projects. Management of resourcing, interviewing and selecting excellent quality personnel to staff the above projects.	
Technical Sales:	
Determination of customer technical requirements. Writing Software Requirements Specifications based on customer needs. Estimating human and material resource requirements and costs and producing quotes based on them.	
Software Engineering:	
Agile methodology implementation and delivery. Object oriented, functional, and procedural design, redesign, implementation, debugging and testing of real-time and near-real-time multithreaded applications, communications modules and systems software. Development and deployment automation. Writing Software Detailed Design documents based on Software Requirements Specifications. Engagement with multiple stakeholder groups at all stages to ensure correctness and timeliness of delivered software.	
Quality Assurance:	
Writing Software Test Plan documents, carrying out, and automating testing. Code review and walkthrough, software architecture analysis.	
Programming Languages:	
Python, Javascript (React, jQuery, Node.js, raw), SQL (PostgreSQL, Microsoft SQL Server, Sybase, Oracle PL/SQL, Oracle Pro*C, MySQL), Swift (iOS, MacOS), Perl, PHP, Java, C, C++, AppleScript, LUA.	
Formatting/Markup Languages:	
HTML, CSS, JSON, YAML, XML, DocBook, LaTeX, Postscript.	
Systems Administration:	
Deployment/Containerisation (ansible, Nexus, Docker, AWS EC2/ECS/ECR/CloudFormation). Virtualisation (Parallels, VMWare, Virtualbox). Unix systems administration (Linux (multiple distributions), macOS, FreeBSD, Solaris, SunOS, Irix). Database installation and programming (PostgreSQL, MSSQL, Sybase, Oracle, MySQL). SAN/NAS configuration and maintenance (DROBO, NetApp, SUN StorEDGE, HP EVA). Monitoring Systems implementation and management (Nagios, site24x7, various other). Ticketing Systems implementation and management (JIRA, RequestTracker). File server setup (Samba/CIFS, WebDAV, AFP, NFS). Unix script writing (Python, csh, sh, awk, sed, Perl, PHP). TCP/IP network configuration for servers, network devices, and PCs. End User support for macOS, Linux, Solaris, Windows, FreeBSD, Macintosh, Ultrix, SunOS and MSDOS platforms.	
Internet and Cloud Services Administration:	
AWS (EC2, ECS, ECR, CloudFormation, VPC, Route 53, etc). Web server (Apache, Tomcat) setup and maintenance. Web Programming using W3C standards compliant HTML/CSS, Javascript (jQuery, React, Node.js, raw) and server side software in Python (Flask, plain CGI), JSP, Perl, PHP. Domain Name Service administration (BIND, AWS Route 53). Cloud service security analysis, evaluation and implementation (AWS, O365, G-Suite, Dreamhost, Squarespace, Dropbox, iCloud, etc). Wiki implementation and management (Confluence, PHPWiki, Moin). Firewall installation and setup (Solaris, macOS, Linux and FreeBSD). Postfix and Sendmail administration. IMAP and POP administration (Cyrus, Courier and UW). Squid proxy administration. IPSec VPN configuration (Linux, macOS). SMPP software (Kannel, perl Net::SMPP module). Majordomo and Mailman mailing list management. USENET (INND, Leafnode) setup and maintenance. MUDs (virtual text world environments - LPmud, MOO). Taylor UUCP for USENET and Mail setup. Zope installation and maintenance.	
Teaching Skills:	
Excellent at explaining technical issues to technical and non-technical people. Strong verbal and written communication abilities. Able to determine what knowledge individuals are missing, and explain that knowledge to them. Can write and conduct short presentations and training courses, both formal and informal, on a variety of topics.	
Configuration Management:	
Design and implementation of systems to maintain control of the software development and release cycle, use of various change control systems (Git, SVN, Perforce, RCS, CVS, ClearCase, SCCS, PVCS).	
Work History
EYEfi Pty Ltd, June 2021 - present
Employed by EYEfi Pty Ltd as their Lead Tech Developer.
Technologies involved:	
AWS (EC2/ECS/ECR/CloudFormation/Route53/VPC/etc), Docker, Linux, macOS, iOS, GitHub, Python, Node.js, Django, PostgreSQL.	
Duties:	
Systems Administration, toolsmithing, full stack programming, team management, and more.	
IT Contractor, June 2011 - Jun 2021
Software Designer and Developer.
Systems Integrator and Administrator.
Unix, Internet, Cloud and Open Source Applications Specialist.
Some company names are withheld for privacy reasons. Please contact me at <david@goh.id.au> for enquiries.
Object Craft Pty Ltd (Dec 2011 - Jun 2021):	
Unix & Internet/Intranet applications design, deployment, debugging and maintenance. Unix Systems administration. Toolsmithing. Agile methodology implementation. Developer mentoring. Technologies Involved: Linux, macOS, Apache, Python, Javascript (jQuery, React, Node.js, raw), Web APIs (REST/JSON, SOAP/XML-RPC), HTML/CSS, PostgreSQL, ansible, Nexus, Docker, Microsoft SQL Server, Windows, Git, SVN, Postfix, site24x7 and other monitoring.	
Small Legal Firm - part time (Sep 2008 - present):	
Systems Administrator, Technical Support, Toolsmithing. Managing technology choices, implementation and support of services, ranging from locally hosted client/server applications to cloud services. Technologies involved: O365, macOS, Squarespace, Parallels, Windows, Drobo, G-Suite, Dropbox, DayLite.	
RMIT University (Jun 2011 - Dec 2011):	
Application Support Analyst Programmer, Systems Administrator. Maintenance and redevelopment of a variety of applications. Primary responsibility is a suite of applications from ExLibris. Toolsmithing, Systems Administration and Programming. Mentoring of junior programmers. Engagement with formal Change Approval Board processes and ITIL processes. Technologies Involved: Solaris, Apache, Tomcat, JSP, Perl, Python, PHP, Javascript, HTML/CSS, JSP, MySQL, Oracle DB.	
AAPT Ltd, October 2007 - June 2011
Employed within the Midrange Services group of AAPT Ltd as a Senior Systems Administrator. Primary specialty of development and toolsmithing of Monitoring utilities and other systems management utilities. Resigned in order to take up independent software contracting.
Monitoring Systems Development and Toolsmithing (Oct 2007 - June 2011):	
Ensuring software quality by introducing automated test practices. Build process toolsmithing. Designing and implementing improvements to Python based monitoring software (Eddie) and other related systems management utilities. Monitoring rule design and implementation to ensure minimal false-positives and automated service recovery processes where possible. Integration of alerting with Netcool to enable the Network Operations Centre to have a view of alerts. Aiding and educating other team members in writing scripts (Shell, Python and Perl). Implementation of Nagios monitoring including plugin writing.	
Senior Systems Administrator (Oct 2007 - June 2011):	
Managing a variety of ISP services (email - Postfix/Cyrus/Veritas Cluster, webhosting - Apache), maintaining Unix servers (primarily Solaris, HP/UX, Linux), Database administration (MySQL and Oracle), Backup configuration and management (Veritas NetBackup and HP Data Protector). Configuration and maintenance of SAN/NAS devices (NetApp, SUN StorEDGE, HP EVA SAN). Monitoring security news alerts and managing appropriate server and software patching where necessary. After hours on call support for the above. Engagement with formal Change Control Board processes (both in being engaged in relation to Application Changes from other teams and in creating Changes for project implementations relating to team). Mentoring of other team members in the above.	
IT Contractor, January 2004 - September 2007
Ceased contracting to take up full time employment in September 2007.
Some company names are withheld for privacy reasons. Please contact me at <david@goh.id.au> for enquiries.
Digital Media Technology startup (Aug 2006 - Sep 2007):	
Chief Development Manager. Managing the creation of an innovative media delivery platform from the ground up. Recruitment and ongoing management of ten very high quality technology staff, including GUI programmers, search and indexing engine experts, web database programmers, user interface designers and project managers. Company policy development and technology workflow and process development. Also Toolsmithing, Systems Administration, Programming (mostly Python), Code Review, Software Architecture and Design, Requirements Elicitation and Analysis.	
NAB Ltd (Aug 2005 - Jul 2006):	
Senior Analyst Programmer. Ensuring software quality by introducing partially automated code reviews, and building an automated unit testing suite. Build process toolsmithing. Designing and implementing Extract/Transform/Load software to do data aggregation on multiple multi-million line data sources, using Perl and Sybase SQL. Sybase database design, query design, and performance tuning. Aiding other team members in their work.	
SMS Gateway company (Jul 2004 - Mar 2005):	
Customer Requirements Elicitation (including liaison with third parties to determine appropriate interfaces), Writing Software Requirements Specifications and Software Detailed Design Documents. Writing a custom SMS Gateway (capable of doing both SMPP and HTTP communications) to interface with a financial transaction back end. Designing a custom XML-RPC communications protocol to ensure both security and ease of implementation for the third party owning the financial transaction back end. Ensured consistency of charactersets by translating all the common SMS character encodings to Unicode and ensuring that the back end receives a consistent UTF8 stream.	
Digital Media Technology startup (Jan 2004 - Jun 2004):	
Writing Software Requirements Specifications, and Software Detailed Design Documents based on Software Requirements Specifications. Ensuring software quality via design reviews and scenario walkthroughs. Writing prototype communications software in Perl, involving design of a custom client/server protocol using TCP/IP streams and XML messages.	
Newsfeed and Internet shopping company (Dec 2004):	
Customer Requirements Elicitation (including liaison with third parties to determine appropriate interfaces). Implementing custom modifications to Zope/Python based shopping software (Bizarshop) to enhance interaction with a specific payment gateway.	
Quintiles HRS Pty Ltd, May 2002 - January 2004
Employed originally by Health Research Solutions Pty Ltd, and continued employment with Quintiles HRS Pty Ltd when the company was purchased by Quintiles Transnational Corp.. Resigned in order to take up independent software contracting.
IT Manager (May 2002 - Jun 2003):	
Determination of company technical policy. Management of resourcing, interviewing and selecting excellent quality personnel to hire. Satisfying company technical requirements at minimal cost. Planning and estimation of time and staffing requirements for a diverse many project workload. Management of team member workload. Managing IT Integration process to integrate systems with Quintiles Transnational. Moved out of the IT Management role (as the role was no longer necessary) to take up full time work in the newly formed Data Solutions Department, after completing IT Integration processes with Quintiles Transnational.	
Software Architect & Engineer (May 2002 - Jan 2004):	
Writing Software Requirements Specifications, Writing Software Detailed Design Documents based on Software Requirements Specifications. Ensuring software quality via code reviews, walkthroughs and regular design meetings. Writing software test plans. Writing architecture critical libraries. Educating other developers about software quality measures. Writing web data capture applications in Perl and SQL. Initiating and completing development of the Core GoCRF Toolkit Suite, a toolset which enables rapid deployment of an XML based database in various contexts, primarily in the context of medical data capture. Implementing Configuration Management with CVS and Perforce.	
Senior Systems & Network Administrator (May 2002 - Feb 2003):	
Managing various network services (Samba, NFS, PostgreSQL, Apache, Mailman, Postfix), maintaining Unix servers and Win32 desktops, creating and implementing network policies. Supporting Lotus Notes desktop. Database administration of PostgreSQL databases.	
SPATIALinfo Pty Ltd, November 2001 - May 2002
Employed by SPATIALinfo to work on SPATIALnet (a Geographical Information Systems software product). Left when headhunted directly by Health Research Solutions Pty Ltd to become their IT Manager.
Senior Core Software Engineer (Nov 2001 - May 2002):	
Writing Software Detailed Design documents based on Software Requirements specifications. Ensuring software quality via code reviews, walkthroughs and regular design meetings. Writing Software Test Plans. Writing architecture critical libraries. Writing software in C, C++ and SQL. Using Clearcase based change control systems.	
Blaze International Ltd, November 2000 - August 2001
Employed by Blaze International Ltd in order to work on a new streaming server for Famous3D. Was made redundant in August 2001 when the company discontinued the streaming server technology.
Software Architect & Engineer and Senior Systems Administrator (Nov 2000 - Aug 2001):	
Writing Software Requirements Specifications. Writing Software Detailed Design documents. Ensuring software quality via code reviews, walkthroughs and regular design meetings. Writing Software Test Plans. Writing architecture critical libraries. Educating other developers about software quality. Ensuring code reuse. Writing software in C, C++ and Perl. Planning projects and tasks for software engineering projects involving up to three people. Planning, installation and maintenance of mission critical Linux systems and network services.	
Netizen Pty Ltd, March 1999 - October 2000
Started Netizen in March 1999 with 3 other directors, while continuing to work at Unico Computer Systems. Changed to full time work for Netizen in September 1999. Departed Netizen in October 2000 after selling the business to VA Linux, who were looking to acquire a going concern to aid expansion into Australia.
Technical Director (Mar 1999 - Oct 2000):	
Determination of company technical policy. Management of resourcing, interviewing and selecting excellent quality personnel to hire. Satisfying company technical requirements at minimal cost. Planning and estimation of material and staffing requirements for several-month long software engineering projects involving up to ten people. Management of team member workload.	
Training Course Conductor (Sep 1999 - Oct 2000):	
Conducting Training Courses on Perl, Basic Unix skills, and Advanced Unix skills. Reviewing, editing and aiding development of training course notes.	
Technical Sales, Software Architect & Engineer (Sep 1999 - Oct 2000):	
Meeting with customers to determine their technical requirements. Writing Software Requirements Specifications based on customer needs. Producing quotes based on estimated resource requirements and costs. Writing Software Detailed Design documents. Ensuring software quality via code reviews, walkthroughs and regular design meetings. Writing Software Test Plans. Writing architecture critical libraries. Educating other developers about software quality. Writing web applications software in Perl, Python and PHP.	
Senior Systems & Network Administrator (Sep 1999 - Oct 2000):	
Managing various network services, maintaining Unix machines and services, creating network policy. Database administration of MySQL, PostgreSQL and Sybase databases.	
Unico Computer Systems Pty Ltd, November 1996 - September 1999
Moved to Melbourne to work for Unico Computer Systems, leaving in September 1999 to work for Netizen Pty Ltd full time.
Software Architect & Engineer and Systems Administrator (Nov 1996 - Sep 1999):	
Writing Software Detailed Design documents based on Software Requirements specifications. Ensuring software quality via code reviews, walkthroughs and regular design meetings. Writing Software Test Plans. Writing architecture critical libraries. Educating other developers about software quality. Writing software in C and C++. Maintaining Internet related services, including UUCP based mail and news services. Planning and installation of a secure firewall and proxy infrastructure. Oracle Database administration.	
CAE (Australia) Pty Ltd, December 1994 - November 1996 Ferranti Computer Systems Australia Pty Ltd, April 1994 - November 1994
Hired by FCSA. FCSA was purchased by CAE in Dec 1994. Continued full time work for CAE (Australia) until moving to Melbourne and going to work for Unico Computer Systems.
Software Engineer (Apr 1994 - Nov 1996):	
Design and implementation of a Configuration Management system using SCCS as a back end. Analysis, bugfixing, redesign and testing on the TDTS (Train Describer Telemetry System - 1.3 million lines of C, cross-compiled for iRMX - Intel Realtime Multibus eXtended OS) project. Consulted regularly by most of the other Software Engineers for advice.	
Systems Administrator (Dec 1994 - Jan 1996):	
Maintaining the SunOS 4.0 based PC-NFS network. Maintaining the iRMX multibus hardware, ensuring backups of the development machines. Planning and implementation of network infrastructure changes for office move in December 1994.	
Vital Years Pty Ltd, December 1993 - March 1994
Part-time work for Vital Years Educational Consultancy. Left to work for FCSA.
Technical Support and Admin (Dec 1993 - Mar 1994):	
Providing user support and systems maintenance for Macintosh computer systems. Performing general clerical work. Taking part in training course development processes.	
Education
1997:	Part time Computer Science degree at La Trobe University (incomplete)	
1992-1993:	Bachelor of Science (Maths) including some Computer Science subjects, at University of New South Wales (incomplete)	
1991:	Medicine, University of New South Wales (incomplete)	
1990:	NSW HSC, TER 99.20 (top 0.8 percent of state)