Portfolio

Here are a few examples of the kind of jobs I’ve done as a freelancer.


hosts3d performance enhancement (C++)

hosts3d is a C++ opensource program that sniffs network traffic and generates a real-time 3D visualization of the hosts in your network, and the data flowing between them.

Here is a video that shows hosts3d in operation.

I am not the author of hosts3d. I was hired to fix performance issues in the program that showed when the number of hosts became large in number.

Profiling revealed that the performance bottleneck was the use of a single linked-list for storage & lookup of all the hosts. I replaced the linked-list with a hash table which dramatically improved the performance – here’s a detailed write-up, and here are videos that show the performance before and after my fix.

I wrote the scapy-pcap program as a harness to test hosts3d. This is an interesting program in its own right. It generates a PCAP that contains several TCP streams at various user-specified bit-rates, beginning and ending at different times.


OpenStack Ansible (Ansible/Python)

This project was for a Bangalore-based IoT startup. The requirement was to remotely bring up an OpenStack installation on a single Dell PowerEdge R430 rack server, with minimal operator interaction (near zero-touch). All that the operator had to do was run a Docker image and, about 45 minutes later, they would have a fully functional OpenStack installation, with a graphical interface (Horizon) that would let them create VMs with attached disks and networks.

The OpenStack Controller runs in a VM. The host itself is the Compute node. The docker image I wrote contains a set of Ansible playbooks. The Ansible playbooks, together containing about 300 tasks, create and configure the Controller VM, then deploy and configure the OpenStack components, and then populate the installation with some reasonable defaults (VM flavours, images, user names & credentials, networks).


Ansible: Deploy and configure VyOS router in ESXi

Project on freelancer.com

This was a small 2-day project for a client who initially wanted to use plain SSH to stage, deploy and configure a bunch of VyOS routers in ESXi. I instead suggested Ansible, and … well, another day, another happy client.


Google Vision API JSON processing (Python)

Project on freelancer.com

The Google Vision API allows you to submit an image file, and returns a JSON that reports various characteristics about the submitted image. For instance, the API reports the likelihood of a particular image being mature content, photographs of people’s faces can be processed to recognize emotion (sorrow, anger etc.). Text areas in the image undergo OCR processing, and the returned JSON includes the recognized text.

The application in this particular case was to parse the JSON returned by the Google Vision API for Driving Licences issued by various Indian states, and extract specific fields accompanied by the Google “confidence” value for that field. For example, a clear scan would result in the OCR text being returned as “NEW DELHI” with a confidence value of 0.97, whereas a smudged or blurry scan would say something like “EW DFLH1” with a confidence of 0.7.

The logic involved locating text rectangle areas in the image corresponding to various text words, and then locating the surrounding text by walking from rectangle to rectangle. Since scans aren’t always precisely parallel to the X- and Y-axes, the rectangle walking logic employs some elementary concepts from high-school geometry.


EVE-NG with Arista vEOS (Ansible)

Project on freelancer.com

I wanted to demonstrate to a prospective customer that I was capable of setting up EVE-NG, deploy an Arista vEOS router in it, and then write a simple Ansible playbook that runs on a different host and connects to the Arista.

eve-ng_arista_ansible


Domain name “drop catcher” for Nominet (C/Python)

(Client information confidential)

What started off as a straightforward C implementation of the Nominet DAC+EPP protocol using IPv4 and IPv6 plain-text and TLS sockets for catching dropped domain names has transformed into a beast. We are grabbing packet captures under various setups, analyzing the PCAPs with custom Python scripts, then running the data through various custom-written analysis and visualization tools, then going back to tweak the C catcher. Fascinating? Yes. Would I do it again? Never 🙂


Google Analytics API in Perl (Perl)

Project on freelancer.com

Perl. Who uses Perl these days, right? Even the Google Analytics API documentation does not provide sample code for Perl. Well as it turns out, people are willing to pay money for Perl programs, so one can safely conclude that rumours of Perl’s demise are greatly exaggerated.

Owing to the lack of official Google Perl libraries for Analytics, I had to write the code for obtaining the OAuth token “by hand”, i.e. by assembling and posting a JSON Web Token.