Monday, August 10, 2020
During the 2020 Pandemic: starting a new product from Laos
I have been traveling all across SE Asia since November 2019. This was part of my long term digital nomad lifestyle which would have otherwise taken me to live for about 6 months each in Japan, Canada, Denmark (or another Scandinavian nation) and New Zealand. That, mixed with bakpacking through South America, Africa and Eastern Europe was my dream for the next 3-5 years.
Then 2020 happened. By mid-March it was clear to me that things are going to get difficult, travel wise. I was in Luang Prabang, Laos at that moment and wanted to take a flight to Bangkok, Thailand. I booked the ticket and showed up at the airport only to be prohibited entry because Thailand had changed their Visa on Arrival policy the week before. I had a little bit of a panic and took a bus to Vientiane, the capital of Laos. The next morning I tried the Friendship bridge between Laos and Thailand but was given the same reason for not allowing entry to Thailand.
I think it was March 18, 2020 and it hit me that I will be stuck in Vientiane with a group of stranded travelers. Some of them were waiting for a flight out, while others were just waiting out the situation. I felt that not having my usual travel mode might negatively affect my mental state of being. I was honestly super happy and high up to that point. So I decided to get back to the founder communities online, the ones which have always given me a sense of belonging and purpose.
After lurking around a week or so, I decided to start a new product journey. My plan from 2019 was to continue working on my previous Travel startup, but I paused that due to the uncertainty hovering the pandemic. I worked on an initial, quite broken, prototype and started talking to potential customers. With about 3 months of effort, still staying at the same place in Vientiane, I had a really clear picture of the MVP.
As an engineer with lots of founder connections across the world, I am blessed with the skills, peer-support and finances to create a new product journey. I understand deeply how important and fundamental these are to the quality of life that I do. I am not a money-driven person, rather very mission driven. Being able to focus on a problem and start solving it is an immense luxury. I know this since I did not have it in my growing up years.
Now, in the month of August 2020, I am happy for where I am with my product. I have been some great connections with interested early adopters, mainly from the US. I will double down on my efforts to connect with European founders since I want to go back and live there for some months post-pandemic. Meanwhile I will focus on launching the MVP and marketing it.
It has been about 5 months since the first lock-down (Laos and India had it almost at the same time) and so many people are negatively affected. Small and Medium businesses are at the edge of a steep fall across the world. Our lives and economies have been affected in incomprehensible ways. Understanding that I have the luxury to hole up in a random place on the planet and work, I surely intend to use this time for the purpose of fueling other entrepreneurs' goals and accelerating our global comeback. More power to people.
The different worlds of Personal and Professional relations
Professional relations are, by nature, around money. There is no denying this. If I perform poorly time after time, maybe due to mental issues, surely my boss might try and get me to a counselor but she will also try to replace me.
This sounds harsh but it is reality. We all have limited buckets of strength, some have larger buckets than others. And we need to share than strength and support for people around us. So we prioritize.
In Personal relations, there is nothing being bartered than a silent vow. There is no way to value how much I am willing to risk for you, maybe infinity. There is no upper limit, it is all gut feelings and butterflies. In Professional relations, it will boil down to stakes, salaries, insurances and such.
Tuesday, June 16, 2020
Mental health, Routines, Anchors and Blah
Work is still extremely important for me. I find a sense of purpose in my work and I always have a mission I am chasing. That gives me an anchor, a private place of peace where I can easily return to from other conflicts. I am easily drawn to conflict so the anchor helps a lot. I feel people can not be anchors, because they might need their own space when you are dependent on them. Art, music, work, sports, some form of creativity are all great anchors in my opinion.
Till next time, happy health!
Sunday, June 14, 2020
It is OK
Lost touch with writing, yet again!
I think the hardest part is to accept that I am not good at certain things. I accepted I have anger issues, that I am not good at juggling multiple things. I also accepted I am really bad with words, and I hurt people all the time. I went through a long enough period of digital detox, made some amazing travel buddies and bought a motorbike. By this time I had spent 3 months in Vietnam.
I started a 2 months long solo bike trip across Cambodia and Laos on a shitty motorbike (which was all my fault to trust the hostel owner). I will keep my motorbike diaries for another post, but going through all that healed me gradually. I found more calm inside of me and eventually, before the Covid-19 lockdown in Laos, I settled myself at a nice hostel. I started working full time and laid some groundwork for my product. Finally I am here now, somehow content, still nomadic but happy and starting to write again. What will come next? I don't know but I am ready.
Monday, January 22, 2018
Machine Learning, AI, Data Science in simple terms
I thought I would share my views with everyone who is struggling to get these terms. I will use an analogy that perhaps will help. These opinions are as simplified as I could make them, so please take them with a pinch (or more) of salt.
A coffee maker!
Let us have a coffee maker for our thought experiment. We all love some variety of coffee, and there are tons of them. How you brew, how much milk, or none at all, sugar, cream, etc. You get the point.What if I ask you, yes you, to make the best coffee for all my customers. Now assume you have no idea how to make any kind of coffee. I will supply all the ingredients, and basic tools (a kettle, grinder, and others).
Now I find a whole lot of customers for you. They would come, ask for a type of coffee and you will experiment. Boil the water (or not), add milk (or not), cream (or not), and so on. Oh and vary all kinds of amounts. You will note all your experiments and the result from each customer - trash the coffee or drink + pay. You can see how much they pay, assuming they know what each type of coffee costs and they can add tip if they really like your work.
If you kept doing that experiment over and over again, eventually you will learn how to make good coffee and perhaps of all kinds. That is learning. I did not instruct you how to make coffee, I simply gave you some apparatus, ingredients, and you learnt by seeing the customers response.
The aim of Machine Learning is to enable computers to do the same. There are no clear instructions as to how to do that stuff it is doing, but it figures out by trial and error. Well there is a ton of math involved which is much more complicated than the notes about customers you took, but we will skip that for brevity. We might even mimic biological structures into a computer system to achieve similar ways to learn.
Experiment notes about customers
Remember you took notes about how the customer reacted? What they ordered, if they drank or trashed, how much they paid. You can even add time of day, method of payment, blah blah blah. You get the idea.Now let's say you wanted to understand which kind of coffee is most profitable. That is going to boost your business. This part is Data Science, where you have data but you are looking for clear signals, which might enable you to take decisions. Now if your log book of customers was huge (say a billion coffee experiments a month) you could use Machine Learning as a technique to have a machine figure out ways to crunch through the data. But that is just one of the ways you could analyse the data. The easiest would be simply looking at it row by row, querying or aggregating it by price range, date, etc. You can use a database to store and do these things.
A coffee maker who plays football
Here we get into very debatable topics. You understand by now that you can learn how to make coffee. From your experience you also know how to learn to drive, drill a hole, use an umbrella, play football, etc. You are still one person, but you have the ability to learn. Some of that is rooted in our deep understanding of language and capability to hold abstract things in our head.A banana is a banana in your head, you somehow "know" what that means. When you see a picture of a banana, or hear a banana or see even a red banana, you still recognize it even if the color is not common. Cognition is very fundamental to us. It allows us to join abstract (the banana in your head) with the real (pack of bananas at the supermarket).
All these abilities make us flexible to be a driver, farmer, salesman or engineer. What if a machine can do the same? What if it could choose what to learn and gradually get there just like we humans do? Well you are getting to Artificial Intelligence (specifically general AI) - the machine counterpart of our own human intelligence.
Friday, February 17, 2017
Frontend Driven Development
Being a backend developer in love with Python, I was initially hesitant to move that much of the software to the frontend. I primarily focus on marketplace kind of applications, some of which are very good candidates for single page applications. To be clear, many marketplace applications will not benefit from single page applications. For example if you are just buying an selling stuff, and people stay on the app for a short time till checkout, then it probably makes less sense to build an SPA. Also, you probably need Google and other search engine bots to read your content. Then you might want to stick to backend driven applications and just print HTML.
But if your users are to stay on your application for while, to customize lots of options, to fill in many forms, get notifications, etc. then it probably makes sense to build an SPA. The main difference is this: are your users private and interactive or are your users public and mostly viewers? If your users are the first type, then SPAs make sense.
Web applications, even a few years back we not heavily customized depending on the user. But that is changing a lot. In our applications, we are trying to customize elements in the UI depending on who is seeing it, what pre-conditions they have etc. All of this is geared to make the users' flow as smooth as possible. Guide them through steps, give them important tips, store and act on their preferences and so on.
In traditional backend driven applications, all of this logic would be dealt with in the backend. But that is like expecting a piece of paper to behave like a display screen. You can surely print stuff on the paper and even erase and print again and so on, but the paper is a one-time-print medium. HTML printed from backend is kind of like that. The backend does not treat HTML as a first class citizen. But the browser does and the DOM is powerful. Sure it comes with a bag of worms, but good frameworks make that manageable. I do not have experience with many frameworks so I will stick to React.js here.
Let us take an example, a common one. A user clicks on a item, and has two options - "Add to cart", "Add to wishlist". In the backend driven application, you will make a page refresh, print a new page, with either a +1 in the cart or a +1 in the wishlist. In the frontend application, you just make an API request to update the cart or wishlist. On valid response, you just update your frontend state. The UI updates to reflect the +1 in the right place. Now when the user clicks either the cart or the wishlist icon, the UI shows the current list, which is already hydrated with correct data and actions are already bound. Then if the user wants to kick out an item, again its an API call to sync the backend data, while the frontend state track this change and UI reflects it automatically. Well the automatic part is happening due to the frontend framework.
The UI, as you may imagine, is snappy since the amount of data you are sending per request is ridiculously small compared to sending pages of HTML on every trip. Also the backend has much less work to do, since it is not longer bothered with UI state. The backend mostly becomes a DB with business logic and data validation system.
There is also an added advantage, something that big applications can use. Honestly I have not been involved in an application that has needed this recently. That advantage is load balancing! Since the frontend manages its own state, different parts of the application data could come from different backends, all behind a load balancer. Many of the backends may not need user session since it is sharing publicly available data. For example in my current project, we match students with online work. The list of online work could be considered public data, so we could have it served from a backend which does not track user session. But if the owner of a particular online work needed to change the description, the request would go through a session aware backend.
Users are getting used to quick applications. Even if you are small startup there should be no reason to not use these basic new building blocks and build applications that are more future proof. Pushing data from the backend into SPAs is also easier. Also, this is something users are very used to now - notifications even in web applications are fairly common now.
Now, all said and done, there are some things you have to understand. Building an SPA means you need people who can build rich SPAs and those who can build backends with API. These might be the same person(s) or different, depending on their skillset. Also deployment gets a bit more complicated. But the benefits really outweigh these blockers. And in the end "Least time to achieve my need" always wins. So if your application can benefit from being frontend driven, then go for it. Backend developers are a bit hesitant, but that is okay. This is big shift but has huge benefits.
Sunday, August 14, 2016
The reality of failures
Failure has been with me for a decade now. Not because I like him, but because he is just everywhere. It is known that majority of startups/new ventures fail. If that majority is like 90% or more, then 9 of us out of 10 could not get to sustaining financial growth or stability. Without that, you can either burn someone else's money or wind down the venture. After that you either start a new cycle, or do a day job, use your skills, grind everyday at work, still dreaming that one day you will be able to bring some change in the world.
But change is already happening. It is the only constant. Am I not changing the way things work in my day job? I sure am, but why does that not count as success? If you asked a graduate student who just came out with a degree in hand and has a dream of a well paying job where she can build things, lead people and have a good life, then I am already there. In fact I have been there long time back. But that is a measure of someone else's success.
The problem with success or failure is how you measure your life versus how others do. What may be hard earned success to one man may be just a walk in the park to another woman, and she does not see that as success. Over the years the measuring sticks also change. We grow, learn new things, and our perspectives change. When I was in my early twenties my whole measure of success was to build software products, use cool technology and maybe brag about them. Now it is more about solving someone's problem, the cool shiny toys are not as important anymore. But it is not just about what I do 8-12 hours of my day everyday. It is also about my life or what I think it should be. 10 years back I would not have thought about traveling around the world, making friends, knowing cultures, or having "just" good life. I would have hated these things because they meant nothing to me then. I was all for the glory of new companies trying to change the tomorrow, working crazy hours and not even thinking why I was doing that. I am sure we all have been there for a while.
The older I grow, I measure success and failure differently. And I have to chase these new targets that I deem as success. Things like mentoring others, spending time with friends, seeing the world give me more satisfaction now than a few years back. And I am gravitating towards doing more of these. So why does failure still stick around? Perhaps because I want him to. Because I need something to tell me not to stop moving forward, not to settle for anything less that what I deem as greatness. Perhaps just peer pressure sometimes. Greatness does not have to be a millionaire founder or a rockstar programmer. What is important is to accept that our lives are how we want to measure them. The measuring stick is created from our environment, with our own and others thoughts mixed together. Success and failure will always be together, there is no need for alarm as long as we keep moving towards our personal goals, which will in turn evolve in time. This is the journey, the reality. Without failures it would be a very boring one. Let him motivate you, not threaten you. As they say: what does not kill you makes you stronger.
Have a happy journey!
Tuesday, May 26, 2015
Hackathon HH - 24 hours of awesomeness
That opportunity came knocking when I attended the Hamburg Hackathon last weekend (23, 24 May 2015). It was a 24 hour hackathon starting on Saturday at 13:30 hours and ending on Sunday at 13:30 hours. I have participated in Yahoo! OpenHack and other hackathons before and they were very large hackathons, with up to 400 people, very enjoyable, and very well organised. So when I went to the Hackathon HH, I had very mixed expectations. But I was very pleasantly surprised.
The hackthon was in its second year, and the level of organisation was already very high. Everything was on time and the organisers were very well coordinated. The venue was very fitting, and as far as I understood it was an old factory or warehouse turned into a startup hub. But the best part was the people. It was a surprisingly mixed bag of folks, not all weirdly geeky, but everyone was very curious to learn and do something.
The weather turned out to be great. It was sunny for the most part and very comfortable temperature. There was a surprise fitness bit where all of us participated for about half an hour of workout outside. It was certainly relaxing after many hours of sitting. When I went to the venue on Saturday morning, I had no intention to stay all through the night. But the overall atmosphere was so inviting that I felt I should have taken a sleeping bag. Sadly that was not the case, so I took a short sleep at home and went back early morning on Sunday.
The anxiety before the deadline was visible on many faces. But everyone was very much enjoying the whole experience. And for me that is the defining purpose of a hackathon - to learn, and experience what it feels to build something in a compressed time with like minded people, mostly strangers. The sponsors had different prizes for various categories, but most had prizes for best apps to use their APIs. Although winning prizes was not my aim, but I did feel like missing the chance for the LEGO sets there were awarded by Twitter. Leaving that bit aside, the hackathon ended on a very high note and I returned home with more determination to spend time learning new things and doing better hacks.
A big thanks to the Hamburg Geekettes and AppCamp
Monday, November 17, 2014
It's been a while
I honestly do not know why I stopped blogging in the first place though. Anyway, no use thinking about that. I guess I will try and blog about what I have been doing all this while, what I have learnt, and am learning now. Let's see how quickly I can write up the first meaningful post now.