搵女朋友一定要搵會去露營嘅

睇完呢篇講「找男朋友一定要找會露營的男孩」,對一個深資露營仔黎講,其實一個會去露營嘅女仔都可遇不可求。

間中脫離一下消費主義

去郊外,除咗交通費同為咗食好啲嘅食物錢,往往都唔使點使錢。 係大自然行下山、影下相、望下星、煮下野食,其實都係一啲可以有深入交流嘅活動。

成日都話「quality of time」比「quantity of time」重要好多。所以就算一個月去一次露營,經歷嘅分分鐘比會每個禮拜去逛商場嘅多。

Minimalist 生活態度

冇咗屋企嘅電飯煲、暖水爐、軟綿綿嘅床墊,甚至係一開就有嘅自來水(有時係要自己打水),會發覺其實生活其實並唔需要好多奢侈嘅野。一個能夠同你一齊過呢種簡單生活嘅女仔,一啲都唔簡單。

生活能力超強

要自己煮三餐、自己起天幕、自己搵路入營地其實唔易。而且除咗適應力之外,事前要花嘅預備心機亦都唔少。例如預備早午晚餐嘅食材、記得帶照明用品等等,心思唔慎密少少都好易出事。去得露營多,積累嘅會係生活中嘅應該常識。現今世代,「常識」有時已經變咗超能力。

分甘共苦

人在野外,難免會遇到唔少頗驚險嘅情況。雖然未至於會係比熊仁追殺,但小至被野牛圍攻,大至遇上山火,都有可能發生。面對呢類難題,首要條件係唔會嫌三嫌四,甚至發晒脾氣﹔如果能夠一齊落手落腳解決,實屬難得。同甘共苦過後,呢啲點滴都會留係兩個人難忘嘅回憶當中,化成感情嘅養分。

享受寧靜的樂趣

最終,搞咁多野,其實都係想遠離煩囂,跳入另一個天地,享受大自然帶來嘅平靜。輕輕鬆鬆煮下晚餐、認下星座影下星、甚至只係花一晚談天說地,如果你身邊有一個可以同你分享呢個時光嘅人,就記得要珍而重之喇 :)


最後

最後,其實呢篇都係Content marketing 黎嘅。

