Startups : Business people are overrated.

This might seem completely out of line but I have observed series of events in the Indian Start-up ecosystem which has led me to believe that the business people are overrated. Yes, good business skills are a must if you are looking to scale a venture, for that you need people who are business minded. But if the product is not of premium quality it is very hard for any guy to scale it infinitely. Now if we look at some of the awesome products out there and see the faces that are associated – almost all business people.

Now this might seem totally right, the business people are the ones who go out and sell!!, while the techies stay home and try to reduce the efforts these people have to made. But this causes a paradigm shift – Good people in Tech try to shift to do business. Unlike the valley where the tech guys control and run the company, we here in India tend to find people who can sell, give them quite majority stake; instead of focusing on making something out of the league. This has to change people who developed the technology should be given the credit and appreciation instead of business guys. Now we do have some platforms which do help recognize such innovative geniuses but they under perform. Required is recognition and restoration of faith in technology in Indian context (Instagram deal may inspire few but a lot of them realize it happened in valley)

Another consequence of this is that a lot of non-techy people come out and start building companies which are not backed by strong products. If we look back in the past, it is clearly evident that it has been some breakthrough technology that backed the rise of a great company – be it Apple, Google, Facebook or be it Salesforce, Tesla or Nest. Now if we don’t learn from the past, we clearly lack good people in business. These poorly built products flood the market and because of which users suffer (in turn it affects the ecosystem too, investors doubt more when there have been failure(s) in the past). Take the example of the multitude of e-commerce sites in India (last count I got was 120+), very few of them did bring some innovation or built a user focused product. Lenskart is a good example – it is using the technology to *really* make buying lenses and spectacles peaceful.

Technology is going to be the fuel to make awesome companies. The sooner people realize it and start utilizing technology to make some amazing products, sooner we will have companies like Apple and Tesla.

Advertisements

Ubuntu on Beaglebone Black

beaglebone black

I recently recieved my beaglebone black which is an awesome piece of hardware. Checkout the specs, its an amazing board for electronic hobbyists and better in some aspects than raspberry pi since it has much more GPIOs .

Beaglebone Black comes with in built 2gb emmc card which has armstrong installed on it. But if you are like most of the linux users, you’ll prefer ubuntu mostly. So here is a step by step tutorial on how to install ubuntu on your BBB and get it up and running with LXDE desktop. Also updating internet settings if you are on a proxy.

Installing ubuntu
Go to this link : http://elinux.org/BeagleBoardUbuntu there is a very elaborate procedure to install ubuntu on your external mmc (since 2gb is a very limited space, install ubuntu on external mmc and to boot ubuntu press button on BBB near ur USB)

Once done with installing ubuntu on card, plug it into your BBB and boot it. The login name and password are both ubuntu. Log in. Now first thing you have to do is sudo apt-get update. Now for people on a proxy see below instructions rest can skip it,

So if your proxy server uses static ips then you have to set up the same in your /etc/network/interfaces file, to do so
sudo vi /etc/network/interfaces

this will open up a file, under eth0 add your ip settings

auto eth0
iface eth0 inet static
address <io address you use>
netmask <subnet mask>
gateway <gateway>

Once this is done you need to add nameserver ip in your /etc/resolv.conf
sudo vi /etc/resolv.conf

search <nameserver>
nameserver <namserver ip>
nameserver <another nameserver ip [optional]>

Once done you are good to go if  your proxy requires authentication then you have one more step to go, in your /etc/apt/apt.conf file add proxy auth details. This is a good link which explains how to do it.

Now that proxy is set up, you should try sudo apt-get update and this should run as expected

Installing ubuntu desktop
To install ubuntu desktop use sudo apt-get -y install lxde lxde-core lxde-icon-theme, this will take some while to download all the packages and ever more time to install them on BBB. Sit back for a while, if you are on a slow internet start an episode of your favourite TV series and relax. Once installed, restart your BBB and you are good to go.

