img01

G.A.

A Javascript P5 simple physics body simulation with variables tuned at discrete timestep using genetic algorithm technique.
Interact With

img01

Game

An educational mobile game I worked on, built in Unity using C# and deployed to Android devices. It belongs to Wonky Star Ltd. (London).
Interview 1

Interview 2

img01

G.O.A.P.

A Java program that uses BWAPI to interop with Starcraft. Senses the environment and creates plans using a state search algorithm then carries out those plans.
View Video

Source Code

img01

CAD

A VBA program that interfaces between Excel and Microstation to automate CAD drawing processes. Source code owned by Pbh Rail (York).
View Video

img01

Java GUI

A hotel booking system with multi-frame GUI. Written using Java and Swing as part of a Uni project.
View image

Source Code

img01

WEB

A website under construction for an on hold start up idea. Written using HTML, PHP and CSS.
View image

Website





Blog





18/06/2017

Precalculus

I've decided I want to learn more about machine learning, in particular using back propogation to train neural networks (as previously I've used genetic algorithms to train the weights). However, when I started reading about the back prop technique I quickly realised that to truly understand the implications of using different error functions I will need to understand calculus!

In the past, when I've tried to learn calculus, I've struggled a lot. I now believe that is due to not having core underlying knowledge in place visa-vi pre-calculus. This means advanced algebra, matrices and probability theory (as I am already half decent with vectors). I looked into courses around Newcastle that might be able to offer a booster in this area of maths, but all I came accross were expensive University courses and Open University (which now costs around £4k per year). After some more research I came across Khan Academy who have extensive courses on maths going from pre-school right through to advanced degree level maths. I've started systematically going through from basic algebra through to pre-calculus on their site to brush up my skills.



09/06/2017

P5 - A lightweight javascript modelling library

In an effort to port several of my AI systems over to the web (to visualise them in the browser and allow easy sharing) I came across an awesome lightweight javascript modelling library. This library lets you quickly get up and running using the canvas element to model physics systems. It comes with implementations of vectors, matrices and several primitive shapes as well as some frequently used maths functions.

Once I'd spent a couple of days getting to grips with the library I decided to port over a genetic algorithm I wrote to evolve simple physics bodies to converge on the best set of weights for repulsion/attraction towards other bodies. I learned more about Javascript while doing this, in particular the use of prototypes and how they can be used to lower memory footprint as well as to facilitate polymorphism.



03/03/2017

Finishing SWIM and Comparing Prices

During the first quarter of this year at C&C Group Holdings Ltd. I was working with Jim Gibson from our Gateshead office, along with the Whyteleaf office, to bring the SWIM product to market just in time for the Open Water Intiative go live.

I was then brought onto a price comparison API project where I had the opportunity to be involved in one of our projects from conception through to production, with the product now being in UAT. The product is, in essence, a web service for our client to sell API keys to customers who wish to set up price comparison sites for the UK utilities industry. The site allowed our client to manage these customers and also for the customers to view data around their subscription (for instance graphs of API calls over time).

My role on this project was to design and develop parts of the front end as well as implementing server logic and parts of the SQL database. During this project I developed a deeper understanding of the MVC pattern and Microsofts MVC framework. I also self taught some UX design techniques which helped inform parts of the implementation of the final product.

During this quarter I also started collating some of my artificial intelligence projects into a centralized repository and began refactoring and turning the various AI systems into standalone, re-usable libraries in C#. I also learned how to use Nuget, including automatically publishing Nuget packages via the Nuget API after a succesful build using post build event macros. I used this technique to integrate my libaries with a small Unity game project I am working on with a friend, such that he will be able to raise bug reports to me and have the fix automatically deployed when I build at my end.



12/11/2016

Starting at C&C Group Holdings Ltd.