個product 就係我自己... 嘅一個朋友...
附上其另外一個重大優點(誤

跪求分享,如有興趣請PM (誤

comments powered by Disqus

「Scaling things that don't scale」- Airbnb 由1擴展到10的旅程

Airbnb 在 VelocityConf NY 2014 中講到一個很有趣的題目,叫做:「Scaling Things That Don't Scale」

強行中譯的話,好像會變得很別扭,大意就是:擴展那些不能擴展的東西(?)

但如果要非得要翻譯出來的話,我會這樣講:「由零到一之後,怎樣由一到十」

YC 的 Startup 心法提過,做Startup就是首先要:「Do things that don't scale」。一開始千萬不要把心機放到 Scaling 之上,而是集中火力盡快把產品做出來。

一旦業務成功而要面對擴充需求,當然是一件值得慶賀的事,但代表接下來經營者要準備迎接更多複雜的問題。

然而其實這已經是一個Happy problem,因為當要考慮到「擴展」時,就代表產品在市場上已經找到合適的落腳點。就是我們常說的由「0」來到了「1」

MVP 一開始就不是為「Scale」(Often MVP doesn't scale)

一件MVP 本身就是為了趕上時機而建造的。做MVP的過程中著重的是能最快捷起好的架構、最簡單的解決方式。所以大多數時間,都是去考慮如何減功能、用最低技術資源去實行。

這些方向往往跟完善的「自動化」完全拉不上關係;反而通常是用無盡的勞力去補完。就算生意多麼成功,這類方案的重點是:很快、很有效,但是沒有擴展性。(It doesn't scale.)

Airbnb 剛成立時,他們需要大量的旅館照片和資料,令到網頁有一定數量的旅館存庫。

那時候,他們選擇了用最耗人手(但最有效)的方式-派人逐一去城市裏數百家旅館探訪和拍照。這「貼地」的做法,讓他們極速獲得第一手最齊全的資料,為開始業務做了最佳的準備。

當然,當業務成功後,Airbnb 開始擴展到世界各地的不同城市,後期已不能夠單靠無限添加人手,去應付搜集全球其他城市旅館資料的工作量。這就是「Something that doesn't scale」的好例子。

圖:第一個版本的Airbnb
圖:第一個版本的Airbnb

他們還分享了一則趣事:剛開始時,方便起見,網站上的熱線電話其實是創辦人Brian的手提電話號碼。直至現在,Brian 還是會在晚上間中接到幾個查詢電話。

某天,當簡單的事情開始變得不簡單

到甚麼時候,才會發現之前一直流水行雲的 「don't scale」 方針開始出現問題呢?

或者,可以從一句資料庫 Query 說起。

某天,Airbnb的 Founder 希望總結一下所有預約所涉及的金額,就這樣向資料庫發出了查詢 :

select SUM(amount) from reservation

然後很「合理」地,伺服器當了。

原來,這段日子下來已經積下了過千萬個預約,要計算一次 sum 已經變成要在資料庫動輒翻出過千萬個紀錄。做個看似簡單的指令,結果反映出,同一件事情在不同階段會有不一樣的複雜性。

就像鯉魚王成長成鯉魚龍變得不好應付了。(好啦,他們本來沒這樣比喻。)

To rewrite or not to rewrite? 砍還是不砍掉?

當規模變大了,由要處理1000 人的負荷要跳到1000萬人的層次,就會不期然開始考慮重煉的問題。
重寫還是不重寫?這跟「分手還是不分手」一樣是個萬分艱難的決定。

首先我們來看看變大了的是甚麼。

首先,是幾何級數變大的流量,伺服器每天要處理的 request 變得更多,也代表著處理能力要大大提升。

然後是資料量:顧客的資料、預約的內容、旅館的照片,所用到的容量都會隨著程式的使用量倍增。

接著你僱用更多的工程師、建立更複雜的架構。

再由更多的工程師欠下更多的 Technical Debt。

直至有一天認真看一看當天的那個 Code base。

簡直是「士別三日,刮目相看」,然後你晴天霹靂,淚流滿面。

可是,重頭寫一個 Airbnb 聽起來好像已經不大可能吧。或許這樣分析一下。

隨著規模變得更大,產品不能承受的就變得更多:

  • 面對激烈的競爭,已經沒有三個月時間去重寫產品本身的元件。
  • 世界上每一秒也有旅客在旅館進行登記,你不能承擔30分鐘 Down time 帶來的損失(可能是妨礙幾萬名旅客的車程)。
  • 不能只靠「添加公程師」去解決問題-十個孕婦也不能在一個月內產出一胎。
  • 當代碼數量積累更多,欠下的「Technical Debt」也隨著增加。

所以,要解決核心的問題,就要從「核心的內圍」著手。

Focus → Measure → Invest

從「1」到「10」,也許比「0」到「1」安心,但也是不簡單的任務,Airbnb 歸納出來一套解決流程。

就是三步曲「專注、測量、投資」

三步曲的部分當中,也有不少有趣的實戰例子。
但這篇到這裡已經頗長,請容我下集再續XD


當然,其實你可以自己去看原本的講座,再回來跟我分享:

comments powered by Disqus

川居

且看看由一碗米線可以吹到多遠。

原來不知不覺經已九年。
川居,由一間食到變兩間,再變回一間。下個月,又歸於平淡,變成零間。

或者,年紀還輕,心目中沒有甚麼「老店」、「老地方」的概念。老人家都常愛指著一所所新店,說著: 「這裡以前是南昌戲院,有三級片上映啊...」旁邊的老媽:「喂!你跟小孩講這些幹麼?!」

也許這就叫「時代」。看著「譚仔」由一家開到變幾家,再由深水埗衝出全港。最近,連台灣和上海也有分店。記得當年(對,我也在話當年...),香港還沒有興起「雲南米線」的潮流。米線的潮流一興起,全港霎眼間就爆發了銀河沙數的「米線專門店」。直至近十年後的今天,能堅守的也許不剩下很多。

川居,也是那個時代的產物。

說到飲食潮流(只能用比較市井的角度,精品菜餚份子料理類的,尚未攀得到),親歷過比較厲害的有近期的「拉麵」熱、早陣子的「frozen yogurt」,甚至在米線之前,有由「快可立」引入的台式飲品熱潮。「熱潮」一般能捱上一兩年,已是不俗;能夠捱上近十年的,更不簡單。

川居店在先達的旁邊,附近比較常去的還有一家叫「越興園」的「越南嘢」。第一次吃川居,應該是中四五的時候。川居有清湯、沙爹、麻辣、酸辣、炆湯、蕃茄湯還有一種我忘記了的湯底。誠然,我還未試遍所有的湯底,但尤以沙爹湯為最愛。

畢竟要吃麻辣,我會選擇回去譚仔。
但這三數年的時光,吃川居可能比吃譚仔多。而吃辣的習慣也是在川居練來的。

說起老店,以前在旺角還有一家叫「金牌」的,就在以前「美而廉」對面。(well,即是現在的洗衣街Starbucks 位置)。 金牌吃的是$23 一個餐,有餐湯餐包餐飲,三餐分別是黑椒汁/白汁/咖哩汁配豬扒/牛扒/雞扒/龍利柳的nCr 組合。 說的是十年前,廿三蚊的確是好抵。

現在,川居的一個午餐$40配飲品,價錢不輸大市。但說實在,如果還在唸書,會不勝負擔每天$40的午餐。或者是因為地段鄰近先達,店租大概不會太低,才捱不下去。

讀到川居將於月底提前結業,特地過去吃個米線。鄰桌也是老顧客(但年紀不老,應該比我大三數年吧),在跟店員阿姐聊起天來,談起各自也竟有不捨,甚至講到「以後唔知有冇機會再見喇...」。

雖然川居不像譚仔,跑不出這條花園街,開不到滿地分店,但畢竟是去旺角,也會特地去吃個米線的地方。也依然是我心目中,跟譚仔一同為列在榜首的米線專門店。

以後路經此地,或許我會像「老人家」上身: 「這裡,以前是『川居』...」
我知道應該沒太多共鳴,正如老人口中的「八佰伴」和「街口間士多」一樣。

comments powered by Disqus

在中國甚麼都有可能是假的:XcodeGhost

正所謂:「在中國甚麼都有可能是假的。」

在大陸,甚麼假訊息假電話已經司空見慣,假software假apps亦隨處亦可見(很多來歷不明的破解版)。
豈料,最近去到一個程度:連Xcode 竟然都可以是假的。

這個黑客真的很高明,以開發者的公具入手,一個槓桿原理,就影響了過億名用戶。而這樣的一個感染方式,是用戶無可避免的-因為是在AppStore裏下載的程式也會受到影響。甚至連Apple也不以為然有這樣的一個入侵模式。

簡單來說,Xcode 是Apple 官方釋出讓開發者編寫iOS 和OSX 應用程式的開發軟件。
基本上整個開發流程,包括:初始化、編寫程式邏輯、使用者界面、編譯代碼、簽署、軟件發佈都可以一一在XCode裏完成。

以往的入侵方式:

1) 開發商 ----[App]-- Appstore
2) Appstore ----[App] --- 入侵者
3) 入侵者---- [有問題的App] --- 發佈到 Forum / 非官方平台
4) Forum / 非官方平台 ---- [有問題的App] ---- 用戶
5) 用戶 ----[資料]---- 入侵者

