2018年2月28日 星期三

[旅遊] 紐西蘭南島之所見所聞

到國外旅行,能體驗到異鄉的文化,切磋不同的想法,見識不曾見過的技術與應用,就是這趟旅行最大的收穫了。

2017年12月中旬,我在紐西蘭南島,看見了哪些新奇好玩的事物呢?

圓形田畝

從飛機上俯瞰紐西蘭的農地,發現一堆圓形的農地,甚至切割成一片一片像披薩一樣,為什麼?

原來這是一種特殊的灌溉手法叫做 center pivot irrigation可能因為農地太多太大了,所以才有人發明出這種自動旋轉灌溉的機器。

好處:節省人力、時間成本,也能確保每一塊農地都有被灌溉到。有些系統還會加上濕度與溫度感測器,更能準確判斷灌溉時機並且自動啟動,提高農作物生產力。

壞處:只適用於圓形,因此對於方形的田地來說,四個角落不會被灌溉到,損失部分農地面積。遇上強風時,噴灑的水可能被吹偏,造成灌溉不均。

領頭羊

第一次親眼看到羊群移動時,真的有一隻領頭羊帶頭先走,後面緊跟著一頭一頭的羊,令我印象深刻。

可愛的大笨鳥

在 Te Anau 認識了 Takahē  這隻瀕臨絕種的鳥類,全世界只剩 300 隻生存在這個區域。在 Te Anau Bird Sanctuary 保育公園養了幾隻,運氣好只要他們沒有躲起來就能看到,我就在公園看見了兩隻成鳥和一隻幼鳥躲在樹叢中,成鳥長得很大隻而且不會飛,超可愛的。

紐西蘭本來有很多物種,因為外地移民引入外來生物,例如老鼠、袋貂、白鼬等,這些外來生物會攻擊牠們,吃掉牠們孵育的蛋或幼苗,於是這些較不會保護自己的生物漸漸瀕臨絕種甚至遭受滅絕的命運。

新奇的清潔工具

離開 Dunedin 大城市時,看見有清潔工人正在使用吸塵器打掃 motel 的屋頂,但是仔細一看他怎麼一邊操作吸塵器一邊滑手機呢?

原來他的吸塵器吸嘴掛了攝影鏡頭,並且透過手機螢幕就能直接看到吸嘴附近的畫面,如此就不必冒險架梯子爬上屋頂做清潔了。

這就讓我好奇了,他們為什麼要吸屋頂?

哦!原來是要清潔屋簷的排水槽,避免垃圾或落葉阻塞的排水槽。
但…為什麼屋簷會有排水槽?不做排水槽就不需要清潔啦!
做了一些功課才知道,如果屋頂沒做排水系統,在下雨時大量雨水直接沿著屋頂屋簷再從牆面沖刷下來,會減少房屋的壽命(這點我仍抱持懷疑,但暫時找不到更好的解釋),或是水流沿著天花板縫隙流入室內與窗台。不過我猜只有三角形的屋頂才有這種屋簷排水槽,也才需要特殊工具清理排水槽,像台灣透天厝的排水系統好像都是鑲嵌在水泥牆面中,只保留一個排水孔,只需要確保頂樓的排水孔沒有阻塞就好,像我現在租屋處因為前陣子頂樓排水孔阻塞,導致天花板滲水引發壁癌,後果不堪設想…

找資料的過程中,還發現另一個角度,除了提升清潔排水槽的效率與安全性之外,還能考慮預防排水槽堵塞的方法。有興趣可以參考這篇對岸的新浪部落格

粗糙的柏油路面

在紐西蘭騎單車時,發現絕大部分路面都不比台灣的柏油路好騎,紐西蘭的馬路非常粗糙,坐在單車上面坐墊一直震動,震得我屁股很不爽。夥伴說可能是怕下雪時路面結冰,所以才要做這種路面,當時覺得有道理,畢竟紐西蘭冬天這麼冷,應該是蠻常下雪的吧?
做了功課才知道,這叫做碎石封層路面,英文為 Chipseal

這種路面的好處為成本較低,施工工期較短,壽命又比瀝青路面長,而且下雨潮濕時不易積水,對汽車的抓地力影響也比較小,提高行車安全,因此紐西蘭絕大多數都是採用這種路面。壞處則是影響輪胎的使用壽命,畢竟路面較粗糙,摩擦程度可能因此也變大了。

