Profile

Computing

My journey with computing started with a borrowed Sinclair ZX81 in 1984 then progressed to my very own, very much loved, second hand Commodore VIC-20. There followed various worn out Amstrads until I was old enough to start building PCs with my own money.

I have been actively writing software for the web since 1997 and thus have first hand experience of the development and evolution of a diverse range of technologies, whilst having worked mainly as the lone developer on projects I have picked up new skills quickly and sought out and researched new knowledge and technologies unguided.

Whilst others typically take an academic or abstract approach to software development, I tend to approach things from a pragmatic “let’s get this thing working” perspective based on the needs of the project at hand, thus I have a diverse and extensive skill base in a number of technical areas.

I use opensource technologies as much as possible and am constantly seeking new opportunities to become involved in the opensource development community.

I am currently focused on developing my Golang programming skills and am gaining competence in Rust, TypeScript and React whilst developing experimental systems for small embedded computers such as the Raspberry Pi.

Music

I have been a keen musician since childhood, and trained as a percussionist and music producer at a specialist music academy. I have experience of a wide variety of musical genres and have played professionally in everything from orchestras through to rock bands. The skills needed as a musician and producer are very similar to those of software developer: an eye for detail, patience, tenacity, courage, self awareness, motivation and the ability to work very hard, often independently.

My music production and audio engineering work with other musicians has extended my project management experience. I have stayed solution focused whilst working with artistic temperaments, very tight time frames and even tighter budgets.

This has given me experience working closely with and guiding diverse teams of people to fulfil project goals and also working alone on large projects with longer term objectives.

Business

With experience of customer service, administration and an innate entrepreneurial bent I have an eclectic and diverse mix of expertise and attributes that combined with my technical abilities give me a unique insight and usefulness as a software developer.

Self taught and self motivated, I am an articulate communicator with good people skills, able to solicit from clients and colleagues their technical requirements without bewildering them with jargon. I have always worked hard to interpret people’s needs in to practical, technical solutions in both music and software, especially with clients who have little or no technical understanding or experience.

I was a partner in a small Brighton based digital agency for three years during which time I developed a custom PHP based content management system that powered the web sites we created for our clients.

Other Interests

When I have the time I enjoy exploring the countryside with the dog, museums, music making, computer gaming and keeping up with the family.

Technical Skills

Proficiency in PHP and several years experience creating web applications using Zend Framework and Symfony.

Experience with a wide range of relational, object and document oriented databases including MySQL, PostgreSQL, CouchDB, SQLite, MongoDB, Redis, their associated ORM tools and designing interfaces for CRUD operations.

Experienced using Linux both as a server and desktop operating system. Experience deploying and maintaining software on a diverse range of server, network and hosting environments including VirtualBox, VMWare, AWS, Linode and Rackspace.

Proficient at UI and UX design; including the principles of responsive design, progressive enhancement and accessibility.

Experienced with HTML5, CSS3 (including LESS and SASS), JavaScript ES5/ES6 and associated front end frameworks such as jQuery, Dojo Toolkit, Bootstrap and Foundation.

Experience using Node.js to create both deployment and development tools and backend systems using frameworks such as Express.js and Hapi.

Experience using Angular.js, NW.js and IndexedDB to create desktop and single page applications.

Understanding of RESTful API design, HTTP protocol and utilising technologies such as HAL, HATEOAS, and OAuth.

Understanding of Git for version control and use of GitHub and Bitbucket for project tracking and management.