品酒的好处

大约有2年品啤酒的经历,很喜欢品啤酒的过程。那么为什么要品啤酒呢?

首先要明确 饮酒品酒 的区别。品酒应该是饮酒的一个子集,因为不喝下去完全闻味不是靠谱的品酒方式。品酒最大的区别在于为什么 (Why) 和如何做 (How) 不同,品酒的目的是分辨、欣赏、交流。

品酒是对模式识别的锻炼。模式识别是心智模式中的R模式,也就是一种基于图像的思维,模式识别是一种直觉。品酒必须要用语言记录,可以是和朋友在一起交流感受,或者写下来分享给更多的人。为什么品酒必须要交流呢?因为模式识别是R模式,但是人和人交流要使用语言逻辑,但是这种逻辑使用的是心智模式中的L模式。但是根据心智模型的理论L模式和R模式往往不能同步工作,如果一个人两个模式之间交流迅速和频繁,那么这个人表现出来就是 聪明。R模式和L模式交互有一种形象的表示法,我们管它叫做“比喻”。使用比喻能力强的人,我们一般说是文学能力强,但是其实更广义的说使用比喻能力强的人 聪明 。我们有一个更时髦的词叫“隐喻”,这是在各种专业能力中非常重要的一种基于直觉的技能,我们常说一个领域的大师具有的就是过人的直觉。或者说过人的 模式识别 和使用 隐喻 的能力。所以那本书说,幽默其实是一种使用 隐喻 的特殊能力,不管是使用幽默还是感受幽默都需要这种 隐喻 的能力。

如果大家读过酒评就知道为什么我说 模式识别隐喻 了。这里举个例子:

花香显著,并带有新鲜果香:柑橘、杏桃、荔枝、麦香,些许糖香。深琥珀色片红,入口时的发泡感强烈,使酒体感觉轻盈。酒液有些浑浊,泡沫丰富有粘性。酒体的厚度中等,酒感稍若,具有相当的苦涩感。苦味强劲,有酸味的错觉。烧烤饼干,红色果香,榛果杏仁。回香中有花香,苦味显著。余韵甘苦带涩,有果香,麦香与啤酒花香。又有非常好的复杂度。

摘自《比利时啤酒——品饮与风味指南》

这里用到了很多的隐喻。经常交流的啤酒爱好者可以看到大家使用的不同隐喻,并把他们使用到自己的语言中。这个过程还培养了对味道细节发现的能力,因为经常品酒后对很多味道的轻微痕迹描述的能力会增强,所以就可以更好的发现原来不能描述的味道。这其实就印证了很多朋友学习中的一个感受,当你能够定义和命名一种现象以后,你在遇到问题的时候识别的能力增强了,最后解决问题的能力也增强了。在搞编程的朋友中,都知道 Martin Fowler,他就是以这种能力著称。

最后,我想强调我说的是 品酒 ,很多极端的品酒者品尝酒品后会吐掉,以防止对辨别能力的影响。我们需要强调这样的精神,不要陷入把饮酒作为简单的习惯的地步,那样很容易酗酒,结果是很严重的。要保持 Know How 的同时 Know Why,这样可以长期健康的品酒。

我目前品酒主要使用 Instagram,照下酒评和酒杯,可以观察酒体和泡沫。然后在评论里面写下对啤酒味道的品评笔记。我主要使用 #mahbeer 这个标签分享,这个标签下有很多非常棒的啤酒的分享。而查啤酒比较重要的工具是 Ratebeer ,上面有大部分你能喝到的啤酒的信息和众多酒友的评价。

附上我非常早期的一个酒评:

  • 使用的是和Duvel类似的高级蛇麻草,非陈年款,味道比较鲜明,微苦
  • 有麦香味,水果味收敛,味甘甜,回味发甜
  • 香味不太明显,不酸,也不太苦,没有特别突出的单种口感
  • 泡沫丰富,细密,泡沫很白,大约有酒体的一半高
  • 酒色金黄,略微浑浊(雾)
  • 有肉蔻的香味留下,酒通过喉咙感觉酒精刺激明显,留下微微的薄荷的味道
  • 酒后口内没有酸和苦的回味,说明酒不是很甜酒花量也不是很大

能猜到这是啥啤酒不?(是Westmalle Blone,一种修道院啤酒 Trappist beer,不过属于没啥特点的一种)

Why I move to SublimeText 2?

Writing a blog post is hard, because you need to prevent the gravity of laziness. This time I want to talk about why I move to SublimeText 2?

OK, the simple reason is everyone move to SublimeText 2. You will see almost every developer at Backbone.js conference using SublimeText 2 to do live coding demo. That’s cool, just because those speaker is cool. OK, cooler thing is half of developers at that conference is using SublimeText 2 (BTW: there is a developer using Windows). I was using TextMate 2 alpha when I was at that conference.

Why I’m not moving? Since I’m not a hipster, I ask reason for a move. The de-facto editor of choice is TextMate if you develop on a Mac. Used to be. But the developer abandon users, and it’s a typical vapoware. That’s sad. So smart people go to try alternatives, and smart people change their muscle memory quickly. But I’m a slow guy, I was hijacked by the bundles and themes and all muscle memory. But I do ask my colleague and developer friends which alternative editor they are using. But unforturnately there are no reason move my mind (gravity of laziness).

So, why I need a reason? Since the most dangrous thing is lost your introspect abbility. We call something science. But the sarcasm aspect is there is theory said there is no truth but only explanation. An explanation is a saying (theory) describing what’s beneath the truth, and we will using our sensation to test (or set a lab to prove it, test it) it. If that explanation match the fact we sensated, then we call it science. So this is a process of proving a explanation is close to fact or truth. This process is all about asking why on something even you know how or what (a defination, or explanation). Forget asking why means lost mind. Zen has some practice on observing the detail of feeling and thinking, for me that is keep asking why, know why on details. So sounds like this approach is close to science.

