Past projects

 

clients & products

Most recent / current

Video Hearings, Ministry of Justice

London, UK, since September 2018

The Reform Programme is a huge undertaking of the UK government to bring the justice system up to speed with todays technology.

A part of the Reform Programme is the Video Hearings Project. The goal is to reduce costs and make justice more accessible by removing the need to travel to court.
 
The project wraps a third party video provider to give a full end to end user experience of the digital hearing. The product involves many parts before even getting to the hearing. Users are invited to the service, trialled for suitability and familiarised. Well on the day of the hearing the challenge is to emulate all that is the presence of the court, in a digital medium.
 
The tech stack includes hosting in Azure with deployments using Azure Devops. DotNet Core C# with Asp.Net MVC and Angular 6 with Typescript. All APIs are documented using Swagger. High test coverage and acceptance tests written in Specflow both for API and UI run on each commit. Code is open source and hosted on Github.
 
One of the major technical challenges in the project is to architect for evolution. Video presence in hearings is not a new concept but fully video hearings are. This means that we aim to build a system we don’t yet understand.
 
Another difficulty is the to support both the old with the new. The Reform Program modernises many justice services, but not all. Those modernised will integrate directly using a common platform. But, non-reformed services will need special customisation to integrate. This means the Video Hearings becomes a product in its own right, servicing clients.
 
Though the project is far from over we have made good progress this far. We have released a pilot version of the system, used in real hearings. Whilst this is happening we are working on a real release version. Focussing on CI/CD from the outset with high test automation enables quick releases. We aim to have the rebuild releasable within the first few months of restarting on the new platform. We have also managed to decouple parts of the domain into separate parts. This has allowed us to decouple concerns and keep a clean design, less susceptible to big rework.

 

Rakuten Delivery

Osaka, Japan, 2016-2018

Rakuten Delivery is the OnlinePizza or UberEats (or simply the 2nd biggest competitor to Demae-Can) of Japan.

The system, a marketplace connecting restaurants doing delivery with customers wanting to eat. Customers can use their Rakuten membership to collect points on purchases. These are then usable across all other Rakuten services. Restaurants sign as another channel for sales, or, to avoid writing a e-platform.
 
When I joined the team it was about to perform a big rewrite of the frontend. The frontend was at that point written in PHP and was using end-of-life frameworks. I helped get CI/CD setup using Jenkins and pushed it to become part of the development process. We rebuilt the new service, making sure to decouple the frontend from backend. We moved to a new technology stack, Java 8 with Spring Boot. We also made the new services possible to containerise for future proof hosting.
 
Challenges included figuring out the details of how a 10+ years old system works. As we ported over functionality to the new site, reading old code was key. We outsourced manual testing and focused on automation within the team. Finally, and maybe one of the hardest parts, getting into both the language and culture of Japan.
 
My by far biggest success was to not only learn how to lead a small team but in a language I didn’t fully control. My mistakes together with great advice from seniors taught me much. Hard work and the importance of language and culture as well. I cannot express enough my gratitude for the team members. They always patiently listened as I struggled to mentor with my broken Japanese.
 
Learning Java and Spring Boot coming from a C# background was very interesting. But as the two languages has grown similar it was more of a breeze than expected. More difficult was getting proficient with Bash. The deployments were all on Unix based servers, lots of them. Learning how to use the unix command line to manage and maintain deployments on 60+ servers was great. I’ve come to appreciate and love the flexibility for automation the *nix platform has.

 

Before then

Years ago

Porting Ruby on Rails to C#

Writing proprietary C# MVC and ORM frameworks

Silverlight and WPF desktop application development

E-commerce platform in PHP

Years ago

Document CMS

Designed and implemented a document management system for the Swedish Transport Agency. Using WPF, WCF and Visual Studio tools for Office

Batch processing

Work to maintain and improve the batch processing and related functions for the case management system of driver licenses in the Swedish Transport Agency

Years ago

Test automation

useMango, a rich desktop client using WPF, Selenium and HP UFT for test automation and execution

Framework development

Built proprietory frameworks for test automation in Ruby and VBA

Node.js server side

Using AWS and docker containers to host and run backend services

Playground projects

Projects put together for learning or personal use.

TravelRates

Mobile application running on Android and IOS for currency conversion. Written in Dart using Flutter.

Check out the product page or the code details.

GTranslate

Helped to improve a command line wrapper for the Google Translate API written in node.js to use for automating localisation. See this post or the github repo.

QC.js

Javascript wrapper for the ALM Quality Center server side API. Used it for automating tasks around handling tests in the server. Checkout the  github repo.

Wordpress

Aside from this page I’m also running TysksTrading e-commerce site and have worked with WordPress as a web site platform for several other clients as well.