英雄所见略同

Relying on complex tools to manage and build your system is going to hurt the end users. […] “If you try to hide the complexity of the system, you’ll end up with a more complex system”. Layers of abstraction that serve to hide internals are never a good thing. Instead, the internals should be designed in a way such that they NEED no hiding.

依赖复杂的工具来管理整个系统的结果是给最终用户带来恶化的体验。[…] “如果你尝试隐藏系统的复杂性,于是就得到一个更加复杂的系统。” 为了隐藏内部机制而设置抽象层并非良好的架构方法,而应该把内部机制设计得精良而无需隐藏。

— Aaron Griffin

在 k8s 中开一个 shell

经常需要一个远程临时的 shell 做些什么事,比如实验一下某个需要运行一晚上的脚本,用完环境就扔了。在 AWS 或者 Azure 上开一个新的 VM 总是感觉不够快捷,也不想专门浪费一个 VM 的资源为这个目的留着。

还好我有个 Kubernetes 下创建 pod 的权限,这下就方便多了。

首先创建一个 shell.yaml 来描述一个可以运行 bash shell 的 pod(容器镜像用的是官方的 bash 镜像):

apiVersion: v1
kind: Pod
metadata:
  name: shell
  labels:
    purpose: shell
spec:
  containers:
  - name: shell
    image: bash
    command: ["tail"]
    args: ["-f", "/dev/null"]
  restartPolicy: OnFailure

然后执行下面的命令来创建这个 pod:

$ kubectl apply -f shell.yaml
pod/shell created

成功之后,就可以通过下面的命令获得一个远程的 shell 环境了:

$ kubectl exec -it shell -- bash --login
shell:/#

这个新创建的环境是基于 alpine linux 的,自然什么工具都没有自带。需要什么工具,只要用 apk add 命令安装就好了。我因为工作需要一般都会安装下面这些工具:

apk add git
apk add nodejs-current
apk add npm
apk add python3

如果想从或者向这个 pod/shell 复制文件的话,用下面的命令就好了:

kubectl cp ... ...

又一个开始

人们总是说迈出第一步是最难的。其实不对——最难的是第二步。往往接触一个新事物的时候,人的好奇和兴奋大于紧张和恐惧。各种名人传记里说第一步难的,都是得瑟,真的。而当第二个机遇摆在面前的时候,却早已习惯了第一步驻足在的地方。习惯了那里的人和物,习惯了各种形色,再也迈不出那双肥腿。《Inception》 里说,当在一个梦里久了,你会忘记当年梦想,然后“困”在那个层次,很难再走出来,直到死亡。现实也是如此。一个人从学校里出来的时候,两手空空。只有怀揣一把子冲劲,从一个结束走向另外一个开始。如果没有想过计划下一个结束和开始,那么一定有一天会突然惊醒,然后“掐指一算,都已是风烛残年1”。

今天看新闻,说 Google 换 CEO 了。Eric 在给这个公司贡献了十年之后,回到了二把手。人们早已习惯了 Google 各种创意的鬼点子,结果前进变成了定格,匀速发展成为了静止。当习惯成为了主导,丢失的就是方向。那么一切改变都是必要的,无论好坏。

安居乐业,满于现状,那是退休以后的事。只有不惧怕改变,才不会被时间打败。

1萧乾《枣核》

三年

在天空中,同是一颗金星,早晨人们叫它启明,夜晚人们叫它长庚。我愿意选择最佳的角度,将生命的长杆伸进茫茫宇宙。不管钓上什么,都是我的。把酸苦留在心里,将幸福写在脸上。默默相对的,是那最虔诚的感动。

Life is Like a Boat

很久没有听到什么令人感动的歌了。最近看《死神》,突然发现喜欢上了片尾曲。好听的歌应该就是这样,简单的旋律加唯美的歌词。

Nobody knows who I really am
I never felt this empty before
And if I ever need someone to come along,
Who’s gonna comfort me, and keep me strong?

We are all rowing the boat of fate
The waves keep on coming and we can’t escape
But if we ever get lost on our way
The waves would guide you through another day

