Summary

I have 15 years of development experience on the Microsoft stack from C++ to C# to win forms, database, graphical interfaces and web development. More recently I have begun including Apple's iOS and OSX platforms as platforms I develop for.

For whatever reason I am drawn to projects that offer above average challenges and in doing so I have built a reputation of delivering and innovating. I enjoy writing software and building products and platforms that deliver to users. I favour simplicity in my code and design, but relish the challenge of complex systems.

I am currently investigating/learning Ruby on Rails and node.js and the application of these technologies to REST API and website development.

Interest

  • Walking and running
  • Windsurfing
  • Sailing (novice)
  • Films and movies, especially film noir and sci-fi
  • Writing, but nothing published
  • Writing software
  • Japan; it's culture, language and film

Work History

Work History
Mar 2011 - Present

iOS Developer

Paper Kite

I helped start a mobile consultancy in NZ by building an iOS app for the NZRU, the Official All Blacks app. Although this was my first iOS application it was built with a tight deadline of less than two months (after-hours effort) with launch due for the start of the season.

Although simple in design it had to download content form different sources, display data in line with the NZRU's look and feel, be considerate to users' bandwidths and provide a platform that would easily allow further development.

The app was launched on time, met the customer's requirements and passed the app store review first time. To this date, no error logs have been received suggesting a solid build.

iOS, Xcode, Objective-C

Sep 2012 - Present

Enterprise Mobility Consultant

Alphero

iPhone app for an online energy provider

Currently under-development, this is an iOS app with plenty of transitions and animations talking to a RESTful API.

MTF's Management console app

In between large projects I worked on an ASP.NET MVC integration with managed content from a Silverstripe API.

Westpac's iPhone and iPad banking app

Conversion of the iPad banking app to a universal app with the focus on building the iPhone design.

I was part of a small, focussed team with high levels of engagement between Westpac and Alphero's business managers, designers and developers. The UI requirements were challenging and the timeframe even more so but both were met through a massive amount of effort and dedication. After the very successful initial release of the iPad app, we followed with an interim release and then a conversion to iPhone to replace an existing hybrid app. This was an agile-kanban project.

Jun 2011 - Aug 2012

Senior Analyst Programmer / Lead Developer

ANZ

Lead Developer

As the (acting) lead developer for goMoney I had oversight of four developers in Wellington and Melbourne. I was able to stay very hands-on and provide just high-level reporting on dev progress.

Working closely with the team I established the unit-test and code coverage strategy and subsequent integration with Jenkins CI using gcov/llgov, gcovr and Cobertura. A side-effect of this was the added visibility into code quality. This meant defining a more rigorous approach to implementing domain objects, a general block-based validation mechanism and use of an MVVM-esque approach to View-Models using Objective-C Categories permitting some UI logic to be included in the testing. I worked hard on decoupling certain areas of code to facilitate a more flexible design.

I became Chair of the Mobile Design Council which included submission, review and coordination of design decisions affecting all things mobile in ANZ. Liaising with internal teams, architects and project managers in light of these decisions was typical.

Senior Analyst Programmer

I worked on agile-driven stories for goMoney, estimated and prioritised stories and was involved in bi-weekly showcases and evaluations. Such stories included the PIN control, several payment types, general accessibility, security, JSON, IPA-size reduction through background image drawing and spriting.

I worked with architects to set the technical direction for the client application with the goals of improving quality and meeting strict business deadlines. I spent many weeks in Australia working closely with architects, project managers and the business to provide high-level architectures and estimates.

iOS, Objective-C, C++, unit-testing, code coverage, .NET, OOA, OOD, C#, leadership, agile, patterns, MVVM

Feb 2009 - Feb 2011

Senior Analyst Programmer

ANZ

ANZ goMoney

I joined the Innovation Group's Mobile Platform team and worked on the second release of goMoney. goMoney is an iPhone application for ANZ account holders letting you manage your accounts; transfering money, paying bills, checking balances, etc. The project is driven using an agile story-based approach, using Thoughtwork's Mingle, daily scrums and a distributed team. My focus was on Pay Anyone, Bill Pay and receipt functionality as well as more general enhancements.

