About

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

Namaste. Be Good.

Projects
/now
Code Snippets
Social
Travel

ADVERTISEMENT

DigitalOcean Affiliate Banner

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.

::

UX Designer

What does a UX designer do? I have been thinking about this since yesterday.

Whether you land a job at a startup or a larger corporation, your role as UX designer will be directly involved in the process to make a product useful, usable and delightful for that company’s intended target user group.

A UX Designer should be concerned with the whole design process, rather than just one part.

The Differing Roles of the UX Designer | UX Magazine

User research and usability testing have been topics of interest to me since more than 7 years. Would I consider myself a UX designer? As of now, no. You become good at doing something when you are put into practise what you have learnt.

I should start dedicating more time to writing, reading and improving user experience of softwares that I work on.

::

Prototype

I have never had this be part of my software development approach before. Prototyping the entire app.

Last month I got to see an app which was full prototyped. The sign up flow, the login screen, the dashboard along with every app interaction. An excellent change to software development cycle.

My approach to software development was Idea > Research > Design > Frontend development > API’s integration with mock response > Test(and fix issues) > Tweak UI / Design / UX > API development > Test(and fix issues) > Release.

After having tried the prototype, I am now going to update the approach to be Idea > Research > Design > Prototype > Tweak UI / Design / UX > Frontend Development > API development > Test(and fix issues) > Release.

Prototyping the app helps you think about every user interaction even before you start building the app. Using the prototype for a couple of days would help you get to the missing features earlier in the software development cycle. It’s also makes it easier / faster to share the final vision of the app with the client / team and get their feedback.

::

Right amount of time to create an app

How long should you spend on the initial version of the app? In my opinion, 4 months is the right amount of time. This considering that you are building an iOS / Android app on a cross platform tool like React Native for which the API also needs to developed.

Anything less than 4 months and you start to cut corner and rush features. 4 months should give you enough time to build the list of features and ensure that it works on both platforms.

Any longer than 4 months and you start to feel like you have been working on the project for too long without getting any feedback from the user. It’s important to get feedback as soon as possible.

::

React Native Packages

Some of the packages I have found to be really helpful in apps I have been working on.

Vector Icons
Customizable Icons for React Native with support for NavBar/TabBar/ToolbarAndroid, image source and full styling.

Bugsnag
My favourite tool for recording bugs. Error monitoring and reporting for native exceptions and JS errors in React Native apps

DatePicker

Image Progress
Progress indicator for networked images in React Native

htmlview
A React Native component which renders HTML content as native views

Snackbar
Material-design "Snackbar" component for Android and iOS.

Storage
Local storage wrapper for both react-native and browser. Support size controlling, auto expiring, remote data auto syncing and getting batch data in one query.

Swipeout

React Navigation
Navigation for React Native done right.

::