2007/06/22

放羊的孩子

在很久很九以前, 在那很遠很遠的地方, 有個淳樸的小鎮, 住在一群安居樂業的村民, 其中有個小孩, 叫做阿普, 是幫人放牧羊群的; 每天阿普坐在那小山丘上, 底下的羊群吃著草, 望著四方.

有那麼一天, 就是有那麼一天, 不知怎麼的, 阿普覺得, 哇哩咧真是無聊, 來點刺激的吧.

於是阿普朝著小鎮的方向大喊: 狼來啦, 狼來啦.

村民一聽見, 大家立刻帶著武器, 包括鍋鏟 擀麵棍 還有折凳, 衝到山丘上去幫阿普打狼趕狼, 可是卻發現其實是阿普在惡作劇, 有人告誡了阿普, 有人吐了口水.

好折凳!折凳的奧妙之處,它可以藏在民居之中,隨手可得,還可以坐著它來隱藏殺機,就算被警察抓了也告不了你,真不愧為七種武器之首!


隔天, 阿普又依樣畫葫蘆, 大喊著, 狼來囉, 狼來囉. (ps, 用"囉"這個字眼聽起來就像是騙人的.)

村民一聽見, 仍然槍上肩刀上腰, 齊齊列隊進軍山丘, 卻只聽得滿地的咩咩聲, 有人罵了阿普, 有人抿抿嘴不說話.



受不了那內心深處癢癢的誘惑, 阿普又準備大喊, 咦? 怎麼? 那是什麼? ! 真的來了.

阿普拼了命地大叫, 狼來啦, 狼來啦, 狼真的來啦, 真的, 真的~~~.

這一次, 不管阿普叫的多大聲, 村民就當作沒事一樣. 最後, 阿普就剩下一堆羊骨了.


這個故事, 大家小時候一定都聽過, 大人總是弄些有的沒的來教育(警告? 恐嚇?)小孩子, 希望小孩子不要說謊, 要當個誠實的乖寶寶. 或者, 有人說這個故事給我們的啟示是, 同一個謊最多只能說兩次. faint...

在這裡我要問個問題: 那阿普後來呢? 如果是驪山烽火的話, 結果周幽王和伯服被犬戎殺死,褒姒也被擄走. 那放羊的孩子阿普呢? 他後來怎麼了?

這裡有篇很複雜的版本, 不過且聽我說說我的.

阿普沒辦法挽回羊群的性命, 老東家理所當然地趕走他, 阿普知道錯了, 想找份新工作從頭開始, 一開始沒人要用他, 還給他白眼, 阿普很傷心, 直到有一家麵包店願意收留他, 但阿普發現, 工資比別人低, 待遇比別人差, 於是向老闆理論, 老闆插著腰, 頤指氣使地說, 你這個說謊的孩子, 給你這樣算不錯了, 還嫌, 不然你走啊. 阿普懷恨在心, 摔破所有杯子盤子後逃跑了; 這樣一來, 阿普的名聲又更差了, 後來有位慈祥的花店老太太不顧兒女的反對收留他, 阿普也很盡心的工作, 可是有一次發生意外, 阿普撞傷了老太太最寶貝的小孫女, 百口莫辯; 阿普懷疑是不是老天爺在跟他作對, 類似的情節週而復始, 一再地重演, 每當阿普有心悔改, 就會有人摧毀那小小的良善之心. 後來, 阿普窮困潦倒, 只能當乞丐, 可是會有很多人指著他說: 說謊的人, 有時阿普忍了下來, 有時有更難聽的話, 阿普就跟村民口角互罵, 最後, 阿普死在無人經過的小巷子裡.


不是每個故事都會給人啟示的, 如果你有, 還請回應給我. :P

2007/06/20

讀後感-Dreaming in Code

"Software is hard." -- Donald Knuth



Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software 一書, 要探討的問題是"Why is good software so hard to make?".


作者Scott Rosenberg, 實際田野調查, 在Chandler研發期間, 親身跟Mitch Kapor的Open Source Application Foundation團隊在一起, 紀錄一個真實世界的軟體專案. 從2001.春OSAF成立與2002.10.20正式公佈Chandler以來, 到2005.11釋出0.6版, 大約四年的時間, 但是Chandler仍然無法釋出1.0正式版.

PS Chandler目前最新版0.7.a4在2006.11.30釋出, 現況可到官網查詢.