I contributed new story ideas for in-app help, training, security features and an exhaustive review of the application's technical debt. I worked hard on improving the code through separation of responsibilities, reducing LOC, decreasing obvious complexity, coding to interfaces and cleaner use of MVC. And after removing hundreds of comiler warnings I took the somewhat humourous and draconian step of turning on the "treat warnings as errors" feature in Xcode to prevent further warnings masking serious problems.

With a predominantly Microsoft background I advised on performance and volume testing for the vendor's service implementation (a multi-tiered IIS, WCF and ASP.NET solution).

iOS, Xcode, objective-c

Retail Tools

Retail Tools is a custom e-form solution for National Bank and ANZ capturing data for new managed funds and foreign currency accounts. I looked after several releases into production for enhanced validation, legislative tax changes, re-branding and NZ Post PAF validation. The amount of work required me to coordinate Datacom and Optimation consultants in order to meet deadlines.

C#, ASP.NET, SQL, VSS

MyTell Cheque Representation (Team Lead)

ChequeRep is a value generating, point-solution in the MyTell programme of work for the representation of dishonoured cheques. EDS provide BACHO files as input and we output BACHO files and reports. The user interface is used to manage dishonoured cheques. My tasks on this project included:

  • Assistance with the initial estimation and strategy
  • Leading 2-4 developers and running the daily scrum
  • Recommended and developed a prototype to mitigate risks and reduce the likelihood of contingency
  • Writing the Detailed Design document (SDLC document required by ANZ Technology group and the Architecture Board)
  • Development of the ASP.NET MVC web application
  • Database design and development in accordance with the standards
  • Mentored other programmers on the use of ASP.NET MVC

ANZ's secure coding course for web application security was required to work on and release this solution.

C#, .NET, ASP.NET MVC, jQuery, jQuery UI, xVal, RhinoMocks, NUnit, TFS, ELMAH

MyTell Branch Matching and Exception

BMAX was a "challenging" project on the critical path for Phase 2 of the MyTell programme of work (the modernisation of the telling systems as part of the merging of two large systems). The solution enabled users to view unmatched telling items and produce reports.

The solution is an ASP.NET JavaScript/jQuery -heavy web application that uses WCF services to talk to the database. Notable aspects of the project I worked on were:

  • Performance improvements to the jQuery-based grid and to other areas of the client-side.
  • The general approach for using JavaScript OLN and JSON.
  • A lightweight validation and business rules framework (necessary to fit the solution and the time frame).
  • Redesign of the data access layers and database schema.
  • Liaison with automation/infrastructure/database teams.
  • Defect triage, System Test liaison and reporting to management.
  • On-going team leadership following technical handover while starting the ChequeRep project.

Personally, this required a huge effort to get the project through System Test and UAT.

C# ,.NET, ASP.NET, jQuery, jQuery UI, SourceSafe, IE, WCF

National Bank Web Site

ASP.NET web application development providing information and utilities for National Bank products and services.

  • Design and development of the calculation engine and PDF generation of investment planning functionality.
  • Consultation on future development direction, page migration, data patterns, ASP.NET MVC, T4 templates and URL rewriting.
  • Business consulting on IA migration, SEO optimisation and Twitter.
  • Task estimation, design and completion and production deployment support.
  • Mentoring and supervision of team members.

C#, .NET, ASP.NET, jQuery, Visual SourceSafe, RhinoMocks, iTextSharp, design, patterns

Oct 2007 - Feb 2009

Senior Developer/Team Leader

Trade Me

Web Application Development

My main responsibility was software development for the Trade Me website, its administrative functions, ad delivery and email delivery. I also worked parts of the Find Someone and Old Friends websites. I stood in for the Development Team manager on infrequent occasions.