單向陸橋

紐西蘭很多陸橋都是單向的,經過陸橋時,必須先觀察對向有無來車,並參考路標得知對向或是去向誰過橋的優先權較高,再讓誰先過橋。

為什麼不做雙向的橋呢?

根據維基百科,紐西蘭交通車輛密度較低,所以可能是考量建造和維護成本吧?沒必要為了為數不多的車輛搭建雙向的橋。

2017年11月29日 星期三

[閱讀]《刻意練習》讀書概要

刻意練習

看了太多 Youtuber、網路文章、同事的推薦,決定找來看,實際看完覺得還好,收穫不多。我本來就相信有目標有正確方法的練習可以持續進步,但是在此之前,我認為最大的問題是...我怎麼知道我要訂什麼目標?我想要成為什麼樣的人?
  • 第一章,有目標的練習
目標要具體,或是為每一個階段定義不同的目標慢慢實踐。
目標要具體可實行,要有可以量測進步的方式,一開始可能不用太過遠大,但一定要跨出舒適圈。
練習時要有「反饋」的步驟,如果有教練可以糾正是最好的。
找到持續練習的動力,才有可能進步。

  • 第二章,駕馭大腦與身體的適應力
需要持續的練習才不會倒退。

  • 第三章,心智表徵
專家見林,普通人見樹,因為專家在擅長的領域建立了強大的心智表徵。

  • 第四章,刻意練習的黃金法則
該領域必須發展得相當成熟,佼佼者的表現和新手有很大的差距。
要有個老師、教練提供協助,幫助學生改善表現。
不斷嘗試突破現狀。
專注,有意識的行動。

  • 第五章,在工作上運動刻意練習原則
作者在此舉醫生為例。

  • 第六章,在日常生活中運用
沒有老師怎麼辦? => 自我鞭策
高原期? 撞牆期? => 換新的方法突破
找到持續不懈的動機。
相信自己能成功。
讓自己身邊圍繞著你努力時會給予鼓勵、支持和挑戰的人。
紅色這兩點大概是我認為再同意不過的,但也是很難滿足的條件。
  • 第七章,邁向非凡的路線圖
要產生興趣,不是三分鐘熱度那種,要找到持續激勵自己的方式維持興趣,接著專注地全力地練習,不斷突破自己的極限。
  • 第八章,如何解釋天賦這件事?
作者認為除了身高、體型會影響運動表現外,各領域的專家之所以為專家一定是因為刻意練習的結果而非具有天賦。
  • 第九章,用刻意練習打造全新的世界
作者希望將刻意練習這項工具從教學方法著手,推廣、傳授給每個人,如此世界將會變得更進步。

2017年10月1日 星期日

Google 簡立峰:AI 科技的產業應用 - 演講紀錄


我不太喜歡原文的標題,因為標題其實只跟一小部分內容有關而已,實際讀完之後發現這篇內容還真不錯。尤其是後半段有幾個段落,看了很有感覺,很有想像與思考空間。




  • 「未來的品牌只會來自兩個國家:美國和中國」

這個很容易想像,因為現在很多領域已經是如此了...




  • 「其實你拿手機,不是為了要用手機,而是透過手機來使用網路服務,像是 Facebook、LINE,你真正要的是網路服務而不是手機,所以網路服務公司在三、五年後會免費送手機給你,讓你可以更流暢的使用他們的服務,Amazon 的 Kindle 就是很好的例子,用成本價甚至賠本賣你電子書閱讀器,但是讓你在上面消費來賺錢,Kindle 消費者每年消費可達 1450 美元以上。」

回想以前遊戲、軟體工具,都是高價付費買下來終生使用,現在則是你可以免費使用基本功能,進階功能改以月費、年費、課金等方式進行。未來手機有沒有可能朝這個方向前進呢? 現在已經有電信業者簽約送 0 元手機,也已經有手機出租服務,對岸還出現共享手機了呢。




  • 「隱私權帶來的需求」


