Taking the rubber duck approach to building products

It the was the millenium when Hari was first introduced to the world of programming. Now almost 20 years later he is continuing to work to pursue his passion. With a strong belief that code can shape and change the world around you and that you are only limited by your own imagination.

...
Hari Krishna
Sydney, Australia

Who are you? Where are you from and what is your backstory?

Hi, I'm Hari Krishna, a computer science graduate from India, living in Sydney. I’m currently a Digital Nomad traveling the world. I have been a developer, an engineering manager, a product manager, an entrepreneur and a growth hacker as well as a designer for the last 9 years.

In 2009, I founded DWorkS shortly after my graduation and have been working on open source libraries and micro startups ever since. Two years back I decided to quit my job and become a Digital Nomad.

I built AnExplorer, a file manager which has more than 150K downloads. I’m the author of a popular networking library for Android developers called VolleyPlus. In 2017, I made ACrypto, a cryptocurrency app which enables users to keep track of all their cryptocurrencies which has  150K downloads to date.

My most recent micro-startup is VisaList which launched in December 2018. After it’s launch, VisaList was quickly picked up by multiple news publications and went viral.

 

What made you get into programming?

This might sound strange but I was introduced to programming at the age of 14 when I was in school and this was in 2000. There was a computer class as part of our extracurricular activities. It was the basic usage of computer and a very basic command prompt. I liked it but it didn't last long.

 

I finished high school and had totally forgotten about it. I was ready for college and one day I heard about a coaching institute in my hometown which was teaching ‘C’ language. I went there and saw brand new Pentium desktops with windows ‘95 all around the place. Everything felt so surreal and unlike anything, I had ever seen. I immediately enrolled and learned the basics of C and programming in the first two months.  I decided then that I wanted to work with computers and my passion for programming grew slowly during my time at college. I learned C, C++, Java, and PHP in college. Then started with Android at my first job. After a while, I moved to a fancy Consulting company where I was writing code in X++. After a few years, I joined a startup and put my android skills to test. After I decided to be a digital nomad, I started learning new languages like Swift, NodeJS, VueJS, Golang as required by the things I wanted to build.

 

What made you create VisaList?

After becoming a digital nomad and starting to travel the world, I soon realised that I needed a Visa to get into most countries that I intended on visiting. Although a few have Visa on Arrival (VOA), most require that you go through their embassy in your home country (in my case, India). I wanted to find the countries I could go to without having to wait three weeks to get a visa, so I started to do some research. I had to wade through a few blogs and websites, but I eventually found a list with the information I need, and off I went! After a few months, I wanted to travel to another country, but I’d lost the original list I’d found so I had to start my research all over again. Luckily, I found a new site that listed even more countries offering VOA. Along the same vein, a friend of mine told me that when he was researching visa information for Vietnam, he found almost 10 websites with a .gov address, which was really confusing. In my own research, I found that many blogs don’t have links to official embassy websites, which is ultimately unhelpful.

Frustrated, I searched for a product that could help, but everything I came across just had a table with the very basic visa requirements and nothing more. Even though I had no formal experience in travel and visa related issues, I realised that all of my time researching and traveling had put me in a position to address the need. I decided to aggregate all of the information I could find, organize it, and present it in a useful, digestible way. Thus, VisaList was born!

I built an MVP of the site and shared it with a few friends—and they loved it. Their positive responses gave me the hope and motivation I needed to move forward, so I started building a full-fledged site. Within two months it was ready. The public launch was a huge success and it’s been growing strong ever since.

 

What does your process for building apps look like?

My process for building my next app (web/mobile) starts when I’m working on my current app. I purposely distract myself once in a while and start thinking about what I can build next and typically try to shortlist two or three ideas. This way I don't get burnt out while continuously working. This typically goes on for one-two months and at the end, I zero in on one idea.

 

Once I have decided what to build, I start pitching the idea to my brother and my close friends. This is similar to the rubber duck concept in programming, but instead of code, it's an idea and while I’m pitching most of the time, I realise shortcomings and redefine my idea on the go. Based on these pitches, it would be obvious that if the idea is going to work or not. If I can't convince a couple of people then I don't have a chance of convincing bigger crowd. Most of the time, the ideas pass with flying colors. When it doesn't, I pick my runner up from my shortlist and repeat the process.

 