I looked after three other developers paying attention to code reviews, solution design and mentoring and performed remote and in-situ technical interviews for potential candidates.

VB.NET, C#, .NET, ASP.NET, XML, XSLT, SQL, Silverlight

Email Content Management and Delivery

Trade Me sends millions of emails per year and as the company as grown it has become more important to analyse the effectiveness of emails. The existing system was not capable of providing this. Maintaining the hundreds of types of emails and being able to extend and expand on these was becoming a business imperative.

I envisioned, designed and developed a means of doing this while working within the existing, optimised processes. The development spanned all technical groups in the company and each required buy-in. Go-live was exceptionally smooth.

Highlights of the revised delivery solution include:

  • Migration from HTML generating SPs to XML generating SPs.
  • XSL templates for each email type and subsequent refactoring to provide a common XSL framework.
  • A simple email versioning system to allow templates to change while processing large batch runs of emails.
  • Mail delivery applications were modified to accept XML and use the XslCompiledTransform features of .NET.
  • Enabling deeper analytics and providing immediate business value.
  • Providing an "enabling solution" with spin-off opportunities and ROI for other aspects of Trade Me.

The impact of the solution added about 2ms to each email generation - well within an acceptable increase to processing time. The payload of each email being passed through the system dropped hugely and over a three-month period reduced total data transfer by several GB.

C#, VB.NET, .NET, ASP.NET, XML, XSLT

Nov 2006 - Nov 2007

Senior Developer

Datacom

Integrating OBA with K2 Workflow and Meridio DMS

I integrated Word, Excel and PowerPoint 2003 with custom data access libraries interfacing with the Meridio DMS. Some VBA was required but mostly the default behaviour of Office was controlled using C#. I added to existing design, user-interfaces, business and data access layers as necessary.

VB.NET, C#, .NET, ASP.NET, XML, Win Forms, XSLT, agile

Victoria University Provisioning Application

I was sub-contracted to Microsoft Consulting to develop the data access layer for ADAM, using the Directory Services namespace, unit tests and associated user interface for Windows SharePoint services (WSS).

C#, XML, XSLT, WSS, VSTS, ASP.NET, Unit testing

Feb 2005 - Oct 2006

Senior Developer

Gen-i

NZRU Salary Cap Tracking

I architected and subsequently developed an application to help the NZRU administer the Salary Cap. I carried out use-case analysis, produced the database schema, class design, functional specification, project estimates and the project plan.

As Team Leader I was responsible for task assignment, reporting to management, to the customer, development tasks and general support for the team. I delegated tasks whenever it made sense to do so and encouraged a scrum meeting every morning for several minutes to keep everything on track and visible.

C#, SQL Server, Win Forms, Crystal Reports, use-case analysis, design, UML, architecture

BNZ End-to-End Lending Senior Developer

I was a senior developer on a mixed Gen-i/BNZ team to develop an ASP.NET application to facilitate End-to-End lending.

My development tasks included implementing business logic and the user-interface for loan securities. During the first few days I recognised the value automated testing would lend to certain parts of the solution. I recommended the use of NUnit to the team leader and demonstrated the use a series of NUnit tests. To encourage the adoption of NUnit I provided written material and guidance. (I also investigated the use of NUnitAsp.)

The solution was in C# on .NET Framework 1.1. A SQL Server 2000 database was used to improve performance by acting as a cache between the business tier and the mainframe.

C#, Visual Studio 2005, SQL Server, ASP.NET, .NET, NUnit, NUnitASP

Legal Services Aid Global Granting Senior Developer

LSA required an application to facilitate a new process for producing invoice documents and for recording grant information against clients. The design, implementation and testing of the system had to be completed within a well-defined and small budget. I opted for a wizard-style interface and SQL Server. I used Word templates with embedded bookmarks and Word Automation to create the documents.

C#, Visual Studio, SQL

Reserve Bank FSIS Senior Developer

