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 such as Click and Luigi.
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). I also have a good working knowledge of R, Matlab, C#, C and PHP.
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.
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
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.
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.
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.
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.
I have hands-on experience with cloud service providers, chiefly AWS, (in particular EC2, S3, Lambda, DynamoDB, Redis, Cognito, EMR and API Gateway), but also with Google Cloud Services.
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, Chef and Terraform.
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.