Let's Make Great Software

About me

👋 Hello, my name is Will. I'm a freelance software developer: automating business processes, integrating systems using APIs, and writing software for the cloud and web apps.

Since 2009, I've been developing software professionally. I have a Bachelor's in Information Technology and a Master's in Web Science.

I turn ideas and requirements into well-built and well-tested software. I primarily work with TypeScript/JavaScript for both browser and Node.js environments, deploying to cloud environments (mostly Lambda based on AWS). I also have experience with PHP, Python, and C# among other technologies. I even dabbled in Fortran once for fun, but that was a long time ago. I have extensive experience with DynamoDB, ArangoDB, MySQL/MariaDB, and SQLite.

I'm very comfortable working remotely, gathering requirements from emails, messages, and video calls, helping documenting them, and turning them into software architecture, automated tests and working software.

If a project primarily requires the implementation of business logic and working with data, that's where I can be most helpful. For example, projects which automate digital business processes, run processes in the cloud, or synchronise data between systems using REST APIs or GraphQL APIs. Visual design is not my strength 🙃 however, if a visual design is provided, I can implement it. Looking closely at CSS, the styling language of the web, was a significant part of my Master's Thesis in 2016; albeit, from a technical and human-computer interaction perspective.

I carried out large portions of the software design and development of Skilloverse.com. I created Oncer.io. The code repositories of Oncer.io are publicly accessible and a good representation of my work.

If it sounds like I could be helpful for a project, feel free to contact me.

Services

1. Analysing problems and generating ideas and requirments for software solutions

2. Designing software architecture

3. Setting up continuous integration and continuous deployment

4. Writing unit tests

5. Implementing software

6. Maintaining, extending and updating software

Values

1. Rich, frequent communication. Better to tend towards overcommunicating than undercommunicating

2. High quality software

3. Friendly, upbeat, direct, professional atmosphere

4. Clarify issues and ambiguity early

Projects

Here is a snapshot of some of the projects I have worked on.

Oncer.io

Oncer.io aims to be the most convenient system to send and receive encrypted messages which are only retrievable once. In other words, the ideal tool for sharing passwords, configuration, personal data and other sensitive data - especially in cases where one may not have any pre-existing end-to-end encrypted channel of communication available with another party they want to send such data to.

  • Crytography: uses the cryptography library built into modern web browsers to do encryption and decryption on devices.
  • Unit tests: following the NestJS best practices resulted in very readable unit tests covering significant API surface.
  • TypeScript, ArangoDB, NestJS, React

Skilloverse.com

For this project, I lead the full-stack development of a single page web application, running at Skilloverse.com. It uses React on the frontend, ExpressJS on the backend and ArangoDB as the database. Some particularly nice patterns include:

  • Code splitting based on route: This means the app lazy loads the parts of the application as the user navigates through the web app.
  • Modern usage of Redux: It implements the easy-peasy framework making for very developer-friendly, concise store updates and state retrievals.
  • The latest React features: It uses TypeScript and hooks for robust web application development.

Grow Your List mailing list

This is an extensive cloud application running in the cloud which I created for a client as a solo, freelancer developer. The code for this project is open source and can be seen in the repositories on GitHub under the growyourlist account. Project highlights include:

  • Cost-savings: using scalable cloud technologies, I implemented common mailing list functionality able to send millions of emails per month for a fraction of the price it would cost using mailing list service providers.
  • Mix-and-match cloud technologies: For example, there are long running processes such as those processing an email queue and preparing email broadcasts which run as services on an VPS; while other functionality that runs in reaction to events - such as adding an email subscriber - is implemented as serverless functions sitting behind API endpoints.
  • Extensive use of DynamoDB: I got to know DynamoDB very well for this project. For example, I was able to take advantage of how sort keys work to implement an resource-friendly email queuing system. I extracted some helper functions for DynamoDB and released them as packages on npm; for example, full-query-for-dynamodb provides a shorthand way to query items without worrying about pagination - convenient is many situations in mailing list system software.
  • Cloud app defined in CloudFormation template: The project takes advantage of CloudFormation to define the mailing list software as a cloud app, making it straightforward to deploy and update.

API-based report generator as cloud app

This project involved creating a report generator based on API interface. Technologies involved: TypeScript, OpenAPI/Swagger, CSV, serverless code, email.

Android/iOS App

This React Native app was done for a client and now has tens of thousands of users. It covers a wide range of functionality from navigation, through authentication and payments, to syncing data. Similarly to the Grow Your List mailing list software, this project also uses many cloud technologies.

Web-based reporting tool

This tool digitised processes involved in giving clients investment advice for a large bank. It involved C#, JavaScript, and ASP.NET.

Internationalisation

This project involved making it possible to translate all strings in commerical software, so it could expand internationally into markets in other languages. Windows-based software in C#.

Assorted functionality development for client websites and web apps

I've worked with React, React Native, CodeIgniter, WordPress, Quasar, NestJS, ExpressJS, and many other technologies for making websites, web apps, and apps. Some I built from scratch while other projects required extending the functionality of existing websites and web apps.

Development of business automation software with C# and Excel

The project required writing software that automated a process for an SME - turning the process of summarising a large number of Word and PDF documents in an Excel document from a manual process into an automated process.

Development of JAMP scripts for PHP

This is a personal side project. I created a collection of helpful PHP scripts that have helped me automate or more efficiently do some common development tasks. Source code available under the jamp-shareable-scripts account on GitHub.

"Save as PDF from Context Menu" Firefox browser extension

This is another personal side project; it makes the save-to-PDF API available in JavaScript accessible via the context menu in Firefox. Can be found in the Firefox Add-on directory as Save as PDF from Context Menu.

Contact me

Reveal email