Wednesday, July 13, 2016

當兵這一年,我做了什麼

Heron Yang

眼看就快要退伍了,是時候記錄當兵這一年。

當兵,讓我別無選擇地,必須空下沒就學或工作自由的一年,但也幸運地空出不少屬於自己的時間。在休息與自我實現之間,我選擇持續走在我的道路上:Build Something People Want。於是,我利用這段時間,先是申請美國碩士,再是閱讀數十本以往沒機會細讀的書、學習各種應用程式開發,還有實作數個作品。

申請美國碩士

前四個月色調大多是關於碩士申請,過程包含考試、學校選擇、文件準備與送交申請等等,雖說事情很繁瑣、要顧慮的細節多;然而,平心靜氣地一步步準備,同時反思著自己想要讀的是什麼,也讓我更瞭解自己的志向。

  • TOEFL與GRE考試:若不滿意就得接著再考一次的過程,TOEFL必須兼顧聽說讀寫各種面向,還要練習一些考試技巧;GRE則是要從一開始全部選項都看不懂,到後來可以看懂一半選項。為了選擇好的學校,往往分數需要TOEFL高於100分、GRE高於320分
  • 學校選擇:從百名內的學校中,一一查看學校網頁,閱讀他們有提供怎麼樣的碩士,與自己的興趣是否相符,然後再從中篩選出適合申請的學校數所。大概需要幾週的時間做這件事情,同時有越多其他人的意見越好
  • 文件準備:讀書計畫、履歷、線上申請表與推薦信等,這部分壓力較小,但頗繁瑣,需要反覆確認與修正
  • 申請:注意每一所學校的申請截止日期,還有繳費事項等等,接著就等放榜即可

從過往經驗中以及對於未來的想法,我選擇的是唸資工相關的碩士,且希望偏向產業實務導向,更多的相關細節寫在Heron at CMU。學校申請約在12月截止,隔年2月開始我陸續收到CMU, UIUC, UCSD, USC, 和NYU的Admission,最終選擇CMU的MSIT-Mobility碩士

從幾本一直沒機會讀的經典書籍開始,讀書一直沒有解決我對於新知的需求,反而讓我想越讀越多。以下列舉一些這段時間看過的書:

  • Clean Code:程式世界中頗有名氣的一本書,對我幫助甚大,之後在寫程式過程中不斷想起書中的內容,也在AlphaCamp帶領了讀書分享會,那時候準備的講義與作業我編寫成一本電子書,稱之為「Clean Up Your Spaghetti」(把你的麵條式程式碼清理乾淨之意)。
  • Learning Linux Binary Analysis:前一年Packt出版社寫信給我,就這麼當了這本書的Reviewer、參與這本書的開發過程,作者是一個對於ELF格式的專家中的專家
  • The Practice of ProgrammingThe Unix Programming Environment:經典程式書籍,特別是一些程式習慣部分值得了解,可惜因為年代差距大,很多已經不合時宜了
  • HOOKED:講述人上癮一個產品或服務的原因,其中作者提出The Hook Model包含Trigger、Action、Variable Award與Investment四部分,非常受用,我則把筆記寫在這裡
  • The Shallows:作者在書中提出網路世代中,人們漸漸思考深度變淺、專注時間變短等問題,並深入探討其原因和問題,雖說並沒有明確給予一個解答,但非常值得了解,是之前在CMU交換時設計系老師所推薦的書,也是人機介面領域的熱賣書,我的閱讀筆記放在這裡
  • The life-changing magic of tidying up:一本極簡主義運用於環境整理的書,在生活中可以反覆用受,我的閱讀心得則寫在這裡

除了這些之外,我還看了其他各種書:「The Art of Photography: An Approach to Personal Expression」、「Seriously…I’m Kidding: Ellen DeGeneres」、「圖解設計師的色彩法則」、「少,但是更好」、「我敢在你懷你孤獨」、「我的不完美」、「為什麼我們這樣生活,那樣工作?」、「將模糊理論說清楚」等等。

學習新的東西除了讓自己可以有更多能力去實現想做的東西以外,也讓我感到興奮。當兵期間,新學的東西我會找方式去應用,這是一段我能隨心學習的時間。

Swift

2013時候,我看著Stanford CS193P線上課程學習Objective-C語言寫iOS的App,並與朋友上架了一份作品Pitch It;當兵這段時間,我再修了一次這堂課,不同的是這回是Swift語言,接著我跟做音樂的朋友合作,開發上架了ChordBox(一個提供即興創作者和絃靈感的App,支援Apple Watch)。

Node.js

各種常見的工具裡面,Node.js常常讓我無法忽視,於是我找了線上的教材,不著個幾天就能學會大部分的東西,接著,我用它來實作數個應用。有趣的是,原本我習慣用Python解決的問題漸漸移到Node.js上頭。這段時間我用Node.js做的東西有:

  • PinCafe:一個讓人搜尋台北咖啡廳的平台,可以根據需求輸入搜尋條件,如:有無插座、有無Wifi等
  • Ducky - Chat Robot:Facebook Messenger的聊天機器人,設計來聽使用者的心理煩惱

