Tuesday, March 25, 2008

我的編程歷史

8歲:父親買了我第一部真正接觸的電腦,為386SX25(以往還有AT/XT機、Apple II等,都沒有真真正正地玩過)
10歲:暑假到元朗大會堂學Logo,就是Turle走來走去的那一個Logo。一般同學畢業前學懂repeat,我學畢後自修學會recusion,還編寫了簡單的作曲function,記得有生日歌、聖誕歌等。
11歲:任天堂末代推出過「家用電腦」軟件連Keyboard,內有Basic的,由於不太出名,reference不足,摸不上手。
12歲:在MSDOS 5.0內玩MS Quick Basic,Programming還是在電腦上做比較好。主要為了修改裡面的猩猩+香蕉遊戲而學的。
14歲:得知上會考班要讀電腦,在暑假自修Pascal,中四上課前寫好了Mastermind,學會了linked list,也就是大學一年級的Introduction to programming的程度吧,因為我是在圖書館借了一本Pascal的教本學的,我記得上面寫住給College First Year收讀,當年以為College就是高中的意思...
15歲:在數學科上學會了Calculus,寫了一些Polynomial四則、D、In的function。同年,在Win 3.1上試學Delphi,失敗了... Event-driven model 還是太新了。
16歲:當大家還沒有在用56k modem的時候,我已經在hkstar上有自己的homepage,是手寫的HTML,對應的是Internet Explorer 3.0及Netvigator Communicator 3.5。由於hkstar上不能行script,只好用外國的message board,不然已經給自己編了一個Blog...
17歲:DHTML時代,接觸java、ActiveX等,成立Blog型式的homepage,但還要手動加post的,所以一直都沒有加新文章入內。當年的筆記上,還寫著「public static void main <--???????????????」。
18歲:升大學的暑假,除了做暑期工外就沒其他事做,學會了Visual C,更寫了第一隻DirectX Game,是一個scriptable的plane shooting遊戲,對應的是VC6+Dx7。
19歲:偶然見到同學拿著一本「手機鈴聲大全」,裡面全是鈴聲code... 而且Nokia、Ericsson和Motor等的code都不同的,突發奇想,寫了第一個MFC的program,就是Mobile Phone Song Player,除了能翻譯各機的code外,還可midi發聲及output midi file的。不知為何會有人知道有這個作品的存在,有當時的大鈴聲網站link到我的作品處,介紹說:「這可是香港人的作品!」,下載次數高達5位數... 當年還只是一個year 1的大學生...
21歲:畢業作品為波子棋的AI研究,寫了一個Windows(Doc/View Framework)的client,除了可以和AI對戰,還可以網絡IP對戰,而且有chat room功能呢。
22歲:為給女朋友做生日禮物,學會了Flash,寫了一張Interactive的生日卡,用的還是ActionScript 1.0,還沒有class的概念。
23歲:參加了ACM Online Programming Contest,有興趣可以去看看 Valladolid Online Judge,活躍了一兩年,解決近150題。其中有一題有關 15-puzzle的題目,論速度、論內存,當年還是世界第一呢!
24歲:從事數學教育工作,為工作寫了很多教學上的小幫手,除了offline的「出題機」外,還有一些帶到堂上使用的PocketPC工具,成為我上課不可缺少的一部份。代表作為「24計算」及「火柴遊戲」。
26歲:真真正正成為一名全職的Software Engineer,接觸到的可多了... C/C++/Java/PHP/Blackberry Java/Symbian C++/Mac Cocoa (Objective C) ... 未能盡錄...

Friday, March 21, 2008

論壇管理

進入Web 2.0時代,特徵之一是資訊的發佈不再只有個別的組織或團體,用家的全面參與使Web的內容更充實及生活化。用家最主要的參與,最要是以Blog Post,或者是在論壇上進行討論。Blog與論壇的最大分別,在於前者比較個人為主,用家想表達什麼就寫什麼,主題自主性很大;後者則面向公眾 ,用家就一定論題提出意見,互動性較強。

數年前,因迷上一遊戲而加入了一個專門的論壇,更因積極討論而被邀為版主,一做就三年,期間論壇發展迅速。最近重遊舊地,論壇的光榮看來已經不復再,看到這樣的情景,不禁有點心傷。

