I am currently an IT Analyst at
LifeScan Scotland, specialising in Software Development and
My main software projects vary greatly, from large amounts of data visualisation to user information collection.
My passions lie in travelling, technlogy and music: Listening, playing, recording, producing.
I can be reached at firstname.lastname@example.org
Hired on a one year internship to focus on implenting a
mobility program, developing software applications and
completing validation exercies.
Throughout the year I was informed that there was no job for me once it was completed, however I was kept on as a permanent contractor on a yearly contract.
The course featured a wide variety of subjects with a focus
on technology and mathematics.
Each semester contained 3 modules: A technology, a mathematics and one audio/design
It included modules on UI/UX design, Java software development and MATLAB Analysis
Gesture Interaction: Control in a Musical Environment
This project consisted of tracking the human body with a purpose built Arduino glove, and a Kinect video input, and then sending that information to a Max/MSP patch. Although it was aimed with an audio output, the resulting patch would allow for the control of any system.
This was mostly created in the graphical programming language Max/MSP and contained some python and a Java effect module.
Throughout school I had always enjoyed technology and music, and I enjoyed a variety of technology based subjects, until I had to focus on getting into my degree at Glasgow Caledonian University
|C#||★ ★ ★ ★ ★|
|Linq||★ ★ ★ ★ ★|
|Razor||★ ★ ★ ★ ★|
|CSS||★ ★ ★ ★|
|Java||★ ★ ★|
|Max/MSP||★ ★ ★|
|Swift||★ ★ ★|
|T-SQL||★ ★ ★|
|Microsoft SQL||★ ★ ★ ★|
|Schedular||★ ★ ★ ★|
|IIS||★ ★ ★|
|MySQL||★ ★ ★|
|Windows Services||★ ★ ★|
|Class Libraries||★ ★ ★ ★ ★|
|Console Applications||★ ★ ★ ★ ★|
|MVC||★ ★ ★ ★ ★|
|DotNet 1.1 > DotNet Core 2||★ ★ ★ ★ ★|
|N-Tier Architecture||★ ★ ★ ★|
|Web API||★ ★ ★ ★|
|Entity Framework||★ ★ ★|
|Services||★ ★ ★|
|Notepad++||★ ★ ★ ★ ★|
|Git||★ ★ ★ ★|
|GitLab||★ ★ ★ ★|
|Resharper||★ ★ ★ ★|
|Visual Studio Team Services||★ ★ ★|
|Waterfall||★ ★ ★ ★ ★|
|Agile||★ ★ ★ ★|
|Kanban||★ ★ ★ ★|
|MacOS/OS X||★ ★ ★ ★ ★|
|Windows||★ ★ ★ ★ ★|
For these projects, I was in responsible for the requirements capture, design, software development, testing, documentation and maintenance.
This contained a suite of applications for the standardisation
and digitisation of forms for use around the site. This
also allowed for the tracking, sharing and reporting of
It was created as a web application to be platform agnostic, but with a focus for use on mobile devices. This meant that it was created to be look like native applications when added to iPad home screens.
All the applications shared some logic, including an
autocomplete that works comparing known users first and then
all other users in Active Directory that belonged to our site.
Logging was added for exceptions and some information about how the application was being used.
The data from the front-end applications listed below was passed to the Business Logic Layers that were specific to the application, and from there passed on to the Persistence Layer, and finally to the Data Access Layer that contained the POCO objects of the SQL Database.
This was mostly used by sole users on iPads, PCs and on large, touchscreen, information portals at locations around the site.
When an action was assigned to a user, they were notified by email with a link to the action to be completed.
Tasks were created and added to the specified project backlog, where they could be edited, owners could be added or they could be promoted to “Current”.
When a task was assigned to a user, they were notified by email with a link to the task to be completed.
Once assigned to current, the tasks updated, and the selected task can then be promoted to “Completed”.
Every task also contained an audit trail system to track any changes that have been made through the life of the task.
This began as a paper system and the business realised they started accumulating a lot of data, could not do anything with it.
This had a distinct mobile focus to maintain portability throughout the site, so to select the score, the user clicked on the text that suited, as opposed to a radio button.
The score was then updated in real-time on the client, by a graph. This graph updated on each score change, and changed colour once the score had reached a certain customisable percentage. Red for fail, green for pass. This allowed the users to quickly see where the meeting could be improved.
If a question had a very poor score, an action would be created to be completed before the form could be submitted.
This was then added to the action tracker to be completed at another time.
Fields such as the date and user completed by, could not be edited to ensure compliance.
All previously completed reports could be analysed
individually or in the reporting application.
Every time the PDF was selected from the client, the application on the server would access the network file location, and check if the file had been updated. If so, it would replace the outdated local version with the current, updated version.
Admin – This application was the configuration screen for all the other Mobility Tools applications, and started as an easier way for me to make database changes quicker and view development exceptions. As time went on, the need for other users to perform these applications grew, and the application was refined.
It all allowed for tasks like the enable/disable applications from being accessed, add new Meeting Assessment forms, change the location and names of the PDFs of the meeting charters etc.
It also allowed the exceptions and information that was captured to be displayed in a user-friendly way.
A windows service was originally created to send out these emails, but the requirements changed and it was decided that the emails should only be sent out once a day. This meant the application was changed into a console application and a task was scheduled in Windows to run at the customised time.
The bulk of the application was created in a Class Library so switching was no problem.
The email template used Razor syntax with a csthml file so that changes could be added to the html of the file without needing to recompile the application.
This data was then consumed by a Swift application to gain the benefits of a native application.
This allowed the users to access the Action Tracker and Agile Tracker whilst on mobile.
A VPN was required for mobile devices to access the network that the server was hosted on. Authentication was achieved by using the data sent in this connection.
This was done using T-SQL queries to get the data into Tableau.
Several screens were created to show a range of metrics to make sense of the data.
Display screens to show live, statistical and historical
data of the manufacturing lines for informational use on
the factory floor, PC workstations for further analysis and
touch screen information portals to help with the discussion
This was designed, built, tested and released over several iterations by myself.
The data was transferred from the MES databases to the website SQL database using a bespoke C# Console Application and Entity Framework.
Consolidation of information from various reports into to
a daily email.
The data was stored on several databases and gathered using a Console Application, triggered by a Windows Task.
The email template was built into the code of the application.
I was part of the project teams for the following.
The system had several components that I worked on. Retreiving blood testing information from USB and Serial Jack meters, the data was displayed live, stored in a datavase and had reports generated. As this was a GxP project, it had to be developed according to multiple regulations and validation requirements.
I was initially brought on to create an auxiliary
application, but upon completion of this I was placed
onto the main project.
Before my introduction to the project, it was rushed to the point the code was not human readable, had a lot bugs and was not modular.
After joining I was able to introduce version control, introduce some coding standards and add some abstraction to the layers to help speed up development, while reducing the bug count.
iPads were introduced onto the site for faster electronic
document retrieval on the factory floor, as well as to
give a platform for the LifeScan Mobility Tools
Application, IPC visualisation and other manufacturing
display screens. The main challenge for this project
was to introduce new technology in a validated
For this project, I was working with someone to create a iOS native application, using Objective-C I created the application and they were focussed on the data. Because of business compliance, we were required to use Microsoft SQL to store the data. Our solution was to use JSON to send/receive the data between my iOS application and his database.
This application was then replaced by the enterprise
This application required a new validation approach to the company, as we were still using iPads in a GxP Validated environment.
GxP Compliance says that once the system is validated no changes can be made to the system, so when the iOS version is upgraded, for example from iOS 10.2 to 10.3, the change requires re-validation of the system.
The team decided on a single, lightweight test for each version to ensure the application worked with the new iOS.
I was responsible for monitoring for new versions of iOS, carrying out this test and completing all the relevant documentation. This occurred around every 2 weeks.
I started using GitLab as a way to backup and transfer my personal
projects between computers. In doing this I started using Git fully and
realised its advantages.
These are some of my personal projects I have decided to host publically.
When playing Dungeons and Dragons I had realised that certain
parts of my hard copy character sheet had been getting consitently
changed, such as spell slots, health, inventory etc. This
meant these parts of the pages were getting illegible> I
also needed to look up things in the Players Hand Book,
like available spells, spell effects and spellslevels.
I started looking for an iOS application that I could use on my iPad to keep a track of these things, and realised there wasn't anything that fitted exactly what I needed.
Because of this I started creating a Swift app that me and the rest of the party could use for keeping track in game.
I started creating this site as a way to demonstrate what I
am capable of doing with respect to web development.
The code can be found hosted on my Gitlab profile
It is hosted on a shared server, which means I am somewhat
restricted by what my hosting provider allows.
Although currently this is created using MVC 4 and .net 4.0, I hope to upgrade soon and start using dotnet core.
The skills levels are currently stored in a csv until I get time to host them in a SQL Database
After creating my personal site, I made a website for
one of my friends music business.
This code can also be found hosted on my Gitlab profile
It is also hosted on my shared server, so it suffers from the save limitations as before.