Until my colleague point this on that conference. He said “SublimeText is blazing fast, see how smooth it is to open and preview source codes…”. Then I realize I got a reason in that moment. TextMate is slow now. Actually TextMate 2 got slower than TextMate I feel. Since TextMate 2 solve the Chinese character display issue, so I found it’s better than TextMate 1.5, that missing feature is the worst one I had. So feature shouldn’t be reason for moving SublimeText 2. I don’t use split panes regularly, use json as preference is not attractive …

But let’s back to a perquisite question on editor war. Why we want to use editor over IDE? Since IDE is fat, bloated, vendor locked, slow. Since IDE is not (simple, small, flexible), but every developer love (simple, small, flexible). Jeremy Ashkanas said (simple, small, flexible) are traits of Backbone.js library. So, text editor is (simple, small, flexible), that’s a reason I’ll buy. So when my colleague told me how fast is SublimeText 2, I was moved.

Screen Shot 2012 08 01 at 2 42 18 PM

The main reason of writing this post is not tell some hipster I was allied. I’m asking myself why, and ask you to ask yourself why. Recently I read a book called The Shape of Design, that’s a good book indeed. It use a metaphor of mockingbird, so that bird learn some sounds and song, but it never know why mocking like that. Only know how and what is dangrous, keep searching why is vital. That’s a why of being interest driven, or at least make sure you are driving by something you know. So you know why of each details, you know how to explain to other people. And you knwo why you are wrong, since every piece of change will notify you do a full introspection again. This helps, let you thinking independently, since you know why. Hope you always know why, I know that’s totally impossible, we never know the truth.

修复密封罐子

装咖啡的玻璃罐子由于锁扣变形把一个玻璃边硌碎了。观察了一下感觉把这个铁丝的扣具转个角度就可以避开硌到的位置了。所以一冲动就把扣具拆开了,这个结构是很简单的,拆开很容易。

转了角度以后发现装不上。因为铁丝扣具不是服贴的符合玻璃盖子和罐体的形状,因为椭圆形的扣具在两边夹住后可以提供更好的锁紧效果。不过用手的力量几乎不可能把他们保持在可以服贴的位置,也就不能用钳子把扣环夹住固定。我尝试了几次用蛮力,不过结果当然是一失败告终。

因为时间不够去上班了,路上可能潜意识就开始研究如何解决了。回来的路上我的潜意识闪过的是用铁丝当作锁紧脚手架把它组装上的图像。

回家找了铁丝,只有很细的一小段。把两个需要锁紧的地方用铁丝套住,闭合后把接头拧成麻花,不用拧很紧保证足够多的绞合圈数吃上力就可以。用尖嘴钳子夹住铁丝的圈再拧麻花,作为脚手架的这个铁丝夹具就会把想要锁紧的玻璃罐子扣具拉紧,此时就可以比较轻松的套上扣具组装罐子并恢复原样了。

收获两点:

  • 蛮力不如思考,尤其是给R模式(右脑模式)一些酝酿时间,问题解决的会更好
  • 使用夹具而不是使用在紧张时很不可靠的肌肉,工具+脚手架是组装“复杂”系统的方法

The value of reading news

Recently I found I’m addicted on reading news, including gadget news, social headlines and hacker news. Today, I’m thinking why I read so much news? What’s the value of reading news?

The news include content and context, but there are more things underneath. When we read news, we got a story of what just happend, but this is not very valuable. The content and context is history journal, we just put some sentence and images into our memory. This is no difference with a comupter, and computer is good at recording things, it never changes or forgets. We are human, we have non-linear thinking machine, which give us some outputs after thinking. I think there are 3 main elements for human, thinking, feeling and memory, reading news just give us some outputs of memory and feeling, those things construct a timeline in our brain. And when we have spare time, the brain thinks in right mode, and it may give us idea at anytime. Acctually, the most value part is making a point of view, so we determine which part we should stand for this piece of news. This judgement can be irational, I means the reason and the result may has no direct connection, we just jump to a conclution. I think we can call it taste. And I remember this quote “The only thing you can trust is your taste”. This irational process of making judgement is our taste.

We should split news into two categories. One is a report of a story, it tells us what just happend, like a statement, we just recieve it and store. Another is a comment of something, so there will be some personal judgement or ideas come from reviewer. They already stand on a side of this story, and we will recieve this comments and record the direct feeling of there comment. For example, the techmeme always tell us the breaking headline of different news source, but most of which is plain story. The other example is hacker news, it contains lots of blog post about someone’s opinion, those report is more like sharing taste of those things. I prefer the deep analysis of news, like hacker news’ style. They put non-linear reason and result together, help us organizing out thoughts in reviewer’s points of view. This thinking practice helps us make our own taste.

If we only store news, it’s a huge waste. I we just day dreaming, it’s useless too. Reading some news, and corresponding analysis is good for us. This may be the real value of reading news.

Don’t waste too much time on reading news, most of them are fast food. You should do long reads too, long articles are more nutritious. Magazines are way between long reads and online fragment reading, whe should balance the ratio of them. Keep processing langurages and images in our memory is important, it’s your privilege, it helps you find your real taste.

The Perfect Is the Enemy of the Good

The perfect is the enemy of the good. The best is the enemy of the good. – Voltaire

Nothing is perfect and waiting for the perfect moment or killing yourself trying to ensure that every thing your hand touches is done perfectly is a sure way to not get anything done at all.

Getting caught up in the idea that your desk, work bench, house, or office must be in perfect shape for you to really get stuff done can just as easily result in getting nothing done. Learn to recognize what’s good enough.

Perfectionism kills me.

和老婆去了一趟谭柘寺,春节前来这里的人并不多。我们两个来这里是为了追求一丝平静。…