作者從 Tinder 那裡取得個人的 Data,發現 Tinder 這款 app 比作者自己還要瞭解自己,因為我們在 app 上的一舉一動都被記錄的很清楚。我們也許會忘記我們曾做過的事情,但 app 不會;我們以為只有自己知道的秘密,其實 app 都知道。甚至 app 還知道我們不知道的事情:例如哪些人 LIKE 你,哪些人 NOPE 你,Tinder 公司擁有這些數據所以全都知道,只有我們自己不知道。因此,這些我們稱為隱私的 Data,如果不幸被偷走,就像我們弄丟身分證一樣,誰知道會不會被拿來做什麼奇怪的事情呢?

By the way,歐盟與中國,兩者針對隱私權的發展上似乎是朝兩個完全相反的方向進行,中國傾向掌控所有國民的隱私資料,但歐盟則傾向保護每位人民的隱私權,真有趣…

2017年9月25日 星期一

[電影] 《我只是個計程車司機》

本來要看金牌特務續集,但鄉民評價兩極,決定改看《我只是個計程車司機》,用本篇文章稍微記錄觀後感。

整體覺得還不錯,主角心境的轉折表現得很好,就算不懂韓國歷史事件也能看得入戲。

看完主要有兩點反思:

  1. 民主得之不易

  • 台灣也曾戒嚴、宵禁過,我們正享受著民主自由的果實,要好好珍惜與守護。

  1. 人很容易輕信

  • 受親朋好友、新聞媒體、周遭環境影響。我們閱讀新聞時最好能知道來源新聞媒體是哪些人?該媒體是否受政黨、財團掌控?



情境思考

  • 如果你是那位大學生,額頭上挨著槍,生命受到威脅時,還能夠坦然地叫那名外國記者不要管自己,把新聞報出去才重要嗎? 
  • 如果你是那位計程車司機,你會甘願冒著生命危險,幫助外國記者逃離光州,將真相帶給全世界知道呢?還是想起自己是一位女兒唯一在世的親人,必須保全自己才能照顧女兒呢?



  • 這是一部描寫人與人之間奇妙關係的感人電影,這真是一部十分真誠的電影。

2017年8月31日 星期四

向 Elon Musk 學習解決問題的方法

Elon Musk 是我最近很崇拜的一位「夢想家」,儘管他的一些作為讓他的團隊成員、工程師反感,但是他對目標的執著、狂熱,以及達成目標的手段與想法,都是我想學習的。

最近看到他在 TED 影片聊到他最近的目標 使用地底隧道舒緩交通,是我想寫這篇文的原因。

第一次從網路新聞看到地底隧道的構想,當時沒有什麼共鳴,可能因為我缺乏想像,腦海沒有出現相應的畫面。第二次為了練英文,無意間從 TED 看到他的前瞻影片,覺得非常酷,這下腦海的畫面被建立起來了,本來抽象的事情變得稍微有點共鳴。第三次將 TED 影片的英文字幕找來看,發現有一段對談是聊到他要如何降低成本,讓我更相信這個目標真的有可能會成功。

我尤其對他如何透過技術來降低成本的問題倍感興趣:
他開了一間挖隧道公司 The Boring Company,公司網站就提到了他們要怎麼降低成本:
  1. 縮短隧道半徑
  2. 同時挖鑿與強固牆壁
  3. 提升機器運作的效率(提升功率、降低溫度限制)
上述方法的描述還請看 TED 影片聽聽 Musk 本人怎麼說,或是看公司網站會比較有感覺。

我聽完 Musk 降低建築地底隧道成本的方法後,馬上想到的是 Musk 的另一個遠大目標 移民火星。

