Talk is cheap, show me the source code.

GitHub page | Coders Rank | StackOverflow page | CodeWars | LinkedIn account | Resume PDF
Coder

I've been coding professionally since 2012, with 8 years of experience.

Started out developing sites with Django and been doing it ever since. I handle both front and backend development and that includes the site's server.

This is Django, this is Python, this is Linux; that's how I run things.

It works best when you get a clean linux server and install & setup everything. This is how I setup every site I design.

Some people do ask: Do you use Python 2 or 3? truth is, it doesn't matter. The syntax is mainly the same to the point I can only say apart from the neat features only supported in python 3 the one main difference is how to use the print in the two version. that's likely the main porting issue you'll get porting your code to 3.x. But still at this point there's no need to use Python 2, practically all new packages support 3 by default and some even have only neat and new features available in Python 3.

I'm going where few web developers go...

Diversity is our stength: something you'll hear organisations and some countries say, for me it means taking advantage of the ecosystem that knowing Python really well has opened up, an opportunity I plan to explore fully starting with Data Science also known as Machine Learning.

As for javascript, it lead me to discover NodeJS ( a web framework in Javascript, the backend is in C ) with a neat package Electron which allows you to design native cross-platform applications using javascript, css and html.

Work Experience

Contract

Position: Web Developer

Duties:

Designing Internal Web Based Software that handles the day to day business info of the company and generates, reports, charts, invoices, and other automated features.

This helps increase speed and efficiency and reduce errors when they need to provide information in a timely manner.

Included generated invoice as pdf's, user login, segmented data by organisation so a new user creates a new organisation and users inside the organisation with segmented rights taken directly from django's user permission models to determine the user's rights.

Start Date: Aug. 19, 2019

End Date: Oct. 21, 2019

Prestige Mountain Chalets

Position: Web Developer

Duties:

I designed the site based on the interest of what’s important, giving you a first-hand view of what each chalet offers and how it looks like from multiple angles and available rooms.

The booking information is integrated with an online booking system so the calendar shows the booked dates.

There's a variety of differently styled pages with a variety of content so each page feels new but still easy and intuitive to navigate through.

Start Date: May 2, 2019

End Date: Nov. 20, 2019

DecoMagna

Position: Web Developer

Duties:

The first step was using existing data from the current WordPress site then building a new frontend design to work with the current data and new information that was added on top of it. From restructuring the content and pages and adding animation to show more with less space, all this added up to an interactive user experience.

Since its launch, additional features have been added for new products and ideas.

Start Date: Oct. 1, 2018

End Date: Aug. 1, 2019

Contract

Position: Developer

Duties:

I was hired to work with a person who does advertising in places with high traffic of people like Malls, and with flatscreens with cameras they wanted a system that can track people and do analysis on how they react to the content they see on the screen. The people watching could have tailor made advertising targeting them, for example if women are watching it can show ads targeting women and a combination of this can be done such as sex, age and other factors.

Using Quvidi: a system that processes the information from a camera using facial recognition and returns information like the number of people, age, sex, how many are concentrating on the screen, their mood which can be related to how well they react to the content on the screen, with/without glasses, among other features I integrated the input to a python script that would send data to their platform used to switch ads and provided a webpage to add the rules for each ad so you can specify which group it targets.

Start Date: July 10, 2017

End Date: Sept. 22, 2017

Contract

Position: Web Developer

Duties:

The project was to design a job listing site, with intention to eventually integrate some analysis to filter the best candidates based on the skills and the job requirements.

This was a fresh start so there was no existing site to inherit specs from. Some of the features included logging in from 3rd party sites like: Google, Twitter, Facebook, and LinkedIn

All post requests included csrf token for increased security.

To simulate content added on the fly on the page after process finishes using jQuery at the time, the post request got back valid html to add where needed.

Start Date: April 19, 2017

End Date: Oct. 4, 2017

KenyaBuzz

Position: Web Developer

Duties:

The site was already existing at the time I joined but needed a number of updates to keep it relevant. This started by moving the movie ticketing system from an iframe and hosted by a 3rd party to internal and all logic inbuilt. This meant there needed to have a booking system that showed the booked seats in the cinema, the ability to select any seat not booked, you can proceed then to pay using a payment gateway then receive your e-ticket as a pdf in your email. The cinema would also get a verification version so they can verify it when you arrive. No printing necessary, just show it at the attendant and go in.

