I'm Sunil Shenoy: a programmer, UI designer and a movie buff. I currently live in Mumbai,India.

Namaste. Be Good.

Code Snippets


DigitalOcean Affiliate Banner


I recently took an English test and was pleasantly surprised with my total score of the test.


Of the various section, they scored me for I scored the least in grammar.

I have had this conversation with a few close friends. Everyone who has read this blog has told me that there are a lot of grammar mistakes in all my blog posts.

I came across Grammarly last week and was pleasantly surprised with how well they have integrated the software with browsers and Mac OS.

Yesterday I upgraded from free subscription to premium. I never thought I would end up paying for a software which helps me improve my grammar skills, but this has been an area I want to upgrade.


Change is the only constant

I have read this quote a lot of times over the last few years.

It is so important to come to terms with change being a constant in your life. Coming to terms with this fact has helped me remain confident with the ever-changing life situation.

Wanting to hold on to the best things from past, experience/people/ way life was, is something we all want to do. Why does something/someone change when you don't want it to? After all, you did not change(or you think you did not change), so why did the person/situation on the other end?

I have been wanting to write about this since over a month now, after having had this conversation with a close friend.


React Native

At the beginning of this year when I had to choose a tool to develop cross-platform mobile apps, React native was my choice.

Most cross-platform tools available right now work as a wrapper around the WebView component available on iOS and Android. Having created couple of apps in Ionic before, when I had to make a choice, I wanted to choose a tool which complied to the native language.

Between Titanium and React Native, I chose React Native.

Having worked with React Native the last five months, my biggest complaint has to be something Facebook has been known to do. Move fast and break things.

React native has been improving quite fast. The plugin developers, on the other hand, are not able to keep the same pace. Most plugins developed don't work on the latest version of React native.

I spent the last few weeks wanting to add certain features to the app I am working on. Having found the plugin online, when I tried to integrate the plugin, turned out the author has not worked on the plugin since 0.40.

Downgrading to 0.40 broke a few other components which had upgraded to use apis in the recent version. 🙁

After this experience, I am a bit hesitant to recommend react native to anyone. If you are a small team, I would not recommend using Ionic or Xamarin until React native reaches version 1.0.


Macbook Pro

I finally bought the new MacBook Pro!

After apple's update to Macbook last year, I have wanted to upgrade from my MacBook Air to Pro.

This update from Apple met with a lot of criticism by fans and reviewers. Only a few had good things to say about the laptop. A few even exchanged this model for an older model. Marco Arment went back to using 2015 MacBook Pro.

So why buy this model? I needed an upgrade from my MacBook Air. Having switched to app development, Air has not been able to keep up with the demands of Xcode and Android studio. Apps took as long as 25 mins to compile.

I am yet to open the laptop and give it a try. Will write about my experience soon.


Firefox Quantum

I have been a user of Opera browser since 4 years now. After having tried Safari, Firefox and Chrome, Opera was the browser which worked well, consumed less memory on my machine and looked really good. Their video pop out utility built right into the browser is one of my favourite features.

Mozilla recently announced the public release of their latest version of Firefox. If you are yet to give it a try, please do. It is so much better than before.

Software rewrites are hard. There are so many things you could mess up when, but that does not seem to be the case here. Quantum looks really good, is really fast and consumes less memory on my machine than all the other browsers. Also, the new developer tools are super helpful.

Congrats to everyone who worked on this release 🎉

The New Firefox Is Here! | The Firefox Frontier


Better time estimates

I have built software for a number of startups in the last 8 years. One thing that has been constant is how difficult it is to come up with time estimate for how long a feature will take to build.

Its important to estimate though, even after being wrong all this time. You need a milestone date for when you aim to complete a feature and each time you go through this exercise you get better.


Before you start working on a feature

According to software development lifecycle these are the different phases involved when creating software.

With an ever evolving software product you tend to skip some of these steps after launching version 1. That feature update / new feature, let's jump right into development. Why spend time going through the entire process again? After all this is only a small update.

I was reminded this week on why skipping the lifecycle steps is not a good idea.

Jumping right into a new feature without spending time thinking about the feature is never a good idea. You need to answer a few questions before you start working on the update.

Which parts of existing software does the feature affect? Does this affect the caching logic in place? What about search index? How does we introduce this feature in UI?

We recently spent a month working on a feature update, which was not well thought of 🤦 Having to rewrite it now is going to be expensive and set the launch date back by a week.


Optimise for user experience

The new JS framework, the new app development framework, that new CSS framework, there are so many things to learn when you write software for a living. Its easy to spend most of your time learning new tools.

With so much focus around new software tools, I wish there was also more focus around optimising the end user experience. Does adding the new JS framework increase the page load time? Do you need 4 different fonts on that single page? Could those 10 images be pre optimised before being displayed to the user?

These questions are almost always an after thought. I wish this wasn’t the case.


It just works

Apple made these words popular. Every time they spoke about their hardware product Mac, it just works were words they kept repeating. Focusing on making a product which just works is so very important.

It feels good when you are using a product which just works. You feel in control and overall happy when you get the software / hardware to do what you want to do.

It’s easier to down play the importance of well written software or even hardware products. Why don’t you just create something, put it out there and see how people react to it being an advice we have heard far too many times. But I hope you are not giving this advice a lot of importance. Yes, it is important to launch, but it is equally important to make sure you think through the whole user flow before releasing it.

When the user feels less in control, they leave. Only a few users will take the time to send you feedback.


Whats your tech stack?

I am obsessed with trying to find out the tech stack behind popular web services. What tools do tech companies uses to run their startup?

Stackshare.io has been my goto place to peek behind the curtain of popular tech startups.

Its easy to overthink your own tech stack, when planning for the next web project. Should you choose AWS or Google Cloud? Redis or Memcached? Logentries or LogDNA? PHP or Ruby? There are so many options to choose from and its easy to spend a lot of time reading / comparing all the options.

Its equally important to commit to one and start. The stack would matter much if you never start and learn how the particular tool you chose performs. Outgrowing the tool and moving on is a decision to be made later.

PHP, MySQL on Amazon RDS, Heroku, LogDNA for logging and Redislabs are the tools I am starting with.