An experienced programmer who has used multiple languages to write solid code that can be tested and performs well. I enjoy working with non-technical people to design and develop solutions that solve business problems.
As the maintainer of two PHP extensions, I have a deep understanding of PHP internals and how to handle bug reports without causing compatibility problems for existing users.
I like to share my experience and help other people become better programmers by giving talks and helping people online.
|PHP||Over ten years development experience including five years commercial experience. I am the sole current maintainer of the Imagick extension and help maintain the Gmagick extension. I occasionally write RFCs to try and make PHP better. 'Constructor behaviour of internal classes' was accepted for PHP 7, 'Closure from callable' targets PHP 7.1, and 'Consistent Callables' targets PHP 8.|
|MySQL||MySQL table and query design for medium sized website with moderate load, to allow responsive user experience.|
|Java||Five years Java experience covering both J2SE, J2ME and J2EE for creating applications on mobile phones and Java applets, and Spring based web application.|
|Automation with Ant/Bash/Chef/Puppet||
Integrated continuous build and automated test systems with for rapid detection of development issues. Have used Cruise Control with Ant, and of Travis-CI for open source projects.
Developed Ant scripts for building, automated testing and deploying of applications. Designed and implemented
plugin Ant tasks for custom processes e.g. Manipulating assets, packaging and deploying applications.
Written and used Bash scripts and associated tools in PHP to allow deployment of a web application including all database changes from a single command. Used Chef to create, configure and deploy to Amazon EC2 instances. These days though, I prefer to RPM everything and make deployment be as simple as possible.
|C/C++||Five years of commercial development. Good understanding of C/C++ compiler technology|
|J2EE + Spring + Hibernate||Developed internal web based application for managing product pricing.|
|WAP/XHTML||Developed wapsites that used content adaption to optimise user experience based on handset capabilities.|
|Tech lead||Senior programmer on a number of projects. Responsible for technical design, scheduling of tasks, project management and communicating with other departments.|
|Optimisation||Experience of writing x386 assembler for low level, high performance graphics solutions, experience of debugging disassembly for MIPS, ARM and Pentium processors.|
|Source Control||Used and administered Microsoft Visual Source, Subversion and Git for source code version control.|
|Tools used||Amongst the tools I've used are Wireshark, Bugzilla, PR-tracker database, Footprints, IntelliJ Idea, Visual Studio, Visual Source Safe user/administrator, Subversion, Git, PHPStorm, Metrowerks CodeWarrior, InstallShield, Microsoft Visual Sourcesafe, Subversion, CVS, Git, strace, valgrind, gdb.|
|Continuous testing||Integrated continuous build and automated test systems with Cruise Control with Ant for rapid detection of development issues.|
Since the start of 2014 I have been the sole maintainer of the PHP Imagick extension. This involved fixing a backlog of issues, adding new functions introduced in ImageMagick, and updating the extension for PHP 7. I also assisted the ImageMagick team in detecting and fixing a number of memory corruption issues. Recently added to the Gmagick maintainer list due to the number of contributions made.
Developed a website phpmagick.com to show working examples of all the functions in the extension.
Auryn github.com/rdlowrey/auryn is a recursive dependency injector, that can be used to bootstrap and wire together S.O.L.I.D. PHP applications. I helped design how this D.I.C. should work, as well as provide bug-fixes and write test cases. I spoke at the PHP South Coast confernce 2015 about how dependency injection makes code better.
Developed the Jig templating library. This is a lightweight templating system that uses dependency injection to allow 'views' to be a first class layer inside PHP applications. The documentation is available at phpjig.com.
Developed the Tier 'application runner' framework. Tier is a new approach to structuring PHP applications to avoid monolithic frameworks, and allow multiple dispatch inside an application, which allows 'tiers' of code to be developed in a way that make it easy to write high-performance, easy-to-test code.
Worked on three projects in Dialogue's Australian office.
Web-based SMS that allows people to create an account online to use Dialogue's platform; be able to purchase SMS credits; use virtual mobile numbers to send and receive SMS.
Developed application backend in PHP and MySQL.
Wrote deployment scripts to deploy application upgrades and database changes in a single command.
Helped design backend API for provisioning customer accounts, credit card billing, purchasing of inbound numbers.
Designed and implemented customer support tool to allow the vast majority of customer support tasks to be handled within the application, rather requiring customer support team to have access to database.
Provided customer support via email, zendesk and SnapEngage.
A web based tool written using Java J2EE, Spring, Hibernate and JSP to allow our commercial team to:
Streamline the process of importing price data from our suppliers by intelligently interpreting spreadsheet data.
Hold data about the status of our suppliers connecitivity to allow our operations team to be able to support our customers.
Enable easy generation of price lists for SMS sent to different territories.
Developed content management system with intergrated keyword based scripting to allow end-users to puchase content via SMS and web pages, to be billed by premium SMS.
Java J2SE content management tool to allow content to be uploaded and managed in a secure manner.
Service management website to allow editing of services including:
Backend system which managed all content, served web-pages with appropriate content inserted for the service, billed users and managed regulatory requirements e.g. spend reminders sent via SMS when users had spent $30.
XHTML websites generated from the content for the service using the WURFL to optimize each site based on the users handset.
Developed J2ME applications for entertainment and communication markets. Investigated provisioning and GPRS configuration issues – designed help pages for customers to provide information about configuration. Also managed and improved testing procedures at Switchfire. Developed and supported W.A.P. consumer focused services.
Full-time position developing mobile e-commerce applications, focused on bridging the gap between web and mobile experiences. These applications were mobile betting and dating services, and developed using J2ME. Developed a packet analyzer, modification and logging tool, to enable debugging of phone communication issues and allow repeatable tests. Helped develop an XML based form system for automating the layout, communication and processing of mobile applications.
As part of a team with ex-colleagues, setup a company to develop games for mobile phones using J2ME. As Technical Director responsible for all technical aspects of development and company website, as well as developing the games. Wrote several tools in J2SE with Swing to allow cross-platform editing of game data. Developed company website for information and to provide a way for customers to buy our games, including design and style of the website.
As a sub-contractor on Fifa World Cup, Intelligent Games was tasked with adding special effects to the World Cup version of the game to add ambiance. Towards the end of this project, I was required to work in the clients site in Vancouver for four months.
I led a team of five people to create Intelligent Games first Gameboy Advance game. As this was IG's first project on this platform we had to develop all our tools, development environment and low level libraries from scratch while we were learning how the GBA worked.
Joined as a junior programmer on Brian Lara Cricket. Designed and implemented code modules for data compression, event based commentary system, installation routines. Also responsible for source code version management. After one project promoted to be the lead programmer in a team of 6 programmers, also responsible for task scheduling, interfacing with the design and marketing departments and reporting to the senior management.
As a prototype programmer worked with game industry design guru Jon Hare to research both new games designs and programming techniques for flexible and data oriented project development.
Worked as part of Suns World Wide Application Support team, creating a intranet site to give support for Suns internal software systems. Used Perl to create a web based application to allow non-technical staff create and edit web documents.
Main topics covered include Quantum Physics, Physical Chemistry, Optics, Nuclear Magnetic Resonance and both chemistry and physics laboratory work. For my third year chemistry project I wrote a computer program to simulate 'the spectra of solid state nuclear magnetic resonance experiments using magic angle spinning'.
Physics - A, Maths - A, Chemistry - B, Further Maths - B.
Ten G.C.S.E.s of maths, chemistry, biology, physics, French, German, Geography, History, English language and English literature.
Gold, Silver and Gold certificates in the National Mathematics Contest.