My learnings on asynchronously compressing and uploading videos in react native

Image for post
Image for post

One of the startups in my portfolio mbele.io utilizes video compression and upload quite extensively. However the process of building this into react native took some trial and error. This blog is meant to describe the process undertaken to implement this functionality and highlights the key ideas without too much complexity.

The main react-native packages used are:

In order to keep this blog as brief as necessary…


Django, React, and Kubernetes in GKE

Image for post
Image for post
Image source: Author

This article focuses on a strategy to deploy static assets, specifically assets generated with the create-react-app toolchain. The assets are served using Django deployed in a Kubernetes cluster on the Google cloud GKE platform.

The technologies used include Django, React, Docker, gcloud and its related CLIs, e.g. gsutil. It explores an example of a Docker build pipeline that generates the image and pushes the static assets to a gcloud bucket. The article borrows heavily from Google’s own guide titled “Running Django on Google Kubernetes Engine(referenced as Django GKE for the rest of the article).

It was found that the…


Instagram Live vs YouTube Live vs Zoom

Image for post
Image for post

With the temporary closure of studios and fitness centres, many artists and instructors are starting to turn to the virtual space in order to connect more with their audience as well as generate income for their businesses.

This blog provides a simple guide about going virtual and is written in collaboration with Esie Mensah, who is a dancer, choreographer, and movement director based in Toronto.

There are many options when considering virtual classes, however, they can be grouped into 2 main categories, pre-recorded classes and live classes. This blog will focus on live virtual classes and covers the 3 major…


What to watch out for and why

With the rise of the Corona virus pandemic, there seems to be scammers who are taking advantage of this, in an attempt to defraud innocent people. This is made effective by the fear generated and the brains primal instinct to survive. It’s so convincing that with my many years of software development experience, I was almost convinced to give my banking details (primal instincts kicking in).

The following are the screenshots from the sequence of events that seem to indicate a scam. (For context I am in Toronto, Canada, therefore it might look different in your city.)

1) The Text Message

Image for post
Image for post

I got the…


Making it easier for humans to sift through the kinetics dataset

Image for post
Image for post

The Kinetics dataset explorer is a website containing the kinetics videos converted to GIF format. Making it easier for humans to sift through a large amount of temporal data quickly. The generated GIFs are from frames sampled at a lower frequency than the original video i.e. 4 fps vs 25 fps and the resulting frame rate is adjusted to 16 fps. This means a 10 second video can be viewed in about 2.5 seconds. The width and height are proportionally scaled down as well to reduce the file size and allow for faster load times.

The explorer can be found…


Learnings, challenges and insights about the download procedure

Image for post
Image for post

If you are interested in performing deep learning for human activity or action recognition, you are bound to come across the Kinetics dataset released by deep mind. There are 3 main versions of the dataset; Kinetics 400, Kinetics 600 and the Kinetics 700 version. Kinetics 700 is the latest version at the time of the writing of this blog.

The Kinetics 700 dataset is described on the deep mind website as:

A large-scale, high-quality dataset of URL links to approximately 650,000 video clips that covers 700 human action classes, including human-object interactions such as playing instruments, as well as human-human…


A guide into creating optical flow files which are to be used in video classification algorithms

Image for post
Image for post

This blog was originally published in blog.dancelogue.com. In a previous post, an introduction to optical flow was conducted, as well an overview of it’s architecture based on the FlowNet 2.o paper. This blog will focus in going deeper into optical flow, which will be done by generating optical flow files both from the standard Sintel data and a custom dance video. It will be conducted using a fork of the NVIDIA flownet2-pytorch code base which can be found in the Dancelogue linked repo.

The goal of this blog is to:

  • Get the flownet2-pytorch codebase up and running.
  • Download the relevant…


Image for post
Image for post

Dancelogue (https://dancelogue.com/) is an AI first company whose main objective is to understand and classify human movement in dance. To this end, being able to understand video structure is of vital importance.

The main thing that separates videos from images is that videos have a temporal structure in addition to the spatial structure found in images. Videos also do have other modalities such as sound but this ignored for now. As a video is just a collection of images operating in a specific temporal resolution i.e. frames per second. This means that information in a video is encoded not only…


Image for post
Image for post

One of the limitations encountered when recognizing and classifying human activities in video is the limited number of training samples. Fortunately, there has been an effort to alleviate this issue as organizations have been releasing their annotated data to the public.

A complete dataset dedicated entirely to dance is not the norm, however as dance is a subset of human actions, it is usually contained within the human activity recognition datasets. Unfortunately, the dance examples are a small subset of the provided data thus it’s necessary to aggregate the examples across the individual sources. …


There are quite a few tutorials which focus on how to transfer objects across s3 buckets, but they largely relying on the terminal by making use of the aws cli. However, I had a requirement where I had to automate the transfer of a fairly large object from one bucket to another in a separate account, and this action was to occur daily. An option to do this was to set up a server and create a cron job to do the transfer, however the issue with this is due to the periodicity of the task, the server will spend…

Mark Gituma

Founder of dancelogue.com, merging AI and dance, as well as mbele.io, Feedback on demand, https://www.linkedin.com/in/markgituma/

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