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