I started applying for jobs after a couple of months of time off after University. I went through an agency, which I personally found helpful as I was in a job just 2 weeks after my first meeting with the recruiter (Hays). I had an interview test for the role at C&C Group Ltd. where I had to read a CSV file in, validate and format the data against some given validation rules. Whilst I did complete the task, my code was not very clean and had some problems which I discussed with the interviewer afterwards. I'm not sure exactly what I did to get the job over the other applicants, but, a week later, I recieved a phone call and got the job.

My first few weeks here were mainly getting up to speed with MVC and the large codebase and source control systems. Honestly, I was thinking to myself "how on earth am I supposed to learn all this, I'm doomed"! However after just a couple of months I was mainly up to speed with the various frameworks and general structure of the code base. Thankfully, they baseline most of their projects off a template so all the projects follow the same sort of structure.

My first project here was to develop a GUI such that QA team members who can't code can create Selenium front end tests without having to open up an IDE and code. It's an awesome tool and, according to the lead QA, has really helped productivity for the team and helped them organize and quickly create regression packs for multiple projects.

We stored all the tests, test runs and test packages in a database, hosted with Azure. At run time, we read those tests from the database and use them as input for the Selenium drivers. The tool supports all major browsers and I am very proud of the results of this first project.



24/06/2016

Graduating University

Well, I've finally graduated University with a 1st in Games Design and Production BSc from Northumbria. Although I'm pretty happy about the result, I'm pretty concerned about the size of the debt that I've accrued to get to this position.

Regardless, I've learned a tonne since I first moved up here, from York, in 2013. Ironically, the major takeaway for me has been that I prefer programming to designing, and that if I do do design, I prefer the most systems oriented approach (in comparison to the story driven approach). Studying games for 3 years has kind of put me of playing them, nowadays I mainly play systems driven games such as Crusader Kings or Sim City and don't really find much time for more linear games.



12/05/2016

Automatically Creating CAD Drawings - Part 2

At this point I've managed to hit the previous milestone and get one of the many cantilevers to draw. The cantilever is by far the most complex component to place in the drawing as it is composed of several sub-components, all of which are constrained in relation to each other and can move, rotate and scale to meet these constraints. I ended up creating a seperate Excel sheet that enumerated the draw order of each of these sub-components as well as each components constraints.

I informed the client that I had tried to think hard of a generic solution to cover all the possible cantilever frames that could be allocated for a given structure but had come up stumped. There are around 100 different ones, each one would need it's own draw order sheet, the code for placing the cantilevers would grow exponentially with chances for bugs increasing in relation to this. I managed to get all the dimensions in as well as the border but I was starting to worry the final product would not be able to facilitate more than a few select cantilever frames (unless there were more developers to help).

The client were very understanding and we came to an ammicable agreement to put the project on hold. I would provide support for them if there were any problems with the current system, which could still be used to automate part of the CAD drawing process.



09/01/2016

Automatically Creating CAD Drawings - Part 1

I was contacted by an ex-colleague from York who had heard that I'd taught myself to code. We discussed a software product that they wanted that would allow the Electrification engineers to automatically have CAD drawings generated from their engineering specifications. I thought I had a pretty good idea of what the development of this product would entail and so accepted a rolling contract to develop the system over the coming months.

Initial research showed that I would need to either interface with the CAD software indirectly through VBA or directly by using C. Foolishly, I figured C was the better choice and spent the following week walking into the brick wall that is learning C as a self taught C# developer. Needless to say, after a week I had come to the conclusion that this was not feasible whilst also being paid as part of a contract.

Once I decided to use VBA it was just a few days later that I had a first prototype up and running for the client. This involved opening an IO stream to the CAD application from Excel to allow new files to be created and for those files to be manipulated. The first prototype simply shows that I can get Excel to talk to the CAD program and to place CAD cells in a drawing file and save that file.

Work continues on this project, the next milestone will be having a mast, mast brackets and foundation placed in a drawing file which will then be saved to the computer before closing the stream.

Art



img01 img01 img01

Testimonials