Far away, I’m breathing, as if I were transparent
It would seem I was in the dark, but I was only blindfolded

I give a prayer as I wait for the new day
Shining vividly up to the edge of that sea

Nobody knows who I really am
Maybe they just don’t give a damn
But if I ever need someone to come along
I know you would follow me, and keep me strong

People’s hearts change and sneak away from them
The moon in its new cycle leads the boats again

And every time I see your face
The ocean heaves up to my heart
You make me wanna strain at the oars, and soon
I can see the shore

Oh, I can see the shore
When will I see the shore?

I want you to know who I really am
I never thought I’d feel this way towards you
And if you ever need someone to come along,
I will follow you, and keep you strong

And still the journey continues on quiet days as well
The moon in its new cycle shines on the boats again

I give a prayer as I wait for the new day
Shining vividly up to the edge of that sea

And every time I see your face
The ocean heaves up to my heart
You make me wanna strain at the oars, and soon
I can see the shore

We are rowing the boat of fate, but the waves keep attacking us
But isn’t that still a wonderful journey? Aren’t any of them a wonderful journey?

This is it…

24 号因为身体微恙,没有参加当天的全球 Thrill The World 的活动。排练了一个月,很可惜。所以今天把全部的致敬都放在了这部纪录片上。本来是 28 号首映,但是惊喜发现今晚九点就有第一场了。于是安静地呆在办公室里加班,准备到时间准时出发去影院。

多谢小 A 提前帮忙买了电影票,以防人多爆场没有位置。后来才发现这个担心是多余的。虽然观众人数跟其它好莱坞大片不能比,但是还是能看到一些粉丝。电影还没有开始,就四处发 MJ 的 Sticker 贴在身上。影院也贴心地制作了钥匙链当作首映的礼物。

本来一开始那些粉丝看上去还要准备映后唱歌跳舞一番以表达敬意,但是近两个小时的放映之后,看到的只有沉默。对于我这个 15 年的老麦粉来说,绝大部分排练都似曾相识。感觉看到的不是新鲜的抢夺眼球的舞台特效,反而有一种感觉,就是他曾经回来过。

一个人活了 50 岁,却一丝不苟地从事了一个职业 45 年。片中有一个演唱会合作的歌手评价说,没有任何一个瑕疵可以逃过 MJ 的眼睛和耳朵。任何一错误都要更正从新来过。一切都是为了 Fans。熟悉的舞蹈和旋律,让人感觉时间从来都没有前进过。然后突然地,他就走了。喜欢麦当娜在之前MTV ‘09 的颁奖开幕上说的:Michael Jackson 前无古人后无来者,他当之无愧的 King of Pop。

image

Timeless 可啦思刻

听方大同有一段时间了。一开始听那独具特色的转音还觉得不错,直到后来听到没感觉,甚至有些厌烦。只是在开高速时来不及换歌的时候,才勉强连续听几首不疼不痒的。今天偶然听了他的翻唱专辑《Timeless 可啦思刻》,皆因为其中那首翻唱 MJ 的《Bad》,然后觉得原来好听的歌应该是这样简单的。

image

1 – You Are The Sunshine Of My Life

第一次听这首,其实并不是 Stevie Wonder 的原唱。而是 MJ 在很小的时候翻唱过的录音。听大同的演绎,加上黄韵玲的那装嫩的 Background,感觉不俗。制作人蛮有心的,是接 MM 出去约会时人家款款坐入副驾时第一首应该听到的,很是浪漫。

2 – Nothing’s Gonna Change My Love For You

第一感觉是一个阳光沐浴的下午唱给 MM 听得一首歌。可惜编曲不是 Unplug,否则那突现的 Vocal 会更加迷人。有机会我要学会这首。

3 – Bad

从来没想过评价神的作品。听了只会让人难过。Gone too soon……

4 – 狂潮

这张专辑里唯一的一首粤语作品。说实话,可能是因为大同在夏威夷长大的原因,他的广东话的歌曲听起来从来都是带着西洋味的。能听得出来大同在这首歌的演绎里尽量减少那种 R&B 风,唱得很有诚意,应该会打动很多来自南方的 MM。

