Proven software developer & researcher with 7 years experience. Known for ability to meet deadlines, learn skills as required to solve problems, and effectively communicate with both technical and non-technical stakeholders. Strong technical skills and experienced project supervisor.

Currently 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.

Skills

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.

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

Tools
valgrind • wireshark • GDB • matlab • tcpdump • netbeans • bison • flex

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

Operating Systems
Linux • TinyOS • Contiki • RTOS • Windows

Education

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.

Work

Japanese Society for the Promotion of Science Fellow, National Institute for Informatics 2016 - Present
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.

Teaching

Lectures
  • 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
Tutoring
  • Java Programming 2
  • Python Programming 1
  • Peer Assisted Learning 
Demonstrating
  • Operating Systems 3
  • Object-Orientated Software Engineering 3
  • C Programming Language 3
  • Introduction to Unix