Parse

Parse是我非常喜歡的工具,雖然原先Parse.com不再提供服務,我仍覺得Parse是我在製作網頁或App時候最好的工具,於是這段時間我運用Parse寫了不少應用程式,並自己架設Parse Server與Parse Server Dashboard。

除了上述的PinCafe以外,有:

  • 食時掃讀:Android App,可讓使用者透過掃描商品條碼,得知該食物使否含有有害健康的反式脂肪
  • Lens Decider:透過點選喜歡與不喜歡相片的方式,協助攝影愛好者選擇他實際喜歡的鏡頭

Pebble

Pebble是我每天都會戴著的智慧手錶,它提供的開發環境頗有趣,是C與JavaScript語言,同時還有網頁版可以開發。我則寫了兩個手錶錶面的App上架到Pebble的App Store,至今有上百人下載,而我自己也用這錶面約半年了。

  • Count Days:透過手機上的頁面可以設定Dream Day,手錶錶面上會顯示距離Dream Day的天數(寫Pebble Watch與Phone App溝通這部分頗有趣,需要資料型態的轉換、不同程式類別的橋接等)
  • Solar Ring:模仿Apple Watch其中一個錶面,以圓圈方式表示太陽當日位置

Kali Tools

Kali Linux是一個提供資訊安全人員做安全測試用的作業系統,上頭已經裝載好很多安全測試的工具,可以對於測試對象執行各種掃描、攻擊等。而我認為透過瞭解這些工具,可以更明白現今比較常見的攻擊原理為何,以及實務面上他們是怎麼被運行的,所以選了常見的工具(我稱為Kali Tools),寫了一系列的文章在這裡

Qt

Qt可用來撰寫支援不同平台的應用程式,特別是想同時支援Mac與Windows系統時候,他會是很合適的選擇。於是在有朋友的畫圖協助下,我寫了一個電子雞,牠會在電腦視窗中走來走去,偶而肚子餓或生病等等,目前支援Mac系統。

做出東西給使用者使用,並可以幫助到人是我所在意的目的,以下是這段時間我發起的一些小專案作品,包含一些上文已經略述的部分。

1 Day, 1 Project

1 Day, 1 Project是一個練習快速發想問題後,並提出、測試、實作原型的工作坊,形式是一天一個作品,總共五天:

  • Day 1 - I am Hungry:發送過剩的食物給需要的人之發想與探討
  • Day 2 - PushCampus:校園訊息推播的構想與其商業模型
  • Day 3 - LoserCaca:魯蛇改造計畫
  • Day 4 - InstaCast:業餘表演人的直播平台
  • Day 5 - IdeaSeed:創業想法發想與合作之平台(後來我將它實作出來並架設在此

Ducky - Chat Robot (諮商機器鴨)

一個讓人想使用的東西分很多種,可能因為它解決了某些問題,也可能是因為它帶來好處。但不論如何,最需要解決的是那些讓人痛苦難受的問題。其中,身邊有很多朋友會遇到心理上的難處,而程度上已經需要醫療的幫助,然而往往沒有方便的管道即時提供幫助。於是,我參考Eliza演算法,實作一個中文版本的諮商機器鴨架設在Facebook Messenger上頭,讓人無時無刻都可以跟牠聊天。

可惜是這仍有很大的進步空間,個人認為應當先讓既有平台如張老師專線先加入Facebook Messenger或LINE管道以協助到更多人,而自動化部分則應該慢慢研究後實現,至於這隻機器鴨希望能扮演拋磚引玉的角色。

PinCafe

常常想找某地區的咖啡廳,卻不知道用什麼找嗎?現今方法中,Google Map不能看出咖啡廳是否提供插座與Wifi等等,而部落客的資料則是很分散不容易快速查詢,於是PinCafe就扮演了解決此問題的角色。

PinCafe是我和另外幾位朋友每週固定時間開會製作出來的平台,其中已經有師大與公館區域約百家咖啡廳的資料,並讓提供使用者可以根據區域、店家設備需求或營業時間查詢咖啡廳,而PinCafe有每家咖啡廳的位置、評價、部落客文章連結、相片等資訊。

結語

一年的時間,要經營一個長久的事業會稍嫌不適合,於是我選擇大量的學習並實作,同時試驗各種不同型態的程式想法,也期待這些作品在往後有人會感興趣然後進一步共同經營。當兵的最後幾個月我則在暑修CMU的Introduction to Computer System,複習與練習系統底層程式。

當然一年間能發生的事情不只是這些,而不論生活中我們能決定的部分有多少,我們都能選擇自己在意的事情與想走的方向。記得去年在美國UIUC聽歌手王大文的小型演講,他說:”Your life is like a story. And, make sure you are the one who’s holding the pen.” 共勉。

相關文章