Deep learning has seen tremendous progress over the past few years. This is largely due to the emergence of deep learning frameworks such as PyTorch and TensorFlow, which have greatly simplified even the most sophisticated research.

With smartphones having become the devices we use the most, the next wave of innovation is going to center on how we can leverage these rapid advances in deep learning to enhance our smartphone experiences. …

Microservices and Monoliths: Credits: John Olafenwa

Introduction to Microservices

Web applications are often built as a single large code base often written in a single programming language. This so-called “Monolithic” applications are often organized into several modules and classes that performs different functions. However, they are still one single large code base running on the same software stack. …

Image source:

Docker and a lot of tools in the cloud native world are aimed primarily at highly distributed stateless applications. Stateless apps are easier to manage at scale and the general approach to building modern applications that needs to persist data is to have the data storage service such as database servers managed and hosted separately from the application. This decoupling allows us to manage deployments easily and the app is often connected to external storage services via service URIs.

However, for practical reasons, sometimes we need to store data permanently in docker containers. …

In part 1 of this series, we introduced the concept of containerizing apps with docker with a focus on creating docker images, publishing and running them. In this second part, we shall explore some of the fundamental features of docker containers, including container life cycle, environment variables, and app versioning with tags.

The ultimate goal of this docker series is to give you foundation knowledge in container technologies in preparation for the next series on Kubernetes, the container management platform built for deploying containers at scale in production.

Container Lifecycle

Docker was built to enable us easily package applications as light-weight isolated…

In deploying modern applications and services, developers are often faced with the challenges of building apps that run on a wide range of different hardware and software platforms.

From the edge to the cloud, devices and servers are run by different operating systems including Windows and the wide range of Linux distros. Even on the same OS, applications run on a wide variety of software stacks such as Java, .NET, Go, Ruby, Python etc. Hence, to deploy any application, you need servers that meets the following requirements:

  • Specific OS
  • Specific Runtime Libraries
  • Specific Software Stacks
  • Specific Versions of all of…

Have you ever wondered how big organizations like Microsoft, Google, Amazon, Facebook etc, serve billions of requests daily across a wide range of highly heterogeneous services, without any significant downtime? Everyday, Google servers have to deliver results to over 3.5 billion search requests and Twitter servers deliver over 500 million tweets every day on average (source:

To achieve this, requests are routed and processed across clusters of servers in data centers spread around the globe. …

Almost 70 years ago, Alan Turing proposed the possibility of intelligent machines that can see, think and act for the benefit of humanity.

Today, great innovations from top research institutes and companies including Facebook, Microsoft, Google, Nvidia and many more has led to remarkable breakthroughs in the field of artificial intelligence. Today, we have AI models that can recognize objects with better accuracy than humans. …

Humans are very good at recognizing things and also creating new things. For so long, we have worked on teaching computers to emulate human ability to recognize things but the ability to create new things eluded artificial intelligence systems for long. That was until 2014 when Ian Goodfellow invented Generative Adversarial Networks. In this post, we shall go through a basic overview of Generative Adversarial Networks and we shall use them to generate images of specific digits.

Overview of Generative Adversarial Networks

Imagine you are an artist trying to draw a very realistic picture of Obama that will fool a judge into thinking the picture…

Deep Learning algorithms are excellent at solving very complex problems, including Image Recognition, Object Detection, Language Translation, Speech Recognition, and Synthesis, and include many more applications, such as Generative Models.

However, deep learning is extremely compute intensive—it’s generally only viable through acceleration by powerful general-purpose GPUs, especially from Nvidia. Unfortunately, mobile devices have very limited compute capacity; hence, most architectures that have been very successful on desktop computers and servers cannot be directly deployed to mobile devices.

However, a number of techniques exist for making deep learning models efficient enough for mobile devices. Chief of these is “Depthwise Convolutions.”


We are privileged to live in an age where the data, compute and deep learning algorithms that are absolutely necessary to make AI a reality have all become abundant. The evolution of deep learning for AI has led to incredible advances in nearly all fields of technology and holds incredible promises for the future. Better healthcare, driverless cars, intelligent flying cars, improved access to financial resources and more informed allocation of state resources are just a few of what can be in the next decade.

A Self-Driving Car by Waymo(A Subsidiary of Google). Source: Wikipedia

But just like the early days of computer technology, the use of state-of-the-art AI is…

John Olafenwa

Software Engineer at Microsoft | Creator of TorchFusion (

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store