Personal profile
Passionate software developer with 10 years of experience. A motivated adaptable learner, who is used to delivering quality results under pressure. Planned and managed multiple software projects from requirements to architecture to delivery. Strong communication skills, experienced in liaising with clients as well as mentoring peers.
Fundamental skills
- Linux- and Unix-system fanatic; a strong advocate for improving and extending the usability of shell scripting for other developers,
- Strong frontend and backend proficiency using modern Javascript tools, such as React and Node.js
- Comfortable with QA and build tools, including various testing and CI tools (e.g., Jest, Puppeteer, Selenium), and Webpack
- Good understanding of DevOps tools, including Ansible, Terraform and Docker, with a keen interest in expanding knowledge for systems at scale
Employment history
Freelance Software Developer (2020 - present)
Simple static sites for individual professionals; online booking, scheduling and payment systems using React and Node.js; API integrations and data processing; various technical maintenance and consultancy for client websites and mobile applications
Co-founder/Software Developer at Cambridge Calls (2021 - 2021)
Led the technical creation of a video networking web application for Cambridge University: utilising WebRTC/websocket and React for the web frontend; React Native (including some simple Java Native Modules) and Node.js, Redis and Postgresql on the backend
Lead Software Developer at JG Regan Ltd (2015-2020)
Led the design and development on several greenfield projects, including:
- An office space management system: utilising WebGL, PIXI.js and Three.js to view, edit and manage DWG/DXF floor plans; a DWG and DXF file parser/convertor written in C#; frontend using React, TypeScript and SASS; backend using Node.js/Express, Docker, nginx, Postgresql, RabbitMQ and Redis
- Internal APIs, web-based dashboards and data entry systems, mostly using Node.js/Express, Postgresql and React
- Development of a prototype IoT sensor: utilising I2C-based ICs such as VL53L0X, and programming microcontrollers (AVR) in C to create a BLE short-distance measurement product
- Firmware drivers written in C++ and C# for interfacing with third-party hardware
- QA: using Jest, Puppeteer and Selenium for unit and integration testing; Git for VCS; GitLab/CircleCI for CI; JSDoc and Swagger for code documentation
- Some use of DevOps tools, such as Ansible and Terraform for configuration management and IaC respectively
- Cloud infrastructure provisioning using AWS: specifically EC2, Route 53, SES, SNS, S3, RDS and CloudFront
Open source
score.sh
A package manager for shell scripting, providing a structure for reusable, testable and well-documented components. https://score.sh