5 – La Bamba

最喜欢的南美风 + 爵士 + 不插电就是这首了,仿佛回到了圣地亚哥。到了后来萨克斯还有钢琴互咖的环节,让人完全有进入了一家高档墨西哥餐厅的感觉。其实,开车载 MM 兜风的时候听这首也不错。听不懂歌词,所以不做更多评价。

6 – 红豆

菲的经典曲目,被大同一唱又是另外一番感觉。如果你会吉他的话,然后加上那么一点点他的灵乐口音,这又是一首泡妞的杀手锏曲目。虽然中间有一段让人又有了文首那种不痛不痒的感觉,但后来 Bridge 回来的那段效果还是蛮让人刮目的。帅哥们应该学会这首以后,在清晨 MM 还没醒的时候打电话过去唱,必杀。

7 – Georgia On My Mind

如果听完上面的 La Bamba 然后直接跳到这首舞曲,一定会有一种北上加州的感觉。除此之外,并没有太多其它感觉。开高速的时候会跳过吧。

8 – 记得

可能听歌不多的缘故吧,一开始听到这首竟然没有听出来是阿妹的歌。大同改的实在太多了,不过我要说改的不错。特别是从颓废启承转折到假音然后再到暇意的那种感觉,让人回想倒带再听一遍。应该是一首洗澡的时候或者装电灯炮的时候让 MM 听到的歌,必杀。

9 – Wonderful Tonight

终于有一首感觉像 KTV 应该点到的歌了。像一开始的评价那样,简单的歌才好听。生日、婚宴、派对、追 MM 的晚上唱这首应该蛮应景的吧。

10 – Moon River

对我来说听歌名次数最多,听歌曲本身次数最少的一首歌。应该算是名曲吧,可是一直没有什么感觉。不过让他这么一唱,还是听出点味道的。Background 那个 Jazz 吹得挺赞。早上唱完《红豆》,晚上应该唱这首催 MM 睡觉了。

^_^

Gone Too Soon

早上正在办公室调试一段代码的时候,听到隔壁的同事说:“迈克尔杰克逊死了。”第一反应不是我们常说的那个迈克尔杰克逊,但还是随便搜了一下关键字“Michael Jackson Died”。当时网络上还没有传出太多的消息,所以搜到的是某个卖啤酒的同名的人死于65岁的旧新闻。于是,一笑了之。

下午,公司里的邮件列表和经常去的几个论坛开始流传同样的消息。再过一会,MTV、CNN、FOXNEWS上慢慢地看到更多的消息。我还在想,如果是《太阳报》那种狗皮膏药的小报传一下野闻也就算了,这些大新闻网怎么还这么不谨慎呢。直到再迟一点,看到他的兄弟出来发布新闻的时候,才开始觉得这不像是在开玩笑了。

就好像张国荣于愚人节坠亡一样,一切都很巧合。还有几个星期的回归演唱会,还有两个月的51岁大寿……可是,Gone Too Soon

开始听MJ,还是在初中15岁那年。那个中午吃完饭回教室,看到电视上在放一个MTV,是一个很奇怪的人在跳埃及舞蹈。于是瞬间就被那样的节奏吸引了。同学告诉我说,那是MJ,他在唱 Remember The Time。于是,那个暑假买了他一堆磁带,从吉尼斯纪录销量第一的《Thriller》到当时刚刚发行的《HIStory》,一发不可收拾。经常会跟一群同好中午偷偷跑到舞蹈教室去模仿他特别的月球漫步,还有旋转。

他是我唯一崇拜的艺人偶像。他的歌曲我会唱的加起来超过所有其他我会唱的歌的总合……可是,Gone Too Soon

从12年前第一次听到 Remember The Time 到今天早上开车上班,我一直在听MJ。我最早听磁带,后来听CD,到后来的MP3,一定会有他的全部专辑。还记得17岁偷偷在房间里不睡觉,听那5张CD听了一宿,第二天黑着眼圈去上学。还记得在加拿大读高中的时候,新年晚会在众人之中跳MJ 30分钟最后全场鼓掌。这个周二,公司组织大家去郊外的公园里吃喝玩乐。当时的一个DJ现场放了 Billie Jean,差点还跳了起来。写到这里,打开手机上的播放器,才发现早上得知噩耗之前听的最后一首也是 Remember The Time。一切都是巧合。