前陣子聽羅胖的邏輯思維介紹到了「任務分解」,剛好就是以移民火星為例。要讓移民火星成真,首要的問題就是節省每次太空旅行的成本,透過 Musk 的想法,他能夠降低成本五萬倍,以下文字直接引用邏輯思維的片段文字稿:

  • 怎么把成本降低5万倍?埃隆·马斯克指出了四个方向:

  • 第一,火箭得是可以重复使用的。如果发射一次,就烧坏一个火箭,太费钱了。我们如果能把火箭发射出去,再让它飞回来,下次发射继续用,是不是成本就降下来了?

  • 埃隆·马斯克2002年成立了SpaceX公司,2015年底就实现了火箭发射以后的再回收。这个新闻你可能看到了,说明这事是可行的。这种成本降低,就是第一步。

  • 第二,飞船如果直接载满整个太空航行所需要的燃料,再发射,火箭就会非常的沉重,成本很高昂。怎么办呢?

  • 埃隆·马斯克说,在太空轨道上,对飞船进行补给。

  • 简单解释一下这个原理,先用火箭推进器把飞船送到太空轨道,这时候不用装那么多燃料,只要足够把火箭送上太空就行。然后推进器迅速返回发射台,装上燃料箱,再飞到轨道,把燃料补给飞船。完成这一过程之后,推进器返回地球,而飞船则将前往火星。

  • 采用这种方式,前往火星的成本减少了500倍。这是第二步。

  • 第三,在火星上制造燃料,让飞船能够从火星返回地球,这样返程的燃料就不用从地球上带了。这同样还是为了解决燃料负重的问题,又降低了好多倍发射成本。这是第三步。

  • 第四,使用正确的燃料。埃隆·马斯克对比了可能的几个选项,比如煤油、氢氧气等等。但他最后认为甲烷是一个更好的选择,因为甲烷在火星上制造起来相当容易。

  • 经过这轮分析,埃隆·马斯克就把一个天方夜谭般的技术难题和资本难题,拆解成了一系列非常具体的技术问题。

看完地底隧道與移民火星的例子,你是不是也覺得 Musk 超神?怎麼有辦法把我們認為幾乎不可能的事情分解成一個一個較小的技術問題,而且看起來真的有那麼一回事。

因此我要向 Musk 學習,學習如何大事化小,小事化無。當我擁有這個能力後,別人也會崇拜我吧?XD

相關連結:

2017年7月30日 星期日

負向偏誤(Negativity bias) VS. 正向補償(Positivity offset)

太久沒更新 blog 了,決定以後不論收穫是大或小,即使自己無法 output 太多想法,只要覺得適合分享,就上來寫一下,強迫自己養成歸納與寫作的習慣吧。
今天想寫內容的主要是從人類演化的觀點來看我們現在的思考方式:為什麼我們容易有負面想法?為什麼我們比較在意壞消息與輕信負向的事物?心理學家說,這是因為負向偏誤 (negativity bias) 在作祟。
最近剛好看到兩則來源都提到類似的想法,第一則來源是從罗辑思维第298期「为什么相信阴谋论」聽來的,有興趣可以進入以下連結收看:
音源 https://www.youtube.com/watch?v=LdWpxBPTxP4
逐字稿 http://www.luojiji.com/thread-7255-1-1.html
不知道陰謀論是什麼的,這裡引述羅胖的舉例:
什么是阴谋论呢?比如,说艾滋病毒是美国人研发出来祸害世界的武器;911事件是美国政府自导自演的;共济会正在控制世界等等。
針對為什麼相信陰謀論這個議題,邏輯思維整理出三個原因:
  1. 輕信 (演化結果)
  2. 控制感 (對萬物都要有個解釋,以掌控、解決對環境的不確定性)
  3. 一致性 (事情的發展要符合認知、符合預期)
我只對第一個觀點演化結果感興趣,以下是羅胖為第一個觀點的說明:
你可以想象一下,假如你还是一个在非洲大草原上行走的原始人。你路过一片草丛,突然听到一阵窸窸碎碎的声音——那可能是一条致命的蛇,也可能是一只在捕猎的狮子,也可能只是一阵风。你不知道,那你该怎么办?是不管三七二十一掉头就跑,还是镇定自若等看明白再说呢?
假设我们的老祖宗有两种人:一种人,凡事都要搞个明白才行动;另一种人,很容易轻信一件事。那前一种人,早就被野兽吃掉了,没有后代留下来。而我们现代人,其实都是后一种人,也就是那些“轻易就相信一件事”的老祖宗的后代。
邏輯思維有提到演化的部分到此,至於我的第二則來源是看了一本書《好奇心的幸福力量》,書中提到因為大腦演化的設計,我們不斷在正向與負向間尋找平衡,而我們天生就會注意到負向事物,就叫做負向偏誤 (negativity bias)。
The negativity bias is the phenomena by which humans give more psychological weight to bad experiences than a good ones. In fact, some researchers assert that negative emotions have an impact close to 3x stronger than positive emotions.
enter image description here
書中提到,有負向偏誤,自然也有正向補償 (positivity offset)。
當感到安全時,我們會表現出對探索新事物、尋找新體驗的輕微渴望,也希望獲得回報與刺激。如果缺乏這種補償,我們就永遠不會學習、擴展、成長或演化。
我覺得負向偏誤和正向補償這兩個演化的觀點很有趣,正好反思了一下自己的近況。最近進入工作的疲乏狀態一陣子了,覺得工作上沒有太多新的事物,沒有看到什麼新奇有趣的事物能激發我的熱情,以演化的觀點來看,也許就是正向補償發揮了作用吧?工作一段時期,覺得穩定了,好像能接觸的東西都看過了,有一種成長變得緩慢的感覺。因此內心會浮現要怎麼樣才能獲得更多新刺激?怎麼樣才能加速成長?
心理學有時候很有趣,尤其是當可以對應到自己的思考方式或生活狀況的時候特別有趣,就像十二星座算命那樣,算得準就覺得這個算命讚讚讚XD

