I consider myself to be a polyglot programmer with various interests. If I'm unfamiliar with a language and its technlogies (frameworks, libraries etc), I will teach myself these to get a project done, something I've had to do in and outside of industry.
I'm always intrigued by using a different language to develop a project I've already completed. This can be a good experiement or a bad one; the below example I feel is a good one.
For example, the project Systems Monitor similar to htop was developed in Modern C++. Could there be
an advantage in writing this application in Rust or Golang, given these are both System Level languages? Anyway, what do I usually do in the workplace? Read about that below.
My past experience includes working in the Oil & Gas Industry and Retail Sector (BI & HR Analytics), utilising a wide range of technologies,
allowing Stakeholders to make informed business decisions. My experience in these industries has seen me work on a wide range of projects. For example, from
developing shell scripts to load, process and unload large Seismic data sets, to using Machine Learning to try and understand employee absence
rates for Tesco and reduce the £2million pa financial loss.
-
🌱 I’m currently working on:
- Learning Golang. I've a number of projects I want to develop in this language.
- Developing a Multithreaded 2D Chanel Flow Solver for the Navier-Stokes Equations, using the Finite Difference Method and the Successive Over-Relaxation Method, in a variety of languages: e.g. C, C++, & Fortran. Will use the OpenMP API for Multithreading.
- Developing a Linear & Non-Linear Covective Heat Flow Solver, in C++, using the Finite Element Method and solved via the Successive Over-Relaxation Method
- Employing Fortran and the GPU to build a Linear/Non-Linear Shallow Water Equation Solver.
- Physics-Informed Machine Learning. Applying this to Inverse Problems in Geophysics. E.g. Seismic tomography and Geomagnetism.
- Developing a Compiler using the LLVM Project.
- Developing a Compiler in C/C++.
- Developing a Multithreaded Linux Kernel.
- Developing an Interpreter &/or Compiler in Go.
- Deloping a basic Operating System in C.
- Learning the SYCL Programming Model and creating some basic applications with it.
- Creating a simple Crypto Trading Platform in C++.
- Creating a Cryptocurrency Trading Bot with a User Interface in Python.
- Creating a simple Trading Bot in Java. I've never worked with Java and I've always been put off by it; Might be a good time to see why!
- Creating a basic Online Oil & Gas Data Management System called OGManager, developed in Golang.
- Could a Physics Game Engine be used for Scientific Simulation/Modelling?
- Writing a solver for the (Discrete) Fast Fourier Transform using OpenCL. I studied Geophyics so I'm naturally interested in applications of Signal Processing.
- GPU Programming and Fluid Dynamics: Taking a look at the SYCL Framework and using it to develop a solver.
- Building a RISC-V Operating System using Rust.
- Building a Shell in Golang.
- Building a Browser Engine in Rust.
- Building my own Container with Golang.
- Building a simple Terminal Emulator in Golang.
- Creating a Distributed Service in Golang.
- Rust.
- Golang.
- C.
- Modern C++.
- Fortran.
- MATLAB.
- Data Structures & Algorithms.
- Bash Scripting.
- High Performance Computing: I love seeing how HPC can help with Scientific/Simulation problems. I'm keen to start learning about the SYCL framework too.
- Computational Science. Like my repo's show, I love developing Numerical Algorithms to solve Scientific and Engineering Problems.
- Systems Programming: I love knowing how things work under the hood. E.g. Compilers and Operating Systems (Linux).
- Data Science.
- Data Engineering.
- Scientific Programming: Modelling and Simulation of problems in Fluid Dynamics & the Physical Sciences.
- Applied Mathematics: E.g. Numerical Analysis, Linear Algebra, Ordinary/Partial Differential Equations and (Computational) Fluid Dyanamics.
Take a look at these repositories; some of my applications might interest you and might help you out in some way. Or you might look at them and think "Why on Earth has he done it that way, when he could have done it this way!". If thats the case, please let me know as I'm always looking to better myself and my applications.
- 2D Poisson Equation Solver with OpenMP.
- 2D Heat Equation Solver using OpenMP.
- 2D Heat Equation Solver using MPI.
- 1D Wave Equation Solver using MPI.
- Application of the Shallow Water Equations to Problems in Oceanography & Planetary Atmospheres.
- Navier-Stokes Equation Solver for 2D Channel Flow.
- Application of the U-Net Convolutional Neural Network to Classify Salt and Sediment Structures in Oil & Gas Reservoire.
- Classifying Different Images of Clothing.
- Application of Logistic Regression to Identify Customer Churn and Why They Churn.
- A Real-Time Data Platform for Detecting Anomalies in Data.
- C++ Application that Performs Linear and Gaussian Regression .
- Data Warehouse for Music Files Leveraging AWS RedShift.
- ETL Pipeline for Music Analysis.
- A Spam Message Detection Application making use of Spark's ML & Data Pipeline Functionality.
- Python. E.g. used for: Automation, small-scale Software Development and Machine Learning Algorithm implementation.
- Data Science Stack: E.g. Pandas, NumPy, Matplotlib, seaborn, SciPy, sci-kit learn, Keras and TensorFlow.
- Machine Learning Algorithms: E.g. Natural Language Processing, Multilinear Regression, Logistic Regression, K-Means and Support Vector Machine (SVM).
- Tableau.
- Microsoft SQL Server.
- PostgreSQL.
- Excel/VBA.
- Linux/Bash Scripting.
-
Sword Group: September 2019 - November 2019: Geo-Data Scientist.
- Looked into using Natural Language Processing to search for key information regarding Reservoir Formations in reports.
- Using Python, developed software which converted folders of reports from docx to PDF format.
-
Tesco CEC: July 2018 - September 2019: Performance Insight Analyst.
- Automated weekly reports for KPIs such as company performance and staff absenteeism.
- Worked with the Absenteeism Stakeholders to provide a new dashboard using Tableau rather than Excel.
- Worked with the Absenteeism Stakeholders to investigate Absenteeism Rates across the year. This was an important project because Tesco CEC was loosing £2million PA due to staff absences. Technologies used in this project: Python, SQL, Tableau and Multiple Linear Regression.
-
Schlumberger: November 2013 - November 2014: Geophysicist & Data Scientist.
- Assisted Senior Geoscientists with training for clients using Petrel and Techlog software.
- Provided general Data Management solutions for Stakeholders as and when required.
- Joined the BP Chili Data Migration Project. This involved migrating all of BP’s Data Assets from OpenWorks DM Software to Petrel and Studio Manager.
- Acted as a Focal Point for the BP Chili Project in the Schlumberger Houston (Texas) Office. E.g. Producing documentation on the Migration Techniques being employed in the Aberdeen Office.
-
Halliburton: November 2012 - November 2014: Seismic Data Scientist.
- General duties: Seismic (SEG-Y and P1/90) Data Loading/Unloading and Bash scripting.
- Developed reports for clients on the life-cycle of their data assets.
-
University of Edinburgh: 09/2022 - Present: MSc High Performance Computing (Online Part-time).
-
University of Aberdeen: 2014 - 2015: MSc Geophysics.
- Dissertation: Forward Modelling of the Seismic Response of the Sherwood Sandstone Group of the Rhyl Gas Field.
-
University of Liverpool: 2008 - 2012: BSc (hons) Geophysics (Physics).
- Dissertation: Rate of Change of Earth’s Magnetic Field due to Various Outer Core Fluid Flows.
Programming Languages | |
Scripting | |
Data Analytics | |
IDEs & Text Editors | |
Databases | |
Other |