Thursday, February 17, 2011

矽巷啁啾:朱克伯格以外的事(二)

AirBnB的故事在 07年 10月開始,那是 IDSA( Industrial Designers Society of America)在三藩市的大型展覽會前夕。創辦人之一的 Brian Chesky辭掉原有的工作,搬到三藩市和朋友 Joe Gebbia一起居住。目的是到矽谷附近的三藩市,嚐嚐創業的滋味。

當時三藩市的酒店都因為展覽會全部爆滿。 Joe和 Brian覺得,這個時候出租家裏多餘的空間給短期住客,應該有市場。二人建一個簡單的網站,讓附近的人可以出租家裏的空間給參加展覽會的短期旅客,當中包括 Joe和 Brian家裏的三張氣墊床。網站一做好,兩人就以電郵主動聯絡一批與工業設計有關的博客。

不消幾天,一些和展覽會主題有關的大網站,就出現了有關 AirBnB的報道。 Joe和 Brian也如此幫自己找到 3個短期租客,賺了約 1000美元的租金。更重要是兩人體驗到短期租務市場的潛力,確立了日後透過社交媒體宣傳方向。

展覽會結束, Nathan Blecharczyk加入 AirBnB。他們用同樣的方法,攻打 08年 SXSW藝術節。宣傳同樣由博客網站入手,先找小博客,報道過就找多點人看的博客,報道一輪就聯絡更多人看的網站。如是者, AirBnB早期的宣傳方法便成形。

吃自己狗糧 了解客戶感受

那時的 AirBnB還有一個問題,要找住房,其實早就有 Craigslist和 Couch Surfing。 AirBnB當時的報道雖多,但只得幾十間住房,要擴張就得找個令自己與別不同的地方。

Joe和 Brian在這個時候,用自己的網站租了一間房來住,目的是了解客戶用 AirBnB租房整個過程的感受。矽谷稱這種做法做吃自己的狗糧。

這樣租間房,去時和房東談得投契。到了吃飯,氣氛還是融洽,但很容易就談到租金。一談租金,吃飯變成買賣,雙方就由結識新朋友變成擔心對方的信用。一下子,整個旅行、租房、看藝術節給人的感覺變得很凉薄。

這樣吃一吃狗糧, AirBnB團隊學到要避免在租住過程中談到租金, AirBnB就得要求租客先行付款。如此房東可以更放心放租,租客亦不會再受租金困擾, AirBnB亦可以從中收取佣金。比別人優勝的用戶體驗,成為 AirBnB的特色。

(刊於 2011-01-29 香港蘋果日報)

Tuesday, February 15, 2011

Some performance tests on gevent and libevent latencies

I set out to test the bare minimum reaction times for gevent and its underlying libevent library this morning. The exact versions used are gevent 0.13.1 and libevent 1.4.2 - not the most updated but fairly common.

The testing method I used was to run a TCP client and a server in the same process and let them ping-pong each other, and measure the rate of ping-pong requests. What this means is basically the absolute best reaction times for gevent and libevent in terms of TCP socket events. As a control experiment I also did a gevent queue ping-pong between two greenlets.

The source code of the two simple tests can be found below:

libevent test case:
http://tixxme.com/~martinkou-public/benchmark.c
gevent test case:
http://tixxme.com/~martinkou-public/benchmark.py

And here are the results -

Macbook Pro 2007 (2.2GHz Core 2 Duo/4GB RAM/OSX 10.6.6)
Martin-Kous-MacBook-Pro:testgswitch martinkou$ ./benchmark
25441.49 roundtrips per second
Martin-Kous-MacBook-Pro:testgswitch martinkou$ ./benchmark.py
test_tcp_socket: 8722.40 roundtrips per second
test_queue: 265788.63 roundtrips per second

Xeon Server (Xeon X3450/8GB RAM/Ubuntu Server 10.04)
martinkou@hydrogen:~/Development/levent-test$ ./benchmark
105852.88 roundtrips per second
martinkou@hydrogen:~/Development/levent-test$ ./benchmark.py
test_tcp_socket: 14124.71 roundtrips per second
test_queue: 430830.17 roundtrips per second


So, despite gevent's awesome performance among all Python concurrent I/O libraries - it still has plenty of space for improvement. This is actually a pretty good news for the developers of gevent and similar concurrent I/O libraries in Python. Because it means the more awesome things are still to come.