什麼是Chandler? 是一套個人資訊管理系統(PIM, Personal Information Management), 有各種功能email, calendar, 通訊錄, to-do list, 等等. 講單講就是Outlook的open source版.

誰是Mitch Kapor? 簡單講就是Lotus 1-2-3之父.



作者有去MicrosoftGoogle作演講介紹此書.
書的官網.
Joel Spolsky也有寫篇部落格The Big Picture.


以下是一些摘錄, 與我的經驗.

"Time really does seem to behave differently around the act of making software."
軟體專案開發, 其schedule是作好看的, 所以有人說schedule就是用來delay的.

"The realization came over me with full force that a good part of the remainder of my life was going to be spent in finding errors in my own programs."
抓蟲(debug)實在令人又愛又恨, 抓到蟲有種暢快的感覺, 花了數天仍抓不到就#@$^$%; 更慘的是, 當有蟲抓不到, 而為了要趕上milestone or schedule, 於是就會用各種技巧去避開牠. 而結果就是在以後的日子裡, 不知何時牠會突然出現, 而那時候可能已經忘了牠, 或是程式已經換人維護了.

"Why then do so many programmers glance at existing code and declare authoritatively that they could do it themselves, faster, easier, and better?"
我知道, ㄜ, 應該說Joel知道: It's harder to read code than to write it.

"There's an old saying: I can make it for you fast, cheap, or good. Pick any two."
人心不足蛇吞象啊, 大家三個都要.

"Programming managers have struggled for decades to find a sensible way to gauge productivity in their field."
嗯, 嗯, 這應該寫成另外一篇部落格.

"The problem is that, with current software practices, the developers do not know where they stand any more than the managers do."
在schedule上的一條時間帶, 似乎受著莫名的力量影響著, 昨天你以為完成了60%, 到了今天發現只有50%, 但你能跟上面的boss說嗎? 回頭去修改進度報告?

"I would rather write programs to help me write programs than write programs."
哈哈, 所以在Sourceforge上有那麼多的yet another的軟體; 大家都自己寫自己的.

"but everyone there had some form of the design religion"
嘿, 沒錯, 當我寫spec時, 一堆人都有意見, 嗯, 正確的說是, 看過的人都有意見. (不過我也沒寫好啦XD)

"Communicating abstractions unambiguously -- from programmer to machine, from programmer to programmer, and from program to user -- is the single most challenging demand of software development."
人月神話說, 人力跟月份是可以互相轉換的, 不過條件是只有在工作與工作之間不需要溝通的狀況下. 我說: 人跟人根本不能溝通.

"When people ask for numbers that far out, the traditional thing that engineers do is make them up."
沒錯, 在這裡我要懺悔, 我寫的工作進度報告, 很多數字, 都是好看(造假)的.
PS 希望老闆沒在看.

"Boehm's Law, the later in the development process you fix a bug, the more it costs to do so."
我們常說, 現在先這樣這樣, 用暫時的方法解, 讓這禮拜的release可以過, 然後我們再那樣那樣, 用比較好的方法解. 不過, 這禮拜過後, 後來會怎樣, 大家應該都猜得到吧.

"The real goal of a methodology, he said, is to sell books, not to actually solve anybody's problem."
哇靠, 這說的真狠, 那看那些方法論的書的人, 不就都被耍了嗎?

"It's very difficult to have real engineering before you have physics, and there isn't anything even close to a physics for software."
哇, 看到physics我就眼睛一亮.

"Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."
有recursion在裡面, 那...終止條件是什麼?


寫到這裡, 這好像不太像一篇讀後感. :P
我記得這本書一出來我就買來看了, 不知為何拖到現在才寫篇部落格.

看舊的電腦歷史書

近一兩年來, 陸續看了一些電腦與網路的歷史書, 不僅裡面講的是歷史, 連書本身都可算是歷史了.

PS 我看的都是翻譯本.

JUST FOR FUN:Linux創始人托瓦茲自傳
翻譯自 Just for Fun: The Story of an Accidental Revolutionary

節錄: "我不知道還有多少十歲左右的男孩會坐在他們祖父輩的書房裡, 學習如何簡化數學公式, 然後將公式正確無誤地鍵入電腦裡,"

到底哪些是與生具來的特質? 哪些是受後天環境影響而潛移默化所產生的興趣?

矽谷大革命
翻譯自 Revolution in The Valley: The Insanely Great Story of How the Mac Was Made

節錄: "我就走進賈柏斯的辦公室, 脫下褲子, 尿他一桌子. 這樣看他還能說什麼? 保證絕對有效."

