Senior software engineer (July 2019 - Present)
Software engineering Intern (March 2018 - June 2018)
During the final year of my PhD I spend several months working with the Real Time Compute team at Twitter’s head quarters in San Francisco. I worked on a project (Caladrius) to apply my PhD research to Twitter’s Heron stream processing system. During this internship I learned a great deal about distributed systems design and implementation, stream processing, graph analysis and graph databases.
Software development Intern (March 2014 - July 2014)
During the summer term of my MSc I worked as a software development intern for Acritas. In this role I gained experience in building web applications using Python, Heroku and MongoDB, as well as the vital experience in interpreting user requirements and translating them into usable features.
Acoustic Consultant (October 2012 - September 2013)
I worked on educational and healthcare projects as part of larger design teams. I wrote software packages to perform statistical analysis on acoustic measurements.
Capita Symonds - Acoustics Division
Senior Acoustic Consultant (January 2010 - October 2012)
As a senior consultant I was responsible for managing key clients and coordinating the acoustic design on multi-million pound school and hospital projects. This required working within large design teams. I was also responsible for the Acoustic Division’s compliance with internal company, national and international standards.
Acoustic Consultant (October 2006 - January 2010)
I worked initially as an Acoustician, performing noise surveys and sound testing. I quickly moved onto educational acoustic design and became the lead consultant on 3D acoustic computer modelling.
(September 2015 - August 2020)
My thesis won runner up in the 2020 SPEC Kaivalya Dixit Distinguished Dissertation Award:
“Given the high quality of dissertations nominated for this award, the committee decided to publicly recognize another dissertation as Runner Up, entitled ‘Performance Modelling of Distributed Stream Processing Topologies’ and authored by Thomas Cooper, also of Newcastle University, under the supervision of Dr Paul Ezhilchelvan. Members of the committee were impressed by the industrial relevance of the application scenario, the sophistication of the modeling employed and the ‘exquisite, well-articulated’ writing in the dissertation."
(September 2014 - June 2015)
(September 2013 - August 2014)
(September 2005 - September 2006)
(September 2002 - June 2005)
(September 1995 - June 2002)
Computer Science Experience⌗
My Computer Science masters gave me a solid grounding in computer science theory, Java & Python development, as well as hardware programming (see RALF on the projects page).
My PgDip in cloud Computing for Big Data expanded my knowledge of distributed computing systems (such as Apache Cassandra), machine learning (including Weka and scikit-learn), big data analytics (using Apache Spark), statistical analysis methods and also involved training in entrepreneurship and other professional skills.
During my PhD I have developed in-depth knowledge of the Apache Storm stream processing system, which is written in Java and Clojure. I have extended Storm as part of my research and created metrics-gathering services and data analysis pipelines using InfluxDB and Python packages including numpy and pandas. I also have experience in graph analysis using networkx, Neo4j, Cypher and Apache Tinkerpop. I am an experienced Linux user (12+ years) and my research has expanded my Linux knowledge into deployment and debugging of distributed systems (using Ubuntu Linux and Azure).
My internship with Twitter was focused on applying my research to Storm’s successor, Apache Heron. Working with the Heron developers inside and outside Twitter I am creating a modelling service, Caladrius, which incorporates data gathering, graph analysis and statistical modelling to predict the performance of Heron topologies. This code is in the process of being open-sourced.