>:)

而這次被稱為XCodeGhost的入侵,則是採用完全不同切入位置,也是為甚麼能一次過影響到龐大用戶的根本原因。

好啦,問題來了:

正式版Xcode可以在甚麼地方下載到呢?

答案是Apple Developer的官方網站。

問題二:

那為甚麼會有開發者在非官方的平台下載XCode呢?

提示,以下有大約1000個受影響的Apps的清單,請找出共通之處:

(節錄)
网易云音乐 2.8.3
微信 6.2.5
讯飞输入法 5.1.1463
滴滴出行 4.0.0.6-4.0.0.0
滴滴打车 3.9.7.1 – 3.9.7
铁路12306 4.5
下厨房 4.3.2
51卡保险箱 5.0.1
中信银行动卡空间 3.3.12
中国联通手机营业厅 3.2
高德地图 7.3.8
简书 2.9.1
开眼 1.8.0
Lifesmart 1.0.44
网易公开课 4.2.8
马拉马拉 1.1.0
药给力 1.12.1
喜马拉雅 4.3.8
口袋记账 1.6.0
同花顺 9.60.01
快速问医生 7.73
懒人周末
微博相机
豆瓣阅读

相信不言而喻了。

由於「其他國家」連接Apple 官方網站的網絡經常性不穩定,以致不少「其他國家」的開發者要下載XCode時苦不堪言。
這時,在各大Forum上的及時雨就出現了:把Xcode 上載到百度雲上,倚仗內聯網的秒速,造福大眾。

