About Me

My name is Edwin Onuonga. I was born in Nairobi, Kenya and shortly moved to Dubai, United Arab Emirates where I grew up. After my A-Levels, I decided to go and study in Edinburgh, United Kingdom (at The School of Informatics, University of Edinburgh) where I chose to do a degree in Computer Science!

It's hard to say exactly when and how I became interested in computer science, but it was likely during my A-Levels where I developed a strong interest in mathematics. I found many of the areas of mathematics simply amazing, but began to wonder how they can be used to interact with, manipulate and uncover meaning from data. This ultimately led me to pursue the path of Computer Science, and even more specifically, data science and machine learning.

Contact Details

Edwin Onuonga
Edinburgh
United Kingdom
[email protected]

Education

School of Informatics, University of Edinburgh

BSc Computer Science (Predicted 1st class) 2016 - Current

Research project:

Automatic detection and classification of human head gestures
(Supervised by Hiroshi Shimodaira)

Courses:

  • Algorithms, Data Structures and Learning
  • Introductory Applied Machine Learning
  • Machine Learning Practical
  • Machine Learning and Pattern Recognition
  • Extreme Computing and Database Systems
  • Foundations of Natural Language Processing
  • Processing Formal and Natural Languages
  • Automatic Speech Recognition*
  • Natural Language Understanding, Generation and Machine Translation*

*: Being taken in the current semester

The English College, Dubai

GCE/A-Levels (Mathematics - A*, Physics - A, Computing - B) 2007 - 2016

Activities:

  • Heriot-Watt University Programming Challenge
  • IT Department Assistance

Skills

In addition to being able to efficiently manipulate data, I have a solid understanding of a number of machine learning algorithms and concepts, including but not limited to:

  • Linear, Logistic and Softmax Regression
  • k-Nearest Neighbor Classifiers
  • NNs (Feedforward + Convolutional)
  • Hidden Markov Models
  • Gaussian Mixture Models
  • Clustering (k-Means + DBSCAN)
  • Bayes Classifiers
  • Regularization
  • Data Augmentation
  • Dimensionality Reduction

I have also learned about some ways to use these methods in specific application areas, such as: using Bayes Classifiers for text classification, using HMMs to perform part-of-speech tagging or classification of gestures, and combining Dynamic Time Warping with k-Nearest Neighbors to classify sequences of different length. I have also come across other algorithms such as Decision Trees and Random Forests, Bayesian Methods (Regression and Gaussian Processes) and Support Vector Machines, but have less practice with them.

Below is a summary of my technological skills and knowledge. For practicality, my level of proficiency in each and every language or tool is not listed.


Programming Languages and Libraries:

  • Ruby: Sinatra, Rails (Limited), Thor, ActiveRecord, Nokogiri, Rake, RSpec
  • Python: Jupyter Notebook, NumPy, SciPy, SciKit Learn, Pandas, Matplotlib, Seaborn, NLTK, PyTorch, Tensorflow, Pomegranate, TQDM, Joblib
  • SQL: Postgres, SQLite
  • Other languages: R, JavaScript, Crystal,

I mostly use Ruby for my general scripting needs, but also use it to design web-related things such as APIs, frameworks and websites.

For tasks involving data science and machine learning, I am very comfortable working with Python. I can effectively use Jupyter Notebooks (coupled with visualization libraries such as Matplotlib and Seaborn) as a means of clearly representing my work.

I have also written and published a number of libraries in both Python and Ruby on the public repositories PyPI and RubyGems.


Markup, Typesetting and Other Languages

  • LaTeX
  • Markdown
  • HTML
  • SCSS/CSS
  • YAML
  • JSON
  • XML + XQuery

I am very confident with the use of all of the above languages for tasks such as writing notes and reports, designing websites, and storing and querying semi-structured data.


Tools and Technologies

  • Git(Hub)
  • Bash/ZSH
  • macOS
  • Linux
  • Conda
  • RVM + rbenv

I normally use most of the tools listed above on a regular (almost daily) basis and I am therefore very confident with them, especially Git and the command line.

Code

eonu's GitHub chart

During my time at university, I have developed many coursework-related and personal projects ranging from machine learning packages to websites, web frameworks and APIs. Most of these projects were written in Ruby and Python, but I have also done a few in some other languages such as R. You can find all of my projects on my GitHub, my Ruby gems on my RubyGems profile and my Python packages on my PyPI profile.

Here is a brief list of some of the larger projects that I have worked on, or are currently working on:

Sequentia

Sequentia
Python
NumPy
Pomegranate
SciPy
SciKit-Learn

A machine learning interface for isolated temporal sequence classification algorithms in Python.

Created as part of my Honours project research involving the use of sequential classifiers for automatic detection and recognition of head gestures in motion capture data.

Eucalypt

Eucalypt
Ruby
Sinatra
ActiveRecord
Thor

Micro-framework, application generator and CLI wrapped around the Sinatra DSL.

Designed to simplify the process of getting new Sinatra applications up and running by providing commands for quick scaffolding and MVC file generation.

Deeper Blue

Deeper Blue
Python
Flask
jQuery
React
SCSS

An assistive chess-playing robot aimed at making chess played on a physical board more accessible towards the disabled.

Developed for the System Design Project — a 3rd year group project at the School of Informatics, University of Edinburgh.