I'm a senior PHP developer with a love of photography, climbing mountains, travel & cooking with a splash of yoga & philosophy.
I have extensive experience in building high quality e-commerce websites. See my employment history.
I have a strong focus on code quality and unit testing.
I have experience with all the major PHP frameworks including Magento 1/2, ZF2, Symfony, Laravel & Wordpress.
I am well versed with DevOps: I use Docker daily for development and production with complex setups including Varnish, Redis and RabbitMQ. I use CI/CD on all applicable projects. Git and the CLI are second nature to me.
I am heavily vested in open source and have contributed to many projects - see the open source section for more information.
I am interested in working on projects with a team that cares about creating high quality software, with particular focus on well architected code, unit and integration tests, dependency management and code reviews.
I'm flexible with my working hours and I am happy to work closely with any existing teams & freelancers you work with.
As a Principal Software Engineer in the core team, most of my time is spent working on the Shopware Open Source Framework. I have worked on various projects and features to support the numerous component teams and external developers. Some of the larger tasks I have been involved with consist of fixing bugs and performance issues in the DAL (Shopware's ORM), optimising asset syncs with external services such as S3, upgrading various Symfony components and creating maker utilities for developers.
I've worked on various projects to maintain and improve the stability of the framework including writing PHPStan rules, CS rules & Rector rules. I've performed large code refactors and updated various Composer packages. I've written guidelines for new PHP version features and also documented migration strategies, for example how to migrate to using enums and match statements.
My team also spearheaded various initiatives to improve coding and general working practises, such as code ownership, mentoring, unit test drives, workshops on code architecture and so on. With the team, I also attended community workshops and conferences to gather feedback and further align with Shopware developers.
I've also worked on various other non PHP projects such as writing an AI ticket deduplication tool using GO, Vite & Vue.js interfacing with Slack, Jira, GitHub and a host of other internal tools.
Skills
As a senior developer working on the clients team I quoted and wrote specifications for various feature requests for the advanced bespoke PHP e-commerce system. I implemented features and integrated with various third party systems and payment providers such as Klarna, Adyen, Apple Pay, TrustPilot & New Relic. These integrations were deployed to highly scalable AWS environments and were used by a number of high profile, high traffic websites.
I investigated, debugged, fixed and deployed various bugs to client websites and payment processor microservices.
I single-handedly migrated PHPUnit on a huge legacy codebase from PHPUnit 5 to 9 fixing many changes and deprecations whilst upgrading various Symfony components and their usage, paving the way for PHP 8.1 upgrades. Build times were reduced by up to 35%, saving time and money.
Projects
Skills
Progressing from junior to senior developer, I worked on a diverse set of projects at various stages, from planning and development to testing and maintenance. I implemented many processes and trained the team including unit testing, code quality, code reviews and continuous integration. I automated many tasks by writing and maintaining a host of tools and applications. I improved versioning processes and migrated 100+ repositories from SVN to GitHub.
My proudest moments came from mentoring and teaching other team members through code reviews, pair programming, discussions and meetings. I transitioned the whole team to writing and understanding unit tests.
I have been involved with the recruitment process and occasionally ran development team meetings.
During my time at JH I also contributed to many open source projects including Magento itself.
Client work I've completed can be summarised as data migrations, import/export systems, payment provider integrations, ERP & PIM integrations, API design and construction, Database design and optimisation and much more.
Many of the sites I have worked on, especially the PWA's, have won various awards for being the fastest on the web.
Projects
Skills
I took the position at Worldwide Clinical Trials as part of my university placement year. Throughout the 12 month period I worked on various projects, through different departments. Due to my high performance the work period was extended up until the day before I started back at university.
My initial role was as a C developer working on a bespoke database system, fixing bugs and amending existing code. I developed scripts and programs in my spare time to automate monotonous tasks which were later rolled out to other staff members.
I then moved on to a penetration testing exercise for a new product due to be released soon for a major retailer where I found and fixed various high security vulnerabilities.
The last period of my employment was focused on developing and maintaining a Zend Framework 1 application and its complex SQL reports, procedures and triggers. I developed a Node.js based notification system fed by database triggers. Towards the end I took over as the lead developer implementing various features to be showcased to customers around the globe.
Skills
Aydin Hassan Photography is a project I created to showcase my photography on a site controlled and owned completely by me.
I decided to learn some new skills along the way and build it as an SPA with Vue.js 3 and Vue Router 4. I also used it as an opportunity to brush up on my design knowledge.
The site employs sophisticated image optimisation and lazy loading techniques. It uses blur hashes to inline a small preview of images to show the initial page fast and without layout shifting. It progressively loads in thumbnail images using the intersection observer when images are in the viewport. The main lightbox prefetches the next and previous images, and always shows the highest quality version it already has cached before initiating the progressive loading.
Skills
PHP School is a project created by myself, Michael & Oli to help others learn to code using an open source learning system for free.
We created a framework for teaching programming concepts and verifying the written code. We hope for a community to develop, with many workshops which will provide free programming education for as many topics as there are workshops created. Essentially a platform where people can create lesson plans and the system does everything else.
There are also enterprise opportunities available which we are investigating for consulting and helping businesses teach people how to use their tools and processes.
2020 PHP: A showcase and classroom for the cutting edge features of PHP 8
Learn You PHP! - An introduction to PHP's core features: i/o, http, arrays, exceptions and so on.
An introduction to Couch DB via PHP, including creating, reading updating and removing documents. Also learn about views and how to query them.
The PHPSchool website built on Slim with Laminas/ZF2 and Symfony components
PHP School core workshop framework
A CLI tool to help search for and manage workshops on your computer
Build beautiful PHP CLI menus
Skills
Wild and without is my and my partner's travel blog. Built and designed by me using Wordpress and a modern frontend tech stack. We use the blog to write about our travel adventures and showcase my photography.
Skills
December 2018 - now
In order to promote myself I decided to design and create this website. Design is not my forte so for a while now I've made it my mission to learn more by following people in the community. Just recently I've studied the Refactoring UI course. I also used the opportunity to learn some new tools including Tailwind CSS, Webpack and BrowserSync.
I've applied everything I've learnt recently to create a simple, aesthetically pleasing (hopefully!) site to showcase my achievements and experience.
Skills
I've contributed to a myriad of open source projects and also maintain my own. This is a great chance to inspect my code style & quality! I've listed a selection of my proudest contributions below. Check my GitHub for more.
Build beautiful PHP CLI menus
A Composer Plugin to manage Magento 1 Core as a project dependency
A PHP CLI component to display a progress bar and last X logs at the same time.
A PHP collection library inspired by Laravel Collections, built using generators to preserve memory
A Zend Framework 2 application for businesses to log and monitor employee start and finish times. I wrote and maintained the application.
A PHP application developed with Slim Framework. PHP backend with admin + auth. Modern frontend with lots of tooling, SASS, Browsersync, Gulp, Postcss, etc.
A simple static HTML site built with Tailwind CSS & Parcel.js. The site was built during the COVID-19 pandemic with a view to create a central resource for photography education, with a focus on resources being given away for free. www.picdemic.com
A Magento 2 module to monitor PHP OpCache from the admin
Import module for Magento 2 - provides commands, logs, reporting, utilities and abstractions for building imports for Magento 2 projects
A Magento 2 module to remove third party cron jobs or to move them to isolated groups
A Magento 2 module to remove messages added to the message manager
A Magento 2 module to allow registering event listeners with a plain PHP callable - minus the config
The de facto Composer installer for Magento 1 third party modules. I rewrite a large portion of the library and provided lots of unit tests.
The most important CLI tool for Magento. I have provided many commands, tests and bug fixes to the project. I was even awarded a PHP Storm license for my work on the project.
Magento 2 PHP eCommerce framework - I contributed some bug fixes.
I contributed datetime-local support.
PHP Dependency Manager - I contributed a few small fixes.
I increased the test coverage of the pretty printer.
Fixed a small bug regarding array merging.
Fixed a small bug regarding validators.
Contributed many features, tests, bug fixes and refactors.
PHP School article published on CSS Tricks
June 2016
I wrote an article for CSS Tricks about using PHP School to learn PHP.
Unconference talk at PHPNW, Manchester
October 2016
I gave a talk with my friend Michael Woodward about our open source project PHP School. We won best un-conference talk of the conference and were invited back to talk at PHPNW 2017 on the main stage.
PHP School workshop at PHP Warwickshire, Coventry
August 2017
I hosted a workshop with my friend Michael Woodward teaching people how to code PHP with PHP School.
Similar to the Computer Science Degree with many shared modules including some extra law and forensic modules.
I excelled over a range of modules including Systems Programming, Server Administration, C & PHP.
I won this award due to my consistent high grades and hard work.
According to upwork.com:
Demonstrates skillful use of Magento Enterprise Edition and has proven knowledge of the details of the structure of Magento, which can give someone an advantage when implementing a site using Magento.
Although this might seem like a copy-pasted list of buzzwords - I guarantee my stated experience. If you look through my GitHub code you will find most of the listed tools.
This is a small sample of my skills and toolset experience - there are many more. I am able to learn and adapt fast - which I believe is even more important than tool experience.