Later on, since they did advertise and listing of events happening in Kenya there came a need to offer the option to do ticketing for any event that wanted to. This was similar to the ticketing for movies only with a different ruleset like a maximum number of tickets which if left blank would mean it had none, type of tickets each with its own unique expiry date.

The second priority was designing a mobile site which wasn’t available at the moment. There was two options for doing this, either rewrite the current template to work with mobile or use a device detection tool so the page would use different templates based on the device type, desktop or mobile. We went with the second option at first, to avoid any issues for desktop users with intention to move on to the second later on.

It also became clear with time the process of selecting the cinema, movie and time took some time since it involved a back and forth ajax request. I solved this by having it cache the whole output for all the results at the start so navigation became instant with a single request at the last step to check if more seats were booked since the page loaded. This essentially made it an offline first experience.

An additional issue cropped up with the server being hit with multiple requests at the time till it timed out and went offline, it was setup using Apache at the time, the same setup I found it with and since the downtime tends to happen outside working hours I worked on a script that would check if the site was down and if so would restart it. Using that and logging the time it restarted it, I could figure out why at a more relaxed pace, eventually it was moved from hosting on WebFaction to AWS and the issue resolved itself. It might be also that gunicorn which was used now handled the load better.

The project was setup using an older version of Django so part of the process of updating the site included to use the newest version at the time of Django and fixing and issues from the upgrade from 1.5 to 1.8.

Start Date: March 13, 2015

End Date: March 13, 2017

Lamu Software

Position: Junior Developer

Duties:

This was my first job as a web developer, I worked with experienced developers who taught me how to keep my code clean, avoid pits, how to fix issues on the fly and deal with customers since the job included site visits where you visit a client’s office and I as the developer and my superior as the business head would talk to them and my part would be to make sure the requests were feasible and if it would interfere with other existing features inform them including providing a timeline and finally they’d discuss on the project’s cost.

Start Date: Dec. 5, 2012

End Date: Dec. 5, 2014

Skills

GO

Go, also known as Golang, is a statically typed, compiled programming language designed at Google by Robert Griesemer, Rob Pike, and Ken Thompson. Go is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.

Skill Learnt: 4 days ago

Skill Level 5 Stars:

Digital Marketing

Digital marketing is the marketing of products or services using digital technologies, mainly on the Internet, but also including mobile phones, display advertising, and any other digital medium.

Skill Learnt: 6 months ago

Skill Level 5 Stars:

GIMP

GIMP is a free and open-source raster graphics editor used for image retouching and editing, free-form drawing, converting between different image formats, and more specialized tasks.

Skill Learnt: 7 months, 1 week ago

Skill Level 5 Stars:

Blender

Blender is a free and open-source 3D computer graphics software toolset used for creating animated films, visual effects, art, 3D printed models, interactive 3D applications and video games.

Skill Learnt: 7 months, 1 week ago

Skill Level 5 Stars:

Android Development

Android software development is the process by which new applications are created for devices running the Android operating system.

Skill Learnt: 8 months, 3 weeks ago

Skill Level 5 Stars:

Video Editing

Video Editors are generally responsible for editing and assembling recorded raw material into a suitable, finished product ready for broadcasting. The material may include camera footage, dialogue, sound effects, graphics and special effects.

Skill Learnt: 11 months, 2 weeks ago

Skill Level 5 Stars:

PyTorch

PyTorch is an open-source machine learning library for Python, based on Torch, used for applications such as natural language processing. PyTorch provides two high-level features: Tensor computation (like NumPy) with strong GPU acceleration.

Skill Learnt: 1 year, 4 months ago

Skill Level 5 Stars:

Electron

Electron is a framework for creating native applications with web technologies like JavaScript, HTML, and CSS. It takes care of the hard parts so you can focus on the core of your application.

Skill Learnt: 1 year, 7 months ago

Skill Level 5 Stars:

NodeJS

Node.js is an open-source, cross-platform JavaScript run-time environment that executes JavaScript code outside of a browser.

