Rikk Hill
Machine Learning Specialist
With seventeen years of commercial experience, I am a senior-level software developer with specialisations in Machine Learning and statistics, as well as a strong background in technical infrastructure. I have architectural and tech-lead experience, and have solved all manner of problems in a variety of different tech domains. I am SC-cleared and have ONS Approved Researcher status.

This is the unabridged version of my CV, which has inevitably grown beyond the acceptable standard of two sides of A4. You may search this page at your leisure.
Skills
Software Development
Python
My strongest language is Python, where my experience breaks down into three main areas of use:
  • Machine Learning, comprising the scientific Python stack and numerous specific ML libraries. For more details, see the specific technologies subsection under Machine Learning
  • Web development frameworks including Django and Flask
  • CLI, ops, ETL and pipelining libraries.
I am conversant with multiple environment management, packaging tools and testing frameworks for Python, and have provided training on best practices in developing and maintaining Python projects.
JavaScript and Web
I have been developing in JavaScript almost continuously since 2002, mostly in the area of web development. I keep myself up-to-date with modern JavaScript, including React, D3, and various UI, test and build frameworks. I also have considerable experience in HTML, CSS, modern web development standards, libraries and tooling. I also have some experience with server-side Node. I have a good understanding of principles of visual design, however my strongest design skill is knowing when the problem needs to be handed to a design specialist.
Other Languages
I am also commercially proficient in Scala (mostly for ML projects), Ruby (mostly for test suites and dev tool configuration, but with some Rails experience), Perl (mostly around the Catalyst MVC framework) and Java (miscellaneous projects, but mostly around ML libraries). From smaller pieces of work and personal projects, I also have a good working knowledge of R, Matlab, C, C#, C++ and PHP.
Database Technologies
I have extensive experience of database technologies, both from a development and operations perspective. My SQL relational database experience includes MySQL, PostgreSQL and SQL Server, and several other more esoteric platforms. My NoSQL/document store experience includes MongoDB, AWS DynamoDB, CouchBase and Apache Lucene/Solr.
Tooling
I have strong skills in development tooling and methodologies, source control (git), CI/CD, various environment management tools, and many build and testing toolchains; considerable experience in *nix/Linux environments and tools; architectural and tech-lead experience; understanding of what makes dev teams succeed or fail; solid track record of mentorship and training delivery.
Machine Learning and Statistics
Machine Learning
I have commercial experience with a wide range of machine learning techniques, including: Hidden Markov Models, matrix factorisation, Gaussian Processes, kernel methods, and neural network architectures (particularly multilayer perceptron, LSTMs and autoencoders). I have also produced multiple commercial Natural Language Processing projects using statistical, linguistic, and information retrieval methods.
Statistics
I am experienced in a variety of regression techniques, from both a classical/frequentist and Bayesian perspective, including the GLM and hierarchical models. I also have commercial experience of factor analysis, a variety of time-series models, and use of GIS and spatial statistics, particularly around political geographies and census data.
Specific Technologies
I have strong commercial experience using the Python scientific stack for common statistical and Machine Learning methods, including numpy, pandas, scipy and statsmodels. In the course of my work I've gained fluency with numerous Machine Learning libraries, including: spaCy, nltk and gensim for Natural Language processing, nimfa and pymf for matrix factorisation, OpenCV for computer vision tasks, PyMC for Bayesian modelling, and both TensorFlow and PyTorch for neural networks and other autodifferentiation techniques. I also have experience with Hadoop and Spark (both Scala and Python bindings) for distributed computing.
Ancillary Skills
I have strong statistical and technical communication skills, and am able to express complex material for a wide range of audiences. I have strong data visualisation skills, and am adept at producing both written and presented reports. I have worked in-depth on projects that revolved around privacy preservation and data governance. I also have a good understanding of experimental design, ranging from A/B testing to randomised controlled trials.
Infrastructure
Cloud Services
I have hands-on experience with cloud service providers, including both AWS and Google Cloud Platform. I have helped architect authenticated serverless data-driven web applications in a security-conscious context, as well as employing serverless architectures for Machine Learning projects.
Virtualisation, Containerisation and Provisioning
I have considerable experience with large-scale virtualisation solutions such as VMWare ESX and vSphere, Xen and Citrix. I am also at home with smaller-scale demos and prototypes provisioned in Vagrant. I have experience building environments with docker and kubernetes. I also know my way around provisioning tools, including Puppet and Chef.
Operations and Administration
I have extensive experience with Linux and other *nix-based operating systems, particularly around Debian and RHEL-CenOS architecture. I also have Wintel enterprise stack experience, mostly around web and database servers. I'm very comfortable with network architecture and most common networking protocols. I'm comfortable working with hardware and know my way around a datacentre.
Experience
Contract Senior Python Software Engineer (Machine Learning)
August 2019 - November 2019 | GfK
A short-lived contract, upskilling a team of non-Python developers to work to Python best-practises, building an algorithm runtime environment for online and asynchronous execution of machine learning algorithms, implementing high-performance real-time machine learning algorithms to feed into the company's flagship data product.
Contract Data Scientist
November 2018 - June 2019 | The Department for International Trade
Part of the internal Data Science Labs team, building utilities to promote British trade interests and improve internal analytical capacity, including statistical modelling, classifiers, matching algorithms and NLP tools.
Senior Data Scientist
September 2016 - November 2018 | Social Finance
Tech-lead and architect building data products to provide visibility on administrative and operational data in public sector social care. Applying methods from statistical, Machine Learning and social science research to address operational questions faced by government decision-makers. Extensive use of the Python Machine Learning and statistics ecosystem. Architecture of a complex, secure AWS real-estate using Terraform.