好吧, 算你狠, 這種辦公室文化或工作環境, 在台灣是找不到的吧.

i狂人賈伯斯:從另類人生到超酷創新的蘋果風格驅動家
翻譯自 iCon Steve Jobs: The Greatest Second Act in the History of Business

節錄: "他知道賈伯斯再度在他的背後搞鬼, 而幾天前他才信誓旦旦. 史考力宣布, 賈伯斯必須離開."

這個世界, 似乎離我太遠, 但又彷彿時時影響著我.

矽谷怪傑艾立森─打下280億美元「甲骨文」江山的人
翻譯自 The Difference Between God and Larry Ellison: *God Doesn't Think He's Larry Ellison

節錄: "白蘭度回答: 因為是我說的, 所以是真的."

光看英文書名, 我還以為這是一本哲學方面的書咧.

美國線上AOL.COM:史蒂夫.凱斯的網際帝國
翻譯自 aol.com: How Steve Case Beat Bill Gates, Nailed the Netheads, and Made Millions in the War for the Web

節錄: "就像湯姆克魯斯(Tom Cruise)主演的征服情海(Jerry Maquire)中的一句對白: Show me the money. (讓我看到錢)"

資本主義的社會, 離不開錢, 離不開經濟.

The New New Thing:以新致富的矽谷文化
翻譯自 The New New Thing: A Silicon Valley Story

節錄: "如何再賺進另一個十億美元, 而非一百萬美元,"

人家只上大的賭桌.

競速時代--一場你絕不能錯過的跨世紀網路爭鋒
翻譯自 Speeding the Net: The Inside Story of Netscape and How It Challenged Microsoft

節錄: "孜孜不倦 日夜顛倒是矽谷新公司的傳統",

競爭的時代, 要比別人快.

比爾蓋茲教你透視微軟
翻譯自 Breaking Windows: How Bill Gates Fumbled the Future of Microsoft

節錄: "負責成敗的上層處於含糊不清和難以預測的環境中, 覺得情況複雜得無法管理. 底層則覺得人微言輕, 上級漠不關心, 並且認為自己是組織重整 減薪 購併以及計畫變遷不定下的受害者. 中層感到身心交瘁 無能為力 困惑徬徨, 並且討厭被迫去找別人要東西, 好把奉命執行的事情做好."

好樣的, 這句話真是說的鞭辟入裡, 於我心有戚戚焉.

誰殺了網景─網景與微軟的網路對決
翻譯自 Competing On Internet Time: Lessons From Netscape And Its Battle With Microsoft

節錄: "要寫出能跨越所有平台並有相當功能的程式碼也就越來越困難, 最主要的原因在於每個平台的API都不一樣,"

真是佩服, 工作過幾年後, 很能體會跨平台的難處.

微軟,重新啟動:開放、謙遜與紀律的微軟新文化
翻譯自 Microsoft Rebooted: How Bill Gates and Steve Ballmer Reinvented Their Company

節錄: "蓋茲的慈善事業顯然對他形成全新的挑戰, 同時也為他帶來極大的滿足."

嗯, 賺大錢後再來作慈善, 為什麼? 或許這是另外一篇部落格.

找出IT產業的蠢事-20年來高科技行銷的大災難
翻譯自 In Search of Stupidity: Over Twenty Years of High Tech Marketing Disasters

節錄: "減少做蠢事的次數(與競爭者相比) 就更有可能勝出."

不要只看成功, 也看看失敗吧.

意外的電腦王國
翻譯自 Accidental Empires: How the Boys of Silicon Valley Make Their Millions, Battle Foreign Competition, and Still Can't Get a Date

節錄: "值得一提的另兩類程式設計師, 一類叫做嬉痞(hippies), 另一種叫做書呆子(nerds).", "嬉痞程式設計師留著長頭髮, 衣著上故意忽視一年四季的變化, 甚至以此為豪.", "書呆子沒有乾淨多少, 但是博聞強記, 喜穿短袖襯衫, 口袋扣得牢牢的." ...

嗯, 這本書有很多有趣的觀點, 好玩的句子.


每本書都有值得推薦之處, 雖然說現在看有點過時了, 但如同這篇開頭說的: "每本書都會有個對的時間點", 或許某本舊書會對你很有幫助也說不定; 不過, 這又牽涉到另外一個問題, 吾生也有涯, 而知也無涯, 要怎麼在有限的時間內獲取需要的所知呢?


