I recently returned from my second trip to Singapore. I avoid visiting the same international destination, except for when it’s Bali, Bali could easily be my goto place every year.
I have been thinking about my first visit to Singapore and how it was very different from this visit. Travelling alone vs travelling to the same destination with friends.
My first visit to Singapore was spent mainly in the city centre, walking around various malls and a day spent at Sentosa Island. 3-4 days later I was done exploring most parts of the city as suggested by Google. Sure, I missed a few lanes, but being on a budget, I did not want to see places that were far away from the hotel. I took 0 taxi rides the last time, compared to 2 taxi rides each day, this time around. I also did not stop by at little India and Chinatown.
Travelling with friends this time though I think I covered a lot more places and have a lot more memories compared to my first visit. We spent more time in one place, as we went around the city, yet I managed to visit every destination that was on our list. Hong Kong Soya Sauce Chicken Rice and Noodle - Wikipedia has to be the place we kept going back to till we managed to grab a meal.
Trips with friends are the best kind of trips. Having awesome friends to travel is something I am thankful for 🤗
Wanting to create and maintain an open source project has been on my list for a long time. The plans for the project were always grand. A project like textmate or rails, since I have been following these projects for a long time. But thinking of getting to that scale always stopped me from starting. Strange how that works.
Starting small with how I progress problems has been an exciting change for me.
I have been working on an image resize script and decided to try a serverless approach to create an API which would help with the resize and return the thumbnail URL after the image was resized.
My previous approach to how I accomplished this was to run a server which had ImageMagick installed and use PHP to interact with ImageMagick and perform the resize operation. The previous approach was not without problems. Often user's would upload a specific image which could cause ImageMagick to crash and would fill up the entire disk space with temp images. Pixel flood attack is also an issue I came across.
I have been reading about Lambda since Amazon announced it and after trying Lambda, I was sure serverless approach to solving image resize was the way to go forward. After trying Lambda and Google Cloud functions, I liked how easy the Google Cloud UI was to create and build cloud functions.
Presenting my first open source project:
If you come across an issue or can think of a better way to handle the resize operation, do send a pull request. Also, I am new to node.js.🤗
Given a choice between spending more time on the User Interface(UI) vs the User Experience(UX) of the app, I would choose UX.
In the last two years, I have started to enjoy apps which might not have the best UI but get the UX right. I always praised good UI before, even if it meant having to go through a few extra steps within the app to perform the task at hand.
Two apps which I have been praising a lot recently, are Buddybuild and LogDNA. Buddybuild has the right balance between good UI and UX, while LogDNA gets the UX right.
I have tried most of the available CI options to create an Android build for my mobile apps. Other than buddybuild, everyone else made me configure my steps before creating the .apk file. With buddybuild, it was easy. I pointed to my Github repo, and it was able to do its magic and return the .apk file. UX done right. 💯
I had a similar experience with LogDNA last week. I have given most of the log management software a try, but no one else was as easy to setup as LogDNA. After setting up the project, they had a 5 line instruction on commands I needed to copy paste and voila! Server logs started pouring into the dashboard. 💯
I wish more companies spent time on UX discussions when creating software. I know I am going to make it a priority going forward.
I have had my grammar corrected quite a lot in the last two years. Every time I go travelling with a Mayur outside India, we talk about how I need to improve my grammar. It has been getting better, but not quite there yet.
English is a second language in India. Although most schools in metro cities across India will advise their students to talk to each other in English, most students prefer the regional language. I don’t have any complaints about students doing this. I like the regional language not losing its place as part of the culture of that particular city.
So what do we Indian’s do when we can’t find a word to describe a particular situation? We think of the closest word which describes the situation in the regional language and match it with the word in english.
While looking for a place to have breakfast with a friend yesterday, we saw this girl reading her kindle in the coffee shop. She was kind enough to give us her table. After she moved to a rocking chair, my friend told her that it’s nice that the coffee shop had such chairs for people who are alone. She was quick to correct us “it is indeed nice of them to keep such chairs for people who are by themselves.”
The words she picked. Alone vs by your self, made me think how important it is for me to continue working on improving my grammar.
Solo developers building a product is not such a good idea I have come to realise. Most developers I talk to are more excited about the tech than the product itself.
I was recently talking to a friend who mentioned that he wanted to build a product using “React/Laravel/GraphQL”. He spent more than 30 mins talking about how he was excited about the tech stack in place and how this will help him scale to a lot of users.
As a developer myself, I get it. Working with new languages/frameworks is exciting. But tech is just 30% of the product. The other 70% is sales, marketing, customer service, the product idea itself.
I hope you are spending as much time obsessing over the other 70% or are partnering with someone who likes all other parts of building a product while you focus on tech.
2018 has been great so far, and the most productive I have ever been. It’s not just this week, the last two weeks have been productive. I have been trying a new work routine “watching random tv shows while working”.
Most people would advise against watching TV when programming, as it takes away your focus from the task at hand. I would think the same till I tried it two weeks ago.
Having a background noise works well for me and since these are TV shows I am not that keen on watching, having a background noise helps me focus on the at hand.
I have tried Spotify and coffitivity before, but after a while I stopped enjoying these services.
I have been looking forward to my work days now.
There are a few things I cannot do while the TV shows play in the background:
- Write blog posts
- Think through logic which did not work in the first attempt.
I am going to continue this experiment for this month.
Hope you all have a great year ahead!
I look forward to writing this post every year. Spending time thinking about the year that was, two days before the birthday and writing down my thoughts.
Not everything is great all the time. And this held true for me this year. Not everything was great, but the bad outweighed the good and I hope that trend continues.
I had mentioned this in my birthday post last year and I happy that the trend continued. The good did outweigh the bad.
I spent two weeks this year being very sad about losing a good friend. Sunil you will be missed.
If I had to give this year a theme, it would be this.
“The year of learning”.
I also did end up crying due to work this year. Not because there was too much stress, but because I thought after so many years I would be able to figure code out easily and when I was unable to figure out what was causing the app to not work even after a month, I started to question everything.
Made me realise the importance of patience when learning something new.
I have become much better at React and React Native and will be shipping out a few apps early next year.
Tools I spent the most time with this year:
React, React Native, Node, Rails, Angular, Laravel, Heroku, MySQL and Redis.
Be in touch with close friends has always been a goal I have tried to maintain. This year though was not that good for this goal. As everyone got busy with their work/family life, I had trouble getting hold of most of them 🙁
Getting to spend time with my niece is something I really thankful for. Its been a great to see her grow up, attend dance lessons, go to school, make friends.
Fitness was a priority this year, and I am happy that I got to exercise regularly. Still not as fit as I would like to be, but I am getting there.
I spent a month coworking in Bali this year, and that was a highlight. I had wanted to take such a trip since long, and the experience was great.
Travelling alone around Malaysia was also a highlight this year. As I get more comfortable walking up to strangers and talking to them, solo trips have slowly started to be not as dull as they were seven years ago.
Few others places I visited this year:
Kabini Wildlife Sanctuary
I spent the first ten days of December travelling around Assam and Meghalaya with a few friends, and it was great. Road trips with close friends are the best.
Goals for 2018:
Continue learning new languages/tools.
Move/stay in another country for some time.
Exercise and swim more often.
Write at least eight blog posts every month.
Launch and maintain one web app and one mobile app.
Travel to at least four new countries.
Make time to date someone seriously(this did not workout well this year)
Spend more time with family and friends.
Hope you all have a great 2018.
npm though does not always work as expected and when it does not, you start to question why so many people rely on it.
Last night, I wanted to add a new component to the react native project I am working on.
A new component which was just one file, what could wrong? A lot of things went wrong. After I ran the command
npm install --save react-native-keyboard-spacer
the results told me it had installed four packages and removed 345 packages. Uh! What! That does not sound right. I refreshed the emulator, and my fear did come true. That one command had uninstalled all dependencies which did not meet the install criteria. 😣
The next five hours were spent fixing dependencies issues and errors. Nativebase a component I relied on was set to "native-base": “^2.2.0" in package.json, which meant that it had installed the latest version following the npm install command. Thanks to GitHub, the solution was to remove ^ and run "npm update". React-navigation was set to ^1.0.0-beta.11, which meant that it had updated to the latest version, breaking my apps navigation.
Days like these, I wish we relied less on package management solutions and were still downloading individual files/folders to make it part of the project.
P.S: Remember to commit your code often.
There is a lot of talk about remote teams being the future of how work will be done. I think it is too. I have been working remotely for more than seven years now, and it has been one of the best life decisions.
I did lose some confidence in a remote team though last week. When you don’t know where everyone in the team is, it is tough to plan/launch a product. Remote team only works if everyone in the group is good at communicating their work schedule.
If you are part of a remote team/ teams, please ensure that you keep your team updated with your work schedule and any changes to it.
Software as a service is an extremely competitive market. While talking to a friend the other day, he asked me where I spend most of my time, and when I told him I work on a project management system, he was surprised that I chose to work in a market which has so much competition.
Competition is good though, but only if you don’t spend a lot of time worrying about the competitors. You have got to believe in the product you are working on and continue to do what’s best for your product, and it’s customer. Keep improving your product based on customer feedback and keep making progress every week.
Competition validates the market, and it’s good to be part of an exchange pre-validated by a lot of companies.