和老婆去了一趟谭柘寺,春节前来这里的人并不多。我们两个来这里是为了追求一丝平静。因为过去的一年实在有很多不利的事情发生,心里希望寺庙能够给我们一些好运气。大雄宝殿边有个告示,是告诉大家佛家将“种善因,得善果”,因果报应理论,劝大家多行善。如果是冷眼旁观,我会觉得这是一个心里暗示,告诉你应该做好事,因为会得善报,不应该做坏事,因为会得恶报。这是一个积极的心里暗示。而我从这里也得到了一点平静,因为它让我朴素的感悟到佛教在教化世俗的过程中,它的基本价值观是积极的。我之所以会觉的最近做事很晦气,很大的程度上是因为我对自己进行了过多的消极心里暗示。

上次在OpenParty的聚会上面好看簿的蚂蚁同学就指出过我的一些说法都是消极心里暗示。

虽然我不笃信佛教,但是我可以从它的智慧里面得到一些好的暗示。那就是坚持积极的生活态度,谨慎认真的修身养性,以达到自己所希望得到的结果。我在寺庙里面好好的烧了一炷香,然后跪在庄严的大佛面前好好的进行了自我反省,我问自己希望得到的(愿望)是什么,过滤掉自己过多的贪欲,然后问自己达到这些愿望所需要做的是什么。然后,我就知道我应该怎样做的。

回来的路上,身上轻松了很多。在路上开车心态也平衡了很多,不去斗气,平和的和老婆谈话。感觉健康了很多。努力的做那些积极的事情,期望达成那些积极的愿望。积极的心里暗示,好像“种善因,得善果”。

工具-不会用不丢人,怕会用才丢人

工具就是进行生产劳动时所使用的器具。工具的目的在于提高生产劳动的效率。感慨于一些真正的Geek的blog,我也想了一些工具对于我的重要意义,用来作为下一段的目标。

人家说工欲善其事必先利其器,还有磨刀不误砍柴工,实际上在说明工具对提高工作效率真的非常有意义。

今年的我,上游离于前端开发和后端开发之间,同时我还要在两个不同的团队(ThoughtWorks StudioCruiseMingle两个产品开发团队)之间切换,所以对于我来说频繁的需要Context Switch(工作环境切换)。两个团队所使用的技术也不同。

  • Cruise是一个标准的Java团队,大家的开发工作站都是Ubuntu环境,IDE是Intellij IDEA,源代码控制是Mercurial(aka. HG),自动化构建脚本基于Ant,持续集成工具就是自己开发的Cruise。
  • Mingle团队是标准的JRuby on Rails团队,大家开发机器是Macbook pro或者Mac mini,编辑器是TextMate(JRuby部分有IntelliJ IDEA的工程),源代码控制是Git,自动化构建脚本基于Rake,持续集成工具有两个,其中提交前使用的precommit CI是基于我们公司的开源产品CruiseControl.rb,而主持续集成服务器是基于Cruise(也就是前面那个团队的产品)。
  • 两个团队所使用的敏捷环境是Mingle,用过Mingle的朋友知道,这个NB的工具的可配置性很高,这两个团队的Mingle项目模板区别很大。
  • 这两个环境的区别还是相当大的,而且每次我切换了团队(大约2个月的周期),我很有可能就需要很大的更新我的Macbook pro上面的各种库。
  • 当我做前端开发的时候,我还要切换与我的Mac上的Photoshop CS3和Mac的VMWare Fusion上的Fireworks中(使用Windows的Fireworks的原因是授权,我的正版授权是Windows的)。使用Fireworks的原因是我们的设计师使用它,所以我需要使用它来调整一些小的设计。
  • 在做Javascript逻辑的部分,我需要在Firefox 3/2、Safari 3、IE6/7(VMWare Fusion)之间切换,每个浏览器都有不同的附加调试工具(主要的三个Firebug、Inspector、IE Dev toolbar)。

我想对于一个强悍的程序员(最近比较崇拜的delphijhdcola云风等神人)来说做这样的环境切换也许还是可以的。可是对于我这个不善于multi-task工作的人来说,马上让脑子适应不同环境,熟练使用不同的工具就成为了一个挑战。

所以,结果是,这一年中,我基本上对于这些工具很少深入学习,基本上就是凑合着使用,如果没有通用的快捷键我就懒得去翻手册学习了。结果就是使用HG的queue功能(超级有用的qnew、qrm、qpop、qpush系列)的时候经常把自己搞崩溃(今年居然有和李彦辉教授在pair的时候搞丢了2个小时内的修改,相当丢人),所以后来在使用HG的时候异常小心,生活在心理阴影下面。而对于Git,我居然完全没有使用过stash功能(和HG的queue类似)。昨天胡凯还问我是否用过bisect,是一个折半查找坏提交的功能(在HG和Git里面有等价的功能),我完全没有使用过。因为这些精巧的基于命令行的源代码控制工具对于程序员来说非常之重要,从这个角度体现了我对于工具的不求甚解达到了什么程度。突然想到梅兰芳里面十三燕那个很棒的台词“输不丢人,怕才丢人”,用不好工具没事,但是害怕学习用工具那就是很丢人的问题了。

那么自我分析的结果就是,由于环境切换,我缺少了专注,形成了对学习环境中的工具的恐惧,最后影响了我的工作效率。

