Monday, July 29, 2013

Ride the whale...

Reaching critical mass is crucial for every internet, service oriented or app based startup.
This is even harder when you're an anonymous, bootstrapped startup (Like us at InsideMy.co:)), without much budget for marketing but your precious time and some change for your servers.

So how DO you reach critical mass?

One way is to tediously knock on doors. Keep on the momentum, send more mails, gather clients one by one, and hopefully you'll have enough so the business starts 'driving' itself.

The other way would be cooperating with someone big that can carry you. If you can help their customers and convince their gain from you, as well as quantify it (How much traffic they will gain, money, more customers etc.), you might be in for a nice ride.
This also requires knocking on doors, and some careful management - Especially since if your idea is good, it might just get stolen.

The most important rule - Believe in yourself, and your product, but if you want to 'ride the whale', concentrate on what him and his customers gain.

That might save you a lot of door to door sales.

Whale

Tuesday, July 23, 2013

The new Macbook Air 11 - From a personal point of view

After spending two years with the Macbook Air 13 (2011 i5 edition), it was time to say goodbye, and get a new laptop.
Decision was made very easy with the 2013 Macbook Air Haswell upgrades - The only thing left to decide was whether to get the 11" or the 13", since in terms of performance they are completely identical.
I went with the 11", only because I wanted to experience something new - The difference in weight and form factor wasn't that big, and screen resolution is quite similar.

My usage is quite plain - Running an IDE (XCode, Eclipse or PHPStorm), a stack (Usually AMP or Node.js), and a browser or emulator, and sometimes Office.

My impressions so far - Wow.

Though performance doesn't feel much faster than the 2011 model (Which was plenty fast for my usage), the Air runs much cooler, and lasts between 7 to 10 (!) hours, depending on how wifi heavy I am.
For a machine that weighs almost like an iPad, this is quite amazing.

And when people ask me "Why don't you just get an iPad", I simply say - An iPad with 128GB SSD costs 800$. Add a 100$ keyboard to that, but you still can't run a stack.

Sorry, for me, this is the best laptop in the world.

At least until the next generation comes out ;-)

My new friend, working on InsideMy.co's stack

Monday, July 15, 2013

Momentum


A programmer's job is creating code.
This means that if you're a coder, you need to sit down and write code. Sometimes, a lot of code - But that's ok - Best coding sessions I've had were not only hard work, but a flow of creativity that you don't want to interrupt. (By the way - The same rules may apply for preparing a long document or a presentation)

When writing a new module (Or even server), the hardest thing, after the whole tedious buildup (Ideation and design processes, which could take months, especially if you've got other code to maintain), would be actually sitting down and writing the code!

I find that the tallest barrier is usually getting yourself to the position where you've got 'something to see'.

This means that setting up the environment, deployment, build and server settings should be taken care of, so you can finally sit down and get into the groove - Do it as fast as you can.

Once in there, I find the skeleton coding approach the most effective to get the momentum I need, especially since it's the fastest way I can see the program come to live. In general, once you've got one flow nailed down, the others follow quite easily.

So get your headphones on, turn your phone off, and get coding!




Sunday, July 7, 2013

Performance issues? Remain calm and analyse.

Web companies are all about growth.
But also about speed.
It's all about getting your great idea out there, as fast as you can, which means scale and performance issues could be left 'for later' (Which is mostly a good idea at the beginning stage, when resources are sparse, and time is an issue).
Once your service scales from 100 users to 10000, you will encounter performance issues. If you have an app, response times would slow to a halt. A site, data loads slow.
In 2013 Google IO UI sessions, it was mentioned that app users tend to close their app when waiting for more than 10 seconds. While that might sound harsh, imagine tapping, waiting 10 seconds, then tapping again, waiting again - I would uninstall such an app, or never visit such a website (Unless they have something I really, really need, in that case I'll look for a competing product before uninstalling)

Clear your head. Analyse the situation.
So, what do you do?
First, don't pannick. Performance issues happen to everyone. (Kidding)
But be focused, because time is of the essence here.

An 'automatic' go to solution is upgrading your hardware - I wouldn't go there unless I was really desperate - This is hardly ever a scalable solution.

First thing you would want to do is analysis.
The base for all solutions shouldn't be by intuition alone - This could lead you to waste time on ideas that may or may not bring the solution, and waste valuable time.

- Analyse each step by time, dump it to a log file. Find the 10 most time consuming tasks, and select the easiest ones to take care of.
- Analyse DB calls - See which ones are being performed to most, or which ones take a lot of time.
- Analyse insertion rates - Maybe a queuing mechanism could solve some bottlenecks.

- Always use a perl script to 'clean' logs, do count operations on logs, and a spreadsheet to calculate and sort stuff - These are the best ways to get insights.
- Call a friend. Four eyes are always better than two.
- Call an expert. It's cheaper to pay someone for two expensive days of work and get your issues solved than lose a week of momentum.

And a final note - Don't try to rewrite your server in two days of 'no sleep'... ;)

Good luck.