2017年6月18日 星期日

Dynamical Variable Assignment in Makefile

上星期遇到奇怪問題卡了我一天:第一次 make 成功,直接重新 make 第二次結果失敗了,第三次 make 又成功?為什麼 make 結果會不一樣?

一開始找資料發現 Makefile 針對變數指定方式的不同,會有兩種展開方式:

Two Flavors of Variables

Recursively expanded variable v.s. Simply expanded variable
一種是使用=,之後執行時都會回來改變等號左邊的變數(recursively),而另一種使用:=,將當下的值指定給等號左邊的變數(simply),之後不再更動。
Recursively 範例:
x = foo
y = $(x) bar
x = later
echo $(y) 的輸出結果會是 later bar
Simply 範例:
x := foo
y := $(x) bar
x := later
echo $(y) 的輸出結果是 foo bar
認知升級後,馬上將 Makefile 的等號改成 :=,結果根本不是這個原因…只好繼續找資料,深追問題。
後來發現問題是在 rule 中使用 $(shell ... ) 動態指派變數的話,rule 在執行前就會先展開 $(shell ... ) 了,意思是 $(shell ...) 比 rule 還早被執行。

使用 $eval(…) 搭配 $(shell …) 動態執行指令

以下透過 Makefile 範例來解釋:
執行 make 後會先砍掉所有 rom 檔,並建立 test.rom,確保當前目錄只有 test.rom,接著透過 find 指令查找 rom 檔,將檔名 assign 給變數 ROM
all:
    @rm -rf *.rom
    @touch test.rom
    $(eval ROM := $(shell find ./ -name *.rom))
    @echo name=$(ROM)
情境一、當前目錄不存在 *.rom 時:
[user][linux][~/test]% ls *.rom
ls: No match.
[user][linux][~/test]% make all
name=
情境二、當前目錄存在 *.rom 時:
[user][linux][~/test]% touch existed.rom
[user][linux][~/test]% ls *.rom
existed.rom
[user][linux][~/test]% make all
name=./existed.rom
造成上面兩個結果不同的原因,因為 $(shell ...)先執行了!有注意到情境二的 name 是 existed.rom 而非 Makefile 中建立的 test.rom 嗎?

改用 Backquote 如何?

想說好吧,不呼叫 shell 了,用另一種方式解看看。於是使用 backquote (或稱 backtick) ` 執行 find 指令,例如:
all:
    @rm -rf *.rom
    @touch test.rom
    $(eval ROM := `find ./ -name *.rom`)
    echo "before mv: name=$(ROM)"
    mv $(ROM) newname.rom
    echo "after mv: name=$(ROM)"
輸出結果:
[user][linux][~/test]% make all
echo "before mv: name=`find ./ -name *.rom`"
before mv: name=./test.rom
mv `find ./ -name *.rom` newname.rom
echo "after mv: name=`find ./ -name *.rom`"
after mv: name=./newname.rom
的確,使用 backquote 變成當下才去執行指令,符合我的預期。但其實我是想把 find 的輸出結果當成 constant string 來使用,而實際上 $(ROM) 存的卻是完整的指令,不是指令執行完的輸出結果…
所以最後,我放棄在 Makefile 動態指派變數的值了,把想要執行的指令直接寫成 script 讓 Makefile 呼叫,省去不必要的麻煩。

Reference

  1. The Two Flavors of Variables
    https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_6.html#SEC59
  2. Stackoverflow
    https://stackoverflow.com/questions/34935544/how-to-time-the-execution-of-a-gnu-make-rule