下面的内容用来自勉,分析一下工具对于我到底有多么的重要(也就是说这个是我使用和学习工具中比较Happy的部分)。对于还没有注意到工具重要性的朋友,可以关注一下,看看是否有所借鉴。

  1. 关于GTD:去年看了不少退墨的文章,我深感这种意为减轻压力的“Todo list“对我的重要。最早我使用了文本文件来记录,每天一个文件。但是后来发现跨天完成的任务使用这种方式不好,需要手工拷贝。所以后来按照每个Context(家、单位、电脑、手机…)放一个文件,然后使用日期作为风格,跨天的任务我就拷贝一下,这个文件本身放在EverNote里面实现多平台共享。但是后来我发现这样也不好,因为不明显,也不好做计划。再后来我开始使用iGTD,发现似乎不错,它的结构比较简单,而且它分开了context和project两个概念,所以像“OpenParty、Mingle、Cruise、梦想”也有了自己的归宿。GTD的做法,please google之。
  2. 关于工作和休息的切换:一开始我惊艳于Livid修改过的TimeOut这个软件,但是它运行的经常很慢。后来我使用了原版的AntiRSI这个抗劳损软件,它的原理就是根据你设定的时间提醒你做短休息(一般是15分钟,站起来休息30秒),还有长休息(一般是45分钟,站起来休息5分钟)。再做结对编程的时候弹出它可能你的pair会有意见,但是你需要通过它的实际效果来感动他们。结果是Mingle的队友已经基本上都在使用它了。
  3. 分布式版本控制工具:DVCS可以帮助你更好的管理本地分支,让分支变得轻量,而且它还可以帮助较大的分布式团队更好的管理自己的本地主干。而且他们里面还有很多帮你管理提交习惯的工具,比如前面提到的提交队列工具,可以鼓励你使用更加频繁的本地提交。当然使用分布式版本控制工具的前提就是你要仔细阅读一下hand book,学习一下他们的基本概念和原理,这样才能达到更好的效果。
  4. Feeds工具:我使用Google Reader阅读文字型RSS Feeds,使用iTunes订阅Podcast。
    • 阅读工具多了去了,你的选择很多。但是要做的是学会更好的使用这些工具。今年从Patrik lightbody那里学会了重构Rss Feed订阅的重要性,要减少一个feed使用多个tag进行管理,因为一般鼓励在一定时间段里面保持未读feed不要积攒太多(这就失去了持续阅读的能力),但是如果使用多个Tag标记feed,那么在统计未读条目的时候往往会重复统计,会造成很大的阅读压力,而且对于给自己的不同feed组定不同的优先级也不利。
    • 所以我首先做的是将所有的订阅单一化,分类清晰了很多。分类有一个小技巧,不要对个人博客按照主题打标签,比如以前我给robbin的博客打上java的标签,而livid打上了apple的标签,那么在我决定要看哪个标签下的主题的时候就会感觉很迷惑,因为个人博客都没有固定主题,所以这些标签就编程没有意义的误导了,所以我现在对于这类feed直接标记为“Interesting Person(有意思的人)”,我可以给这些人很高的优先级。
    • 另一类是如GizmodoLifehacker这种信息门户型,他们每天要更新50+的新条目,所以我把他们放到一个单独的如news portal这样的分类里面,我可以给他们很低的阅读优先级。
    • 不同优先级的条目在Google reader里面还可以对应列表/展开的方式查看,可以很好的提高使用效率。再有就是Google Reader的快捷键,在吃午饭的时候,右手用来吃饭,左手可以通过一个空格健来实现滚动和查看下一条,s是标星,Shift+S是共享,这个基本上就可以实现单手阅读了,很方便。
    • Podcast是坐地铁上班时很重要的学习工具:因为地铁和很多交通工具非常拥挤,即使带上书也没有空间看(尤其时备上电脑上班的我们)。所以在非常拥挤的时候我会选择听音频的Podcast,如锵锵三人行(了解时事)开卷八分钟(了解好书,不过越来越没意思了)、Ruby on Rails Podcast(Rails的)、RailsEnvyTackSharpJDD主讲的关于摄影)等等。在不是那么拥挤,也就是胸前有10厘米以上空间的时候,我会选择看视频Podcast,最精彩的是TED Talks的演讲,不错的有Apple Quick TipsX-Play Game Previews等。用这种方式消磨时间比用PSP好很多。这是一个购买iPod touch 2的理由^__^
  5. 信息分享服务:这个又是一个很大的话题。大家在聊天的时候经常感觉很有收获,原因是兴趣相投的人在互通有无可以带来很多的有用信息,而不是像电视的新闻节目或者报纸那样给你带来没有针对性的噪音。社会化网络SNS实际上是个很好的分享有用信息的平台,可是我不是很喜欢facebook等给我带来的参与压力,所以我一般通过一些通用的分享服务来满足自己的需求。
    • 我一般通过Last.fm来实现音乐播放历史的跟踪,通过它的推荐服务来发现一些我喜欢的音乐。这实际是一个相关度算法的应用场景,它不同于简单的试听型的网站(现在国内的xiami.comkedou.com我觉得基本上属于这种类型),它的目的不是给你知道的音乐听,而是根据你听过的音乐推荐你一些音乐听,收集音乐品味的过程叫scrobbler,我在使用iTunes放音乐以后会被自动同步到last.fm并用来做数据挖掘。使用Last.fm服务需要注意的就是要及时更正你的mp3-tag信息,这样你提交的数据就不会是垃圾,这对未来享用推荐服务非常重要。但是现在我发现的一个问题是,由于中文有简体和繁体,所以很和多时候Last.fm的亚洲歌手的名字都会出现多个版本,这给推荐带来了难度,也许国内的服务上可以帮我们解决这个问题吧。使用iTunes的朋友可能苦恼于mp3-tag信息乱码,那么使用Glider开发的ID3Mod2这个软件。
    • 看电影和看书通过豆瓣就很爽了,我对它使用的很初级,但是豆单等已经聚合过的相关分组已经可以给我看电影很多启发了。使用豆瓣这样的工具我们要做的就是尽量及时的更新你的阅读列表,这样豆瓣得到你的更多数据,那么推荐也会更加准确。
    • 我非常珍惜Google Reader的share功能,尤其是share with note。因为这个几乎是最好的和靠谱的朋友分享信息的手段,我一直认为这个是最好的一个人肉过滤器,你的朋友圈子越准确,得到的share也就更符合你的品味。自己在share的同时,可以看到你的share的朋友就和你做了非面对面的交流。而且有的时候如果你1个月没有读feed,已经无从看起的时候,完全可以把他们置为已读,然后去看朋友的分享。这减少了很多信息过滤的成本。
    • 最后一个重要的分享服务就是Twitter了。Twitter解决了你不能和所有的你想交朋友的人聊天的缺憾,这样你可以轻松的follow业界大牛,如d2hkent beck等。它也是一些重要信息的最快速发布场所,同时也是一个重要的社交场所。在使用Twitter以后我发现我甚至越来越少的在使用IM软件了。使用Twitter这个工具你需要做的就是有节奏的发信息,而不是三天打鱼两天晒网,这样大家不会因为你太贫而退订你,也不会因为常年见不到你的twitt而忘记你。
  6. 信息存储服务:网上看到好东西我们经常想收藏,这种行为叫做网摘,最早我使用CyberArticle(荣幸的买了正版,用的很High),而后用了Linux,所以改用Scrapbook,作为firefox的插件它是跨平台的。此时我的同时推荐我使用在线的Google记事本,这几个软件都能很好的做网摘。但是这几个软件的缺点是缺少协作,那么后来最常见的就是社会化书签应用,delicious,在浏览器装个插件以后它可以帮你用tag管理书签,好处是还顺便帮你做推荐服务,很方便。后来我发现并非只有这些数据需要存储,我们还需要网络磁盘服务,这类服务很多,我个人倾向于使用Dropbox,它的好处是各个平台都有客户端(Win、Mac、Linux),而且是用户空间磁盘系统,用起来和本地磁盘一样,它同样可以用来在项目组之间共享一些文档、电子书等。最后,我还推荐一个类似M$的OneNote的免费在线文档、及数据存储服务EverNote,我用它来存储一些简单的文本文档,还有用它写一些视频note,因为它有一些方便的工具帮你来做音频或者视频的记录。(对了,还有梦断代码里面描述的难产的软件Chandler,它是一个本地的数据中心软件)
  7. 快速启动服务:就是使用键盘快捷索引的启动工具,有代表性的是QuickSilver(是Mac下的,详情看Robbinlu的这篇blog),它显然比Mac自己的Spotlight好用(而它又比win下的很多桌面搜索强很多很多)。通过培养这样的软件可以帮你极大的提高效率。Windows下有launchy也很不错。
  8. 还有很多,但是我没有必要一次全部说完……

