Profile photo

James Ball

Studying Computing @ ICL

About Me

I'm a third-year student studying Computing (with AI and ML) at Imperial College London, currently on track to receive a high first, having landed on the Dean's list in 2nd and 3rd year with an overall percentage of 85.5%.

The emerging role AI plays within the industry is one of my main interests, particularly in Reinforcement Learning. I am looking to improve my Snake AI project by implementing a solution using RL instead of a genetic algorithm.

Experimenting with programming and music is also an interest of mine, the best example being osci-renderosci-render; a way of visualising 3D objects on an oscilloscope using audio.

CV

Proficient in

  • Java
  • Python
  • TypeScript
  • Apache Spark
  • C
  • Scala
  • Regex
  • Linux
  • Git
  • Perl

Exposed to

  • C++
  • Dart / Flutter
  • C#
  • JavaScript
  • Kotlin
  • PHP
  • Haskell

Projects

osci-render animation

Won 'Best Newcomer's Hack' at IC Hack 20

osci-render

Cross-platform, open-source software used by 100s of music + visual artists for making music by drawing images on an oscilloscope using audio.

Can render 3D objects, images, and text on an oscilloscope.

Designed to be extensible, allowing artists to synthesize their own audio + visuals with Lua.

Also created osci-sample, a way of sharing and visualising sounds made with osci-render.

KidneyCaliper

Won 'Ocado Technology Group Project Prize'

KidneyCaliper

KidneyCaliper is an automated deep-learning-based workflow for kidney pathologists.

  • Kidney biopsy images automatically annotated and analysed
  • Pathologist's workflow sped-up dramatically
  • Provides valuable statistics that were previously infeasible to obtain
  • Researchers given more insights into which factors make a difference in donor kidney survivability

Developed as a group of 6 for our 3rd year group project.

Protectly

3rd highest ranked project in second-year

Protectly

Mobile app that facilitates the physical wellbeing and safety of 18-25 year olds during and after nights out.

  • Track locations of friends
  • Panic button to send SOS to friends when in danger
  • Fake phone call to calm you

Frontend written in Dart / Flutter with backend written in Python / Flask.

Presentation
Snake AI

Achieved full marks in A-Level coursework

Snake AI

An AI that can learn to play snake perfectly using a neural network and a genetic algorithm.

I wrote this in Java completely from scratch to aid my understanding of neural networks.

PlayTogether

Won 'Best use of the Web' at IC Hack 21

PlayTogether

PlayTogether allows musicians to collaborate by playing along with other band members as a backing track, leading to more cohesive music-making.

Developed as part of IC Hello World Hack 21.

Other Projects

WACC

We created a compiler using Scala for a simple language called WACC, a Turing-complete variant on the While family of languages.

We also added extensions including:

  • 'Mark and Sweep' garbage collector
  • Re-implementation of Snake AI in WACC

Pintos

Various features were built upon a bare-bones operating system in C called Pintos, including:

  • Running and loading user programs
  • Advanced thread scheduling
  • Virtual memory
  • Memory mapped files

Experience

Computer Scientist

Netcraft • Internship

Jun 2020 - Sep 2020

Netcraft specialises in finding and taking down websites that impersonate other companies. They currently perform takedowns for three of the ten most phished companies on the internet.

Perl was the language I used the most, along with JavaScript, MySQL, and other technologies such as Puppet.


Working as part of a research team, I uncovered new scams and phishing sites including Microsoft support call and gift card scams.

In-depth knowledge of the scams was required to not only find the source of the scams, but also to produce automated emails convincing web hosters and registrars to take-down the sites.


Regex and Bash were skills that were heavily developed throughout my time at Netcraft; Regex is used all over Netcraft for classifying malicious sites.

My communicative and documenting skills were exercised when writing technical reports about the programs I have been writing and their purpose.

IT Developer

thirtyone:eight • Part-time

Aug 2016 - Oct 2019

thirtyone:eight is a charity that specialises in introducing child-protection policies in churches and offering DBS checks to many UK dioceses.

I worked as part of the IT department; tooling using C#, managing databases using MySQL, maintaining IT systems using Azure, and fixing staff PCs.


The redevelopment of the company website was my largest project; spanning over multiple months, working with multiple developers, and closely communicating with the marketing department.

I heavily used JavaScript, CSS, and HTML, and worked with multiple web frameworks, including Angular and Vue.


Another large project I undertook was the development of a hardware auditing program that gathered information about staff PCs.

Once the data is gathered, it is sent via JSON to a server program that inserts the data into the company database. This required heavy knowledge of Azure, C#, and .NET Entity Framework.