Curriculum Vitae
I am a forward looking technologist that has worked for over 10 years as a full stack software engineer and architect. For most of my career I have primarily worked on proprietary B2C e-commerce platforms. I have also worked on projects for B2B wholesale platforms and ERP, retail and product information systems.
Although most of my work has been in the retail sector, I have kept up with technology trends, jumping on any opportunity to learn new, or just new-to-me technologies and methodologies. In the last few years, I have worked as a senior architect where I have designed almost all of the internal software systems at AllSaints, a global fashion retailer based in East London.
I am an opinated architect and engineer. I have promoted and proven Microservices and Microfrontends in a distributed architecture supported by a strong automated test suite, deep observability, and robust error handling.
Senior Technical Architect, AllSaints Retail Ltd – 2017-Present
My first task as Architect was to consolidate my previous best practices into a company-wide Architectural Principles document used to guide all software development. It became obvious to me that in order to build solid software, we needed to provide a consistent user experience, a strong observability story, and a plan for data analysis.
My biggest project as Senior Technical Architect was leading the design and development of a product information and wholesale order management system, collaborating with both our internal teams and external customers. This Greenfield project was built using a handful of polyglot micro services with a micro-frontend architecture in React.
My attention has recently turned to Data warehousing and ETL, where I have been designing and building out a warehouse based in Google BigQuery with BI provided by Tableau.
Lead Developer, AllSaints Retail Ltd – 2014-2017
As a lead developer, I managed the quality of the code on the platform, set, lead & monitored best practice and started to steer the future architecture of the software platforms developed within the team.
Senior Developer, AllSaints Retail Ltd – 2012-2014
Expanding on my previous role as a web developer, I provide guidance, leadership and analysis to the web development team. Improving workflows and architectures is something I am passionate about, introducing better version control and continuous integration techniques and helping pave the way for new projects with an SOA approach.
In late 2013, I lead a 3 month project to redevelop AllSaints.com. I improved upon the original platform using open source components to write a base framework and managed a small team of contractors and in-house developers to rebuild the front end e-commerce store. Leveraging languages such as LESS and Typescript, I increased the maintainability and architectural integrity of the underlying code.
Web Developer, AllSaints Retail Ltd – 2012
I joined the team at AllSaints and was immediately put to work on a new drag and drop CMS with integrated scheduling and Digital Asset Management.
PHP Developer, Drivebusiness Ltd – 2011
At Drivebusiness, I worked on number of fashion eCommerce sites in a full-stack capacity. Clients included Bench, Reiss, Gant and Ted Baker.
Over my career, I have picked up a number of technologies through self-learning. I have often introduced these technologies to the organisation (e.g. Git, Go, Kubernetes and Typescript)
Languages
- Go (Expert) - Go is my primary goto language, I have been writing in Go almost since it was introduced, and find it a reliable general purpose language.
- Typescript/ES6 (Expert) - For frontend projects, I will always go for Typescript, often paired with React/Redux. I have used NodeJS a fair bit, but it is not my preferred backend technology.
- Python (Intermediate) - I have not used Python in a commercial project for a long time, but when working data/ML/AI, it is my first choice.
- Rust (Beginner) - I have only recently begun to work with rust, but have so far found myself enjoying it.
- PHP - PHP is a language I would have previously considered myself an expert in, however it has been a long time since I have used it.
- Others - I have enjoyed playing with many other languages, in a less formal capacity including C/C++, Ruby, Erlang, Haskell, Elm, and Various assembly languages.
Frameworks
- React - Whenever building a frontend, I often jump straight into React for the presentation layer.
- Redux - If I am building a medium to large UI, I will use Redux for state management along with Thunk for async.
- Others - I have previously tried Keras (Python), Tensorflow (Python), MobX (Typescript), Flask(Python) and Spring (Java).
Infrastructure
- Docker/Kubernetes - I introduced containerisation at AllSaints a number of years ago, and have since expanded the infrastructure to run containers in a few Kubernetes cluster.
- GCP - As part of my drive for microservices, containerisation and cloud infrastructure, I lead the design for a migration from a custom Rackspace based VM architecture to GCP.
- CockroachDB - I have recently become an advocate for NewSQL Database techniques, and have worked with Cockroach Labs on a PoC Product Information & Order Management System.
- MySQL/PostgreSQL - I have used these extensively, more MySQL than Postgres.
- Jenkins - I have used Jenkins for CI/CD for a long time, although I have recently started to look at more modern tools.
- Others - Google BigQuery, Prometheus, Grafana, Terraform, Git, MongoDB.