I was part of a team in RBNZ's Knowledge Management group designing a system to publish economic survey information on the public-facing website. We held workshops with both the Statistics and Economics department to understand the business and at the same time formed strategies on how to deliver the system and what the system should be in order to meet the needs of many different groups.

C#, Visual Studio, AZMAN, ORM, SAP, OLAP

Reserve Bank Guiding Principles

We defined a set of guiding principles around software development to be used by all future software development projects. We created the guidelines in such a way that they were genuinely guiding rather than absolute. Each guideline provided the underlying rationale so readers could understand why it existed and the degree to which it could affect their decision.

C#, architecture, design, security

IHC DTS Packages Senior Developer

I developed a DTS packages to take in a number of data sources in different formats, verify the integrity of each, manipulate the data and populate a newly created database.The incoming data was not always well-formed and the target schema was complex. Some intricate T-SQL was required to map the datasets to the schema.

DTS, SQL Server, T-SQL

DIA Passport System Upgrade

I migrated a large and complex system to the latest version of Visual Basic. The target environment was highly secure and the DCOM foundation on which the system was based posed considerable challenges. Detailed documents were required to satisfy the needs of the IT department and allow them to upgrade unassisted.

Visual Basic, MSXML, DCOM, MTS, SQL Server 7

Apr 2004 - Feb 2005

Consultant

Bearing Point (now Tenzing)

Telstra Clear

As part of a significant upgrade of Sybase databases the business identified several existing financial and marketing reports that were incompatible with the new database. I worked closely with BAs and other team members to reproduce these reports for the upgraded system. In addition to becoming familiar with both new and old database schemata, I also had to deal with newly introduced performance issues.

SQL, Sybase

MAF Flood Insurance Eligibility

I took ownership of a partially completed ASP.NET web application. I documented the design and functionality, refactored, created test scripts, fixed bugs and automated process where possible. In light of previous deployments issues I created a comprehensive deployment guide and checklist to ensure smooth upgrades. Originally designed as a standalone application I helped redesign it to work with definable and parameterised rules to fit multiple scenarios

C#, SQL, SQL Server, XML, build automation

May 2001 - Apr 2004

Software Engineer

Omron Corporation

I enhanced Omron's flagship SCADA (Supervisory Control and Data Acquisition) product supporting a large range of hardware components. It was developed using an enhanced version of MFC and heavy use of STL. Much of my work focused on the graphical representation of physical hardware controllers and controls to display acquired data.

Omron has an extensive range of temperature controllers. I redeveloped the configuration suite for the controllers; re-branding it, adding in localisation for the Japanese market, and re-architecting it to support plug-and-play temperature controller  led it through a re-branding and  project, Japanese localisation and an architectural change to allow new controller devices and graphical displays to be added. Originally a C++ Windows application with DLLs for each temperature controller I created a generic comms layer and introduced graphical ActiveX controls permitting new controls to be added without recompilation. I was seconded to Japan to work with quality engineers to ensure the product met Omron's quality standards.

Visual C++, STL, GDI, comms, ActiveX, COM

Jul 1998 - Apr 2001

Analyst Programmer

Neusciences

I enhanced Neuframe, a Windows application for the analysis, processing and modelling of non-linear, real world data. I designed and developed neural and statistical algorithms with a focus on large data sets and unreliable data. I expanded the core library, added database access aligned existing algorithms with a core set of interfaces. The application was written in C++ with heavy use of MFC for the user interface and STL to support the algorithms.

I wrote image analysis and processing algorithms in C for facial and hand-vein recognition. The algorithms were

used for face and hand-vein recognition as part of a biometric display in London's Millennium Dome.

Visual C++, C, algorithm development

Education

Education

Tretherras Sixth Form College

English Literature

Mathematics

Physics

1995 - 1998

BSc (Hons) Mathematics with Computing

University of Portsmouth

Calculus, statistics, matrices, linear differential equations, discrete mathematics, object-oriented programming, numerical analysis, forecasting, AI, fuzzy-logic, neural networks and genetic algorithms.

But don't ask me questions about most of this, please! ;-)