Joe Freeman

Software Engineer

About

I'm a generalist software engineer with experience across server, web and mobile platforms. I can help your company quickly build products to a professional standard. I'm reliable, work efficiently, communicate effectively, and take pride in my work.

I'm currently available for remote freelance work – please get in touch if you'd like to work together.

Experience

Self-employedAug 2014—present

Freelance Software Engineer

Here are some details of some of the projects I've been working on:

An LA-based fashion/e-commerce startup

I have been working as a remote contractor for Tradesy in a team building internal tools. This has so far involved both updating legacy tools and designing new ones to fit the evolving processes of the logistics team, with the aim of using data to increase automation.

A mobile app for finding and organising social sports events

I have been working as the sole developer building the server- and client-side of SportSeekers - an app that will help people organise or discover sporting events in their area. Still a work-in-progress, the client-side is build in Cordova and React, targetting both iOS and Android, and the server is built in Node.js using PostgreSQL, and deployed to AWS.

An online comic drawing app

I built ComicDrop - a web application for drawing comics using a shared pool of user-submitted 'stickers', aimed in part towards helping teachers in New York engage children in schools. The app is built using Node.js, React and MongoDB, and deployed to AWS.

An Android app for estate agent management

I took over this native Android application, built for teams of estate agents to manage properties and their leads together. I modernised and refactored the codebase while adding new features and fixing issues. The application includes dashboards to track performance, and data is synchronised between users via a separate server component.

A mobile app for map annotation

I worked in a small team to finish off this mobile application which allows users of an environmental analysis service to annotate a map with notes, photos, videos and audio clips and then sync the data to and from a corresponding desktop app. The app was built using PhoneGap/Cordova with AngularJS and the Ionic Framework to target both Android and iOS devices.

SwiftKeyJun 2012—Aug 2014

I had the pleasure of witnessing this successful London-based start-up expand from 30 employees to over 150, and spread over a number of locations worldwide. The company primarily builds an alternative Android keyboard, which predicts what users want to write. Most of my work is confidential, but some highlights include:

Working on the server-side of personalisation, where language models are generated for users based on the content they have previously created on various online services, such as Gmail, Facebook and Twitter. This involved improving the reliability and scalability of the existing system by modernising the architecture to run on AWS and implementing auto-scaling. I also setup continuous deployment, worked with third-party APIs and added new features.

Designing and developing the back-up and sync system, which allows users' language models to be saved to 'the cloud' and then synchronised and merged with the language models on their other devices. This scalable and robust system was developed mainly using Clojure, and runs on AWS.

I also had the opportunity to work on some unreleased Android apps, and various internal dashboards showing the real-time status of the server systems.

FormicaryMay—Oct 2008, Jan 2010—Jun 2012

I was initially employed for a six-month placement, and then worked full-time from early 2010. I was a key member of an agile engineering team, responsible for making architectural decisions, and planning and delivering solutions on time. Significant projects I worked on include:

A browser-based chat client, written using the Ext JS framework. The server component provides an abstraction over the underlying chat protocol so that the chat system itself can be swapped with ease (at the time, supported platforms were Microsoft OCS/Lync, and Parlano MindAlign). Messages are delivered reliably to the browser in real-time. The multi-threaded system is secure, horizontally scalable and resilient – it’s currently in use by top-tier banks, among other clients.

A BlackBerry chat client, building upon the existing infrastructure provided by the browser-based client, with the addition of a mobile 'broker' server component responsible for communicating with the mobile device. The main challenge was to come up with a way to reduce the data transmitted such that both latency and operational costs are reduced.

An emulator for a legacy chat system. This was a bespoke project that satisfied the requirements of several clients. It emulates a subset of the behaviour of a legacy chat system and hence provides the ability to re-route commands and events to and from an alternative chat system using a separate protocol.

Self-employed2004—2012

Freelance Web Developer

Notable projects include:

A 'short code' management system

This site, jointly owned by the major UK phone networks, provides a way for about eight hundred users to reserve and manage over forty thousand phone numbers (short codes). The system is written using a PHP web framework that I wrote and open-sourced. The back-end of the system allows a handful of administrators to efficiently indicate which numbers are reserved or restricted for a particular service and operator, and react to requests from users for new reservations. A log of actions taken by users and administrators are recorded. Account and user details can be browsed, searched and updated. A number of import and export tools are available, and customised statistics reports can be generated.

A document management/authoring/versioning system

This site was developed for use internally by the client, and replaces a previous workflow involving the sending of Word documents between a number of authors before manually distributing to clients. The new system divides the content up into parts, sections and sub-sections and adds support for attaching assets, so that authors can make changes independently. All changes are recorded, and old revisions can be viewed when required. The document can then be published (creating a snapshot of the content) and made available to clients, who login to the system to browse or download the content.

An event promotion and booking system

This site was developed for a top-tier university's graduate department, who have since re-sold the system to a number of other universities. It provides a way to manage a number of graduate events, and have users book places for the events. Attendance is then monitored, with warnings flagged against students who repeatedly missed events they had booked. The system is also used to run promotional e-mail campaigns to notify relevant students of upcoming events.

A content management system

The content management system was developed for a freelance client to be re-used for a number of different high-profile sites. The system was designed to be modular so that extra components could be added on a per-client basis – these components included simple news and events managers, a component for providing flight schedules, and a component for managing online advertising campaigns. Additionally, a plug-in system was developed for providing dynamic elements to the public-facing site (often in conjunction with back-end components). Pages can be arranged hierarchically, with the option to draft and review changes before publishing them.

I led the second year group project, which involved developing a successful online browser-based space-themed trading game. The third year group project involved sending, receiving and scheduling the transmission of digital TV over a network via multicast.

Final year individual project involved the interpretation and analysis of images to generate lineographic drawings (on an etch-a-sketch). Some details here.