顯示具有 學習 標籤的文章。 顯示所有文章
顯示具有 學習 標籤的文章。 顯示所有文章

2024年8月17日 星期六

AI改變學習的方式:個人化與多主題深度學習的實踐

人工智慧(AI)在現代學習中的應用日益廣泛,並且正在重塑我們學習知識、解決問題以及掌握新技能的方式。AI技術可以自動化大量的學習過程,提供個性化的學習體驗,並幫助學生和專業人士更有效地理解和應用知識。本文分享AI在現代學習中的一些主要應用,特別是像ChatGPT這樣的語言模型的作用,以及OT在這一年多來(重度)使用後的心得。


2022年6月11日 星期六

Elnath - 「與父母一起成長」

很多年前的育兒觀念就在提倡「父母要跟孩子一起成長」,反過來說學習這種事情是互相的,當孩子看到父母親努力地充實自己,不由得也會充滿前進的力量。

晚上Elnath睡前陪她說一段故事已經變成齋藤先生家裡的一種習慣,若聽不到故事Elnath會吵著不睡覺。從童話故事開始,已經經過很多種版本的變化:從最簡單的小紅帽,三隻小豬與大野狼,演變成「小紅帽+三隻小豬與大野狼」的多種版本。雖然主角一樣,但是卻總是能發展出不同的故事線;而Elnath也會適時地發揮想像力補充:「爸爸,這裡不是這樣講,應該是...」 不僅調和家庭關係,也讓親子間的相處多了許多化學變化。不同的故事線,可以演變成討論如何交朋友,如何關心家人,如何蓋好一間房子,甚至是變成討論綠建築的環保議題。

有天晚上,Elnath睡前照例要聽睡前故事,齋藤先生問說「想聽甚麼呢?」原本以為Elnath會說「小紅帽+三隻小豬與大野狼」,沒想到答案竟然意外的是「可以跟我講科學的故事嗎?」齋藤先生想想,剛好最近建造三十年不斷延期的韋伯望遠鏡終於完成校正並開始執行任務,便開始說起天文望遠鏡到韋伯望遠鏡演變的歷史,還有在2021年天文學家終於有能力拍攝到黑洞,關於陣列望遠鏡這些故事。在一旁Alniyat 也聽得津津有味,提出許多有趣的觀點。

還在學生時代的齋藤先生其實對天文一點也不感興趣,更別提物理跟數學這種基礎科學了。但是經過這些年不斷地累積相關知識,漸漸也懂了些皮毛,至少可以把故事說得讓孩子感到生動有趣。而孩子覺得有趣,又會成為另一種正向的力量反饋回來,讓自己願意去接觸更多的相關知識。孩子來到世間,滿足我們為人父母的願望;不斷的充實自我,努力前進,也許也是對孩子的一種感謝。

齋藤先生想到自己的父母親,在教育孩子上面剛好是兩個不同的典型。父親很聰明,但他常常誇耀自己很聰明,學甚麼都很快;而媽媽雖然表面上看起來對於學習不是這麼在行,卻總是默默在進修充實自己。後來齋藤先生的父母親先後拿到了碩士,對齋藤先生都是很大的鼓舞,活到老學到老。

本圖取自https://udn.com/news/story/7266/6309118


OTORI
民國111年6月11日

2021年12月11日 星期六

給不惑之年的我:謝謝17歲的你,致每段還來不及癒合的關係

謝謝17歲的你,致每段還來不及癒合的關係。

今年生日一如往常,又是無法在家裡渡過。但站在客戶的立場想,這也是合理的;畢竟一年的尾聲,很多工作客戶們也都希望能完成到一個階段,過完年又是新的開始。工作是自己選擇,有喜歡的部分,但也得同時接受不喜歡的部分。

16歲剛上高中的那會兒,我一直覺得自己毫無疑問地會念文組。如果父親還在,我真想好好抱住祂,誠誠懇懇地說聲謝謝!

不確定父親是否看出我有唸理工科系的潛能?還是未來台灣的產業會向科技業傾斜?還是只是單純覺得男孩子就是不應該念文組?這些都不可考了。畢竟台灣文組的學生工作待遇除了律師之外,以文學院及商學院的學生而言,就業市場明顯要比理工科的學生競爭許多,而這十年來趨勢又更加明顯了!

17歲開始讀二類組之後,除了國文及英文外,基本沒有一科考試是及格的,讀書讀到開始懷疑人生。父親看我成績如此,我痛苦,他更痛苦,於是要我轉組;但OT個性何其倔強?硬是不轉!父子關係從那一年開始就沒有好過,而且每況愈下;我更加不願意面對課業,翹家、玩樂團,甚至還跑去考音樂系,學業是一蹋糊塗!

聯考前幾個月,看到同學們一個個甄試上大學,覺悟到自己真的該好好念書一下,不然真的沒學校念;想不到運氣不錯,經過幾個月的努力還是考上了台北市的私立大學,重點還是考上應用數學系!數學,原本是我很討厭的學科之一,其次是物理跟化學。

也許這就是緣份。在應用數學系必修微積分跟普通物理,在課堂上發現好像比高中時更開竅了些,沒那麼艱澀難懂了;不然也不可能修完高等微積分、統計、線性代數、離散數學等。計算機概論當時是必修學分,竟然意外的讓我覺得學習程式語言是件很有趣的事情,之後更決定考資訊工程類相關的研究所。雖然運氣不錯考進台北科技大學,但是因為基礎不夠紮實,許多學分重修,比同屆大部分同學晚了半年畢業。不過出了社會才發現,晚半年一年根本也不影響甚麼。

從大學到研究所的那幾年,雖然成績也不怎樣,但卻是很重要的一個轉戾點:我變得很能接受數學模型做抽象思考,邏輯被整個重新訓練;抽象思考後,再把問題具象化變成工程。大學還沒畢業時就曾想過要做跟車用電子相關的工作,現在果然是在這個產業;若不是17歲誤打誤撞地堅持,可能永遠到不了這步吧?或是最終也是會進到這個行業,但可能要花更多的力氣也說不定。而就在我大學畢業的那天,父親走了... 所以父親始終也沒能知道我是真心的喜歡這條路,甚至還讀完了研究所,以此為志業。

有時候看著懵懵懂懂的小女,總會想到17歲跟自己父親僵固的關係;從現在這個時間點回頭看,祂的判斷沒錯,最終我也喜歡這條路。然而,我懷疑可以像自己父親一般,在關鍵時刻指引女兒甚麼嗎?每次想到這點就覺得有點灰心。但父母是「真心為孩子著想」,也許比「想要為孩子指引甚麼」本身更加重要吧?況且有Feng在,這點擔心實在多餘!😆😅

年輕時輕浮與不成熟,讓自己沒能好好把握許多重要的關係,像是與父親的關係便是,直到最後都沒能好好跟祂說謝謝。對於陳家一家人也是如此:曾經無比挫折,但時間一久,誰對誰錯也不再重要了... 可能從來也都不曾重要過吧?人生難免有正在全力擁抱夢想然後突然摔得粉身碎骨的瞬間。如果有機會再見面,也許是句「謝謝」,也許是聲「對不起」,就這樣了。與父親關係的這份缺憾,在將來育兒過程中勢必會持續影響著我,姑且讓這份思念成為繼續推動前進的養分。

今年是在N公司經歷的第十個生日,慢慢地從新鮮人站穩腳步,也漸漸有了可以信賴的戰友們。隨著新能源車及自動駕駛技術的蓬勃發展,車用電子即將進入另一個黃金十年;工作有有趣的地方,同時也會有辛苦的地方。期許自己總能保持17歲那般傻傻的堅持與毅力,能更積極成熟的處理問題,並持續學習好好把握與珍惜每段關係。

四十歲,站穩腳步,展望未來,也期待修補每段還來不及癒合的關係。

偶而曬一下本尊



OTORI
民國110年12月11日

2018年1月28日 星期日

師說、授業—關於學習、志氣與愛情觀

上一篇OT分享了曾經在「物件導向分析及設計」的課堂上老師說過的名言金句,在這一篇文章中則是要分享在學生時代,關於學習、志氣與愛情觀老師教誨過的事情。

關於學習
OT高中念的是花蓮高中。在高中時代因為不太愛念書,所以成績很糟糕,特別是理科;但儘管理科再差,在父親的逼迫下,OT最後還是選了自然組。因此高中三年對我而言無疑是一段難熬的時光。

儘管那不是段開心的時光,老師們有些教導還是很具啟發性。
  • 「不要好高騖遠」
    • 意義:高一的數學課,因為每次小考都考不好,所以很理所當然地買些參考書來看;裡面有些看不懂的題目,也很自然的會去問老師。當時的數學老師是王進龍老師。最記得有一次王老師跟我說:「OT,不要好高騖遠;課本裡面的題目都還不會解,就想解這種題目。」老師的意思是希望求學能按部就班,學習都是紮紮實實的。
    • 啟示:當時我並沒有理解要實踐「不要好高騖遠」所需付出的努力,因為後來大部分的時間我上課還是沒有專心聽課,課餘時間也在玩社團活動,所以數學成績一直沒好過。後來課本上的題目還是不會解。我想當時的自己應該是遇到困難就容易放棄的少年吧?
    • 挑戰:經過職場的歷練,不要好高鶩遠這句話給了我兩個挑戰:第一個是如何在資源不足的情況下仍敢於訂一個遠大的目標?第二個則是如何在實行這個目標時不讓人感覺「好高騖遠」?從團隊來說,在這個充滿挑戰的時代,如果不訂出一個積極的目標,帶領團隊前進,很快地就會被產業給淘汰;所以不可能故步自封、原地踏步。但是一旦目標離現實太遙遠,讓團隊成員覺得就算拚了命也不可能達到,很容易淪為空談。而這個觀念放到以個人來說,當你決定是否接受某項任務時,評估自己的資源固然重要,但是如何利用現有資源去完成一個有挑戰性的目標,這樣的企圖心更是決定工作成就的重要區別。
  • 「不要一有機會就失敗」
    • 意義:同樣是在高一王進龍老師的數學課,課堂上總會有些小考或是隨堂抽問,每次只要抽到OT就是答錯不然就是答不出來;於是老師總會語重心長地說:「OT,不要一有機會就失敗」。
    • 啟示:同樣的,其實當時我也沒有理解要實踐「不要一有機會就失敗」的意義,所以到了要畢業前還在補考。
    • 挑戰:其實這是一件很可怕的事情。我們常聽到「機會是給準備好的人」,但是如果我們不斷地錯過每個機會,在每次最佳的時機點都以失敗錯過,最後就是只有一個失敗的人生在等著你。意識到這點之後,這句話反而成了我現在經營項目最重要的態度:「只能成功,不能失敗!」所以每每到了關鍵時刻,我義不容辭的願意付出時間、精神、力氣,甚至犧牲家庭相處的時光來達到目標。一旦下定決心,就全力以赴吧!

關於志氣
  • 「身為花蓮的菁英,你們絕大多數的人都會離開花蓮」
    • 意義:高中入學典禮的時候,這是花蓮一位私立高中校長講的話。跟這位校長說的一樣,OT大部分的同學都不在花蓮,有些到了台灣比較大的城市,有些則是出國成家立業。有時跟同學聊天時,似乎身為花蓮人都比較能夠接受「真的要有一番作為,就要離開家鄉」的想法;這可能是每位花蓮人在成長過程中被灌輸了根深蒂固的思想吧。
    • 啟示:也許是個性的關係,當時在聽到這句話的時候,就完全明白自己終將有一天會離開自己成長的地方發展。
    • 挑戰:開始工作之後才發現原來離開家鄉到數千里外的地方工作這種事情是很平常的事情。像OT其中一位大陸同事,是在新疆長大,在成都念書,在深圳工作;等於每個人生階段人脈都被reset一次。而像是福建跟河南是人口外移大省,沒有太多的工業建設與商業發展,所以大多數這兩省的子弟會到千里外的大都市打拼。雖然覺得離開家鄉工作是必然的事情,但有的時候還是會被情緒打敗;如何克服情緒問題專注把工作做好,才是挑戰的開始。
(攝於花東縱谷)


關於愛情
  • 「愛是一種能力,當你覺得可以的時候你付出,不行的時候你離開」
    • 意義:這是大一國文課聽到的。很遺憾已經不記得這位國文老師的名字了,而且也忘了當時講課的內容是甚麼,為什麼會講到這件事情?故事背景依稀是老師在講自己的擇偶過程:老師有一位從小一起長大的親梅竹馬,他們倆個是互相喜歡的,但是後來這個男生決定從事軍職,老師覺得自己無法承受一個人待在家裡,每天要擔心自己丈夫的安全。因此雖然已經論及婚嫁,最後她沒有接受對方,選擇了一位工作平穩的人共度此生,那便是她現在的丈夫。她那時就說了,要我們別把愛情看得太偉大:「愛是一種能力,當你覺得你可以的時候你付出,你不行的時候你離開」。
    • 啟示:當時年輕氣盛的我並沒有聽懂的話,花了好多時間在感情路上跌倒,才終於體會到原來許多年前老師說的話是對的。
    • 挑戰:不是說愛情不重要,但也不能說人生只有愛情重要。這段談感性的篇幅,老實說對OT寫起來不是很容易;擔心寫重了噁心,寫輕了無情。然而有很多事情需要用平常心看待,退一步看世界海闊則天空;心靜了,人生才能左右逢源,越走越順利。「愛是一種能力,當你覺得可以的時候你付出,不行的時候你離開」 這段話留在這裡,各位讀者冷軟自知吧。


下一篇,談得雖然也是課堂上學到的,但卻是在出了社會後;我們談談OT在禪宗道場學習到的教誨。


OTORI
28.01.2018

2014年3月30日 星期日

年輕人要一起加油!

  去年有段時間跟Feng看房子看得很勤。印象比較深刻的是位於汐止的一個物件,賣方是一對年輕夫妻,有個出生不到3個月的小Baby。物件位於汐止小巷內,雖然是五年的新屋,可惜的是除了新,關於物件位置、空間配置都與我們的需求大相逕庭。

  算一算這對夫妻的年齡跟我和Feng相若。臨走前,太太很客氣的送我們下樓,順便帶我們認識附近環境。我好奇問她為甚麼想賣這裡,太太很客氣的說:「當初買房子時沒有考慮到小孩子,現在有了小朋友,覺得空間不夠,也還想再生第二胎,因此想換到(汐止)更裡面;雖然那裏比較舊,但空間更大。」也許是互相體諒現在高房價的辛苦,她用勉勵的語氣說道:「現在買房子真的很辛苦,年輕人要一起加油!」

  最近幾個月比較常到大陸出差,今年開春以來,待在大陸的時間已經比回老家省親的時間多出許多。能到大陸出差,來自於客戶及老闆們信任,對此我非常感激。

  這個客戶在大陸汽車電子界耕耘許多年,卻是頭一回接到來自日本客戶的單子。日本客戶的難以應付是眾所皆知。他們能夠用半年、一年的時間長期派駐員工在供應商,每天檢視進度;然後等到快要出貨時不僅會緊急更改需求,同時也有許多新功能在此時才提出。以專業的軟體開發而言,雖然不允許這樣的行為,但是面對長期的商業合作,也只得妥協。

  而大陸客戶這端對應到他們日本客戶的,其實也正是跟我同年紀的「同學」,大陸所謂的80後新生代。不論是專案管理者(PM)、系統架構工程師(SA)、團隊領導(PL),都是由這群年輕人負責。不知不覺之間,在大陸已經開始由這群80後展頭露角了。同樣是幫助客戶以最低的成本達成他們客戶對產品的期望。利用合理的分析、殷切的懇談,再加上專業的精神;然後動用團隊的力量,以妥善的資源達成與客戶間許下的承諾。

  雖然30年來我跟這群「80後」生長在不同環境,說著同樣語言卻受著不同教育,對世界懷著不同想望,對於國家的意識形態更加大不相同。但是站在開發產品的專業立場,對於達成商業目標的精神,我們並無二致。

  看著這群80後努力往前衝刺的同時,身為同一個世代又怎能對這股近在眼前的漩渦一副事不關己的態度?同樣是年輕人,要從這股潮流中獲得些甚麼,自然也要去對等的付出與爭取。

  「年輕人要一起加油!」借用那位緣一面太太的話,不僅僅跟這群合作夥伴互相勉勵,因為這個專案,要走得更前面;也送給台灣的7年級生,不要被生活打敗,大家一起加油!

(註:本篇文章寫於深圳寶安機場。因為大雨緣故機場關閉,地面作業無法進行。等待行李之餘完成此篇文章。)


30/03/2014
O.T.

2013年10月6日 星期日

Using GIMP Edits Photos

    Using a software to edit your photos is unavoidable. In different situations you may need to corp, paint, or adjust the panel size, white balance, brightness and contrast. In advanced usage, sometimes applying some appropriate effects on your photos will make them more striking.

    I'm a software engineer and I'm very glad to find useful open source to resolve my problems. For editing photos, I recommend GIMP. And in this article, I would like to introduce GIMP and functions of it in common use.

What is GIMP?
    GIMP(GNU Image Manipulation Program) is an open source which means it is free and you can have its source code if you want. It is maintained by GNU. The official site of GIMP is http://www.gimp.org/. You can download a copy and get its source code here. They offer different version for installation on Window, Linux and Mac OS. The documents cane be found on http://www.gimp.org/docs/. It is very important to help you understand GIMP.

Auto-Colorizing
     I would like to introduce some auto-colorizing functions first. Those functions are very useful if you want to stress color. Besides, they are very easy to apply to images. Thus I recommend those functions to people who just get starting with photograph.

    You can find these two functions in the path of Colors->Auto. The following figure is taking for reference. I think functions such like Equalize, White-Balance and Color Enhance are common in use. After applying them, your photo's RGB level will be adjusted automatically.

    This is the original picture:

    After applied auto equalizer:

    This is an example before applied with auto white-balance.

    Applied auto white-balance:

    Let's see the last example which shows the difference between before applied auto color enhancing and the result.

    The result applied auto enhance:


Brightness and Contrast
    Sometimes auto colorizing would not be able to work good, especially your photo is too dark or contains people. At this moment, you can try to adjust brightness and contrast manually. The following figure shows the path of this function (Colors->Brightness-Contrast tool).

  Original:

  after adjusted Brightness-Contrast:

Colorize
    To make photos looks like old fashion, normally speaking, it is a good idea to use Colorize to reach this goal. You can find Colorize in the path Color->Colorize.


    This is the original pciture:

    You can adjust Hue, Saturation and Lightness properly to make it look like as following:

Desaturate
    Besides applying Colorize, another to make photos old I suggest to use Desaturate. This function can be found under Color->Desaturate. With using Desaturate, there are three algorithms you are allowed to use. They are Lightness, Luminosity and Average.

    Original:

    After applied Desaturate:

Overutre Y. Chao
06/10/2013

2013年6月17日 星期一

盍各言爾志?

蓮花詩人本月在太魯閣遊客中心辦書畫個展,如果到她的網誌上流覽,不難看出她對這次的展覽相當滿意。


雖然已步入耳順之年,詩人潛心字畫幾年下來,也累積許多不錯的作品;再加上透過不斷的精鍊,一步步邁向藝術更高的境界。然而在做晚輩的眼中,看到她追求的不單純是美感,也在嘗試攀越著人生另一座高峰。

星期五下班時,聽老闆分享這趟商務旅行的收穫... 也許是師出同門的關係,老闆似乎總把我當成小老弟般看待更勝於一位工程師。在陽台上,俯瞰著內湖大大小小的建築,他一邊抽著菸,一面描述著旅程中去了哪些地方、見了哪些人、獲得什麼情報、公司下一步該怎麼走,眼神堅定的望著未來。我明白,他正在做著一件他覺得很有趣、很有成就感的事情,而且清楚知道這就是他想要的。

月底一個朋友要結婚了,搶在喜宴之前,三五好友聚一聚,簡單吃個飯,也順便聊著各自的終生大事。有人是月底結婚,有人是年底結婚;有些人是家庭革命,有些人是小倆口決定就好;有些人是遠距離戀愛,有些人是希望婚後仍保有自由空間。聽著一個個不同的故事,卻同樣都是不斷努力著進階自己的人生。

季路有次問孔子如何侍奉鬼神,孔子回答:「未能事人,焉能事鬼?」;季路接著又問孔子死亡是怎麼一回事呢?

人生須臾,生老病死一下子就過去了;活著,總得有個理由... 為理想也好,是責任也罷,總得給自己一個理由,是吧?

論語中有段記載是孔子與學生們討論各自的志向。子路說:「願車馬、衣輕裘,與朋友共。敝之而無憾。」,顏淵則說:「願無伐善,無施勞。」最後子路孔子「願聞子之志」時,孔子回答道:「老者安之,朋友信之,少者懷之。」而這個志向在「禮運大同篇」闡釋更加明確:
大道之行也,天下為公。選賢與能,講信脩睦,故人不獨親其親,不獨子其子,使老有所終,壯有所用,幼有所長,矜寡孤獨廢疾者,皆有所養。男有分,女有歸。貨惡其棄於地也,不必藏於己;力惡其不出於身也,不必為己。是故謀閉而不興,盜竊亂賊而不作,故外戶而不閉,是謂大同。
這段描述曾經發生在周朝的美好年代,當時大道奉行,選賢與能,人民注重品德與才學;社會繁榮穩定,每個人都有自己安身立命之所,遠離恐懼。

「未知生,焉知死?」是孔子季路的回答。如果活著的時候都不能好好活著,又何必談論死亡?所以孔子終其一生,想到的、說出口的、做出來的,都是以一貫之;君子任重而道遠,死而後已。

問問自己的理想是什麼呢?自己是否有認真的生活過呢?載浮載沉了三十多年,仔細檢視自己的人生,說真的,我曾認為自己是幸福的:起碼有過不錯的工作和幸福的家庭。可惜那樣的時光並無法維持多久... 接著便陷入是非對錯的泥沼裡,然後在愛與復仇間掙扎著。

在德國徘徊的時候,我到了一個叫做Bonn的小城市,貝多芬的故居在此。我走在Bonn一條條簡單而樸素的街道,小鎮內大多是由石頭鋪成的道路,雜踏著來往旅者的足跡,刻劃歷史的洗練;整個城市以淺黃色系為延伸,兩排的建築不帶有多餘的線條,略帶冰冷的空氣,呼應著萊茵河的歲月悠悠。我喜歡這樣簡單卻將優雅內斂的品味!從建築到態度,從飲食到衣著,大多數的德國風格隱含著簡約的生活格調。

「射有似乎君子,失諸正鵠,反求諸其身。君子之道,辟如行遠必自邇,辟如登高必自卑。」當我想到中庸裡的一段話時,竟是意外發現自己如此喜歡簡約態度的當下。

也許是因為發現自己對於生活訴求是簡單的,想想與其繼續在負面情緒中顛倒夢想,倒不如勇往直前。這樣的體悟,讓我在訴訟的最後關頭選擇諒解,獨自重新譜著嶄新人生。然而不論提出告訴或是豁然諒解,都是艱難的決定;也許唯有離開當下的境,才能勘破因緣合和。


現在,簡單的看書,簡單的寫文章,聽著單純的好聲音,心無旁鶩的追求工作表現,享受兩人的獨處。


2013/06/13
O.T.

2013年6月2日 星期日

An Implementation of Channel Converter (from mono to stereo)

There is an experience about sharing how to make a converter between mono channel and stereo channel.

To implement a channel converter is quite easy. The critical part of this kind of converter is to transform the input data as interleaving to output. Let us look the following diagrams that might be helpful.

For example, we get an original input data like table 1.
Seq. (input)
0
1
2
3
Data
0xaa
0xbb
0xcc
0xdd
Table 1. The original input data

And what we want to do is to duplicate the same data interleavely to another one. That will make the left channel and the right channel has the same data as table 1, such like table 2 and table 3.
Seq. (left)
0
1
2
3
Data
0xaa
0xbb
0xcc
0xdd
Table 2. The left output data
Seq.
(right)
0
1
2
3
Data
0xaa
0xbb
0xcc
0xdd
Table 3. The right output data

Thus, the output data will be like table 4.
Seq. (output)
0 (L)
0 (R)
1 (L)
1 (R)
2 (L)
2 (R)
3 (L)
3 (R)
Data
0xaa
0xaa
0xbb
0xbb
0xcc
0xcc
0xdd
0xdd
Table 4. The stereo data come from table 1

There is a sample code just for reference:

int converter(int8_t *input_data, size_t size)
{
    int8_t *output_data = (int8_t)malloc(sizeof(int8_t)* size * 2);
    int i = 0, pos = 0;

    for(i; i < size; i++){
        memcpy(output_data[pos],  input_data[i], 1);
        memcpy(output_data[pos + 1], input_data[i], 1);

        pos += 2;
    }
}

However, the format what you are processing is important too. The above one is only for a 8-bits and little-significant(LS) format. If some people who just apply the above sample codec into a 16-bits and LS format, they will find the left data and the right data are totally different. The output is like table 5.

Seq. (output)
0 (L)
0 (R)
1 (L)
1 (R)
Data
0xaaaa
0xbbbb
0xcccc
0xdddd
Table 5. The output data with wrong format (8-bits LS into 16-bits LS)
In this case, there is a result that I record it before and the result showed as figure 1.
Figure 1.  The output data with wrong format (8-bits LS into 16-bits LS)

Therefore it needs another version for 16-bits LS and it will looks like as following.

int converter(int8_t *input_data, size_t size)
{
    int8_t *output_data = (int8_t)malloc(sizeof(int8_t)* size * 2);
    int i = 0, pos = 0;

    for(i; i < size; i++){
        memcpy(output_data[pos],  input_data[i], 2);
        memcpy(output_data[pos + 2], input_data[i], 2);

        pos += 4;
    }
}

Finally we will get the result as table 6.
Seq. (output)
0 (L)
0 (R)
1 (L)
1 (R)
Data
0xaabb
0xaabb
0xccdd
0xccdd
Table 6. The output data of 16-bits LS.
This skill is useful when it need to stream a voice data from a Bluetooth module to an audio codec while playing Hand-Free profile (HFP). In an automotive software system, sometimes our company will offer customers software solution for applying acoustic echo cancellation (AEC). In that situation, the streaming of voice is controlled by CPU and it will make decision how to transfer audio data between a Bluetooth module and an audio-codec. Mostly, a Bluetooth module only support mono channel but an audio-codec need stereo data.

Figure 2. Architecture of automotive audio components

O.T.

2013年4月5日 星期五

寫一篇文章


點了杯熱可可暖著手心,一個人杵在羅東車站的月台。夜裡悠悠晃晃,讓我懷念起德國小旅行。那是在鐵軌還有點積雪的Garmisch-Partenkirchen。小鎮的月台上,稀疏的遊客,在旁聳立著Zugspitze綿延而下的滑雪場;微微寒氣環繞四周,融雪味正若隱若現。在德國南部純樸小鎮的車站,寂靜的夜空,三三兩兩的遊客,一個十足怪異的亞洲男人,這會是一個怎樣的故事?


一個人獨處的時候,想法最多。三月的羅東車站正挨著鋒面,寒氣逼人的程度似乎還略勝G.P.一籌。打了個哆嗦,啜一口熱可可,看看手錶,也不知不覺晚上22:30,今天又將是一個晚睡的夜。

最近因為案子比較緊湊的關係,常常專心工作,耽擱回家的時間。回到家後偶而還有精神,總會享受在萬籟俱寂的書房裡,悄悄點盞小檯燈,坐在電腦前自以為是的寫些東西:不論是分享工作上的事情,甚至是心情札記,但卻在下筆時常常不知所措。

「文心雕龍」裡收錄一篇劉勰的「情采」,裡面便是以「孝經」、「老子」、「莊子」、「韓非」等經典探討文章的寫法。其中「正采耀乎朱藍,間色屏于紅紫」,便是下筆時常常躊躇不前的原因:既希望為文能夠「五音比而成韶夏」,也希望「五性發而為辭章」。也許在披著創新的皮囊下,其實我有著再八股也不過的靈魂吧!

寫一篇文章,到底有多難呢?文章又是為何而生?又有誰為它閱讀?

人生最失意的時候,我選擇拋下一切去旅行,試圖在旅程中抓住點什麼;就像以前國文課本上讀到的文人雅士,站在低潮時,總選擇放逐自己,韜光養晦。也曾在柏林的夜晚,像這樣點盞小檯燈,靜靜地寫下屬於自己的故事。事實上不論足跡到哪,總喜歡用自己的文字寫下自己的感受。


我喜歡寫文章諸如寫軟體般,儘管兩者同樣不論從哪方面來講都有很大的改善空間。寫文章有趣的地方,是能夠依照規劃發展文章的走勢;而在文章發展的過程中,有層次的表達思考,有部份是邏輯的,有部份是感性的。因此不論寫論說文、記敘文、抒情文或者是小說,只要夠順著心意完成,不但有成就感,也能在字裡行間獲得些許安全感。然而這倒是與發展軟體有著相同興味。

發展一個好的軟體會有安全感,就工作上而言,是因為可免除許多維護上的成本,為未來的案子打下良好基礎;但若說寫文章會有安全感,應該是件很奇怪的事情吧?

在Spree河岸旁散步時,一直都只有我一個亞洲人:既非來這裡工作,亦非來這裡求學... 說實在的,我究竟為何而來?有一天在書桌前心血來潮,隨手搜尋以前讀過的「太史公自序」。太史公司馬遷因為李陵之罪而獲腐刑,此後立志著史記,故成「史家之絕唱,無韻之離騷」。司馬遷並未因自己身上的缺陷自暴自棄,反而更加砥礪自己。

「『夫詩書隱約者,欲遂其志之思也。昔西伯拘羑里,演周易;孔子戹陳蔡,作春秋;屈原放逐,著離騷;左丘失明,厥有國語;孫子臏腳,而論兵法;不韋遷蜀,世傳呂覽;韓非囚秦,說難、孤憤;詩三百篇,大抵賢聖發憤之所為作也。此人皆意有所郁結,不得通其道也,故述往事,思來者。』於是卒述陶唐以來,至于麟止,自黃帝始。(太史公自序(http://ctext.org/shiji/tai-shi-gong-zi-xu/zh))


「此人皆意有所郁結,不得通其道也,故述往事,思來者。」看到這段出自太史公自序的文字,對比當時收到台北友人捎來的短訊,其中敘述著這一段話:「有時總忍不住回頭檢視自己,就像游泳時自由式的划行」,我坐在書桌前沉思許久細細咀嚼。窗外,還飄盪入春後殘餘的雪。

有件事情一定要再三跟自己確認:我有思考的自由吧?正因為有了思考的自由,所以知道自己有免於恐懼的自由,亦有追求幸福生活的自由。我想要自己的未來免於無謂的恐懼,生活能夠幸福,唯有靜下心來看清楚自己過去的錯誤,才能領會屬於自己的未來。我在陌生的國境,無非就是專注的「思考」,還有學會「放下」。

也許寫文章可以帶來的些許安全感,便是確認自己仍保有思考的自由。


O.T.
2013/03/09

2013年3月8日 星期五

Keep Walking (2/2)


During past five years, I changed my job four times. Each time when I decided to leave a company, I told myself "I don't want to work here, I deserve more better!" Thus I always looked forward a better job, which was paid a higher salary, less working time and close to my house. But it is not truth, because there is always a better one can be chose.  In that period I lose myself in an infinite loop until I lose my job finally.

Sometimes I miss my second job, which is to develop software utilities about 3D display panels and touch panels in a TFT-LCD manufacture. Why I missed it? It seems gave less salary than other companies, however it offered a nice place for a R&D engineer to attempt new ideas leading industry. Not only I learned a lot of knowledge about LCD/LED but also earned respect and higher salary than average there.

A process of producing TFT-LCD 

I got a higher paid in my third job but I'm not sure it really I want. One year later, I quit it and decided to slow my step and to think about my life. I went to German and left in Berlin for three months. It was my first time to leave my home place so far and so long.

Through Madeline China, Middle-Asia and East-European, after an eighteen hour flight I arrived German. To go to German is my dream as I was a child. It's so hard to describe how thrilled I could be here. I found a language institute at Berlin to study Germany. Everyday all that I did was to study Germany and be a good tourist. Some people said "simple is best" and I think it is truth. I put my annoyance down and enjoyed being alone.


Near U-Bahn Schönleinstraße where I left. In the last month in German, March - 2012, I often walked along the river Spree from Kottbußer Brüke to Potsdamer Platz after my Germany course. I've always been impressed with this way. In early spring of Berlin, you can see there are many trees stand on the riverside, and most of them are already green. In a sunny afternoon, some people will sit on the riverbank have a picnic or read books, some people take their children play in the river park, and some people in restaurants are eating, drinking and talking. Can you image the river, the tree and the people?  How this scene is beautiful!


"Why? Why am I here?" as I was walking on the road, I thought this question. Several months ago, I had a good life: a high paid job and a family, everything looked like good. Suddenly, I lose my family and then lose my job. It was a bad time for me than ever before, but I am still brave to chase my dream. That's me, that's why I went to German.

Even in a bad situation, what I'll never do is doing nothing or self-pity. Further more, I have a determination to make the circumstance be favorable to me. In these months I relearned how to make new friends, how to communicate with other persons, how to plan my daily life, how to do a thing rightly and to think about what is the truth of my life. Until now, when I restart my life in Taiwan the above things are very useful to me. I having a new job and I'm very enjoy the challenge come with it. Besides, I think I'm a very luck guy because there is a nice pretty girl who really love me.

There is an advice from a cartoon named "South Park", said by Kyle Broflovski, "Look, dude. Things around here have changed. Sometimes, the only way to keep going is to make a left turn". I think it is right.

Kyle Broflovski

<<    1    2    >>

O.T.

Keep Walking (1/2)


I'm a software engineer, my profession is developing software which is based on a operation system (OS) such as Windows, Linux or Android. But now, a new challenge comes to me: driver porting.

My company is a IC module supplier, these modules can drive Bluetooth and WiFi to work correctly. Most of our customers come from OEM or ODM, which produces automotive software systems. These systems can play music, video, and some of them can do navigation and so on.

Bluetooth comes with the raising of smart phones that have a great growth.Today,  people often connect their smart phone to a automotive software system for playing music and holding a hand-free phone. However, acoustic echo cancellation (AEC)is the potential technical issue when people want to use a hand-free phone in a car.

What is AEC? AEC is a process to cancel echo caused by far-end signal on a telephone call. For example, when a person uses a hand-free phone in a car, speakers of a car will play the voice of far-end user. At the same time, normally, a microphone in the car would receive the sound from speakers. Thus, the far-end users would heard their own voice. In this case, an AEC is needed in a automotive software system to remove echo.

A view of AEC
(Photo from http://lakeofsoft.com)


As you know, we are a Bluetooth IC-module provider, obviously our AEC solution is included with our Bluetooth module. This solution we called a "hardware solution". A hardware solution is efficient and easily porting, but the disadvantages are expensive and hard modification. For market reasons, in recent years we begin to provide solutions implemented with software (i.e. a software solution). One of them is development based on Android, and it is my job.

After one half year hard working, several projects start using software solution based on Android. For some reasons, my boss might want to give me more training, then last month he assigned me to join driver porting team.

So, what is driver porting and why it is a new challenge for me? The purpose of driver porting is to deploy a device driver in different operation systems and make it work. Further more, even using the same O.S., different system architectures need different driver configurations. For example, you need different driver installed on your MS Windows and Apple Mac. We can say driver porting is the first class that a module supplier want to sell their products to any customers.

An automotive software application


However, driver porting is a work that are more close to hardware but far away developing a system middle-ware. A engineer wants to do this work well who need to read data sheet and to check many hardware specifications. That's really my shorts. But... so what? I'm very glad to accept this assignment! :)

<<    1    2    >>

O.T.

2012年8月11日 星期六

Deutsch lernen - Welche Feste und Feiertage gibt es in Ihrem Land?

Bei uns feiert man das chinesische Neujahrsfest, Drachenboot-Festival und Mid-Autumn Festival in Taiwan. Neujahrsfest ist sehr wichtig, weil es nach dem chinesischen Kalender das neue Jahr ein leitet.

Am letzter Tag des chinesische Jahr die Leute hat ein reichhaltigen Festessen zusammen. Man isst Hühnchen, Fisch, Neujahrkuchen, Rettiche und Sellerie. Oft man trinkt chinesischer Wein. Nach dem Festessen spielt die Leute immer Mahjong.

O.T.
11-August, 2012