Currently research lead in the Autonomous Networking Research and Innovation Department, a part of Rakuten Mobile. I am looking into evolutionary-driven autonomous networks and applying edge computing in a real mobile phone network. I am also building relationships with universities, and looking for opportunities to collaborate.

Previously a JSPS Fellow at the National Institute of Informatics in Tokyo, Japan, and working on self-adaptive systems for heterogeneous devices. Interested in all things systems, and seeing if formal methods can occasionally be applied to them.

I completed my PhD in the School of Computing Science at the University of Glasgow. I had a scholarship from the Carnegie Trust for the Universities of Scotland. In general my research is focused on distributed systems, specifically parallel computing and runtime adaptation.


Based on the work that I have done over the years, the following is the list of languages, tools, and frameworks that I have used.

C/C++ • Java • Python • OpenCL • Cuda • MSP430 assembly • HTML • SQL

valgrind • wireshark • GDB • matlab • tcpdump • netbeans • bison • flex • dpdk • lxc • docker

pthread • sockets • numpy • scipy • matplotlib • git • svn • bluez • tensorflow • JSOUP • libSVM • JDBC • Microsoft Office Suite

Operating Systems
Linux • TinyOS • Contiki • RTOS • Windows


PhD Computing Science 2011 - 2015
Title: A linguistic approach to concurrent, distributed, and adaptive programming across heterogeneous platforms.
This work was on the application of the actor model of programming to many different types of computing environment and computing device. The point was to show that actor-based computing is the right way to program modern software applications.
This work saw the creation of:
  • New programming language and compiler
  • New virtual machine and class file format
  • Unification of distributed programming with the language

MSci (hons) Computing Science - First Class 2005 - 2010
Title: InceOS: The Insense Specific Operating System
To address performance and programming issue with existing real-time embedded operating systems, this new OS was created. It was specific to the Insense programming language, and performed with equivalent or better performance when compared to competitors, having a much simpler interface.


Research Lead, Rakuten 2018 - Present
Distributed Systems and Edge Compute
  • More info to follow
  • Technology: C/C++, python

Japanese Society for the Promotion of Science Fellow, National Institute for Informatics 2016 - 2018
Formal Methods and Machine Learning for Load Balancing
  • Investigating the application of machine learning to heterogeneous hardware task scheduling.
  • Leading an international application of safety models to insecure distributed applications.
  • Presentation and discussion at international of ideas.
  • Administration of budget.
  • Planning and overseeing agenda of work.
  • Supervised work on the application of machine learning to GPU programming.
  • Technology: C, Java, OpenCL, libSVM, weka, LLVM, session types, scribble.

Research Fellow and Work Package Leader, Queen's University Belfast 2016
Language and Runtime for ExoScale HPC
  • Designed and developed programming model and runtime for next generation High Performance Computing platform.
  • Generated technical documents for international distribution.
  • Delivered presentations internally, and to international collaborators and European Union Officials.
  • Travelled internationally for design and technical meetings.
  • Led small team to deliver the technical goals.
  • Technology: C (pthreads, sockets), Java, Python (numpy), OpenCL, and some LLVM on linux, libSVM, valgrind, wirehsark, tcpdump, latex, and office suite.

Education Consultant, Education Scotland Autumn 2015
Nationwide Curriculum Development
  • Design and development of Scotland-wide computing science school curriculum (4 - 14).
  • Generated a progression framework around 3 core areas of computing science.
  • Developed and documented multiple example exercises to describe core concepts across different ages and stages of progression.
  • Coordinated and debated with teachers, government, and academia to refine teaching methodologies.
  • Consultation with industry on appropriate core concepts.

Japanese Society for the Promotion of Science Fellow, University of Aizu Summer 2013
OpenCL Parallisation and Extension of Weather Simulation on GPU and Multicore
  • Optimisation and extension of a weather simulator with radioactive decay.
  • Interdisciplinary collaboration with climate scientists.
  • Testing to ensure consistency using statistical comparison of new and existing simulator.
  • Documentation and presentation of successful performance improvement at conference.
  • Technology: C++, OpenCL (AMD & NVIDIA GPU, multicore NUMA), OpenMP, python, linux, netCDF.

Research Intern, CERN Summer 2010
Global, Distributed Resource Monitoring for the Grid
  • Address scalability issues with globally distributed data processing system.
  • Developed and tested on live production service.
  • Saw improvement of 2 orders of magnitude.
  • Generated publication for the international Journal of Physics.
  • Technology Python (numpy, scipy), LDAP data format, TCP/IP (sockets).

Copmiler Developer Intern, Codeplay Summer 2008
Compiler Tools, and Profiling and Debugging for Proprietary Processor
    Porting of runtime memory analysis to IBM Cell processor.
  • Development of a number of quality of life tools: e.g. name mangler and a code duplication checker.
  • Data analysis and interpretation, as well as presentation at weekly team meetings.
  • Technology C++ with STL, and boost.


  • Wireless Sensor Networks 4: Wireless Sensor Network Operating System
  • Operating Systems 3: The Insense Programming Language and Operating System
  • Computing Science in the Classroom 4
  • Advanced Programming 3
  • Java Programming 2
  • Python Programming 1
  • Peer Assisted Learning 
  • Operating Systems 3
  • Object-Orientated Software Engineering 3
  • C Programming Language 3
  • Introduction to Unix