下面要分析一下我做的不好的地方,迎来跟踪我的改进:

  • 没有认真的学习Git和HG的用法,没有很好的贯彻他们的最佳实践。
  • 没有很好的学习shell。很少给自己写脚本来提高每天工作的效率。对很多*nix命令还很不了解,如wc、du……,对于微语言awk等不了解,这就限制了我制造自己的组合工具的能力。
  • 没有学习如何使用Mac的automator和appleScript。
  • 对于C语言的了解太初级,还是大学上课的水平,而它又是读懂很多code的关键(我并不想成为c程序员)。
  • 没有很好的整理好自己在各个网站的帐号。所以经常忘记去使用这些服务。
  • 没有很好的整理自己家的硬盘,没有对里面的电影和音乐进行过删减。因为数据也会过期,如果总是舍不得那么它们都被积累为工作噪音。所以要勇于与过去告别。
  • 没有好好学习Photoshop和Fireworks的使用,总是在使用低效的重复劳动。
  • 没有管理好自己的博客。我今年做了的事情就是把blog从BlogJavaLive Space移动到了朋友的机器上的wordpress上,但是由于访问速度比较慢,而且离线的时候写东西不方便,我今年也很少写blog post。
  • 没有学会使用一个有效的照片库软件,iPhoto的分库功能我最近才知道,不过没有认真整理(要减少单个iPhoto Lib的大小,这算个最佳实践)。我也应该学会使用一个LightRoom或者Apeture那样的面向摄影的后期软件。
  • 没有学会使用图片分享服务,我游离于flickr、picasa web和好看簿之间,前两者现在都有了iPhoto客户端,但是我还没有很好的使用。在9的内容做好后,我要更好的利用图片分享服务。
  • 没有很好的学习Ruby on rails,虽然一开始仔细阅读并且也用1.0的rails写了些小应用,但是我的知识没有及时更新。
  • 没有很好的清理自己的数据遗迹,我这个人很注意备份,但是没有注意清理过期的备份,想个好的工具来解决它,如TimeMachine。
  • 没有使用好Facebook和Linkedin这两种SNS,它们实际上能够帮助我很多
  • 没有利用好我买的图书,书是学习工具,而不是收藏品,我没能很好的阅读它们。

暂时先准备写到这里,其它的关于工具的话题我会另开post来总结。(最后更新于2008年12越21日)

我的旅行的意义,去澳大利亚后

我在想,我为什么和老婆去澳大利亚旅游。我们旅行的意义是什么?

记得今年我读了阿兰德波顿的旅行的艺术,里面探讨的就是旅行的意义。我记得书中说旅行是为了验证什么或者逃避什么。那么我们去澳大利亚是验证什么或者逃避什么呢?其实在去之前我并没有问我自己这个问题。

我很怕在熟悉的人面前出丑,但是到了陌生的环境我感觉我就自由了。这种现象在幼儿园的时候就有了,爸爸来接的时候我都特别乖,特别的沉默,但是爸爸走了我就怂恿身边的小伙伴们做坏事,气老师。这些其实我也记不清除了,是爸爸和我说的,老师抱怨过,我记忆中就是身边的男孩女孩都特别听我的,而且我记得做得最好的就是我能够让他们在做了坏事以后不说是我让做的,所以我一直以为我是非常安全的。不过,实际上是怎样我也不知道,我所认为和我所记得的都是在那个年龄的心智范围以内的。

