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.” 共勉。

相關文章

2 comments:

  1. Hi! What is the database source for pin cafe? Just very curious? Is there a public API? Or is it manually entered by hand?

    ReplyDelete
    Replies
    1. It's half-manual, I wrote node.js robots to grab most of the data, but it still requires people on the team to do the rest manually. It's not only because that some data is hard to get automatically, but it's faster/cheaper in this prototype/beta version case.

      Delete