What Programming Language Should I Use to Build a Startup?

Often entrepreneurs ask me 'What technology should I build my startup on?' There is no right or wrong answer to this question. It's a decision every company makes for itself, depending on what it's trying to build and the skills of its cofounders. Nonetheless, there are a few rules that one should adhere to. We discuss them in this blog post.

Incident Response Policy

What happens in your company when a production incident occurs? Usually in a typical startup, you will see engineers running around frantically trying to resolve the problem. However, as soon as the incident is resolved, they forget about it and go back to their usual business. A good incident response policy can help bring order into chaos. We provide a sample template in this blog post.

Why Software Deadlines Never Make Sense

We discuss why software deadlines usually don't make sense.

Analyzing Front-End Performance With Just a Browser

We discuss a number of freely available online tools which can be used to analyze bottlenecks in your website.

Why Smaller Businesses Can't Ignore Security and How They Can Achieve It On a Budget

In this article, we show that security is both important and achievable for smaller companies without breaking a bank.

Wednesday, May 30, 2012

My Current Reading List

A good introduction by a seasoned entrepreneur into the intricacies of building a successful startup. The main  thing I took from it is that 'market-product fit' is all too often neglected in the process. Either the market isn't as big as it appears to be, or there's friction to product adoption, or the product isn't viral or sticky enough. Being honest with yourself, and continuously iterating while measuring customer feedback are crucial.

A great introduction to philosophy and psychology of architecture. It is peppered with interesting facts and data, and allows readers to appreciate the logic and beauty behind some of the famous buildings. 
"Buildings rarely make palpable the efforts that their construction demands. They are coyly silent about the bankruptcies, the delays, the fear and the dust they impose. A nonchalant appearance is a frequent feature of their charm. It is only when we try our own hand at construction that we are initiated into the torments associated with persuading materials and other humans to cooperate with our designs..."  This is also an interesting read for a software architect, since building beautiful programs is akin to erecting beautiful buildings. And if a business person ever tells you writing programs is easy, send him this quote.

Monday, May 21, 2012

Why Smaller Businesses Can't Ignore Security

Listen to internet radio with AleksandrYampolskiy on Blog Talk Radio

New York REDIS Meetup is born

I decided to start a New York REDIS meetup ( for tri-state users of a wonderful distributed cache called REDIS.

Basically, it's a KV store, operating at 100K op/second (compared with ~30K op/second if you are lucky for MS SQL server).  This will be a good opportunity for like minded technologists to network and mingle with each other. So if you are in the area, and are using REDIS, join in.

Challenges in using a SaaS

I found a poll dating back to 2008 about what concerns CIOs have when considering putting their application into the cloud.   The holy triad (security-performance-availbility) dominates the list of concerns.  It would be interesting to conduct a similar survey right now to compare what changed in four years. My guess would be that security is much less of a concern for CIOs not because we are more secure but because using cloud-based Saas apps has become much more common place.

Saturday, May 19, 2012

Old Emails

At times, it's interesting to read through your old emails to remember what you were doing on the same date.
In fact, a former coworker of mine started a startup TimeHop ( based on precisely that idea.

Going eight years back in time, I was thinking about Cauchy-Schwartz inequalities. Nowadays, I am having trouble remembering what they are.

Date: 19 May 2004 21:53:11 -0400 (EDT)
From: Aleksandr Yampolskiy
Subject: a simple inequality

I have a question regarding a simple inequality:

Let m>1 and X1, X2, ..., Xm > 0.
Then it's easy to show (by induction on m) that
(X1^2 + X2^2 + ... Xm^2) < (X1 + ... + Xm)^2.
E.g. it's obvious that (3^2 + 5^2) > (3+5)^2.

I was curious if this inequality is simply a special case of some
other general inequality. It feels very much like Cauchy-Shwartz, but
it isn't.

The reason I am asking is that I would rather just cite this fact as a
special case of such and such inequality rather than posting a trivial proof of
this in the paper.

Thanks for advice.

Tuesday, May 15, 2012

Poems and code.

Great quote from a Gizmodo article on Flickr:
"Web startups are made out of two things: people and code. The people make the code, and the code makes the people rich. Code is like a poem; it has to follow certain structural requirements, and yet out of that structure can come art. But code is art that does something. It is the assembly of something brand new from nothing but an idea."

Wednesday, May 9, 2012

Recruiting Great Engineers in Six Easy Steps

I gave a talk tonight on how to recruit great engineers ( a common pain-point for New York startups) tonight at the NYC Technology meetup. It was a great crowd.

In this talk, we discussed:
- What it takes to hire and retain great engineers in New York area.
- Qualities you should look for in a technical co-founder.
- Does it make sense to outsource?
- As well as other topics raised by the audience.

The slides are posted below:

Friday, May 4, 2012

A Node.JS web server storing data in REDIS

Node_redis ( is a great module that allows you to retrieve and publish data to REDIS cache from node.js apps.  The interface is really clean and simple.

Getting/Setting Data

// create a redis client
var redis = require("redis"),
    client = redis.createClient();
// error handler
client.on("error", function (err) {
    console.log("Could not connect to redis: " + err);
// set a value
client.set("key1", "value1", redis.print);
// close a connection
client.quit(function (err, res) {
    console.log("Closing connection.");

Pub-Sub Queue

var redis = require("redis"),
    client = redis.createClient()

// Subscribe to channel
client.on("subscribe", function (channel, count) {
    console.log("client subscribed to " + channel);

client.on("message", function (channel, message) {
    console.log("Received message " + message + " on channel " + channel);

client.on("unsubscribe", function (channel, count) {
    console.log("Unsubscribed channel " + channel);