Android UI : Fixing skipped frames

Anyone who begins developing android application sees this message on logcat “Choreographer(abc): Skipped xx frames! The application may be doing too much work on its main thread.” So what does it actually means, why should you be concerned and how to solve it.

What this means is that your code is taking long to process and frames are being skipped because of it, It maybe because of some heavy processing that you are doing at the heart of your application or DB access or any other thing which causes the thread to stop for a while. Here is a more detailed explanation –

Choreographer lets apps to connect themselves to the vsync, and properly time things to improve performance.

Android view animations internally uses Choreographer for the same purpose: to properly time the animations and possibly improve performance.

Since Choreographer is told about every vsync events, I can tell if one of the Runnables passed along by the Choreographer.post* apis doesnt finish in one frame’s time, causing frames to be skipped.

In my understanding Choreographer can only detect the frame skipping. It has no way of telling why this happens.

The message “The application may be doing too much work on its main thread.” could be misleading.

source :  http://stackoverflow.com/questions/11266535/meaning-of-choreographer-messages-in-logcat

Why you should be concerned
When this message pops up on android emulator and the number of frames skipped are fairly small (<100) then you can take a safe bet of the emulator being slow – which happens almost all the times. But if the number of frames skipped and large and in the order of 300+ then there can be some serious trouble with your code. Android devices come in a vast array of hardware unlike ios and windows devices. The RAM and CPU varies and if you want a reasonable performance and user experience on all the devices then you need to fix this thing. When frames are skipped the UI is slow and laggy, which is not a desirable user experience.

How to fix it
Fixing this requires identifying nodes where there is or possibly can happen long duration of processing. The best way is to do all the processing no matter how small or big in a thread separate from main UI thread. So be it accessing data form SQLite Database or doing some hardcore maths or simply sorting an array – Do it in a different thread

Now there is a catch here, You will create a new Thread for doing these operations and when you run your application, it will crash saying “Only the original thread that created a view hierarchy can touch its views“. You need to know this fact that UI in android can be changed by the main thread or the UI thread only. Any other thread which attempts to do so, fails and crashes with this error. What you need to do is create a new Runnable inside runOnUiThread and inside this runnable you should do all the operations involving the UI. Find an example here.

So we have Thread and Runnable for processing data out of main Thread, what else? There is AsyncTask in android which enables doing long time processes on the UI thread. This is the most useful when you applications are data driven or web api driven or use complex UI’s like those build using Canvas. The power of AsyncTask is that is allows doing things in background and once you are done doing the processing, you can simply do the required actions on UI without causing any lagging effect. This is possible because the AsyncTask derives itself from Activity’s UI thread – all the operations you do on UI via AsyncTask are done is a different thread from the main UI thread, No hindrance to user interaction.

So this is what you need to know for making smooth android applications and as far I know every beginner gets this message on his console.

QuickSort Algorithm in Javascript

So I was reading algorithms and was working on implementation of quick-sort in javascript, since this the language I’m totally love in. This is a great algorithm for sorting compared to insertion sort since it takes O(nlogn) processing time over O(n2) for insertion sort.

So if you are too concerned about performance of your sort function or if your web application needs to perform sorting on large data sets then this is the sorting that you should definitely use, Since directly using javascript’s array.sort() will implement merge-sort subroutine. Even though both merge-sort and quicksort consume the same time i.e their time is O(nlogn) but merge-sort creates new sub arrays and this will consume more memory. And since javascript runs in a single thread and if your dataset is really really huge, the tab/window may hang for some while or may end up dead.

Here is a Gist of the implementation. https://gist.github.com/vaibhavtolia/6747303

You have a startup idea, what should you do now?

Alright, you have an idea, you love it and you are ready to do whatever it takes to bring it to life, but you should not jump to idea of starting up so soon. ‘99% of startups fail‘, it is not because they lack skills or their idea wasn’t superb enough, the major reasons are they were not prepared for the challenges ahead. Before you actually decide to start a business –

