Whidbey Island Century

July 3rd, 2013

It was my first time on the island. The weather was great — sunshine, clear sky, and not as hot as Seattle; full of scenic views on the route as well. Ride strong most of the part with avg speed > 16 mi/h. Towards the end, I felt a little tired and was dropped by the group. Forgetting my GPS on the day, I took a shortcut to finish the ride. The whole length was about the same, though elevation was about 1000ft short. Still, both distance (105.9mi) and elevation (6,538ft) broke my past records. A really memorable century ride this year!

highres_253777972

读书:The Emperor of All Maladies

August 19th, 2012

最近读完了The Emperor of All Maladies: A Biography of Cancer这本书。作者,Siddhartha Mukherjee(former Rhodes Scholar,Stanford,Oxford,HMS) ,自己就是在哥伦比亚大学医学中心和医学院从事癌症治疗和研究的医生和学者。作者以相对通俗和生动的文字勾勒人类对癌症认知的历史,治疗手段发展的过程,期间还穿插了他自身的工作经验和与病人的交往。这本书资料详实,比如,注释就有467条,附录于书后的文献提要差不多有5页之多。但是文字数字之外,作者付出了更多的努力其采访了亲身参与癌症作斗争的医生,学者和病人。比如,作者辗转多方,最终通过互联网,找到了一位在1964年接受白血病VAMP疗程的幸存者Ella。接受VAMP疗程的病人只有5%的一年以上存活率。而这个采访不光让作为读者的我意识到早期癌症治疗虽然成功率低,但并非没有意义,而且也提供了癌症长期幸存者对疾病和治疗的感知。

作为一名中国读者,上世纪至今和癌症斗争的主战场无疑是在美国,但是中国医生也做出了一些有意义的贡献。本书写到了两例。李敏求(Min Chu Li)医生在NCI工作期间第一个用化疗彻底治愈了一种不常见的癌症(Choriocacinoma)。这也是人类第一次采用化疗彻底治愈癌症。瑞金医院的王振义(Zhen Yi Wang)医生与法国医生Laurent Degos是最早在临床实践中发现和使用了针对一种白血病(APL)细胞的化学药物:trans-retinoic acid。这种药物是第一个被临床证明有效,而且只对癌细胞有特殊针对作用的化学药物。

评价:5/5

《Steve Jobs》读后

January 10th, 2012

花了差不多两个星期读完了Walter Isaacson的《Steve Jobs》。感受最深的一个词:product。一切都是为产品服务,苹果的成功也是建立在它一代又一代成功的产品上的。

This Tech Bubble Is Different

December 27th, 2011

“The best minds of my generation are thinking about how to make people click ads,” he says. “That sucks.”

My favorite quote of the year is from the following Bloomberg Businessweek article:
This Tech Bubble Is Different

Algorithm Analysis

December 10th, 2011

From my experience, usually, only two algorithm analysis techniques are tought in college level algorithm analysis classes: asymptotic analysis and amortized analysis. There are some addtional analysis frameworks or tools that can reveal or explain other interesting aspects of certain algorithms and data structures. Here are three interesting examples.

Competitive analysis
I think the best introduction to this line of analysis is still Sleator and Tarjan’s 1985 paper, “Amortized efficiency of list update and paging rules.” It reveals why a simple list update operation can be as competitive as an optimally designed algorithm that knew the data it operates on in advance. The analysis is simple yet surprising. The paper alone is worth reading for pleasure if you did not know it before.

External memory
RDBMS is the most popular data management system in the past three decases. To my knowledge, every RDBMS includes some kind of B-tree implementation. The external memeory analysis shows why algorithms and data structures like B-tree operate so well in the world of layered storage systems. In other words, if you data does not fit into memory, you may want to use this model to analysis and design your algorithms that need to access data outside memory.

Smoothed analysis
Simplex method is a popular algorithm to solve linear programming problems. It has a exponential time worst case according to asymptotic analysis. However in practice, it works very well. The smoothes analysis offered an theoritical explanation of the phenomena.

The three examples above are interesting for me. After I graduated from college and began to work in the industry, there are times I found the code used in practice was quite different than what I thought and wrote in college. When choices of data structures and algorithms need to be made for problems, there are places algorithms with worse big Os are used, and simple and straight forward data structures are favored over sophisticated ones that may prove better on paper. However, when I look deeper and analysis in the exact context of the problem, many times those choices begin to make sense. The three examples above always reminded me when considering an algorithm and data structure for a real problem, there are usually more things need to be taken into account than simple big O notations. I think this is also the reason we still need to do simulations and experiments when we choose or design algorithms and data structures, at least for many real world problems.

Software Economics

November 5th, 2011

Strategy Letter V by Joel Spolsky

Best piece of economical analysis of software business. Though I feel the power of community and individuls’ willingness to contribute is a little undermined in this analysis. For example, I think there is something in human nature to participate in community work voluntarily. We have many real world examples of such. Joel’s own company Stack Exchange is “Free, Community-Powered Q&A” — to quote their own title.