題外話
1. 想把部落格版型變寬, 寬到整個螢幕, 有人知道怎麼弄嗎?
2. 請推薦比較近代的好的電腦歷史書吧. 謝謝.

2007/06/17

不同的觀點

好久沒寫部落格了, 每當有念頭時, 就會覺得沒什麼好寫的, 要不然就是覺得寫不出什麼特別的東西; 例如我想寫最近看到的幾篇文章, 想摘要一下做個紀錄, 可是找一找就會發現已經有人寫了, 唉.

嗯, 還是寫寫好了, 不然就會像Stevey一樣, 四個月沒新鼕鼕. (不過, 他是因為很忙, 我是因為很懶.)

PS 因為我是把看到的內容擷取部分出來, 所以可能有偏頗武斷之嫌, 欲一窺全豹者, 請按連結自行閱讀全文.

Apple推出了Safari 3 Beta for Windows, 在其網頁內強調著: fast...


可是我一看, "快", 一點也沒有吸引到我, 快? 我覺得IE or Firefox or Avant都很快啊, 看網頁慢是龜在網路, 瀏覽器能怎麼辦? (當然, 寫的爛的瀏覽器其page rendering speed可以弄得很慢.)

Joel也如此認為:
PS I know; the Apple press release about how "fast" Safari is refers to "page rendering speed." Frankly, that is almost completely irrelevant given that the bottleneck in displaying pages is mostly download speed and network throughput.

另外, 同一篇也提到了, 為了讓程式的啟動時間縮短, 很多程式用了一個技巧: 把部分的程式碼移出來, 讓Windows開機時去執行. 哇哩咧, 這不好像嫁禍於人嗎?

難怪Raymond Chen要說說話:
Some applications will put themselves into the Startup group so that they will load faster. This isn't really making the system run any faster; it's just shifting the accounting. By shoving some of the application startup cost into operating system startup, the amount of time between the user double-clicking the application icon and the application being ready to run has been reduced. But the total amount of time hasn't changed.
應用程式總是有著自私的想法, 希望自己(application)越快越好, 不管他人(例如: Windows OS)死活; 甚至還假設使用者每次開機都會用到它, 於是把自己放進"程式集-啟動"裡面去.

哦, 難怪我的啟動裡面有個"Adobe Reader Speed Launch".

接下來是我更感興趣的事情: 把字型畫到電腦LCD上. 要考慮到美感與易讀性等問題.
這兩張圖就很清楚的告訴你有何不同.
Note: 如果太小看不清楚, 請務必點選圖片看大尺寸的原圖.

這是IE 7


這是Safari 3 Beta


看清楚其中的差異了嗎? 為什麼會這樣呢? Joel作出一針見血的解釋:
Apple and Microsoft have always disagreed in how to display fonts on computer displays. Today, both companies are using sub-pixel rendering to coax sharper-looking fonts out of typical low resolution screens. Where they differ is in philosophy.

  • Apple generally believes that the goal of the algorithm should be to preserve the design of the typeface as much as possible, even at the cost of a little bit of blurriness.
  • Microsoft generally believes that the shape of each letter should be hammered into pixel boundaries to prevent blur and improve readability, even at the cost of not being true to the typeface.
簡單講, Apple認為要保留字型的原貌, 即使看起來有點朦朧; Microsoft認為要以清晰易讀為第一考量, 就算字有點變形. 兩家公司保持的觀點不同.

然後, 想當然爾, 很多人都表達自己的意見, 覺得哪個好哪個不好. 不過結果是可想而知的, Windows的使用者選Microsoft, Mac的使用者選Apple.

於是, Joel又有另外一個陳述:
This goes for anything from silverware (people pick out the patterns that match the silverware they had growing up) to typefaces to graphic design: unless people are trained to know what to look for, they're going to pick the one that is most familiar.
大意是說, 當人們在挑選時, 從銀器到字型, 以及各種跟繪圖設計相關的東西時, 除非受過訓練, 要不然大家都會選擇最熟悉的那種.

嗯, 我捫心自問, 第一眼看到上面那兩張圖時, 我的確是偏向清晰易讀那一方.


題外話
1. 我去申請了Google Analytics, 嗯, 用看看.
2. 最近因為想買Apple MacBook, 所以常常注意Apple的相關新聞(iPod, MacBook, iPhone, appleTV等等), 覺得Apple的廣告行銷以及一些搶市場手法, 嗯, 不予置評, 例如一連串的PC&Mac廣告.