When I was a kid, I was always obsessed with the computer game called “Dangerous Dave”. It was a magical experience and I really loved the game, but hardly ever thought of how it was working!
Being from the 90s, I have seen the evolution of computers and the internet. It always felt fascinating and exciting to see new things coming home every day. Eventually, I started to get curious about how these devices were functioning. The more I learned about them and their evolution, the more it fascinated me, the more I fell in love with computers. The fascination for computers and curiosity to learn, put me on the path to become a software developer.
As a software developer, I can build creative solutions to solve complex technical problems while also adding value for societal good. All I need is a well-configured laptop with proper internet to work from anywhere.
I'm a big fan of Linux and open-source software. I have a desktop running Ubuntu with two big monitors - to hide myself from others (just kidding, it's good to keep distractions away). Along with the desktop setup, I have a 15-inch MacBook Pro with a troubled keypad (have to get it fixed!).
Here are some tools which I love to have in my dev environment.
- TMUX, iTerm2 for multiple terminals so that I can work on different things on one single screen instead of switching between terminal tabs.
I use Visual Studio Code and Vim (yes, sorry emacs fans :) I love dark colored themes and frequently change themes to keep it different and exciting.
I love to play around with my git configurations. My git logs look beautiful because of this - github.com/joelnet/development-environment#pretty-format-logs
I sometimes like to get my hands dirty by trying some stuff from the following sites/repos.
github.com/AGhost-7/docker-devFor playing with docker and building simple dev env packages!
dotfiles.github.io - A vast collection of dotfiles.
Apart from my developer setup, I have some really nice spots in Salesforce, where people frequently find me sitting and working.
-I have dabbled from front-end development to writing software for managing Infrastructure at cloud scale. So the stack varies based on the nature of work.
-Sometimes I love to have a python backend like Django or Flask.
-Docker and Kubernetes have made development so much easier for me, as I can run the exact same stack on my laptop as in production.
Kubernetes - github.com/kubernetes
ReactJS - github.com/reactjs
Docker - github.com/docker
Bazel - github.com/bazelbuild/bazel
Kubernetes - The key behind Google’s (and other Internet companies) success is their ability to build and run software at large scale in a fully automated fashion. A lot of the tools they use are open-sourced which resulted in a huge ecosystem of DevOps. Kubernetes is one such open-source system for automating deployment, scaling, and management of containerized applications
When it comes to cloud-scale, the delivery pipeline (often neglected) can be as much critical in the success of the company as the actual software. These are exciting times for the whole industry as the way software is managed is changing at a rapid pace.
There is no single workflow that works perfectly, it completely depends on the team I am working with, their practices and the state of the project.
When starting a project from scratch, my ideal workflow involves spending time to design the architecture for a given problem. This includes envisioning how the users using the specific software or tool interact with it and then design accordingly. I start with trying to figure out the design patterns necessary and trying to find out open-source libraries that could be useful with slight modifications or directly.
I then break the work into smaller pieces that I can independently implement and test the modules that way the code remains slightly more maintainable. I then follow the first module’s commit up with setting up the necessary CI pipelines and CD as necessary so that it becomes a part of the workflow.
However, in projects that I work on with teams, we generally take help from a program manager to help decide the sprint and the tasks to be solved in the given sprint. For each of the tasks/bugs/features I fix or implement, we test it across the CI system and then peer-review the code before merging it into the master branch and push them out as incremental releases at the end of each sprint.
Public Clouds and Software-defined datacenter, has created a huge ecosystem of tools to build and manage software life cycle - from development to production. Currently, I am learning systems from this ecosystem like - Kubernetes, Containerization, Kapitan, etc.
I am also learning the philosophy and principles behind these tools as they have disrupted the existing practices.
I started working on a conversational agent called Elsa, which aims at improving women’s mental health. This project is very close to my heart where I aim to give mental health therapy for free (Cognitive Behavioural Therapy) .
Mental health among women is crucial, yet often ignored and their symptoms are highly misunderstood. There are various treatments available but are generally very expensive and cannot be afforded by everyone. On the contrary, the number of people actually taking professional help for depression and other mental health problems is extremely low in both developed and developing countries. To know more about Elsa do watch my talk on it which I presented at React Conf 2018 - youtube.com/watch?v=eSwm1WZk7uA
Loklak is another project which is very dear to me because it is the first open-source project to which I contributed. Loklak is a Distributed Open Source twitter and social media message search server that anonymously collects, shares, dumps and indexes data. The community is very welcoming and encouraging, I was definitely proud of the contributions I made to the code base with all the encouragement I received.
Link to codebase - github.com/loklak
Building and running large scale infrastructure in an extremely dynamic industry.
I would give a huge shout out to the entire Open Source community. The Open Source community gave me an opportunity to learn, grow and prove myself. Not only that they offer access to the best tools, emerging technologies, incredible mentors without any prejudice and barriers.