Why Not Port Microsoft SQL Server to Linux

July 28th, 2011

I just read a blog post from a former SQL Server architect explaining their original decision making process around the issue of porting Microsoft SQL Server to Linux. I have worked at Microsoft on SQL Server for about a year now. This answered some questions I have in mind for some time, and I just can’t agree more with his writing. I can share some of my own thinking here.

Before I join database group at Microsoft, I am a heavy Linux user. I played PC games on Windows 98/XP in high school and college; My first programming course used Visual C++ 6.0 on Windows XP; and, that is all. The rest of my projects are mostly done on Linux. My first encounter of Windows 7 and Microsoft’s server line products happened the first day I worked at Microsoft. How I adapt to the Windows environment is another story. (It is much less difficult than I thought, and I really begin to appreciate the amazing WinDbg.)

Since I began looking at the SQL Server source code, an obvious question came to my mind. How much work was required to port the code to Linux? After all, I was more familiar with GNU/Linux API than with Windows API at the time. To my surprise, the core database engine actually does not have so much OS specific code. Given the Wine project, I suspect it may only took one or two months of work to do the port. Then another question comes to my mind: how much work is required to support the alternative product? My conclusion is that it is almost impossible without changing how we current organizing the engineering effort around the product. For example, it will require a lot more efforts to develop test infrastructures that matches existing test tools on Windows. The only solution I can think of is to have an entire team that dedicates to this new product. The Linux product possibly also need a new business model. Then with so many open source alternatives on Linux, I am a little pessimistic such a product can be very successful in the market.

有惊无险

November 21st, 2010

我开的车是全手动的。包括车锁,车窗,换档等等。但是锁车门不需要用钥匙,只需从里面把车门锁上然后关门就可以了。一般停车,都会先熄火拔钥匙,然后关门离开就行了。今天(星期六)晚上回家,鬼使神差,下了车,关上车门,看到车尾灯还亮着,才意识到车没熄火,钥匙还在车里。更要命的是环环相扣竟是一个死结:家里有备用车钥匙,但是家门的钥匙和车钥匙是在一个钥匙环上,小区的管理处可以开门,但是星期六已经下班了,关房门一定要用门匙所以也没有应急服务。

深秋的西雅图市郊,2摄氏度的气温。车里是温暖的,家里也是温暖的,但隔着一层玻璃,我竟然无计可施。连砸车窗的心都有了。本来都已经绝望了,准备去附近的旅馆住一晚算了。

但是不死心又把每一个车门拉了一遍。当我试到最后一个门(驾驶副座后坐)的时候,竟然,这个门是没锁的。于是钻进车里拔了钥匙,回到了温暖的家。但门开的那一刻我也意识到过去几个月,不管在哪停车,这个后门都是没锁的。我突然很多感慨:我的运气,我的粗心,西雅图的治安,等等。当然如果我信上帝的话,这事就简单了:这门估计是上帝打开的。

参观737的生产线

September 27th, 2010

因为同学的关系,今天去参观了波音生产737的工厂

这个工厂是最后完成737组装的生产线。零部件很多都是别的公司,或波音其它分公司制造。参过的过程中看到一排大木箱,上面写的是上海飞机工业公司,但不知道是什么部件。引擎是最昂贵的部件,大约占飞机造价三分之一。并不是波音生产的。现在737使用的引擎是由GE(美国)和SNECMA(法国)的合资公司CFMI生产的。

其实组装的过程并不复杂。工程师的办公室就在厂房里,机械师在组装时遇到问题,工程师可以随时下到生产线上察看。工程师的办公环境比较普通。

我的感觉是,飞机制造,最核心和困难的地方是设计。而引擎的设计和制造更是技术含量最高的部分。

毕业小结

May 19th, 2010

虽然还没有到毕业典礼正式取得学位,但到今天差不多可以说一切都尘埃落定了。最后一学期只上了一门课,却取得了最差的成绩。

我知道我可以做得更好,就好像当初高考一样。但另一方面,也像我的高三,我完全没有努力去做。可能是因为兴趣不在于此,也可能是心态发生了变化,也可能真的是能力不够。不管怎么说,对纯数学我已经是意兴阑珊了。我不能说我没有收获,虽然成绩不理想,但我觉得现在让我拿起任何一本数学书,如果我想的话,我都能够读下去。但另一方面证明一些抽象的简单结果在我看来越来越没意义。我想我可能会放弃学纯数学了吧。(纯数学,我的解释就是为数学而数学。)

虽然最后一学期非常不理想,整体来说,在美国这两年收获还是很大的。学了想学的知识(NLP,machine learning),也发现了新的兴趣(database,theory)。虽然没有实现当初继续读博士的计划,但毕业前很久就已经找到非常理想也符合我兴趣的工作。面对未来的方向,迷茫少了一些,信心多了一些。一步一个脚印走下去,我觉得我能走出属于自己的通向成功之路。