Profile photo

James Ball

Studying Computing @ ICL

About Me

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

Currently I'm working on my Final Year Project: Generating Kidney Tissue Images Using Diffusion Models Conditioned on Clinical Parameters, which involves synthesising images of kidney biopsies, facilitating the explainability of measurements taken by doctors, and allowing privacy-preserving synthetic datasets to be publicly released.

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


Proficient in

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

Exposed to

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


osci-render animation

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


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.


Won 'Ocado Technology Group Project Prize'


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.


3rd highest ranked project in second-year


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.

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.


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


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


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


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


Forward Deployed Software Engineer

Palantir • Internship

Mar 2022 - Sep 2022

Palantir build world-class software for data analytics and data-driven decision making.

My work was client-facing, and I worked with a small team to develop the UK government's Homes for Ukraine platform, which has helped ensure over 100,000 Ukraine refugees are safely resettled in the UK.

Some of what I worked on includes using TypeScript to develop an Entity Resolution tool for local authorities to correct and merge duplicate records.

I also worked heavily on data pipelining and transformation, using Apache Spark and Python. This involves integrating complex datasets from multiple sources, and unifying them with existing data.

Whilst my TypeScript and PySpark skills were used heavily, this internship gave me lots of experience with client-facing work.

I was regularly in meetings with external stakeholders and clients, and was able to develop my communication skills, and had the opportunity to demo my work to the client.

Computer Scientist

Netcraft • Internship

Jun 2020 - Sep 2020
Jul 2021 - Sep 2021

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, PHP, and other technologies such as Puppet.

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

In 2021, I automatically detected and took down telephone scams, spoke to customers about newly discovered covid scams, and worked on sales for web scams to companies worth over $400B.

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.