Evaluate the idea – every idea has a potential of making money, but how much, in what ways (what all possible revenue models), how it will scale. Get an unbiased view of an expert on the idea – he/she will tell you about the major pitfalls. Once you are sure of the sustainability of operations and development (not from VCs or angels money), go ahead.

Build a great Team – the greatest of the ideas can fail miserably if not executed properly. You need to nurture a team which shares the same ideals and concerns as You. They should possess skills necessary to execute the idea. When looking for a co-founder do not go for a guy who fills the skill set required (you are hiring an employee then). Find a person who shares the same concern, the skill set and ability to scale the business. For eg, when looking for a Tech Cofounder, don’t just go for a great Engineer, find someone who has the skills but can also hire, nurture a team and ship great product in timely manner.

Make products with utility not beauty – your product should not solve the same issue that other tens of products are doing, just that you are doing in a ‘better’ or ‘user friendly’ way. No, it won’t work for most of you. Find utility the customers will get out of it, and it should not be marginal. Marginal improvements over existing solutions is not going to work. You need to take a leap, shift curves of imagination and utility.

Give it in hands of superusers – you love your brainchild, everyone does. Learning about its shortcoming is a not an easy task. Give it to some superusers – people who live in the real world, face the issue you are trying to address and are really good critics. Learn from their feedbacks, improve upon the shortcomings and release a beta version.

Market it great – ‘Good products don’t need marketing‘ – its true if you have all your life to wait for it to go viral. Greatest of all products need loads of marketing in the right manner to catch the attention of potential customers and make them hold on to it. The attention span of internet users is very low, if you don’t catch the eyeballs right away, your product stands very less chances of going viral.

Iterate and Improve – One thing most of startups fail to do is, they don’t iterate. Learn from user analytics, insights, feedbacks, keep on iterating, try new things that improves the experience of your user or customer. Here is a quote I personally admire a lot

Speed of iteration outbeats the quality of iteration.

Keep on improving your product before trying to diversifying it. Follow the Lean startup principle – Keep It Simple. Don’t try to do many things, find a very basic problem try to solve it, in a way which provides the most utility to customers. Try to increase the marginal utility of using your product everyday.

How is it like working in a Startup

We all have been listening of the buzz about startups. There is sexiness and glamour associated with owning a startup – you get to be published in one or many of those tabloids covering the startup ecosystem. All of a sudden from the college dropout you become a celebrity. Everyone in the college starts recognizing you :P.

Well it may look good from outside but its amazing inside. Working in the startup is one of the best work experiences you can get in your life and if it is your first job, trust me you are not leaving this space. Startup is an amazing workplace where “You” are recognised no matter how small or a big a task you are responsible for. It is like a family. So what is really like to work in a startup (not for a startup)

1. You are responsible for the work you take up. It is very unlikely that you will be assigned some work with a timeline and you have to report every night before you leave the task in an excel sheet. It is you who is responsible for the task and in turn the progress of the company.

2. You are not there to do just one kind of work. Of all the things, work at startup is not at all repetitive or boring. You will be faced with new challenges every hour, new kind of tasks everyday and maybe new title every month. You are not supposed to posses just one skill set (even if you have one, you have to do a lot of many other tasks).

3. You will learn a lot of things everyday. You are programmer, you are kind of introvert and don’t like to talk to a lot many people, love your mac and build new things everyday. You are supposed to do all of that but in addition now you have to build teams, recruit people, inspire them, motivate them, conduct workshops, visit meetups to get more talent –  designers, coders, writers everyone. Apart from that help them all in the challenges they face while learning all this skills. You have to leave your comfort zone and get into everyones shoes.

4. You get gadgets. Well if the startup you work in, if it has raised funding or is making enough profits (which is highly unlikely) you get to have all the fancy gadgets you want. Be it 24” screens (or maybe even 27”), macbook pro retina, NVIDIA G670 powered desktop, anything. Some will even let you design & build your own workspace.