一個論壇的興衰由無數因素決定:資訊夠不夠豐富、題材夠不夠新鮮、目標用家的選擇......但當中最決定性的,是一個論壇的管理質素。

論壇由三個主要部分組成,分別為管理員(administrator/admin)、版主(moderator/mod)及用家(users),三個組別成員之間的互動,形成活生生的社群。管理員為論壇的當家,人數最少,一般由二至三人組成。版主負責版務,一般要檢視所有文章/回復,人數視乎論壇的主題性質及數量而定,一般每種類的版由不同的人處理,每版人數一至三人。用家則不用太多說明吧,就是參與的人,一般分為「會回覆」及「不會回覆」(CD-ROM,取其Read-Only)兩類。

下表顯示各組別的互動關係:





AtoAAtoMAtoU
MtoAMtoMMtoU
UtoAUtoMUtoU
所謂論壇管理,應該是指政策的制定(AtoA)、指令的傳達(AtoM)、版務的處理(MtoU)、用家的互動(UtoU)等全部九個範疇的大共和,進一步改良,粗略總結出下表:





政策的制定指令的傳達規則的執行
定期的報告工作的協調版務的處理
用家的意見身份的提升用家的互動

由於曾經作為中層的管理者,後期升級至較高級的身份,同時亦是論壇中最活躍的會員之一,我對以上的種種都有切身的感受,往後一一細談。

Wednesday, March 12, 2008

New Project with C# 2008 + .Net 3.5

學習Visual C,以VS6開始,都差不多十年。陪著我走的有VS6, VS.Net, VS 2003, VS 2005,雖然沒有什麼大作,但過程中包括了Game, Midi, MFC, Network, AI, Mobile等多方面的知識。

去年 1 1月,因工作關係接觸了C#,寫了有關Office plug-in的tech demo,進一步理解什麼是「與時並進」,從前的基礎很重要,新的語言也要好好學習,不然就會好像公司近來interview的求職者一樣,不能達到現今的要求。

所以今天開始,要好好學習,最有效的方法就是切實地去完成一個Product。一直都想更新以前的ChineseCheckers2,今次就以Visual C# 2008,編寫我的ChineseCheckers3。

什麼是「母校」?

「母校」就是你就讀過的學校,或者是你畢業的地方。

但為什麼不就稱為「就讀過的學校」而稱為「母校」呢?重點在於「母」。

母親除了給你Give Birth外,還和你有數之不盡的關係:無條件的包容、無條件的照顧、無條件的愛... 最少,一個母親在沒有病痛、沒有受傷的情況下,都不會忘記自己的兒女。

和你享有相同的母親的人,我們稱他們為兄弟姐妹。

這三個月來,我到過我畢業於的中學、大學,見過不少同學、朋友和老師, 令我再次對「 母校」的定義反思,令我從新再一次判斷那裡是「我的母校」。

學校沒有生命,它不會有記憶,能把你「記憶」下來的,最多是你比賽、成績的記錄,又或者是你破壞的永久傷痕。但對很多人來說,這些紀錄都不存在,除非你是top或bottom students... 所以這種「 記憶」不完全成立。

「記憶」還是生物的專利,也就是說,我們存在的證明,在於「人」。就算你沒有豐功偉蹟,也沒有永久破壞,只要你曾經存在過,總會有人會記得。這些人不一定還存在於過往的物理位置,「笑回客從何處來」都是見怪不怪, 我所指的人,是曾經和你一起渡過多年歲月的「兄弟姐妹」。你記得的不止是你認識的人 ,他們記得的不止是你一個人,這是一種集體回憶,就像皇后碼頭的乘客一樣,每人都有不同的故事,你曾出現於不同人的故事中。

回到學校、參加組聚,見到很多人,亦被很多人見到,聽到的是「呀!多年不見 ,你近來如何?」、「你是... 忘記了,但我認得你」等等,既陌生又親切。不 要害怕說:「我已經忘記了你的名字。」這會使你永久失去珍貴的回憶。反之,說一句:「你以前是鄰班/住在二樓的/上過xxx課的同學吧!」這可更新兩人的回憶。

愈說愈遠了,什麼是母校?能給我以上那些感覺、感想的那些「就讀過的學校」,都是我的母校。