Skill Learnt: 1 year, 9 months ago

Skill Level 5 Stars:

ReactJS

In computing, React (also known as React.js or ReactJS) is a JavaScript library for building user interfaces. It is maintained by Facebook and a community of individual developers and companies. React can be used as a base in the development of single-page or mobile applications.

Skill Learnt: 1 year, 10 months ago

Skill Level 5 Stars:

Keras

Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation.

Skill Learnt: 1 year, 11 months ago

Skill Level 5 Stars:

Tensorflow

TensorFlow is a Python library for fast numerical computing created and released by Google. It is a foundation library that can be used to create Deep Learning models directly or by using wrapper libraries that simplify the process built on top of TensorFlow.

Skill Learnt: 1 year, 11 months ago

Skill Level 5 Stars:

Scikit-Learn

Machine Learning in Python. Simple and efficient tools for data mining and data analysis; Accessible to everybody, and reusable in various contexts

Skill Learnt: 1 year, 11 months ago

Skill Level 5 Stars:

Vue.js

Vue.js is an open-source Model–view–viewmodel JavaScript framework for building user interfaces and single-page applications.

Skill Learnt: 1 year, 11 months ago

Skill Level 5 Stars:

Flask

Flask is a micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries. It has no database abstraction layer, form validation, or any other components where pre-existing third-party libraries provide common functions.

Skill Learnt: 1 year, 12 months ago

Skill Level 5 Stars:

Pandas

pandas is a software library written for the Python programming language for data manipulation and analysis. In particular, it offers data structures and operations for manipulating numerical tables and time series.

Skill Learnt: 2 years ago

Skill Level 5 Stars:

Java

Java is a general-purpose programming language that is class-based, object-oriented, and designed to have as few implementation dependencies as possible.

Skill Learnt: 2 years, 4 months ago

Skill Level 5 Stars:

WordPress

WordPress is a content management system based on PHP and MySQL that is usually used with the MySQL or MariaDB database servers but can also use the SQLite database engine. Features include a plugin architecture and a template system, referred to inside WordPress as Themes.

Skill Learnt: 4 years, 5 months ago

Skill Level 5 Stars:

Jquery

jQuery is a concise and fast JavaScript library that can be used to simplify event handling, HTML document traversing, Ajax interactions and animation for speedy website development. jQuery simplifies the HTML's client-side scripting, thus simplifying Web 2.0 applications development.

Skill Learnt: 6 years, 10 months ago

Skill Level 5 Stars:

Git

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance.

Skill Learnt: 6 years, 11 months ago

Skill Level 5 Stars:

Bootstrap

Bootstrap is a free and open-source CSS framework directed at responsive, mobile-first front-end web development. It contains CSS- and JavaScript-based design templates for typography, forms, buttons, navigation and other interface components.

Skill Learnt: 6 years, 11 months ago

Skill Level 5 Stars:

PHP

PHP is a general-purpose programming language originally designed for web development.

Skill Learnt: 7 years, 7 months ago

Skill Level 5 Stars:

Javascript

JavaScript, often abbreviated as JS, is a high-level, just-in-time compiled, multi-paradigm programming language that conforms to the ECMAScript specification. JavaScript has curly-bracket syntax, dynamic typing, prototype-based object-orientation, and first-class functions.

Skill Learnt: 7 years, 7 months ago

Skill Level 5 Stars:

Django

Django is a Python-based free and open-source web framework, which follows the model-template-view architectural pattern. It is maintained by the Django Software Foundation, an independent organization established as a 501 non-profit. Django's primary goal is to ease the creation of complex, database-driven websites.

Skill Learnt: 7 years, 8 months ago

Skill Level 5 Stars:

CSS

Cascading Style Sheets is a style sheet language used for describing the presentation of a document written in a markup language like HTML. CSS is a cornerstone technology of the World Wide Web, alongside HTML and JavaScript.

Skill Learnt: 7 years, 10 months ago

Skill Level 5 Stars:

Python

Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.

Skill Learnt: 8 years ago

Skill Level 5 Stars:

HTML

This is the the xml of websites; the backbone of the web-pages that pulls CSS, JS and the content of the page and present it to you, the curious wanderer, wondering if this is another click-bait site. Though HTML5 did bring new cards to the table, the poker game still has the same rules.