以下就是中招方式:

1) Apple --- [Xcode] --入侵者
2) 入侵者---- [有問題的Xcode] --- 發佈到 Forum / 非官方平台
3) Forum / 非官方平台 ----- [有問題的Xcode] -- 開發商
4) 開發商 ----[有問題的App]-- Appstore
5) Appstore ----[有問題的App] --- 入侵者
6) 用戶 ----[資料]---- 入侵者

well,用戶其實真的沒甚麼可以防禦的法子。

但其實開發者方面是可以著手預防的:
1) 下載官方的XCode (其他國家就RIP了)
2) 如必要在Forum / 非官方平台下載,冒必要檢查Checksum
(利申:其實上次同事Air Drop 給我XCode時,我也懶得去Checksum)

總結一下網民認為幾個應當批評的單位:
一,是開發商不在官方下載Xcode;
二,是蘋果監管不足令這些程式成功上架、以及未有為「其他國家」提供穩定連接;
三,「其他國家」的防火牆和網絡生態。

到這裡,試想想若果連AppStore的生態在Apple相當謹慎的監察下也讓入侵者有機可乘;Android方面(特別是Google官網受到絕對封鎖)的情況應該嚴重萬倍。

現時網絡界主要引領技術的網站:包括Apple、Google、Facebook、Twitter、Github等,相對受到不同程度的封鎖,作為使用者很用易便找到替代品(人人、微博、微信等),但是在開發者角度去看,查找官方Documentation和參考討論方面也大受限制。

這幾年間,以上的機構就已經推行了不少嶄新的技術:AngularJS、Polymer、GoLang、ReactJS、Flux等等,以及不少在Github上的開源項目。
這樣的一個「封國」,令國民接觸最新科技的機會大大受阻,就如明朝「海禁」一樣,令整個民族固步自封。

當然,除了窒礙發展外,也促使如XCodeGhost般附合國情的危機發生(然後可以大大聲鬧Apple監管不力)。
網絡生態如此病態,更別妄想發展一個甚麼共同進步開源社群了。

後記

XCodeGhost 的原代碼 (以及作者聲明)
https://github.com/XcodeGhostSource/XcodeGhost

就這樣結案了啊?!

comments powered by Disqus

西伯利亞 • 俄羅斯之旅 • 一

去俄羅斯,有好多方法。

西伯利亞鐵路」應該算是其中一種特別方法。
眾所周知,俄羅斯所佔的版圖橫跨歐亞,合共11個時區。而且大部分地區均為極地,其中包括有名的西伯利亞地區

好啦,先查一下Wikipedia:

氣候上屬亞寒帶針葉林氣候,成因是西伯利亞的緯度很高,氣溫非常低,這些都是西伯利亞的發展及人口增長的障礙。西伯利亞的冬天很長,其中月平均氣溫低於0攝氏度的月份至少有7個,每年1月時更加形成北半球的寒冷中心,同時成為影響整個歐亞大陸冬季季候風的主要發原地。

真正要挑戰的話,好像應該冬天過去,所以這次只是輕嘗小碟的夏日行程。
冬天的風味應該會完全不一樣。

由中國國境,即北京出發的西伯利亞鐵路路線有兩條,分別是K3和K19。其實並不是真正的全條「西伯利亞鐵路」,而是在Ulan-Ude那裡「後join」(稍後會提及),大概還是會有主線的80%。

「真 • Trans-siberia」線,則是由俄羅斯遠東城市海參崴(Vladivostok),橫跨9,289 km,貫穿整個俄國西伯利亞地區直通莫斯科。


黃色線是K3、藍色線是K19;紅色則是海參崴至莫斯科

