Technologies | Skills | Personal Projects |Education | Experience | Hobbies | Blog | Twitter
Software developer, former financial analyst, keen technologist.
I have a preference for backend development but have experience across the stack with multiple languages, frameworks and tools. My goal is to keep learning about new technology and to use the best tool for the job to deliver the right solution. I put a strong emphasis on implementing the principles of clean code and test-driven development.
My interests in technology vary and in self-driven projects, I’ve delved into a whole range of subjects from automated trading on betting exchanges to reverse engineering RF frequencies, virtual reality, and cellular automata. One of my side projects, Flub, is a javascript testing framework. I was curious to explore and solve the challenges involved with building a tool like this which is so critical to my day-to-day workflow.
Backend ~ Typescript | javascript | Node | NestJS | GraphQL | OpenAPI | PostgreSQL | Java & Lombok | Kotlin | Spring | Ruby | C# | WPF (XAML) | VBA
Frontend ~ Typescript | javascript | React | Redux | Redux-Saga | SCSS & CSS
Workflow ~ Git | Stash | Webpack | Jenkins | CircleCI | Docker | AWS (including Elastic Beanstalk)
Testing ~ Jest | Mocha | Chai | Enzyme | Sinon | SuperTest | React Storybook | JUnit | Mockito | Hamcrest
Backend ~ Node | Typescript | Nestjs | Typeorm | GraphQL | PostgreSQL
Frontend ~ Typescript | React | Redux | Redux-Saga | GraphQL (Apollo Client) | Angular | SCSS
Workflow ~ Git | Webpack | CicleCI | AWS
Testing ~ Jest | Mocha | Chai | Sinon | Enzyme | React Storybook
Lead Developer ~ June 2019 to Present
Architecting, building and launching the second version of the platform, principally the backend. Working in Typescript with the NestJS framework. Exploring metaprogramming and code-generation.
Software Developer ~ Jan 2018 to June 2019
Refactoring a pure javascript node (express) backend in Typescript and migrating the front-end platform from Angular to React. Delivering new features and components. Also responsible for managing deployments and maintenance.
Backend ~ Java | Kotlin | Spring | Lombok | PostgreSQL
Frontend ~ Typescript | javascript | React | Redux | RxJS | SCSS
Workflow ~ Git | Webpack | Jenkins | Docker
Testing ~ JUnit | Mockito | Hamcrest | Mocha | Chai | Sinon | React Storybook
Graduate Software Engineer ~ Jun 2017 to Jan 2018
Working on a bespoke client project, delivering user stories and resolving bugs and issues. The code base made extensive use of dependency injection, code generation, a functional style, separation of concerns and microservices. I worked as part of a team practising agile methodologies (both Kanban and Scrum), including working with colleagues distributed around the world.
Investment Funds Analyst ~ Nov 2012 to Jan 2017
Analysing and publishing research on listed investment companies, modelling and structuring deals including new share offerings. My experience as an investment analyst meant dealing with large and disparate data sets and combining qualitative and quantitative inputs to reach useful conclusions on a variety of sectors from technology to mining. Commercial and strategic decisions were made based on my analysis.
As well as face to face meetings and relationship building, I wrote research to encourage engagement and conceived and built a research portal and blog (WordPress) for the team to market our product.
My role was all about understanding businesses and the potential impact of their decisions. I worked in a B2B environment dealing with clients on a daily basis.
Investment Funds Analyst ~ Nov 2008 to Nov 2012
Investment Funds Analyst ~ Sep 2006 to Nov 2008
- Four-month intensive developer bootcamp
- Software Craftsmanship (SOLID principles)
- Test-driven development
- Object orientated design
- XP Values
- Principle languages Ruby and javascript
- 2:1 Economics, BA (Hons)
| Project | Description | Demo | Technologies |
|---|---|---|---|
| Arithmio | Maths expression parser and calculator (infix to postfix) | npm / API | Typescript, jest |
| Flub | javascript testing framework | npm | Typescript, javascript, Ramda, Esprima |
| Cryptomonitor | Cryptocurrency pricing dashboard | Demo | javascript, React, Redux |
| Blades in motion | RF sniffing and replay | Blog/video | SDR, Arduino, C/C++ |
| Bloc | Isometric multi-player building game | Demo/Blog | javascript, Node, Express, socket.io, MongoDB, Mocha, Chai, Sinon |
- Playing the piano
- Experimenting with software and hardware
- Running & cycling
- Paddleboarding
- Gaming