去了澳大利亚这么远的国家我就不怕出丑了,我就又可以自信的做自己想做的了。自信,不怕出错,感觉很自由,就像回到了童年。回到童年是非常快乐的事情,因为童年在我的记忆里是个太快乐的年龄段了。那个时候搜索所有的记忆也只有两件害怕的事情,一个是“从山上掉下来”一个是“杀人”,其实都是梦境。梦境里面梦到过很多次和爸爸一起爬山,爸爸总是爬在我的前面,而我跟在后面,我们爬的是笔直的峭壁,我非常害怕,但是最后还是掉下去了,身上会感受到失重的感觉,非常可怕,因为我是个恐高的人,我能做的就是呼叫我爸爸,呼叫,大声的呼叫,最后我醒了,自觉的下地去撒尿。嗯,这个恐高症的梦原来就是意味着我要撒尿了。另外一个是在上了小学的时候会做的梦,我会杀掉Turtle同学(是我的发小,最好的朋友(之一)),一般就是用铅笔戳死或者用手攥死。这种梦很离奇,因为杀人以后Turtle同学就神奇的消失了,而且我每次都没有看到我杀掉他的细节,只是强烈的知道我杀了他,然后就是好害怕,开始想念我的好朋友,开始害怕蹲监狱,害怕见不到爸爸妈妈,最后几乎都是哭醒的,不过哭醒以后我发现我没有哭,甚至眼睛里面没有湿润,爸爸妈妈也没有听到我哭。这个梦大概是说那个时候我在意的这些人吧,我怕失去最好的朋友,怕失去爸爸妈妈。那么这两个噩梦就是所有了,其余的记忆都是那么的鲜艳。

澳大利亚就是这么一个鲜艳的国度,鲜艳的要命,就像有生命要从那鲜艳的颜色里边爆发出来,都咄咄逼人的让你目眩。它让我想起了我的童年,我可以和我的老婆撒娇。我终于可以拉着一个漂亮的小姑娘的手一起在大街上面看到所有的东西都兴奋的大呼小叫了。小的时候我不好意思和女孩子说话,实际上在幼儿园的时候我还是和小女孩说话的。但是上了小学以后我发现女孩不能欺负,因为会被老师和父母加倍责备。还有就是我对女孩的身体感觉很神秘,很像偷偷看看,但是又不敢偷偷看,所以干脆不如不看、不听、不想,那么当然也就不说了,所以那个时候开始不怎么和女孩子说话了。但是内心里面我也想和一个打扮的漂亮的有大眼睛长头发的小姑娘一起拉拉手的,直到二十多年以后我的这个梦想才实现。这次去澳大利亚似乎就是让我牵着我漂亮的小姑娘走到了童年,我得到了我一直想要却从来没有得到的东西。我的老婆就是最爱的女人,但是她也是一个童年的伙伴,我在童年直到青年都不认识她,但是现在拉着她的时候她看起来还是一个小女孩,非常可爱,有小圆鼻子,大眼睛,漂亮的细眉毛,薄而细的嘴唇,脸上有几个小小的祛斑,耳朵又小又圆很俏皮,所以她就是我小小的女神。我曾经梦到过很多次,小的时候,我在胡同里面玩的时候,她也在某条胡同里面玩着,我在一刹那,想到了她,她也感知到了我。拉着我亲爱的女神,走在童话的街道上面,我感觉好幸福,就好像我喜欢的摄影画册,浪漫的街头,带有颗粒感的画面,我们傻傻的微笑。为什么会想到摄影画册,是因为悉尼的阳光是那样的赤裸的闪耀,穿过各种神奇的大树小树投射在我们的身上和脚下,光影就这样交错在一起,和我们的身体和空气交织。我喜欢有光影的空气,这种空气可以滋润你的心情,让心情被热带的潮湿空气软化。悉尼的空气我很怀念,那是一种湿润和凉爽的空气,水滴像是水晶的雾摩擦着你的皮肤,闪烁的广从水晶里面渗透到身体里面,身体的内部都被水和光射透了,感觉就像在天堂一样。光非常强烈,感觉心情非常神圣。童年、女孩、颜色、光影、神圣,实际上这是我从宫崎骏的动画里面读到的一些关键字。正巧上周和爱人看了《悬崖上的金鱼公主》,我很强烈的知道,即使是在童年,我也知道我要的是什么样的世界,什么样的女孩,什么样的生活。似乎这个电影就是记录的我们在澳大利亚作为一对结了婚的恋人的感受,那种童年的幸福感的回归。

童年不怕什么,我回到了童年,所以我活得了2周的自由,这种自由是一个多彩的调色板,我们可以肆无忌惮的使用颜色。在那里很自由,即使没有那么多的钱住很好的旅馆,没有那么多的钱去吃正餐,没有那么多钱享受遍历出租车,可是我们可以享受愿意往哪个方向走就向哪个方向走的自由。我们可以放纵的用中文说一些肉麻的话,却不用担心有人会在意,我们就像风一样在城市里面穿梭,我们还可以相信我们是透明的。我们不会给城市留下什么印记,我们只求城市给我们留下一个快乐的印记。这种感觉非常的自由。

这是我旅行的最大意义。

这次还圆了另外一个梦,我看到了动物世界里面最多彩的珊瑚礁。我是一个看颜色上瘾的人,在动物世界里面给我最大震撼的就是大堡礁,那里有最神奇的颜色。记得小的时候我学过很多年的绘画,其中最自豪的就是在最初的配色课程上面老师总是夸奖我,那个时候就是在一个鱼的轮廓上面填充颜色,鱼身上的鳞是相同的几何图形,你可以发挥的想像让它变得五颜六色。那个时候的我很自由,所以我会按照我的心的方向去填充,所以我就有了漂亮的的图画。但是在后来那些灰色的学习会话的岁月里面我却只记得我错过了变形金刚,我错过了太多太多的周六晚上才有的动画片,就是因为我要去学习画画。所以在后来我在绘画方面没有任何发展,现在不过就是比从来不画画的人能画出圆润一些的线条,其它的所有技能都退化了。大堡礁就在我的面前的时候我又捡起了对颜色的那种自由的饥渴,我感觉我又可以自由的享受颜色带来的兴奋了。生物选择使用绚烂的色彩绽放自己的生命!所以颜色就是生命的象征,我喜欢颜色,实际上是因为我喜欢我们的生命!我在水中不停的呼唤我的亲爱的老婆,喊出不知道名字的鱼的名字,拿起活着的蓝色海星给她摸,我非常喜欢给我身边的朋友讲生物知识。虽然现在我的生物知识已经不如小学生了,但是我依然可以享受讲解那些不清楚的记忆里面的知识的快感,分享知识在任何时候都可以给你快乐。亲爱的老婆也非常兴奋的听我胡乱编造出的各种介绍,并且认真的问问题。浸泡在颜色中,享受分享快乐的幸福,这是大堡礁给我的。