起點自北京的這兩條線路,兩者的起點與終點皆同,但當中的分別就是所穿越的城市和國家不一樣。
K3 為Trans-Mongolian,顧名思義就是經蒙古國過境,穿越首都烏蘭巴托(Ulaanbaatar)才進入俄羅斯。如果時間許可,停頓一下蒙古也會是不錯的體驗。

K19 則為Trans-Manchurian,是經內蒙邊境滿洲里(以前是滿洲地域)過境往俄羅斯的,因此並不會途經蒙古。

K3 全長 7,622 km 共6日5夜; K19 全長 8,986 km 共7日6夜。

另外,K23 是另一條從北京往烏蘭巴托的Trans-Mongolian線路, 全長 1,500 km, 只需29小時。直入蒙古的朋友有多一條路線可以選擇。

票務

買票方面,火車票均可在國旅買到,但是登上後,卻發現這個網的表格是壞的(詳情可以開個Developer Console來看看),form 填好了卻不能send出去 -_-

結果,我們只好派出駐北京大使直接前往國旅位於北京的分行買票。
當然也可以選用其他代理代購,但價錢會比原價貴起碼六七成。

可是,購票上也有另一個實踐上的難題,就是「只能在出發地點的所屬國家才能買到該張車票」,即是如果想要在俄羅斯某城市(例如海參崴)出發,則要在俄國買票了。

至於俄國,也是有網上售票的,網址是: rzd.ru
話說參考資料指出訂票的網站是只有俄文版,著實有點擔心。但事隔兩年,原來rzd的網站上已增設了英文訂票版面,不會俄語的朋友要訂票也算是容易了不少。(雖然寄過來的電郵還是只有俄文)

由於K19是國際線,所以車票的等級只有一、二等,結果我們選了較便宜的二等;而之後的那班是俄羅斯國內線,因此除一二等外,也有最便宜的三等票可以選擇。至於三者也均是臥舖,並不像青藏鐵路般,幾晚的車程也有極chur的硬座...

考慮到日子和票務,最終確定了的行程:

香港 - 北京
北京- 伊爾庫次克(Irkutsk)
伊爾庫次克 - 莫斯科
莫斯科 - 香港


由北京到伊爾庫次克,三人/二等車


第二程的E-ticket,伊爾庫次克到莫斯科,這次是三等車了

接著就是一訂好接下來的住宿和機票。
住宿大多數都是在 booking.comairbnb 訂的。

行程

香港 17/8/2015

出發,施施然的抵達香港國際機場,匯合Vicky打算check in。
收到「Wait for you to check in?」的whatsapp 時不以為然,回覆了「好啊」之後就過去Counter K。
拿出passport在自助櫃枱辦手續時,竟然沒有紀錄。

赫然發覺我沒有訂到機票!!!!!(這是以為會一次過訂兩張機票的後果...)

結果,在Staff哥哥非常不helpful的沒怎協助下,唯有坐到一旁改用手機上網即場買機票。
由原本的HX304改為HX332,所以要前後腳到北京了。

附送了最特別的經驗:可以送機送到底,送到禁區裡的巴士站。

由於北京有空管,航班大Delay。

Vicky 那班也Delay了,不過只是由八點多Delay到十點多。
我的那班本來是2125登機的,卻Delay 到 0030。


等了好久也未登機

結果是餓著到凌晨一時多才吃到晚餐...
後來有不少朋友反映,大陸空管向來是司空見慣的現象,尤以首都機場和浦東機場為嚴重。

還好火車班次是翌晚十一時,即便delay十小時也不怕。

北京

幾經辛苦方在凌晨三時多抵達北京,卻因為北京上空有雷暴而繞了幾個圈才降落。
真熱烈,以雷雨來迎接啊。

早前Jenny已經提醒過,千萬不要坐路上兜截的的士,要坐的話就直接去的士站好了。

果然一出機場,便要憑霸氣穿過纏繞的司機,直接出去車站。接下來的目的地是「北京站西街」,機場外面便是車站,竟然發現有適合的巴士。

走到過去巴士站台詢問時,的士大佬還未放棄遊說,但巴士的票價只是廿一元啊,而且五點十五分就有下一班了,當然坐巴士啊。
當然,這時下著大雨也是一個考慮。

