I am a creative software architect and engineering manager with fifteen years experience in all aspects of software design and delivery - from product definition and development, to usability and user interface design to full-stack application development and front-end architecture. I have delivered large scale projects to millions of users for tier one telcos and broadcasters around the world on most major platforms and devices, working with a huge range of technologies and solutions. I have also initiated and contributed to a number of open source projects as well as regularly speaking at, and organising community events.
I care deeply about the culture and processes required to build effective teams and maximise their potential. I genuinely love building polished products that delight users and empower businesses.
Creating software is an intoxicating mix of analytical and creative thinking: taming human complexity with logic and order; delivering predictability and stability from changing and imperfect requirements. I am truly fortunate to have found a career that challenges and inspires me.
My extensive experience on both product and service teams has given me valuable insight into opportunities for improving company wide engineering processes, from sales through to delivery:
- Research and development
- Sales engineering and estimation
- Process implementation and refinement
At Massive I was involved in building the UI Engineering teams in both Sydney and London offices. Building effective teams involved careful attention to hiring, induction and performance evaluation to best understand the strengths and weaknesses of new employees:
- Recruitment and team building
- Induction and mentoring
- Performance review
The right processes and tools can dramatically improve the ability of a team to define, design and deliver quality software in a predictable way. In every role I have championed the iterative refinement of the development process:
- Agile tools (Confluence, JIRA, Stash, Bamboo)
- Build tools (Rake, Ant, Gradle, NPM+Gulp, custom)
- Continuous integration and release
Effective QA requires close collaboration between engineers and testers, designing features with testability in mind, and a tight QA feedback loop. At Massive I was involved in the development and deployment of automated testing tools (unit, mocking and code coverage) as well as the definition of company QA processes:
- Code review (style and architecture)
- Unit and integration testing
- Build and test automation
Massive builds TV Everywhere solutions. Leading the client SDK team gave me valuable insight in delivering live and on demand video content to a huge range of devices:
- Encoding, packaging and encryption
- Playback, analytics and QoS
- VOD/live work flows
As a Solutions Architect I led service delivery teams in Massive's London and Prague offices in delivering projects built on the AXIS video platform. My oversight spanned the duration of each project – from sales and estimation, to delivery and eventual handover to ongoing support teams.
During the sales process I was responsible for communicating Massive's platform and solution to potential clients, refining the sales pitch based on the requirements and scope of the project.
- Low level graphics abstractions for HTML/CSS, Flash and OpenGL
- Flexible high level component library including widgets, layout and focus management, multiple input methods (touch, mouse, remote control unit, voice)
- Cross-platform unit testing, code coverage and mocking support
- Robust dependency injection based MVC framework
- Custom build tool for compiling and packaging applications for each platform
- Pluggable API support for Android, iOS and a wide range of connected TVs and consoles
- Custom package manager for installing project dependencies
- VAST/VMAP/SMIL capable video player supporting a range of streaming and DRM options
- Support libraries and utilities
The MDK has been used on projects by tier one telcos and broadcasters around the world, including: Univision, Telstra, Viocorp, Cisco, Northern and Shell, Bell Media, Rogers, Dendy, TabCorp Australia and British Telecom. The multi-platform nature of the MDK allowed Massive to deliver these projects faster and more efficiently than our competition.
As architect of the MDK I also took responsibility for developing and documenting appropriate quality control processes for both the product and service teams using the MDK.
- Unit, integration and behavioural testing
- Continuous integration (first on Team City, then on Bamboo)
- Release and dependency management
- Documentation (high level and API)
- Source management (branching work flow and code-review)
- Architecture and code style guidelines
As software engineer I developed complex data-driven Flex applications including a video recruitment tool and a collaborative data entry tool for the United Nations Trade for Sustainable Development (http://www.standardsmap.org) organisation with more than four thousand entry fields. I also led the team building a video on demand store for a resource constrained set top box (BT Vision on YouView). The project involved working with prototype hardware and pushing very limited resources as far as possible. The store interacted with a variety of back-end services for content, authentication, purchase and rights management.
Consultant Software Engineer (2 years)
During my time as a consultant I worked on site with a number of advertising agencies in Sydney, working on more challenging technical projects that could not be completed in house. These included augmented reality and 3D graphics, Google Maps integration, a virtual character animation system and a project that used face detection and image manipulation to render facial hair onto uploaded user images.
My final consultant role was at Massive Interactive, where I was offered a full time position based on my work.
Software Engineer/Creative Technologist (5 years)
At Frost Design (frostcollective.com.au) I led a team of developers building interactive interpretations of the high impact visual designs of Vince Frost. The role challenged me to translate concepts from print to screen without losing the powerful simplicity of the designers' vision. I also had the opportunity to create experiences in a range of media, including 3D and stop motion animation, and physical installations.
At Ogilvy Interactive (http://www.ogilvy.com.au) I led a team of Flash developers building games, micro-sites and other advertising for clients like IBM, KFC, Coca-Cola and Uncle Tobys. I introduced basic engineering practices like source control and a shared code library to the non-technical design team and ran a monthly session for designers wanting to improve their coding skills.
At Digital Eskimo (http://www.digitaleskimo.net) I built interactive art in Flash and websites in HTML/JS/Flash and PHP. As the only developer in this small business I was expected to jump between any job that came in.
At Savv-e (https://savv-e.com.au) I built e-learning content in Flash and HTML. I also introduced the team to a data/template driven approach from what had been a very manual and bespoke development process.
Community and Open Source
I've worked with many languages, platforms, tools and technologies so talking about them all in detail is not practical. Here, instead, is a long list of names and accronyms I have experience with. Take note of the ones that interest you and we can talk about them in more detail.
Chrome/Safari/Firefox/IE and Devloper Tools,
Ruby on Rails,
Microsoft Smooth Streaming,
- I've was born in Australia but have lived in Malaysia, Chile, France, and England. I speak passable Spanish and French.
- I have a Bachelor of Digital Media Degree from the University of New South Wales.
- My hobbies are largely the same as my non-hobbies, but when I'm not hacking or hanging out with my family I enjoy traveling, cooking and eating tasty food, and exercising to avoid the consequences of same.
- I'm almost certainly taller than you.