Skill Learnt: 8 years, 3 months ago

Skill Level 5 Stars:

Education

Intel® Edge AI Foundation Course
Intel® Edge AI Foundation Course certificate

School: Udacity

Description:

Learn the basics of AI at the Edge, leverage pre-trained models, convert models with the Model Optimizer, utilize the Inference Engine, and learn some additional topics for edge applications.

Start Date: Jan. 1, 2020

End Date: Jan. 14, 2020

Digital Marketing
Digital Marketing certificate

School: Google

Description:

Digital marketing is the marketing of products or services using digital technologies, mainly on the Internet, but also including mobile phones, display advertising, and any other digital medium.

Start Date: July 29, 2019

End Date: Aug. 16, 2019

Mastering Data Science and Machine Learning Fundamentals
Mastering Data Science and Machine Learning Fundamentals certificate

School: Udemy

Description:

A Beginner Course in Data Science, Machine Learning, Regression, Classification and Clustering (THEORY ONLY)

Start Date: July 27, 2019

End Date: July 27, 2019

Android Keyboard Inputs: Getting Started
Android Keyboard Inputs: Getting Started certificate

School: PluralSight

Description:

Making use of keyboard inputs is fundamental to providing an excellent user experience. You’ll learn how to use Android with keyboard inputs, keyboard method actions, autocomplete suggestions, soft keyboards, and support hardware keyboards.

Start Date: July 21, 2019

End Date: July 21, 2019

Android Fundamentals: ConstraintLayout
Android Fundamentals: ConstraintLayout certificate

School: PluralSight

Description:

Learn how to create layouts with Android Studio’s Layout Editor and ConstraintLayout. This course will teach the basics of using ConstraintLayout, such as Constraints, Guidelines, Barriers, Bias, and Chains.

Start Date: July 21, 2019

End Date: July 21, 2019

Getting Started with Augmented Reality on Android Devices
Getting Started with Augmented Reality on Android Devices certificate

School: PluralSight

Description:

This course introduces Android developers to Augmented Reality concepts and applications.

Start Date: July 21, 2019

End Date: July 21, 2019

Android Navigation Architecture Components: Getting Started
Android Navigation Architecture Components: Getting Started certificate

School: PluralSight

Description:

This course introduces the Navigation Architecture Component, a new component from the Jetpack library family, that facilitates navigation within the different screens of an Android application.

Start Date: July 17, 2019

End Date: July 17, 2019

Android Fundamentals: Implementing Effective Navigation
Android Fundamentals: Implementing Effective Navigation certificate

School: PluralSight

Description:

This course focuses on navigation with Android. By the end of the course you’ll understand how to implement effective navigation using activities, fragments, alert dialogs, bottom navigation views, navigation drawers, and tabs.

Start Date: July 15, 2019

End Date: July 16, 2019

Overcoming Common Android Performance Barriers
Overcoming Common Android Performance Barriers certificate

School: PluralSight

Description:

This course teaches you how to investigate, evaluate, and improve common performance hazards related to memory, UI rendering, and more using the latest analysis and profiling tools.

Start Date: July 3, 2019

End Date: July 3, 2019

Exposing Data and Information Outside Your Android App
Exposing Data and Information Outside Your Android App certificate

School: PluralSight

Description:

Android allows apps to extend beyond reach of their traditional boundaries. In this course, you'll learn how to capitalize on these capabilities through the use of Content Providers, notifications, and PendingIntents.

Start Date: July 1, 2019

End Date: July 1, 2019

Building Apps with Android Architecture Components
Building Apps with Android Architecture Components certificate

School: PluralSight

Description:

This course will teach you to utilize the ARCH components libraries and master building Android apps.

Start Date: June 30, 2019

End Date: June 30, 2019

Creating Your First Android App with Android Studio and Firebase
Creating Your First Android App with Android Studio and Firebase certificate

School: PluralSight

Description:

This course will teach you how to use Firebase within your app so that you can build great full-stack apps quickly and follow best practices.

Start Date: June 29, 2019

End Date: June 29, 2019

Building Android Apps with Kotlin: Getting Started
Building Android Apps with Kotlin: Getting Started certificate

