Skills

terminal

General Programming Skills


Operating Systems
  • Linux: Ubuntu is my current OS+Distro of choice. I have used various other distros such as Debian.
  • OS X: I used OS X for the majority of my work 2012-2017.
  • Windows: I used Windows extensively at school and since.
Workflow
  • Shell: I am very comfortable in a terminal environment, which has played a prominant part in my education and experience. I personally use ZSH.
  • TMUX: I generally use TMUX for multiplexing.
  • Vim: I prefer to stay in the terminal and use Vim and plugins, which can be extremely powerful. VS Code & Sublime Text are other editors I like.
Version Control
  • Git: I am comfortable using Git repositories.
  • GitHub: I have mostly used GitHub for repo management.
  • GitLab: I have also collaborated occasionally with people using GitLab.
Markdown & Markup
  • Markdown: I have a working knowledge of md.
  • Latex: I have used Latex extensively throughout my education to write all reports, papers and theses.
python

Programming Languages


Through education, employment and general interest, I have encountered various languages and associated packages.

Python

For the last six years, Python has been my programming language of choice for scientific purposes or small projects. I also used it for test automation as a Software Intern in 2015. The packages/technologies I have used are:

  • NumPy & SciPy: I have used these extensively in my research.
  • MatPlotLib: My go-to package for plotting.
  • Keras, TensorFlow, Scikit-learn, Pandas, Spark: I have recently started working with big data and machine learning.

I also have some familiarity with the Django web framework.

C++

A lot of the software in High Energy Physics are built in C++. As part of various projects I have had to create, interact or interface C++ code. Most recently I had to interface a C++ phase space integrator with a Python Keras Neural Network.

JavaScript

Mostly through my interest in web technologies, I have ended up encountering a lot of JavaScript, including ES6. Packages and frameworks are mentioned below under Web Development.

Other

In my PhD I have used Wolfram's Mathematica. It is perhaps not a programming language as such, but is extremely useful for attaining analytical mathematical results.

I have also briefly encountered other languages such as Ruby, Java & Fortran.

html

Web Development


Initially a hobby, I have now improved my web development skills through a combination of online courses and necessity.

Front End
  • HTML : I can't make a website (such as this one) without it.
  • CSS: As well as vanilla CSS I have used:
    • Bootstrap 4
    • Flexbox
    • Sass, compiled with Node-Sass
    and dabbled with Semantic UI.
  • JavaScript: I have used jQuery for DOM manipulation.

I have also in the past created static websites using GO and Hugo.

Back End
  • NodeJS: I primarily use NodeJS with an ExpressJS framework EJS templates.
  • MongoDB: I have mostly used MongoDB with Mongoose for database solutions.
  • NPM: I have used Node Package Manager to install and use packages such as: passport, mongoose, express-sanitizer, flash, body-parser and more.

I have also briefly encountered the Django and Ruby-On-Rails frameworks.

Hosting

For hosting and databases I have used:

  • Heroku
  • MongoDB ATLAS
gimp

Graphics


Throughout my degree and PhD I have been given graphical tasks, for which the open-source GIMP software has become my tool of choice. I used this, for example, to create the Star-Wars-inspired poster for the YTF10 conference.

office

Standard Office Software


As well as more scientific tools, I am very comfortably using Microsoft Office (as well as Google and open-source equivalents) to produce documents, presentations and spreadsheets.