On this page I’ll detail my areas of expertise.
PHP has been my language of choice for over 15 years. I took an early interest in the language when trying to modify forum software. Since then I’ve specialised in it, and built more websites than I can count with it. The PHP ecosystem has changed drastically in the last few years. Gone are the days of includes, magic quotes and addslashes and PHP now has a fantastic toolset to build modern, maintainable and quick web applications. We now have namespaces, dependency management and incredibly well built components that can be put together to quickly and efficiently build applications.
You can see some of my PHP work here:
- Silex starter pack - A project boilerplate to quickly get up and running using Silex
- Banking analytics - A (very) quick proof of concept to analyse a Finnish bank’s data and track your spending and balance over time.
- Flotlib - A dirty hack to generate client-side flot libraries from the server. Ew ;-)
Throughout my career I’ve often been responsible for developing the front-end of many of my projects as well as the back-end. I like to think that my front-end skillset is equally as sharp as my back-end skillset. I’ve been writing HTML & CSS for so long I remember having to support Internet Explorer 5. Fortunately those days are over and now I spend that kind of time debugging why webkit keeps flickering animations, or an android browser is performing animations slowly.
I’ve worked on MySQL databases for the majority of my career - after all, you need somewhere to store data. I’ve dealt with tables with 100s of millions of rows, working feverishly to optimise queries using indexes and balance load across multiple MySQL servers.
I couldn’t have learnt so much without this brilliant book: High Performance MySQL
One of the more recent areas of interest for me has been managing servers. Having been relatively new to the unix toolchain when I moved to Finland in 2010 it’s now become second nature to me. I’ve set up, secured and managed dozens of servers over the last few years. I consider it a core competence to understand the environment that my applications run in. Some great tools have emerged to make life easier including Vagrant for quick set up and sharing of development environments amongst the teams I work in. It’s quite useful to be able to use provisioning services on top of these to make reproducable environments for everyone working on a project. These provisioning files can also then be modified and used to spin up servers in the production environment.
Systems architecture & design
One of the most important skills I have learned to focus on is planning and system design. It is important to plan and design a system that will meet all the goals of the project. This can often include making sure the application is designed in such a way that it’s easily maintained and modified, that it scales and that it takes into account potential problems that may occur further down the line. Having had many years of experience I have learnt to identify very early on in the life cycle of a project what potential pitfalls might occur and address the risks before they happen.
Mobile application development
I am currently learning the Swift programming language, with the goal of being able to build iOS applications.
Misc programming languages
Whilst not my no.1 programming languages, I have experimented and used the other following programming languages: