2009年8月28日

Scott Tsai's Embedded Linux Tutorials

我寫了一系列 Embedded Linux Tutorial 還在陸續新增中。目前內容如下:
  1. How to Handle a Linux BSP: from u-boot to "Hello World!"
    • Get a minimal Linux system capable of running a "Hello World" C application from the pack of software that your chip vendor calls their Linux "Board Support Package".
    • Configure and build the u-boot bootloader, the Linux kernel, the busybox minimal application environment and getting dynamically linked applications working.
    • Uses the qemu emulator to emulate an ARM hardware platform that loads all software over the network.
  2. Embedded Linux Application Debugging: gdbserver, duma, mtrace and oprofile
    • Covers remote debugging, buffer overflow and memory leak detectors and the oprofile whole system profiler
    • The "mtrace" mechanism covered is only present in glibc/eglibc and not uclibc or bionic though. Developers using Broadcom BSPs and Google Android should look to dmalloc.
  3. The Little Languages of Linux
    • Covers basic shell scripting
  4. The Linux Initial Ram File System
    • Bundle files and applications with the Linux kernel or do all early setup until the complicated storage device can be used.
    • Covers building a initramfs image with devices nodes inside without root privileges.

目前的內容偏重『系統整合』而非程式開發,我還有一篇 GNU make 入門寫到一半。歡迎批評指教!

2009年5月28日

Born free: Open-source software in the recession (The Economist)

Original article From The Economist print edition May 28th 2009
"Sales at Red Hat, the world’s biggest independent open-source firm with annual revenues of $653m, grew by 18% year-on-year in the first quarter. More and more firms, particularly in Europe, seem prepared to embrace open source (see chart). “Budgets are tight and we think that is good for open source,” said Jim Whitehurst, Red Hat’s boss, when announcing the results."


"Cloud computing—the delivery of processing power over the internet from vast warehouses of shared machines—will further blur the lines between proprietary and open-source software."

"If they are not careful, companies and consumers could get locked into a cloud even more tightly than into a piece of software. This is because data residing in the cloud can be hard to move to another service."

與嘉濠討論 Mercurial 筆記

嘉濠比我年輕一屆,從高中同在在工研社開始,我們就常討論程式語言、軟體開發生產力與軟體工程等問題。這禮拜我們討論了一下使用與推廣 revision control、wiki與bug tracking system 的心得:

1. Nested repositories (mercurial forests 、 git submodules、svn externals)
fcamel: 『我最近要把公司小組內用的 VCS 換用 Mercurial, 有幾個問題和你請教一下
我們目前程式不多, 我打算用一個 repository 含蓋全部,
但有可能會和別人合作, 到時會抽出其中一個 sub-project 和別人共用,
SVN 只要讓對方 checkout 子目錄就好,
但查了一下 mercurial 似乎沒內建類似功能,
只有看到這篇提到有 extension 有提供, 不知道效果如何
http://www.selenic.com/mercurial/wiki/NestedRepositories
不知道你有相關的經驗嗎? 你的建議是?』

Scottt:『 從單一 repository 中拆出子 project 在mercurial與git中都不方便。
建議:專案還小時,讓第二個 project 也checkout 第一個的全部 source code 。
中長期,尤其考慮到API修改、release 時程不同對等問題還是把 library 獨立成為自己的 repository較佳。
當有一個 library 有的三個使用者,或是 API穩定時就可以做了。

我之前一個專案有多個 repository 時,寫一小段 Makefile來協助 clone、tag、release等動作,相當順利。』

2. Work flow
fcamel:『我目前想的 work flow 如下 (兼顧自己暫時階段性工作和乾淨的官方 repository):
hg clone http://... main # http://... 表示組內 canonical repository 位置
hg clone main my_dev
cd my_dev
# update, commit, update, commit, ...
hg diff -r BASE_REVISION > update.diff
# code review
cd ../main
hg patch ../my_dev/update.diff # write a clean and formal log
hg push
cd ..
rm -rf my_dev # drop unused clone and its messy logs.
另外 code review 時, 則是請對方 hg pull my_dev 取得更新,
我也會把 update.diff 上傳到 ReviewBoard, 這雙方方便寫評論,
之前我和同事試用過幾次 ReviewBoard,
雖然功能很陽春, 但單就 review 這件事來說滿好用的』
Scott:『『一般』
developer對版本管理沒有多大興趣,用一個 local repository即可。
我需要改寫歷史的時候用 mercurial queues:
http://hgbook.red-bean.com/read/managing-change-with-mercurial-queues.html
我前一個開發超過兩年、
四個國家約50個developer參與的專案中,會用mercurial queue的developer不到5個.
當時多數修改只有事後 code review,少數關鍵模組、或在release關頭有事前code review。』

3. Source Code Layout
fcamel:『我們主要用 Java, 雜事用 Python, 我目前規劃是
# 假設根目錄是 hg
hg/python # 各個 module 開不同目錄, 另有 hg/python/lib 放 third-party modules
hg/java # 相當於 Eclipse 的 workspace 吧, 我們都用 Eclipse 寫 Java
有其它建議嗎?』
Scott:『強烈建議不要在最上層用程式語言分類。
不用IDE開發Python時,目錄很深很麻煩。
我常用:
libfoobar/org.itrs/FoobarServer.java
libfoobar/client.py
等,把Python工具放到跟它有關的Java碼附近。 flat instead of nested.』

4. Mercurial server setup
fcamel:『暫定用 Apache + CGI 吧, 我想把 server 帳號密碼和 VCS 分開, 或是一般來說, 都是綁在一起, 比較省事?』
Scott:『我們可 commit 的 repository用 ssh public key authentication。
這樣developer來來去去,只要在 .ssh/authorized_keys 中加減一行即可。』

5. Merge tool
fcamel:『你慣用的 diff 軟體是?http://hgbook.red-bean.com/read/ 的作者是用 kdiff3』
Scott:『我也是看了 mercurial book之後用 kdiff3。 使用前要花一個小時讀他的 online help手冊,但之後進行複雜的 3-way merge分常有效率。 我之前跟晶片供應商、還有外國同事 merge code 時,非常喜歡kdiff3 可以 split diff hunk、『剩下差異全部選我的版本』 等功能。』

6. 其他建議
fcamel:『有其它用 Mercurial 的相關經驗可以分享嗎?』
Scott:『6-0. 兩個我用過的GUI:
http://bitbucket.org/tortoisehg/stable/wiki/Home
http://bitbucket.org/mercurialeclipse/main/wiki/Home
6-1. Commit notification email 與 hgweb 介面早點設起來。
6-2. Release 流程,事前先跑過,不要凌晨有人打電話問你 "hg push"為何失敗、"hg tag"怎麼用。
6-3. 推新系統,永遠是訓練人最麻煩,可用『種子培訓』
方式散播mercurial知識。』

7. 嘉濠的筆記

今天我們還見面討論了一下:
0. 嘉濠示範了他用 Eclipse 進行 Java Test-Driven-Development 的流程給我看。此流程 iterate 於寫 test case、實作、refactor之間,很依賴 statically typed language 與 IDE 配合: 1. 產生未實作的 method stub 2. 跳到 method definition 3. 改 method signature 時可很方便修改 definition 及標出全部參數不符的使用地點.
1. hgrc 重要:建議統一。mercurial類似 VIM 需要設定檔寫好才能用得順,這是個缺點。
2. kdifff3用法: 選擇 1.共同祖先2.我的版本3.別人的版本. 好用功能:split hunk、剩下全部選B版
3. mq: qinit my.patch、改code、qrefresh、qpop、qpush、qfinish
4. code review 是訓練新人學習的好方法,強制新手第一個月全部的收改都需要在 commit 前通過 review.
5. wiki: fcamel 在 ITRI 的 team 有6 個人在用
6. redmine: Ajax UI 寫的比 Trac 好,支援多個project,但一個專案多個 repository仍未解: http://www.redmine.org/issues/779
7. 用 Python 寫 test code 比用Java省時
8. 用Python也可以寫跟硬體溝通的程式:Scott在研究硬體規格階段喜歡用 Python寫硬體實驗碼。我用 Java 寫 Test Case 時常咒罵為什麼沒有更方便表示輸入資料的 liternal syntax。如要實作某種『簡陋的 domain specific language』 來表達輸入與輸出也是用 dynamic language比較容易。既有的 Python library也有助於快速寫出 test。
9. C 佔優勢的應用領域(fcamel:『為什麼不全部程式都用支援 garbage collection 的語言實作?』): 3D Game Engine、Driver(因為要跟 kernel 配合)、codec(Scott 認為未來可能被opencl或別的可利用 x86 SSE3 與 ARM neon指令的 library 取代)
10. 工作經驗分享: ClearCase 是Motorola的『企業標準版本管理系統』,我從來沒想過一套號稱成熟、貴得要死得軟體可以這麼難用!
11. The Myth of the Genius Programmer: "we discuss how to avoid this trap and gracefully exchange personal ego for personal growth and super-charged collaboration." 但 SVN 在數年之內就被 git 取代。
12. Scott 的個人設定檔集合:包括用 VIM 當 pager(search for MANPAGER、PAGER)

2009年5月19日

FreedomHEC Taipei 2009 開始報名

報名網址
  • 對象:Hardware工程師、Device Driver與Firmware工程師、Engineering Manager
  • 內容:高密度學習、建立業界人脈與討論Linux驅動程式開發
  • 地點:台北市松山區民生東路四段133號14樓創新廳
  • 時間:2009年6月10~11號
  • 費用:免費
linuxdevices.com 報導

2009年5月1日

FreedomHEC Taipei 2009 研討會

FreedomHEC Taipei 研討會
主題 Linux Device Drivers,免費(台灣納稅人透過資策會請客)
於2009年6/10 ~ 6/11在台北市松山區民生東路四段133號舉行

議程暫定,還沒排滿,徵求演講者中,還沒開始報名。

今年會有 "Write a Real, Working Linux driver" 的 tutorial,由 Greg Kroah-Hartman 主講。他喜歡從頭寫個 USB 溫度計 Driver當例子,很多業界工程師應會有興趣。

另外 "Linux Device Drivers" 與lwn.net 的主要作者 Jonathan Corbet 也會來 :)我個人從 2001 年每週四必讀 lwn.net

去年我看到國外資深 open source developer 要來台灣,特別跟公司請假參加。今年我變成有在幫忙籌劃,但辛苦的工作都還是資策會創新應用服務研究所的黃昭龍先生與 Novell 的 Brandon Philips 先生在作。

2009年4月19日

我的第一個 Patch (用冷門輸入法的代價)

我的第一個 open source patch 撰寫於1999年9月:是修正以『許氏鍵盤』用注音輸入法時的問題。當時我在一個用來作絹印感光的房間中,成功修掉了bug,認為自己終於對open source有微薄貢獻而興奮非常!

期間Linux下輸入法的實作換過多次,我偶而就會撞到bug:到2009年的今天,Fedora 11 Beta下的ibus-chewing『許氏鍵盤』又有bug時,我承認我有點沮喪。同一段程式我們到底想實作、除錯幾次?

2009年4月15日

[xkcd]緊急任務

電機系的應能欣賞此篇漫畫:
Urgent Mission

Edit: added link to original xkcd comic and alt-text.

2009年3月23日

The Changing U.S. - South Korean Alliance

The Changing U.S. - South Korean Alliance By Richard Halloran

"... the turbulence that afflicted the alliance in recent years has calmed down but the underlying issues have not been resolved. ...

... Much of the fault for the strain in the alliance has been laid at the feet of two former presidents, Roh Moo Hyun in Seoul and George W. Bush in Washington. Roh came to office in 2003 with an explicitly anti-American posture. Bush made little attempt to hide his contempt for Roh. ...

...President Lee evidently favors a stronger alliance with the US but lacks a national consensus behind him.... South Korea is now a highly divided society between pro-American conservatives and anti-American liberals.

Those Koreans who have resisted the transfer of wartime command of their forces, many of them in the older generation who remember American troops fighting for South Korea in the Korean War, fear that the transfer of operational control will lead the US eventually to abandon South Korea.

... the US has trimmed its forces in Korea to 28,500 from 37,000, and is consolidating them in posts south of Seoul from which they will support South Korea if needed. To keep US forces in Korea, Seoul is paying for 90 percent of the $2.5 billion cost of current construction at a post in Pyongtaek. Who will pay for the rest of the $13 billion in total costs is being negotiated."

2009年2月28日

工業技術研究社 2009 ~ 1992

工業技術研究社(Industrial Technology Research Society),簡稱『工研社』(ITRS),是一個學術性研究社團。
匾額
itrs-banner
Personal Favorites
From itrs-favorite
2009 應屆高一
From itrs-2009-training
2009火鍋大會
From itrs-2009-hotpot
媒體報導
From ITRS
From itrs-2006. 聯合報
2007 火鍋大會
From itrs-2007-hotpot
2006 招生
From itrs-2006-recruiting
2006 夏(馨怡的blog post
From itrs-2006-summer
2006 火鍋大會
From itrs-2006-hotpot
2005 夏
From itrs-2005-summer
2005 火鍋大會
From itrs-2005-hotpot
2004 冬
From itrs-2004-winter
2004 夏
From itrs-2004-summer
2004 和春盃自走車大賽
From itrs-2004-robotics-competition
2003 火鍋大會
From itrs-2003-hotpot
2002 寒訓(The C Programming Language, Chapter 6)
From itrs-2002-winter-training
2000 冬
From itrs-2000
2000 冬(2)
itrs-2000
1996 冬
From itrs-1996
1998
From itrs-1998
circa 1992(?)
From itrs-circa-1992

Edit 1: Add 1998 album. (2009 March 2nd)

Edit 2: Add 2009 hotpot photos from Lai. (2009 March 22nd)