Deepak Karki
“We have to dare to be ourselves, however frightening or strange that self may prove to be.” ― May Sarton
I'm a software developer from Bangalore, currently working with Nutanix India on some cutting edge hyper converged technology. My day to day tasks involve coding python frameworks and writing web services that scale. I completed my bachelors in computer science and engineering from PES University in 2015. Being a FOSS enthusiast, I love attending meetups and conferences that deal with opensource technologies. I'm particularly passionate about three things -
Learning and Education
As an autodidact myself, I like to create content and tools that help people learn. Some of the problems that interest me in this domain are - How do we make learning more inclusive? How do we make content creation and consumption seamless? What gamified techniques can we put in place to make people genuinely curious about new topics?
Human Computer Interfaces
As powerful as technology is, it is but a means to an end. Even ground-breaking technology is useless unless it is packaged in a manner in which it's useful to people. My interests lie in developing interfaces that let everyday users become creators. I've been inspired by projects such as Eve and Little bits, and tried my hand at something similar for IoT.
Computer Engineering & Research
A maker at heart, I love building things. I like intellectual challenges and figuring out how stuff work. Working with hardware and software checks all the boxes for me. Given the ubiquity of technology, being proficient with computer systems gives me the power to quickly prototype and scale my ideas irrespective of the domain I choose to venture into.
I enjoy working in collaborative spaces where I can put all my interests to work in tandem - envisioning and building products to help people learn more about technology and learn more through technology.
Work Experience
"Information is not knowledge. The only source of knowledge is experience.” ― Albert Einstein
Jun 2015 - current
Jun 2015 - current
MTS, Nutanix
Nutanix develops hyperconverged infrastructure for enterprises. I work as a part of the automation team, building framework and tools to accelerate development. Few projects I worked on here are nested cluster deployment, framework to enable test automation, and currently on a docker based test executor.
Jan 2015 - May 2015
Jan 2015 - May 2015
Intern, PayPal
I worked as an intern on a data analytics and visualization platform involving Druid, Node.js, AngularJS and D3.js.
May 2014 - Aug 2014
May 2014 - Aug 2014
Intern, Google Summer of Code
I interned for BeagleBoard during Google Summer of Code 2014. I was responsible for developing a scripting interface for the real time co-processor (PRU) on the Beaglebone Black. Work included developing device drivers, interpreters, understanding PRU architecture and coming up with an effective software design. The project was completed successfully and driver patches were added to the vendor kernel.
Aug 2013 - Aug 2015
Aug 2013 - Aug 2015
Head, PES embedded systems lab
During my 3rd year, I lead the Intel funded embedded systems club of our department. Here I built and mentored projects ranging from IoT to gesture controlled 3D printed robotic arms. As the lead, I was also responsible for managing the some of the funds and mentoring juniors.
Aug 2013 - Aug 2014
Aug 2013 - Aug 2014
Student Ambasador, Google
The GSA program is a voluntary program designed to have a liaison between Google and Academia to strengthen the collaboration and evangelize cutting edge technologies. I was first nominated by my university and then selected by Google. As a GSA I ran various contests like "blogathons" and held orientation / mentoring sessions for different coding competitions.
Sept 2012 - Aug 2013
Sept 2012 - Aug 2013
Group lead, Ordell Ugo
Ordell ugo is a virtual company concept which is incubated in PES University. Here I lead a group of five members on a project dealing with Entity Path profiling using Open Street Maps. Work involved XML parsing, routing algorithms and data visualization using mathplotlib.
"Creativity is thinking up new things. Innovation is doing new things." ― Theodore Levitt
Project Zygote
Web, Hardware, HCI, Maker tool
Zygote is a framework for the internet of things, it makes the creation of custom IoT applications as easy as building stuff with Lego. The framework's frontend is integrated with Freeboard for effective data visualization. Read more on Github
Mobile, Hardware, Dev tool
Droidshield enables makers to utilize the sensors and actuators on their android device via a simple API on the hardware platform. Project consisted of developing an android app and hardware side API. Read on Github
PRU Speak
Linux Kernel, Compilers, Dev tool
PRU Speak enables real time I/O access and scripting from a Linux environment on the Beaglebone Black. It leverages the remote processor on the SoC, and gives it a botspeak scripting interface. Read more on Github
Project Flash
Networks, Multiprocessing, Web
Collection of various kinds of HTTP servers (written in python), written to benchmark performance based on architecture of server and nature of requests. Motivation was to figure out how different types of web servers work. Read more on Github
Hardware, Linux kernel, Dev tools
My first significant opensource contribution, I added I2C libraries to PyBBIO - the official Python IO library for the Beaglebone Black. It involved understanding the the code base and designing the API. Commits successfully upstreamed. Read more on Github
Cloud Lab
Cloud infrastructure, Web, Backend
Cloud lab is an online-in browser lab which features a website where students can log in, form groups, take assignments and quizzes, write and compile code in an online IDE, have access to terminal and other course specific features. See Github
IoTA Box
Mobile, Hardware, Maker tool
A toolkit for prototyping of hardware-mobile apps. IoTA box and the Android API enables android developers to create hardware apps without writing hardware specific code! Read more at Github
Animatronic Arm
Hardware, Fabrication, HCI
A Leap motion controlled, 3D printed robotic arm. Mimics user hand motion over the bluetooth network. Python was used for image processing and Arduino for hardware control. See Github
Data parsing, visualization, Dev tool
A custom map rendering application developed for entity path profiling. Matplotlib was used for visualzation, OSM map traces served as data sources (XML). Read more at Github
Compiler, visualization, Dev tool
A python mockup of ANTLR, the LL(1) parser generator. Handles non left recursive, left factored context free grammars. Light, clean and efficient. Read more at Github
Mobile, Web, UX
A holiday recorder android app. Records your memorable moments on your trip and gives you a holiday canvas for you to share with others. The backend was developed using Ruby on Rails.
Embedded Tetris
Hardware, Gaming, Firmware
The classical tetris game developed on the AVR ATmega8 MCu using the Nokia 3310 LCD display. This involved using the SPI protocol to manage the LCD bitmap. Written in C. Read more at Github
Few other projects developed by me
Social blogging application that was built using Spark java and MongoDB
A cross platform note maker app using PhoneGap. Features included notes, todo lists, calendar and alarms. Github
A Multi layered feed propagation neural network in Python. Github
DB scan Algorithm + visualization developed using Python and Matplotlib
Android + Arduino based home automation system.
A Java based desktop photo viewer application. Users can create slide shows and save them for later
"When love and skill work together expect a masterpiece." ― John Ruskin
Programming languages Python, C, Node.js, Java (+ Android development)
Front end development HTML, CSS, Javascript, jQuery, react.js
Backend development Flask, Jinja templating, Apache, MySQL, MongoDB
Core CS Compilers, Networks, OS, Databases, Algorithms
Computer architecture, Machine learning, IoT
Hardware platforms Arduino, Raspberry Pi, Beaglebone Black, ESP12
Dev Tools Git, npm, Make, Ansible, Docker, Kubernetes
More about me
“Don’t be satisfied with stories, how things have gone with others. Unfold your own myth.” ― Rumi
I'm an open source enthusiast and have contributed to a variety of projects. I took part in the Google Summer of Code 2014 and developed PRU Speak, a software that is now distributed with the Beaglebone Black. I have since been a mentor at for GSoC 2015 and 2016. I spoke at FOSS Asia Singapore about open source hardware and related technologies. Find my contributions on Github.
I published my thesis research titled "Zygote - A framework for prototyping Smart Devices" at the 21st International Conference on Advanced Computing and Communications - ADCOM 2015. I have written a guest chapter on real time computing for the Beaglebone Black Cookbook and was the technical reviewer for the same. I have also written a chapter on CPython extensions for the book Intermediate Python
I was one of the few students across the globe to be awarded a scholarship of $16,000 for my undergraduate study by the Institute of International Education. The selection criteria was decided based on scientific temperament, test grades, extra curricular, co curricular activities and leadership qualities. I also received cash awards from my university for all eight semesters on getting first class with distinction.
As much as I love developing, I love teaching and mentoring peers who share my interests and passion. This way I help others while also getting a deeper understanding of concepts and techniques myself. I have mentored teams on different occasions - school students for national science fairs, my university juniors while they were a part of the Embedded systems lab and as a mentor during Google Summer of Code 2015 and 2016.
Talks are a great way to share your knowledge with the community. Few of the talks I've given in the past include a lightning talk about rendering maps with matplotlib at PyCon India 2013, a talk on open source hardware and the beaglebone black at FOSS Asia 2015, presenting Project Zygote at IEEE ADCOM 2015. Other than these I've given a variety of talks centered around hardware prototyping and IoT at local hackerspaces.
The best way to learn is with a diverse and passionate community. For me that happens to be exchanging knowledge at local hackerspaces and taking up courses on popular MOOC platforms. I started my online learning journey with an introductory programming course in python on edx, and have later gone on to take a variety of courses ranging from core CS subjects to topics on product building and entrepreneurship.