About Me.

I'm John Helsby, a software engineer with a passion for technology and innovation as a force for good. I'm particularly interested in scalable systems, distributed computing, artificial intelligence, and how these tools can be applied to benefit ordinary people the world over.

For more on my technical interests, please see my blog. You can read about my professional experience and education below, or see my LinkedIn page for more information.

Experience

Software Development Engineer Intern, Amazon, London.
June 2024November 2024

Tools used: Objective-C, Swift, Java, Kotlin, Swift, React Native, Git.

For the first half of my Industrial Placement year at Bath, I completed a six month Software Development Engineering placement with Amazon, at their 1 Principal Place office in London.

I worked on the Rufus Voice team, on Amazon's mobile app. Rufus is an LLM chatbot which provides a new, generative AI-powered, conversational shopping experience.

Compiler Developer Intern, Wolfram Research, Oxfordshire.
June 2023September 2023

Tools used: Wolfram Language, C++, LLVM, MXNet, CMake, Git, Mathematica.

In the summer of my first year at Bath, I worked on Mathematica's LLVM-based Wolfram Compiler under the supervision of Dr Tom Wickham-Jones, Directory of Kernel Technology at Wolfram Research.

  • I implemented an optimised CompiledPolynomial data structure, algorithms and automated tests. These included sparse polynomial addition and a Priority Queue-based multiplication algorithm, based on Algorithms and Data Structures for Sparse Polynomial Arithmetic (2019), Asadi, M.; Brandt, A.; Moir, R.H.C.; Moreno Maza, M.
  • I built, refactored and optimised Statistics functions within the compiler, including Quantile. I also analysed C++ code for Quantile in the Wolfram Kernel to optimise the compiled implementation.
  • I wrote a number of automated tests for Statistics functions, and modernised legacy tests.
  • I developed a Wolfram library for the LLVM tool opt, to optimise bitcode generated by the compiler.
  • Using C++, CMake and Wolfram, I adapted the MXNet-based neural network function CompiledLayer to take an additional storage pointer argument, allowing for improved pipelining of data across layers.
  • I built testable operations on Data Structures including linked lists and vectors in C++ and compiled Wolfram, and conducted performance comparisons between the two languages.

Education

Computer Science & Mathematics BSc (Hons), University of Bath.
September 2022June 2026

Tools used: Python, Java, C, Git, Django, NumPy, Haskell.

My course includes a year-long industrial placement after my second year.

I am currently on my placement year. On the Computer Science side of my course, I've studied:

  • core principles of programming in Python, Java and C.
  • data structures and algorithms.
  • comparative programming languages.
  • artificial intelligence, including constraint satisfaction, value and policy iteration, k-nearest neighbours, Naive Bayes classifiers, feature engineering, and neural networks. I also implemented a small neural network with backpropagation from scratch in Python and NumPy, based on the textbook Neural Networks and Deep Learning by Michael Nielsen.
  • foundations of computation, including finite automata, context-free grammars, and Turing machines.
  • functional programming, Haskell, and the Lambda calculus.

As part of an extended group project, I also acted as Technical Lead for the backend of a web application designed to automate the process of booking boats into harbours. The backend and accompanying tests were written in Python, Django, and the Django REST Framework, and deployed onto the web using GitHub Actions, Heroku and MailGun.

The Mathematics side of my course so far has focused on Algebra and Analysis. My studies have included:

  • Fundamentals of logic, numbers, proofs, sets, and functions.
  • Sequences, series, convergence. Properties of one-dimensional real functions.
  • Normed spaces, metric spaces and compactness.
  • Multivariate calculus.
  • Complex analysis.
  • Vector spaces and linear algebra.
  • Groups, rings and modules.

In the my final year of my course, students can choose which modules they wish to study. I hope to take Computer Science courses in Bayesian machine learning, advanced algorithms and complexity, and natural language processing; and Mathematics courses in numerical analysis, optimisation methods of operational research, numerical optimisation and/or graph theory.