What does your process for learning to code look like?

Once I make a decision on what I am going to build, I start to think of the technology I’m going to use. For example with VisaList, I didn’t know the best solution to build such a complex web app - so I started researching relevant technologies.

 

A good friend suggested I use VueJs, which I fell in love with almost immediately. It was really easy to learn and build apps using VueJS, and I also found a framework on top of it called NuxtJS, which had so many things right out of the box and it saved me a ton of time. Instead of learning ABC’s of the languages, I started by checking some open source examples. Then I started watching basic example tutorials on youtube. After a week, I could easily build a basic website.

 

Once I was able to build a basic version of a web app, I then moved onto  the features. For every feature, I wanted to build I would try to find a relevant example or open source project. I would try to find if there are any libraries doing what I wanted. I would follow these examples and try to build that one particular feature. After its was completed, I would repeat the process for the next feature.  By doing it this way I was able to learn to code the actual feature I wanted to build rather than some random example.

 

Do you face any particular challenges when building over a period of time?

One of the biggest challenges I have faced creatively is being motivated. Once in a while, you hit a roadblock. You can have many ideas but if you lack motivation you can never finish anything. I overcame this by simply not working all the time. My usual pattern is building for two months and taking a break for two months. I call it the build-break style.

 

This means that I don’t get burnt out and can enjoy my break and find new inspiration.

 

Are you currently learning anything new?

I’m currently working on improving my SEO knowledge. I’m learning a lot of new things every day as SEO is like an ocean and it doesn't seem to end.

 

I’m also planning on mastering GoLang as my entire VisaList backend is on that for which I’m Gin and Gorm for building the API.

 

Docker and containerisation is also something that I’m currently learning which makes deploying a current project anywhere with just a single line of code.

 

Advice for those learning to code?

I believe coding is a form of art. Programming languages have the ability to shape and change the world around you. The possibilities are only limited by our own imagination.

 

If you are new then all you have to do is master one language first to the core with basics concepts of programming. It could be an older language like Java or a modern one like Swift. Once you have mastered a single language then you can easily grasp other languages easily. Also instead of learning in a traditional manner, try to find something that you want to solve/build and do that while learning.

 

 

 

But once you are already a coder then you want to increase your technical skills and for that, a tough choice is to decide if you should learn a new programming language and if yes then which one?

 

Many people tell you to use ReactJS or some other tech stacks. Don't listen to them. Instead, you need to decide what you want to build and then find the tools and technologies that can bring your particular idea to life the fastest and with the least amount of effort.

 

What’s your tech stack?

  • Android - I love it building apps for android like AnExplorer, ACrypto, ALancher

  • Swift -  building iOS app ACrypto

  • NodeJS - For building API and for building cloud functions for ACrypto

  • VueJS - For building DWorkS website. Very easy to learn and use.

  • NuxtJS - For building web apps VisaList

  • GoLang -  Build highly scalable backend system for VisaList

  • MySQL - For storing relational data of VisaList

  • Firebase - for realtime database, API using cloud functions, Hosting for static sites, Auth for login in my apps. Crash reporting, perf for mobile apps

  • Sentry - For error reporting for VisaList

  • Sketch App - for designing artwork, logos and mock screens

  • Cloudflare - for CDN for VisaList

 

What have been influential books, resources and links that have helped you?

Product - MAKE: Bootstrapper’s Handbook by Pieter Levels. It’s an amazing book and I have to give it credit for my successful product launch.

 

Improve SEO - I suggest SEO tester online, KW Finder, Varvy

 

Web performance - Webpage Test

 

Where can people learn more about you and your work?

I’m usually active on Twitter @1HaKr. Over the years I have built many products such as

 

And several more at DWorkS. Right now, I’m traveling and coding my way through life. I love it and it's super fun but it also means that if I can't make any money with it then I have to take a desk job and these products will cease to exist.

 

So if you like what I build, you can support my products by buying me a coffee 😉