- Walking and running
- Sailing (novice)
- Films and movies, especially film noir and sci-fi
- Writing, but nothing published
- Writing software
- Japan; it's culture, language and film
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.
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.
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
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
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 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:
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.
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.
C#, .NET, ASP.NET, jQuery, Visual SourceSafe, RhinoMocks, iTextSharp, design, patterns
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:
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
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
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
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.
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
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
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
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! ;-)