5. You get to meet insane people. I always feel this, people in startups are insane. I have never ever seen the kind of energy and enthusiasm anywhere else. They will go on working for hours and hours – discussing, debating, fighting, coding, designing with the same ultrahigh energy level. Sometimes you may experience burns from the energy. Never try to get in a role conflict with an insane startup guy, more on this later.

6. You network with people from all walks of lifeYou will meet so many people, each one of them skilled and passionate about the work he/she is doing. You get to learn a lot from them. You make contacts which lasts long (some go for lifetime). You chat, you break bread together, you learn from their experiences, share yours. Life takes up new colors everyday and you wont realise how many different things and subjects you have learned. You will develop new hobbies, interests and maybe profession.

Overall startup is a place which will color up the blank/monotonous canvas of your life with all the possible shades present in a rainbow. It can be tough to realise all these colors and sometimes even harder to accept all of them at once. You will learn, learn to adapt and evolve. If you haven’t yet worked in startup, take a chance and work in one.

Starting up? It has become too mainstream!

Catchy title! But it is in fact the truth.

I don’t condemn or criticise anyone from starting a company. It is in fact a really bold step but if you are in for doing a startup because you see glamour in it, or you see a chill life where you are the king of your life or its good to be your own boss or because everyone is doing it or any other hundreds of similar reasons you can list out. Wait! you may be in for trouble.

Startups are lucrative, if you live and breathe around group of entrepreneurs you might definitely feel, “Even I should do a startup”. I have Co-founded two startups got a great exit from one and other one is doing great. Starting up for the sake of starting a company is not a valid nor a rational reason to do a startup. There are startups coming up everyday. People get ideas, so do you – it doesn’t mean you should start a company. Startup requires a great deal of commitment, I’m not talking about 10-12 hours a day. It could mean not seeing sunlight for days, not moving out of your chair for days coding/working all the time, working for 16-18 hours a day and at the end of day concluding it wasn’t enough. This is the story of almost every founder/cofounder of a great startup. They don’t have a life seeing for the point of view of people in general. For them the more they work the more merrier they are. Here are a few things you should know before doing a startup.

1. Startup is autonomy but it means responsibility and not freedom (from boss). You are responsible for not just your life but the lives of your team and your employees. They have trusted you, its your responsibility to make money for them too.

2. Investors money is hard earned money, it is not for you to get a lavish office space and a lifestyle. Its there so that you can expand operations and scale your business. Raising funds from an Angel or VC is no proof that your business will succeed but it is now your responsibility to make money for investors too.

3. Almost 99% of startups fail. Don’t try to increase the stats, you have to take rational and responsible decisions at each and every step. Each of which has probability of 1% that you made the right choice.

4. Marginal improvements over existing solutions will not help you build great and long lasting companies. You may stall for some time, but will eventually crash or may get exit if lucky. Ecommerce and Deals industry in India are great examples, where thousands of startups emerged and falled. Few were lucky enough to get exits when the market was booming.

5. Not all startup stories are like of Instagram and doing business in an economy like that of India requires a lot more than simply idea. In economy that of India, you need to prove that your idea makes money, then consider looking for investors.

6. Developing a great technology requires great deal of effort. Don’t consider that getting a website up and running is cheap and easy. Right talent costs you loads of money –  be prepared for that.

7. Your idea maybe good, Don’t be adamant about it, learn to pivot, try to learn and make the best of the situation. Talk to potential customers, superusers – you will learn more about the problems and will develop a greater concern for the solving the problem and benefiting the consumers.

8. Seek legacy, mastery, and freedom in that order. Here is a great article on HBR about it. It goes for all situations – Job or doing a business.

Everyone out there is trying to start a business. The competition is fierce. Review your idea, seek expert advice, talk to users, entrepreneurs. Involve in the community.
Life is short, do what you love but make rational choices.