Benjamin Henshall

   

iOS Developer

Portfolio

RatesMate Currency Converter

A simple but powerful currency converter

Designed, developed and released “RatesMate Currency Converter” to the app store as a sole developer. RatesMate is a simple and efficient currency converter that includes over 150 currencies and tipping customs for 65 countries.

Fully designed the app wireframes in Sketch. Built the app using Swift 4.1 and made heavy use of the Functional Reactive Programming paradigm using RxSwift in an MVVM architecture. In preparation for this project, I purchased and worked through RayWenderlich’s advanced RxSwift book. The apps backend is built using Firebase, pulling from several RESTful web services.

Developed the app with the focus of learning and progressing as an iOS developer, by both learning Reactive programming and also focusing on introducing myself to new design patterns such as Dependency Injection and Co-ordinators.


I used the following technologies: Swift 4.0, RxSwift, UIKit, Firebase, fastlane, CocoaPods, REST, StoreKit, Sketch, MVVM

The app listing can be found here. You can find a technical specification of the project here.

BHenshall.co.uk

Sleek portfolio website

You're looking at it now!

Created a personal website using HTML and SCSS to provide a centralised access point to any of my portfolio projects and host my CV.

Wrote two blog posts - a technical overview of my recently released app, RatesMate, and a short history about the developer community for PokemonGo.


I used the following technologies: HTML, SASS, CSS and Atom.

The source code for the website can be found on my GitHub.

Algorithmic jMusic Composer

Creating music in Java

For my final year university project I designed and built jMusic Java program capable of dynamically generating music using pre-composed pieces of music. The pre-composed pieces are translated into a stochastic matrix, which is used in the end goal of generating a new, original piece of music.

This tested my independent research skills, ability to adapt different design concepts as well as technical proficiency in several key areas such as production of accurate design documentation, planning requirements and evaluation methods.

The work produced for this project included a specification/requirements document, a design document, three presentations delivered to senior staff within the department, a 52-page report and a fully functional Java program built to spec.

I used the following technologies: Java, Java SWING, jMusic, Microsoft Word

You can find all the source code and documentation on my GitHub.

Aliens in Panic

A space themed air hockey game in JMonkeyEngine

As part of a games development module, I produced a space themed air hockey game built in JMonkeyEngine. This included learning various concepts of games programming, such as graphics rendering, game loops and hitboxes, as well as mathematical calculations for collision response.

I built the 3D models (Table, UFO-shaped hockey pucks) using Blender. I also (with the help of a couple of friends!) made a full 3 minutes long theme song for the menu section of the game while we were playing around with music creation software.

I used the following technologies: Java, JMonkeyEngine, Blender

You can find all the source code on my GitHub.

PAIDIA Attraction Filtering System

A Java program for finding local attractions in Liverpool

Collaborated with 4 other University of Liverpool students to design and implement a desktop Java application that could be used to sort and filter a dynamic list of attractions in Liverpool and the surrounding areas. This involved a client-server configuration which the server was efficient enough to run on a Raspberry Pi.

The project ran ahead of schedule allowing us to add extra features including Google Maps directions and E-mail integration.

Throughout the design and development process, I contributed both ideas and time to the project, demonstrating teamwork and reliability time and time again. My responsibilities included the design and implementation of the GUI, integrating the results from the server into the client and extensive testing of the system as a whole.

I used the following technologies: Java, Java SWING, JDBC, MySQL, Ubuntu, Eclipse, Google Maps

You can find all the source code here.