不管媒体对他有什么样的评论,无可置疑的是,MJ标志着一个时代。他的名字,和可口可乐一样,都是美国文化的代表。无论他的音乐、他的慈善,还是他的各种传闻,到此画上了一个句号。人都有离开的那一天,可是他的离开却那么意外。值得庆幸的是,我和MJ曾经同一个时代,虽然这个时代于今天刚刚结束。Gone Too Soon…

Like A Comet
Blazing ‘Cross The Evening Sky
Gone Too Soon
Like A Rainbow
Fading In The Twinkling Of An Eye
Gone Too Soon
Shiny And Sparkly
And Splendidly Bright
Here One Day
Gone One Night
Like The Loss Of Sunlight
On A Cloudy Afternoon
Gone Too Soon
Like A Castle
Built Upon A Sandy Beach
Gone Too Soon
Like A Perfect Flower
That Is Just Beyond Your Reach
Gone Too Soon
Born To Amuse, To Inspire, To Delight
Here One Day
Gone One Night
Like A Sunset
Dying With The Rising Of The Moon
Gone Too Soon

Thank you, Tim Hortons!

hpim0035学 IT 的人,给绝大多数人的形象可能就是左手披萨、右手可乐。而这种印象往往来自于某个软件公司老板的自传。披萨我经常吃──便宜、省时间,ITB 的人没有不喜欢的。不论是校内的 Pizza Pizza,还是校外的 Gino Pizza(右),基本上所有的品种都吃遍了。有时侯看着手中花花绿绿的意大利馅饼,总幻想若干年后某天是不是要写个自传也自我唏嘘一番。

至于可乐,只会在买麦当劳套餐时一不小心忘了叮嘱收银的帅哥美女把饮料换成冰茶的时候才会喝到。我主观上不讨厌可乐,不过被一些朋友灌输一些“可乐有害论”久了,自然而然地多了那么一丁点抗体。相比之下,咖啡对人脑的刺激我相信比可乐更大,据说还会上瘾……分不清这是咖啡的优点还是缺点,不过我记不起从什么时候开始,咖啡成了我的首选;平常除了住所和办公室,最经常去的地方就是附近的 Tim Hortons

学校西边的 Tim Hortons 不远,走路 5 分钟就到。一个不大的餐厅模样,也不会经常人山人海。人最多的时候,往往是春末和年底。那个时候考试最多,学生们自修都找不到地方,自然会向这类咖啡屋靠拢。以前住在市区,晚上 12 点以后学校那边搭不到回家的巴士,就需要早点回市区。回到市区又不想回家──家里有吃有喝有睡有玩,根本无心学习──可是又没有哪个地方有桌子椅子可以写作业。那时路过 Tim Hortons,就看见学生模样的在里面奋笔疾书,然后有一天就被同化了。头一次在里面复习功课,依着咖啡因的作用一下子熬了一晚上,补回了很多上课听不懂的重点,很是欣喜。对于有人说我小资,我从来都是反对的。这只不过是一个典型的实用主义者找到的一个有效的学习途径。于是就养成了这样的习惯,一直到现在。

很惭愧从小做什么事情都不会有很大的毅力,母亲为了让我完成一件事情,经常需要变着花样来哄我。即使到现在,也经常会变着环境去温习功课,否则就会六神无主人在心不在。所以有时侯路上碰到熟人问我去哪儿,我会说我去TH。因为 Tim Hortons 叫 TH,学校的 Thode Library 也叫 TH,都是能让我坐下学习的地方。安静的地方我呆闷了,就会换去喧闹的环境。我发现,其实有时侯周围人声吵杂的时候,我反而能静下心来看书。因为他们讲的事情跟我所要想的事情是不同的领域。脑子就像一个笼子,放了一只老虎在里面,就会整个笼子蹒跚来回;放了两只或两只以上的老虎,每个老虎就会割据自己的地盘,活动的范围也自然缩小。想法,就像这些老虎一样,当你的脑子是空的时候,就会飞来飞去;当你腾出来一部分注意力去吸收周围街坊的你长我短的时候,大脑能活动的范围已经被其它声音占据,而书本上需要注意的知识要点就会更加明显。中学的时候,老师告诉我马克思为了锻炼自己的注意力,专门跑到声音分贝级很大的地方去看书。现在看来,可能马克思也可能跟我是同流罢了。