在丹特里特的雨林里面,我们还划了独木舟,和亲爱的人一起冒险。水是透彻的,因为透彻,所以我就不会恐惧。一直认为密西西比河是可怕的淡水河,因为淡水里面总有奇怪的张牙舞爪的水中生物。但是在丹特里特的清澈小溪中,没有未知,所有的东西都浸泡在透明的水下,所以我不用鼓起勇气就可以用双脚去接触小溪的鹅卵石,却一点都不担心有奇怪的水中生物。我们可以看到好笑的王八和小鱼在水里游泳。

我的感情就随着这样的旅行得到了释放,得到了慰籍。我想这就是旅行的意义吧。

良心能够保护你自己!

沉默了很久,但是这句话要喊出来!良心能够保护你自己,问问自己的良心吧。

老婆写了一篇文章很不错的日记发生在我身上的小故事来谈谈信用问题,里面记录了上个周末我们逛灯具市场的时候遇到的一些“信用”问题,我们总是需要费神的侃价,才能稍微看清我们买的到底是个什么档次的灯。之所以感叹这个司空见惯的事情,是因为我们去澳大利亚旅游的时候看到了很多的诚信,而诚信在商业上体现在定价的自信上。我们看到的澳大利亚商人,尤其是小商品市场的商人,他们对自己的定价充满了自信。我们经常可以看到如冰箱贴这样的小商品,在他们的摊位上可能明确的写着一个3元,两个5元,3个7元。我们习惯侃价,所以问老板是否可以优惠,老板会指指板子上写的价格。那么我们会追问,那4个呢,老板会拿出计算器,3+7=10元,完全按照他写的规则来。这种死板的定价方式体现的是老板对定价的一份自信。回忆起来那里的大部分人都有这种自信。

而继续回忆,在澳大利亚我们不仅看到“自信”,更多的还是信任。比如,我们去住他们的度假村,我们说我们要出海去玩,老板就拿出两条大浴巾给我们,说出海这个用的上,当然他们信任我们会在离开的时候还给他们。街边的饮水机旁边还有抽拉纸巾,遛狗人多的地方有免费的宠物便便袋子,国家植物园是开放的,公园里面的芒果树上掉下的芒果大家也可以自助,社区里面也有公用的烧烤架,众多的方便实际上都是基于信任,大家都回按需消费这些东西,支付的是“信用”,积累的也是“信用”。

我们宏观的问问自己,“诚信”和”信任“哪里来?我觉得从良心里面来。用良心这个词是因为它非常朴素,我们也可以说它是”道德标准“。我相信朴素的感情里,人都回体现出良心。

上周和ThoughtWorks的胡凯,是我在Cruise的队友,热爱背包客文化。他和我说起曾经背包在云南步行过3个月,经常是走饿了就去田边的老乡那里讨口饭吃,老乡经常就分享出自己的”馍馍“来,并且绝对是不要胡凯的钱的。遇到好客的,胡凯还被邀请去人家一起吃过午饭,临走还拿到了老乡现采的很多脐橙,然后又拿脐橙作为报酬搭了顺风拖拉机。听起来感觉很美好,背包客非常崇尚”缘分“。我认为,”缘分“在这里其实就是朴素的良心的体现。我记得动物世界说大象是不愿意看到同类的尸骨的,他们会远远的忘着其它大象的尸骨,并且哀鸣,即使完全不认识这些尸骨的主人,并且他们走近尸骨的时候都回被“吓跑”。我觉得大象的本能是一种设身处地的朴素感觉,他们怕自己死掉,所以会对死者表示哀思。那么对于人类,这也可以更加高级的表现为看到别人有难愿意帮助,看到别人高兴自己也会高兴。

看来完全不相关的事情,其实都是良心。有良心,你可以看到朴素美好的感情,没有良心,你可以看到互相的不信任,欺诈,甚至是幸灾乐祸,还有很多到了恶毒程度的感情。

现在,还没有解释为什么一定要写这篇blog。因为有毒奶粉的问题。因为我怕我也成为沉默的大多数。

在我们公司,因为零食和饮料是免费供应的,所以冰箱里面的东西往往是提前储备好的。这次的毒奶粉事件我刚听到的时候没有在意,因为我国的食品安全问题是常事了,常见也就容易麻木。前天收到我们公司的一位新妈妈给公司集体发的一封信,提醒大家不要让声音就这样越来越小,提醒我们要注意身边的各种奶制品的安全。同事她也说到我们公司冰箱里面的蒙牛奶已经全部更新为三元的了,而提醒我们公司更换奶的人是我们一位国外的PM。听到此事有点感慨,我们公司的外国同事在公共问题上都有很强的责任感。以前有人上班用音箱放音乐,我的同事bobby就发信解释因为每个人的品味问题,所以可能每个人对所放的音乐的反应不同,所以提醒大家最好用耳机。后来有人用P2P软件看电影,网管出来说希望大家不要用了,bobby也站出来写信跟大家解释为什么。我的意思是说,我们不能沉默(龙应台的文章:中国人,你们为什么不生气?),我们要负起责任。公共责任也是良心的体现。

