Multiple Languages, one goal.


Kotlin Logo

Functional programming as a first concern, with a modern rapidly evolving syntax. Kotlin is the perfect language I have been searching for. I love using the functional first syntax and the simplified class declarations. It has my favourite Java features without the downsides and verbosity. I absolutely love developing in Kotlin!


Java steaming mug logo

I began coding in Java as part of a degree module, and quickly began to enjoy the simplicity and benefits of coding in such an established language. Reading books on the 'new' streams API and functional programming techniques fuelled a fire to develop more in an immutable, data flow style. I think Java still has much to offer.


TypeScript TS Icon

Typescript has been a game-changer for me, able to write type safe code in an editing environment that helps you to succeed. A few more build hoops to jump through, but the added security of the type checking - in my opinion - more than makes up for this.


JavaScript JS Icon

The programming language of the modern web. Whilst I code primarily in Typescript, I can read and write javascript as required.


CSS 3 Shield Icon

Providing an outlet for my design skills, I have successfully produced CSS and Sass(SCSS) and have experimented with CSS in JS frameworks, although for the most tasks I prefer vanilla CSS using CSS custom properties (CSS variables).


HTML 5 Shield Icon

The structural web foundation. Standards-compliant code written in HTML5 will stand the test of time, but I have also transferred these skills to include JSX and templating.

C# .NET Core

C-Sharp Icon

Functional programming using LINQ, emphasis on parallelism and multithreading, using pure functions to produce a functional core and encapsulating IO operations, to produce highly testable reliable code.

Developing the process, not just apps.


Team Focused

Having been a team member for my entire working life, I am used to working in small teams with diverse strengths and weaknesses. Whilst often in a leading role within the team, I'm also happy to take a back-seat, taking instructions, constructively working to help the team perform well.



Highly motivated by personal challenges, and driven by the reward of a clean solution to a difficult problem. This is strengthened by being drilled within the military to stop and think first - planning a course of action before rushing in.


Cool Head

Known for my patience and calm friendly manner, I am able to remain calm when others around me are losing control, often under intense time pressure. Unwavering when the "perfect" solution hits a stumbling block, and wise enough to know that the first solution was unlikely to be perfect.


Testing First

Small re-usable blocks of code minimise wastage, encouraging re-use where possible, as well as improving reliability, and team integration. This is basis of my approach to problem-solving - writing unit tests first, forcing me to analyse the problem as a whole before developing a disjointed solution. The tests allow for continuous refactoring and code improvements.


Functional Thinking

Avoiding the pitfalls and concurrency issues associated with mutating shared state, I work to minimise the effect of change within applications. This allows for greater concurrency, easier unit testing, and therefore a more solid reliable application overall.


Always Learning

Driven by the love of problem-solving, researching, learning new ways to overcome obstacles. Currently completing a computer science degree in my spare time, and learning well beyond the scope of the course in areas of interest, such as functional programming, C# and Kotlin.

Maintainable, tested code, written with care and attention to detail. HomePage

A screenshot of the homepage header section

Initially written in HTML/CSS and hosted on netlify, my homepage has undergone a re-write in kotlin, with templating and a RESTful API backend for feedback and contact forms.

Sudoku Verifier

A screenshot of the sudoku verifier application, showing an unsolved sudoku puzzle.

Written in Java, this started as a challenge to produce a verifier for a sudoku grid, supplied as a 2D array. It was quickly developed using unit testing to provide almost instantaneous feedback on the written functions. I decided to extend the project and wrote a web front end, with a backend http server that validates and sanitises requests. The app also builds the html internally, allowing for dynamic grid creation.