去 Tim Hortons 的人,年长一点的,都会买 Whole Black;我这种年轻的,一般都要 Double Double(加糖加奶)的。我们有句成语叫“忆苦思甜”,或许老人家喝了一辈子 “Double Double”,想从纯纯的苦咖啡里弥补人生路漫的沧桑吧。可乐这种纯糖的东西,喝的最多的也只有小孩子吧。一杯咖啡,一个窗口;窗外人来车往,日落月升,难怪有人要说我小资呢。最喜欢喝的是“加糖加奶”,最喜欢坐的地方是窗口,最喜欢吃的甜点当然也需要有同样的感觉。橱柜上那么多品种,我经常点的是 Chocolate Croissant。不想描述那是什么味道,也描述不出来。即使描述出来,吃过的人也不一定会赞同。照片在下面,一图胜千言。

hpim0040

已不是我(被删除的话)

之前删了下面的一些话,是因为想到 Seven 曾经评价我是自卑与自信并重,生怕贴出来再有人跳出来给我扣一个自恋的帽子。后来想想,打自己的字,让别人说去吧。

十几年前养过一只很小的小狗,叫多多。我很喜欢跟多多玩。有一次它想爬到沙发上,可是沙发太高,它爬不上来。每次都在快到达上面的时候掉下去。多多很沮丧,不过它还是决定做最后一次尝试。在它马上又要滑下去的时候,我用手推它——朝它滑下去的方向。多多很着急,就更加用力。结果我一松手,它就冲到了沙发上。人也一样,经常都要去攀爬新的高点。我相信,挫折和打击比鼓励可以更加促进一个人的成长。我明白,并不是什么时候都会有鼓励这种东西存在。人生苦短,我们没有时间去感慨去追忆然后前进。只有更快地赶超自我,因为自我才是最大的敌人,其它一切如空气。

遇到新的阻力,有些人兴奋,有些人沮丧。世界其实就是由这两种人组成。属于哪一种人,完全取决于自己。我有一些很有想法的朋友,我看得出来他们是今后的精英。遇到这样的朋友,从某些角度来说我会很害怕,因为我看到的是竞争力。但我很庆幸我能看到这样实力的人群存在,而有这样的朋友确实很让人开心。每天早晨醒来,想到有这样一批未来精英的存在,都会无比兴奋。安排好时间,仔细策划每一步,然后解决每一步遇到的问题,他们步步为赢。起点在哪里并不重要,重要的事速度和质量。有了速度和质量,就可以达到既定的目标。

还有一批人,他们看不到时间的存在。这些人绝大部分属于消费者。这是好事,有这些人存在才会有庞大的市场。他们会很感兴趣什么手机最“In”,什么相机最“Out”,还有最新的软件和其它数码产品。他们趋向于拥有最新产品的那种短暂快乐。而精英的任务,就是赶在他们的兴趣消逝之前推出更好的产品,然后再促进新一轮的消费。当我看到铺天盖地的数码产品的广告,我看到的是一个个工程师、项目管理者、市场策划、销售,还有售后服务的精英们,很让人恐惧,然后转为兴奋。这些市场的主导者们每天都会精神充沛,获得最新的市场情报,发布新的产品,制定新的价格。这是商业的战争,这是战争的艺术;我喜欢这样的战争,我喜欢这样的艺术。

如果你还没有开始准备加入这场战争的话,请开始认真准备一下。如果你不知道如何开始的话,风险投资家盖 川崎(Guy Kawasaki)有一些答案:

Mother Earth