我的文笔不好,写点文字总是形散神也散。上周周末我们非常成功的又举办了一次Beijing Open Party活动,我这次又当了主持,回家的时候我感觉非常累,身体累,但是精神上非常满足。因为我感觉我为社区贡献了我的力量,这是我的责任,我认为它是我能做也应该做的一件事。我又想起我平常面对我的工作,不管是我在新浪的时候做新浪邮件,还是到了ThoughtWorks工作在Cruise和Mingle项目之间,都有一种良心在驱动我所写的程序,我怕我写的代码会对后来维护代码的人带来麻烦,所以我感觉我没有写出什么不负责任的代码。我怕,但是怕的感觉让我按照了良心做事,没有出轨。

那么如果我们的同胞都能保持孩童时的朴素感情,我想他们一定不会越轨去制造这么多可怕的食品安全灾难,那样我们就可以有足够的自信,有足够的自信为自己的服务定价,我们就可以在离开世界前都无愧于良心了。从我们自己做起,不要再带来新的灾难了。我们不能闭嘴,我们不能保持沉默!我们要告诉自己,也要告诉别人,我们有权生气,有权表达我们的想法。

说说我以为的RIA与Rich client

中午徐X和米高讲了一下Rich client的架构。其中徐X讲的是如何从单机分层系统到Rich client。

实际上最早的单机分层系统的UI部分激发了OO作为界面的编程模型。然后分层模型为了C/S结构发生了一些变化,目的是共享数据和通信,但是由于OO在远程调用上面的失败应用(Corba,EJB,Dcom),所以让人对OO产生了怀疑(实际上只是用错了地方)。而后又发生了B/S的变化,是一种完全的中心共享方式,原因是HTTP的无状态性造成客户端很难保存state,所以就有了完全中心共享状态的架构。而后通过通讯的增强(Ajax),客户端的状态保持逻辑通过异步通信来增强,所以产生了更好的用户体验。但是对状态同步的进一步要求和对会话状态保持的进一步要求让Ajaxian了的应用还是有点难以承受,所以Rich client又回归了。当然回归的时候同时带来的还有新的编程模型,如基于标记的声明式编程模型,还有更方便View-Model同步(通知)的数据binding机制,布局管理器,绘图支持能力,多线程能力,内嵌的视频编解码能力。其实WPF作为Windows上的新型UI编程模型他的确从Mozzila的XUL还有Adobe的mxml吸取了一些经验。上面这些是徐X阐述的主要内容,很精彩(最后的编程模型是我加的注释)。

而后米高做了一些技术层面的对比,主要是对比了Web和rich client的区别,不过我比较失望^___^,因为对比有失偏颇,原因是米高只用了5分钟准备ppt。

最后是我的意见。我现在已经不想割裂的分开Rich client和Web上的RIA,实际上目前他们已经有走向统一模型的趋势。

去年在InfoQ写文章的时候我就表达过这个意见。今天徐X也强调了,经典的MVC实际上很重要的是解决了数据共享(同步通知问题)与状态(会话)保持的问题,所有的架构问题其实都围绕了这个问题。首先RIA里面已经开始了layout数据分离的加强过程,比较明显的就是声名式的组件组合配置,还有数据绑定模型,这个在Flash和Silverlight还有JavaFx都有着重的解决,而且方向都很类似。其中Silverlight其实是一个减缩版的WPF。然后我们从架构方面来思考,解决状态共享和传递是通过增强的双向通信能力来完成的,很多RIA框架在开始提供web socket模型,这样让通讯超过无状态的且单向的HTTP,包括HTML5(目的是扩展Web上常用的一些Object,增强Web的编程能力,且让很多元素得到正确的语义,这个与XHTML2的关注点不同)的草案里面也有Web socket(类似socket的编程对象,可以实现二进制协议的面向连接的通讯)的提案。当然些努力就是让实现消息传递的开销更小,时效性更高,配合线程概念的支持,就可以实现复杂的基于消息的异步界面逻辑(这会极大的扩展RIA应用的能力)。因为通讯其实是解决状态共享的一个方向,通过高效的消息通知达到多个消费端的状态共享。另外一种解决Browser端状态同步(这里主要指客户端与服务器的数据库同步)的方法就是离线存储能力,这样削弱客户端对服务器的依赖。这种解决方案的代表就是各种Gears,Google gears,dojo offline等等,他们在浏览器里面嵌入sql lite一类的数据库,让客户端有自己的结构化存储能力,对于没有多客户端数据同步要求的应用来说离线方式可以让客户端形成完整的编程模型,通过sync机制在连线的时候进行数据同步是一种非常帮的RIA发展方向,从这个角度它已经是Rich client了。

那么可以扩展一下。我们知道Lotus Notes有服务器端replication的模式,离线会存在本地,连线的时候再同步。而对于另一些应用,极端地如Skype,他对实时的同步要求很高(当然它属于通讯类应用,也就是3C中的Communicate,而不是Content system),Skype的解决方案就是p2p。如果RIA有了socket(当然还有跨域支持),有了多线程,那么p2p是不是也不算难事了呢?状态同步通过p2p来实现,虽然不是可靠的通讯方式,但是却符合Internet的最大努力原则,所以我觉得这两种技术的结合的确很容易让RIA和Rich client不在有明显的界限,未来的目的就是融合。所以,要注意的是为什么微软拼了命在推Silverlight,而且拼了命的公布了Mac和Linux版本的Silverlight,其重要原因就是让WPF的模型渗透到RIA,用Rich client围攻RIA,来解决Adobe用超级NB的Air这个RIA衍生来围攻Rich client的困难。

这样,我们知道2年前开始声音渐强的Offline storage和越来越强的绘图,data binding的意图了吧,融合已经开始了,目标当然就是吃下这个大平台,然后成为最大的赢家!