School: PluralSight

Description:

Dive into the language set to replace Java while building Android applications. This course will give you a foundation of both Kotlin and Android skills to allow you to build apps faster and cleaner than ever before.

Start Date: June 28, 2019

End Date: June 28, 2019

Building Your First Connected App with Android Studio
Building Your First Connected App with Android Studio certificate

School: PluralSight

Description:

This course will teach you how to make your Android app connect to a web service and retrieve JSON data from the web, show it with a RecyclerView and persist data with SharedPreferences. You'll also create menus dynamically and use data binding.

Start Date: June 24, 2019

End Date: June 26, 2019

Enhancing the Android Application Experience
Enhancing the Android Application Experience certificate

School: PluralSight

Description:

Learn the skills necessary to create Android apps that provide the kind of rich, high-quality, and engaging experience users expect.

Start Date: June 17, 2019

End Date: June 23, 2019

Working with Android Tools and Testing
Working with Android Tools and Testing certificate

School: PluralSight

Description:

This course covers the skills necessary to work efficiently as an Android app developer, and assure quality software through testing by learning to effectively utilize the single most important tool for Android developers, Android Studio.

Start Date: June 7, 2019

End Date: June 15, 2019

Understanding Android Application Basics
Understanding Android Application Basics certificate

School: PluralSight

Description:

Start learning the skills necessary to become a successful Android developer by developing your understanding of Android application development and the creation of interactive user experiences with Android Activities.

Start Date: May 8, 2019

End Date: May 26, 2019

JavaScript Fundamentals
JavaScript Fundamentals certificate

School: PluralSight

Description:

Learn everything you need to know to produce production quality web applications and web page features with this foundational course on JavaScript.

Start Date: Feb. 5, 2019

End Date: Feb. 7, 2019

JavaScript: Getting Started
JavaScript: Getting Started certificate

School: PluralSight

Description:

JavaScript is the popular programming language which powers web pages and web applications. If you are new to programming or just new to the language, this course will get you started coding in JavaScript.

Start Date: Dec. 12, 2018

End Date: Dec. 14, 2018

HTML, CSS, and JavaScript: The Big Picture
HTML, CSS, and JavaScript: The Big Picture certificate

School: PluralSight

Description:

The course is about what HTML, CSS, and JavaScript are and how they interact to bring content to your browser.

Start Date: Dec. 10, 2018

End Date: Dec. 12, 2018

Google Africa Scholarship Mobile Web Specialist Course
Google Africa Scholarship Mobile Web Specialist Course certificate

School: Udacity

Description:

Covers the basics of web development.

Start Date: May 7, 2018

End Date: Aug. 16, 2018

Product Design Course

School: Udacity

Description:

Process of working on releasing a viable software product cycle.

Start Date: Feb. 12, 2018

End Date: March 21, 2018

MS Bots
MS Bots certificate

School: SitePoint

Description:

Using Microsoft Bot framework Azure to design automated tasks including a simple chatbot.

Start Date: Feb. 3, 2018

End Date: Feb. 17, 2018

Introduction to Machine Learning

School: Udacity

Description:

This covers some core concepts of Machine Learning and how to use some open source packages to make predicting models.

Other Online Machine Learning related Courses taken thereafter

● Udacity: Statistics

● MIT 6.S094 OpenCourseWare: Deep Learning for Self Driving Cars

● Udacity: Introduction to Computer Vision

● MIT 6.858 OpenCourseware: Computer Systems Security

Start Date: Nov. 9, 2017

End Date: Feb. 14, 2018

Introduction to Computer Science: Building a Search Engine
Introduction to Computer Science: Building a Search Engine certificate

School: Udacity

Description:

You get to build a mock search engine getting a good idea on how search engines are built, how to build a site including styling the site's pages.

Start Date: Jan. 16, 2012

End Date: April 6, 2012

Diploma in Information Technology

School: Kenyatta University

Not Completed. Reasons: Found that learning while doing projects proved to be more realistic than what the course offered, still plan to switch to Computer Science.

Description:

The course was intended to equip the student with the skills for becoming an I.T. specialist.

Start Date: July 12, 2011

End Date: July 12, 2012