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

Dealing with negative feedback

Its difficult not be angry about negative feedback sent about software that you helped build.

I read through the long list of feedback the customer had shared with us and how line by line she went over parts of the software that she did not like. I cringed after reading every line.

I did agree with most of her feedback. She wanted the software to do the best it could to help her with the task at hand, and in most cases, we were not doing a good job.

How could I have not thought about the page design the way she did? Why did I not add the link there or catch that exception she spoke about? I spent the next hour asking myself these questions and being disappointed about how we went about creating the software.

Software development is hard. It’s even more difficult when you have a small team, with everyone wearing multiple hats. I handle design, frontend/backend development, manage servers, answer supports tickets every day, and I love it. Being involved in every part of the development/support process has been a great learning experience, and I would not have it any other way.

Is this why the software was not doing it’s best? Was everyone in team wearing multiple hats and not giving enough thought to each screen and each feature we work? I took a break from blaming myself and went out for lunch.

Software is also ever evolving. If you think you did your best when coming up with the feature and the design, that's what was in your control then. Not everyone looks at design and feature use case the same way.

Acting on feedback is essential. Read/listen to every feedback someone sends in about your software. Share it with the team. Go back to the drawing board and look at how you can improve the page/feature.


The best way to learn something

Side projects.

It’s important to have side projects, especially if you are trying to learn that new programming language / framework / software that you just discovered.

Reading about it is step one. But the only way to understand and get better at it is to use it in your current project or in a new side project. I was reminded of this today.



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.