登上巴士,連我只有三名乘客。

其中一個是離開了中國五年在非洲做生意剛回來的大漢,不知道怎就聊起上來,但其實他的北方口音極重,事實上很費力也沒聽懂幾句。

車程大約半個小時就到了,就在北京站對面下了車。


凌晨五點北京站外面擠滿避雨的人群

然後就要找訂好的旅館;還好有預先訂到,不然連床位也沒有。
好啦,六時來到,十二時便要check out...

稍稍睡了一覺後,竟然放晴。
那麼幾小時前的狂風暴雨是在為旅途增添經歷嗎?-_-

匯合在宿舍過來的 Jenny 和 Vicky 後,先去吃點東西,再在北京逛逛,然後準備晚上正式登上火車出發。

不過時至現在,好像已經經歷不少風風雨雨,感覺上已經不像是第一天了。最崎嶇的旅程竟然是香港到北京這一程。

畢竟對上一餐已經是飛機上的「晚餐」了,接下來就先吃點東西吧。行逛之間不知怎想出了吃北京烤鴨的念頭,反正來到北京就試試好了。

本來在北京吃飯也沒甚麼好記錄的,只是點了北京烤鴨後,發覺配料竟然沒有白砂糖!竟然沒有白砂糖!竟然沒有白砂糖!!(很重要所以說三遍。)

在再三呼喚下,餐廳竟然說它們沒有白砂糖。已經開始懷疑是不是我們普通話又那麼差的關係連「白砂糖」都不能拿到手,「服務員」就一手拿了包小包倒到我們碟上那一格空格:「試一下爆炸糖啦。」

甚麼配搭?! 竟然是傳說中的爆炸糖?真的為此平凡的烤鴨添上不平凡的口感...


真的隨手就拿了一包爆炸糖出來...


儘管一試...


香港風格的北京地鐵站

結果在北京買了些乾糧和清潔用品。晚上11 時的火車,要回到今天我住旅館的那邊。

還是有點磨磨蹭蹭的差不多十點尾才到達火車站,還要進行安檢甚麼的(還好這安檢實際上有點hea)。

又,由於整天滿腦子想吃蘭州牛肉麵的關係,在登車前的最後幾分鐘飛奔去買了三碗。
絕對可能會「贏咗個牛肉麵輸,左程火車」... (Facepalm)

鐵路

來到接近尾端的車卡。

這裡開始,這卡的車組人員已經是全來自俄羅斯,所以,由驗票開始已經不明所言,只能簡單英語和指指點點來溝通。

上車,我們是一路走來第四個包廂(沒想到二等的包廂已經很漂亮,好像已經跟西藏的一等差不多),而我們三個人就獨佔了四人的包廂,房間位置更變得相對寬倘。

整理一下就可以開始晚餐了。就是蘭州牛肉麵。


晚餐,還有在北京買來的水果

列車


列車的外觀

或者大家還是會有「長途火車很殘舊」的概念,但其實在2002年完成電氣化之後,列車都更新到非常舒適的水平(特別是K19這樣的國際列車),而且有恆溫系統,所以冬天才不至於會凍死。

每列車會有兩名列車長輪班,主要工作有:維持熱水供應、分發物資、在適時(如過境或到站時)叫醒你、點齊人數和清潔廁所等等。


我們車卡的其中一名列車長,是先冷後熱的叔叔

車程中有時會經一些大站,是可以下車遊逛的;有時會經過一些站只停兩三分鐘,就算玩命也應該不至於在這些站下車了。

列車上好像第七列是餐車,一直到出境之前都是中國這邊營運的,提供著熟悉的中餐。


餐卡,那個花瓶...在西藏的列車上看過

車上主要都是在維生(主要就是吃和睡,我睡特別多),還可以看看喜歡的書和電影,還有萬能的啤牌來打發時間(當然也是玩了不少German Bridge)。


即沖薯蓉也是賴以為生的好東西

到這裡還未到戲玉-西伯利亞和俄羅斯,下篇應該會開始講到俄羅斯南部城市伊爾庫次克了。


伊爾庫次克夜景,是西伯利亞地區內最繁華的城市

希望全篇可以兩萬字內寫完吧。

(待續)

comments powered by Disqus