John Macinnes

Freelance analyst/programmer based in Berlin, Germany.

I'm currently available for a new project. Here is my profile, please get in touch if you would like to discuss working together!


In addition to the work I have done for clients, I also have some projects I work on in my own time in order to practise my skills or learn new ones. Please click the name of each project for screenshots and further information about it.

Name Description Live demo Code
Remote Command Runner Go application for running shell and PostgreSQL commands via SSH on remote servers.
Datafile Analyzer Go application for analyzing and understanding flat data files.
businessConfig Go application with an AdminLTE web frontend which is intended to be a tool for Product Managers. The live demo portrays a fictional library, but also uses some publicly available data from the website of the Chicago Public Libraries. Github
Investalot Excel VBA / MS SQL Server financial application for a fictional investment company. Github
Tech Club PHP web application for a fictional IT learning club.
On the live demo, you can log in as / Test11 to see the pages which require authentication. Github
Tech Club PostgreSQL database PostgreSQL database of the above application. Makes extensive use of normalized design, views and functions. Github
Toren's Tale C# forms implementation of a 2D game engine. Github


When learning a new technique, I like to document the process for future reference. Here are some guides I have written about various technical subjects. They were almost all written around the same time as I developed the Tech Club web application (see above), so they mainly refer to web development and server deployment.

Local configuration

Set up local development environment Set up the local Ubuntu machine, including Apache, PHP and PostgreSQL.

AWS and server admin

Deploy an EC2 server Deploy and secure an AWS EC2 virtual server running Ubuntu Linux and access it using SSH.
Configure the EC2 server Configure the new EC2 server with Apache, PHP and PostgreSQL and show how port forwarding works.
Add an EBS volume Move the database data onto a separate, specialized AWS data volume.
Automate backups Use the EC2 API and cron to automate backups of the instance and data volume (assumes "Add an EBS volume" is done).

Web applications

Deploy the site Copy the application files to the new server using FileZilla, then show the necessary steps to get the site online.
Review of security Review a list of possible security attacks, and how (or if) the application is protected from them.
Add SSL/TLS encryption Encrypt traffic to and from the site with an SSL/TLS certificate.
Add the Wiki Add a MediaWiki, configure it, and link to it from the site.
Prevent bot form submissions Show measures to stop bots from submitting spam via public forms.