Significant achievements:
  • In my first month, optimised the team's flagship reporting product, resulting in 400x real-time speed-up
  • Concieved and implemented a cutting-edge privacy-preserving algorithm for reporting on sensitive data
  • Implemented a suite of forecasting models for predicting the load on public care services
  • Ran a training scheme to upskill quantitative non-tech staff in the Python data stack.
Software Developer
December 2013 - September 2015 | The NET-A-PORTER Group
Part of the Warehouse Management team, developing warehouse, shipping and logistics functionality, mostly in Perl and JavaScript, but also working in Scala, Ruby and Python.

Significant achievements:
  • Use of discrete optimisation algorithms to efficiently solve problems in scheduling and logistics.
Application Support Developer
October 2011 - December 2013 | The NET-A-PORTER Group
Part of the Application Support team, working on critical/quick turnaround issues, data and bug fixes, bespoke application functionality, managing technical debt, and building support tools in Python, Perl and JavaScript.

Significant achievements:
  • Produced a variety of time-saving tools and browser plugins to speedup operational workflow
  • Diagnosed a recurring storage infrastructure problem based on high-level software behaviour.
Senior Technical Analyst
July 2008 - October 2011 | UKMail Group PLC
Part of the core Technical Operations team, doing what these days would be called DevOps, maintaining a large physical and virtual estate of Wintel and Linux servers, administering database platforms and providing high availability customer-facing web services. Development of bespoke monitoring tools and business continuity failover automation using Python and Perl. I was also responsible for provisioning and supporting services for in-house development teams.

Significant achievements:
  • Achieved near-full automation of dual-site disaster recovery failover procedures
  • Strategised and implemented virtualisation of 100+ physical server estate to a VMWare environment
  • Built bespoke monitoring and reporting tools for selfsame server farm
  • Implemented multi-tier Business Intelligence reporting and analysis platform.
2003 - 2008 | Various
Prior to 2008 I held multiple junior and mid-level roles revolving around software support, system administration, web development and database administration. A full list, going back to 2003, is available on request.
Education
BSc. Economics & Mathematical Sciences
First Class Honours | The Open University | 2009 - 2015
MSc. Computational Statistics and Machine Learning
Distinction | University College London | 2015 - 2016
The subject of my Masters dissertation was the use of side-information in collaborative filtering for recommender systems.