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