Today I found an interesting website when visiting one of Jianshuo Wang’s blogs. Introduced in his blog, Jianshuo visited 30N 119E, an area close to Shanghai. (Correct me if I am wrong). He blogged his trip and also showed some pictures.

The website is called the Degree Confluence Project, whose goal is to collect texts and pictures of every latitude and longitude integer degree intersections in the world. Said in its front page:

The project is an organized sampling of the world. There is a confluence within 49 miles (79 km) of you if you’re on the surface of Earth. We’ve discounted confluences in the oceans and some near the poles, but there are still 12,066 to be found.

It seems to be a excellent source for people who dream to travel around the world, such as me. I opened several pages of this website, including pages for Henan, Guangdong and Ontario. These are the places where I visited in most of my life.

A world map indicating completed visits can be found here (think twice before clicking on the huge maps!) As can be seen on the map, the project is still incomplete. There are many interesting places not visited yet. Hope some day in future I can do some contributions.

菜鸟第一次上高速公路

刚回到家,决定把这个经历记录下来,以后可以当作参考文献。历史上的今天晚上 10 点,人生驾车第一次上 520。而且是独自。而且是晚上黑灯瞎火的。可能老司机们听了会笑话,不过说实在的,对我这个开车经验不到一个月的人来说,确实很难。

从拿到驾照的时候开始就想着什么时候能上一次高速。反正怎么都要上的了,无所谓早晚。就跟游泳一样,有了第一次扎猛子以后就不怕往池塘里跳了。虽然我到现在都没有等来我的第一次扎猛子,但是我决定今天上一次高速,对自我进行一次突破。

其实 8 点钟的时候就尝试过上去,因为觉得这个时候应该不会像刚下班时那个高峰期那么车水马龙。结果快到入口的时候,老远就看着一辆辆的车排着队,等着入场。经过一番思想斗争之后,铩羽而归。

坐在家里,一边为自己的正确决定感到欣慰,一边痛恨自己为什么没有下了那个决心。一定要把自己是新手这个事实给忘记才可以。2 个小时以后,到 maps.live.com 上看了看交通的拥挤状况。发现都变绿了,才决定再来一次。

于是,自己终于进入了并车道。那时感觉就像上了一次不归路:停是不能停的,倒车回去那就更不可能了,而剩下来做的职能就是一踩到底了。结果刚刚出了并车道,就后悔了。我就纳闷了,一群人吃饱的撑得没事儿晚上 10 点往高速公路上瞎凑合什么呀?没看见这儿正胆战心惊地学开高速么?

两手紧握方向盘,脑子里却什么都不知道。驾驶在主道上,前后都是车,心情自然紧张无比。好不容易碰到一个出口,就像抓住一棵救命稻草一样,连滚带爬地开了出来。看到熟悉的红绿灯,就跟好几年没见过一样。好吧,人生那么多个第一次,今天算又完整了一次。接下来的问题,就是怎么开回去了。那肯定是走本地小路了,只要往返方向开,就一定能回家。我揣着胜利的心情,抱着第一次上高速的奖杯,兴奋地找着回家的小路。

5 分钟之后,我耳朵根冒着冷汗,坐在自己的小 Nissan 里,发现自己再一次上了高速公路。捶胸顿足啊,谁让我高兴地太早,没看到反方向高速入口的标志!旁边的车啾啾地飞过,搞得人家都不好意思不踩油门。这回好了,研究过从高速怎么来,但是没有研究过怎么从高速回。

之后的事情我不记得了,反正人现在就好好地坐在这儿打字。至于怎么开回来的,我不记得。心情已经从惊恐转为兴奋。游乐园里的过山车可能就是这个原理让人乐此不疲的吧。嗯,小心开车,注意安全。

祝大家牛年快乐!

跟西雅图结霜的天气成反比,温哥华的阳光额外明媚。在 Richmond 逛了几个 Mall,发现确实跟国内一样,到处跳楼打折,到处人头攒动,一片牛气祥和的景象。为了表示对新的一年的美好祝愿,特别送给我很黄很暴力组合一对,好让我在新的一年里,日有所思,夜有所梦。

imageimage

最后祝大家牛年更牛X!牛牛牛!