小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

2014年4月7日 星期一

近期的一些活動


蟒極客 高中/大學生 Python 程式比賽
歡迎參加。
分成高中以下,及大學組,每組前三名可以得 PyCon APAC 2014 的門票,應該還會有一些額外的獎品,比方我手上還有故宮艾雪魔幻世界畫展的門票。
同樣的錢,可以煩惱該買 One M8 還是 Sony Z2,但是也可以拿來辦一個比賽。


嘉義女中、北一女、IMO 選訓營演講宣傳(投影片在 http://b81.org/s)。

學界連署 hackpad SaveOurStudents 
http://saveourstudents.hackpad.com
這個其實有更深入的計畫,以後會慢慢補充(https://g0v.hackpad.com/3pPc7nysDqs

花蓮.py 

四月活動,我可能講 壞狗搜尋 reboot 的相關內容。

順便一提
五月活動應該會是史上最強 花蓮.py 聚會,因為可能會有兩位 PyCon Keynote 等級的講者來給演講。
不過四月可能也不遑多讓,因為四月份的活動隔天會有 jserv 及翟本喬博士在東華應數的演講。


東華應數的有趣演講邀請

繼二月底請到撲克冠軍 Terry Fan,三月請到葉丙成教授。
四月份將會邀請魔術冠軍、視覺衝擊陳日昇,以及 jserv 及翟本喬博士來演講。



2014年4月3日 星期四

reveal.js


最近幾次演講的投影片,試著使用 reveal.js,Reveal.js 是 HTML based 的投影片工具
我最近的幾個投影片可以在 http://b81.org/s 找到。
Reveal.js 的
優點:

  1. 預設的 3D 旋轉換頁還挺有質感的。
  2. 支援 Markdown語法,可以把焦點放在內容上。如果習慣泛高橋流/類高橋流的簡報方式,寫起來還挺快的。
  3. 上下左右的二維、二階層簡報編排邏輯,比傳統的直線式簡報拓樸結構要容易整理。 不需要詳細說明的內容,可以很自然的按右鍵跳到下一個主題。
  4. 支援 code 的彩色語法,還有 MathJax 顯示數學。
  5. 因為是 HTML/CSS/Javascript based, 所以直接可以用這些來擴充、顯示所以有他們可以顯示的東西。
  6. 支援講者小抄功能。
  7. 支援 leapmotion 之類體感操控。


缺點:

  1. 放大縮小、換頁,會干擾一些 javascript module 以及  plugin 的功能。有時候也會干擾 CSS。
  2. 不像 Powerpoint 或是 Keynote 等,可以用所見即所得的方式編寫。
  3. MathJax 要支援黑底白字有一點麻煩。而且 Render 似乎不是很可靠。
  4. 預設的 syntax highlight 字有點小。
  5. 不同瀏覽器有時候會有差異,測試時要小心。
  6. 很懷疑如果亂搞 javascript , pdf export 能支援到什麼程度。

然後我發現一下子還真的想不到有什麼太大的缺點。

因為我的投影片中,常常會有數學式子,所以之前很常用 LaTeX 的 Beamer, Beamer 中也很容易做程式碼的 Syntax Highlighting, 比方我之前 COSCUP 的投影片
但 Beamer 如果要放動畫或者其他效果就比較差了。

以下在我最近的投影片中的一些實驗:

  1. markdown 中放數學式子 http://b81.org/s/imo_algebra1.html#/1/5  (主要是不要讓 a_{x} 這樣的東西被 markdown 吃掉。)
  2. GIF 動畫 http://b81.org/s/from_star.html#/3 (按往下)
  3. 放互動式的 Python 程式碼。 (同上,繼續往下,用 Ctrl-Enter 執行程式碼)
  4. 放遊戲 http://b81.org/s/imo_algebra1.html#/4 (不過只有在 Firefox 排版正確)
  5. 放表格 http://b81.org/s/math2.html#/7/1 這個是拿來當計分板的,而且是用 livescript 寫的。
如果放入 d3.js,看起來應該也很有趣。
有興趣的話,不妨看看 html source,可以看到一大堆 markdown。


2014年2月27日 星期四

用 python turtle 寫 Flappy Bird

這個 Flappy Bird Clone 的主要目的是拿來當某種形式的初學者 Tutorial。
第一次使用是在花蓮.py 二月聚會,當作一系列介紹 Python 遊戲框架、引擎、工具的一部分。更精確地說,是拿來當作這一系列的開頭。因為在介紹這個簡單遊戲的撰寫過程後,就會發現 turtle 缺少什麼東西(進階繪圖功能、音效、物理引擎、碰撞偵測),然後我就可以順理成章地說,這就是為什麼我們需要遊戲引擎。替往後的介紹鋪路。
不過在寫這個 Demo 的時候,我主要還是以程式語言初學者 Tutorial 的方向來思考。所以寫的過程中,盡量不使用我認為比較進階和複雜的概念。所以複雜一點的 nested function、 OOP、decorator、 yield 這些都盡量避免了。
我還是有用一個 class 定義, 但那純粹拿來當成 struct 用,避免太多需要修改的 global variable。
裡面也有一個 lambda, 但那個 lambda 是準備拿來說明 lambda 語法的。
也許這個原因, 所以被 Keith Yang 發現在 Python 2.7 也能跑。
同樣也是因為教學的理由,所以只用內建的 turtle module。音效方面也捨棄 PyAudio 而採用呼叫 mplayer。
這個 project 以後會慢慢變成 step-by-step tutorial, source 在 https://github.com/tjwei/Flappy-Turtle
配合 python 3.3 或 2.7,使用空白鍵就能玩。

2013年12月27日 星期五

The Time of The Doctor 語錄


蒐集一些 Doctor who 2013 聖誕特輯的對白
Everybody's naked underneath.

Works two out of three times, guaranteed
Number ten once regenerated and kept the same face - I had vanity issues at the time.   
講實話的時候,總是比較好笑一點。
Boss of the psycho space nuns. So you!   
不曉得,總是覺得上面這句好像該收進來。
Oh, Doctor, fixing toys and fighting monsters.
如果不常常修理玩具,那怎麼打怪呢? 因為根本分不清誰才是怪物啊。
We all change... when you think about it. We're all different people all through our lives.
And that's OK, that's good, you've got to keep moving, so long as you remember all the people that you used to be.
沙烏地阿拉伯諺語說, 「若是在沙漠中迷路 就只能尋原路折返」。我們會不斷改變。像是學了很多魔術之後,往往會忘了當初還不了解魔術時的那種感覺,甚至會感覺過去的自己很陌生。當然不只魔術,學其他很多東西到了一個程度之後,都會有種重生(regenerated )成不一樣的人的感覺。但不要忘了最初的感動。
I saw him on a pier on a rainy day.
I'd seen him before, lots of times. But he just looked so beautiful standing there.
I wanted everything to stop. I wanted nothing to change ever again.
If he could just keep standing there, so beautiful...
每個人都有希望時間靜止的時候(......不是那一種),有那種希望感動的剎那能夠變成永恆的經驗(或者將會有這種經驗),有時在那個當下,有失去時間感的錯覺。這也就是很多人不知怎麼,就是喜歡拍照的原因。

I will not forget one line of this. Not one day. I swear. I will always remember when the Doctor was me.
Better than "I don't want to go".
對於 11th 的結局,不管是遺憾、不捨還是滿足,套句沙烏地阿拉伯的諺語總結:「無論如何旅行仍有得不到的財富」

2013年12月19日 星期四

松鼠博士的 2013 回顧


年終歲末,檢視一下【松鼠博士的魔法眼鏡】 2013 年的文章。
發現這兩年因為小松鼠出生的緣故,心態慢慢轉向思考要為小孩和年輕人準備一個怎麼樣的世界。


魔術相關:
就我而言,希望、夢想以及無窮的可能性是魔術最寶貴的價值。 --  不用後製的姨夫 Style 魔術 
上面這篇引起一些爭議,稍微延續了 YIF 事件的熱度,可惜不夠久。

後製魔術影片是否會驅逐"真正的魔術"?我覺得不會,我對於人類的好奇心相當有信心。假使我錯了,真的如王偉忠所說的,跟不上潮流,大家都比較喜歡後製的魔術影片,那也無妨,就讓傳統魔術就像傳統戲曲一樣,從大眾轉向小眾,電影、電視劇變成大家主流的戲劇。 不過我認為他的機會渺茫就是了。 -- "視頻魔術"的爭議

今年也請了粘立人老師和梅幻牌老師來東華大學演講和教魔術。

就在你拿出繩子後,突然聽見一位小朋友在台下大聲說:「我看過了耶...你是不是要學電視上大魔競的剪繩還原?」。
「天哪!我連剪刀都還沒拿出來啊。」 你心中跑出來這樣一句話。 -- 魔術師的小朋友問題
舊文重貼,不過也許該歸到故事類吧。

故事類:


會場的氣氛就好像打開窗戶一樣,馬上活了起來。
「是啊,哈哈!賣給猴子的話,一定大賣呢!」
「可以順便附送一隻 iMonkey 就好了啊。」  -- 發明多點觸控的故事(一)
史提夫其實也有一樣的想法,他無法否認,他記憶中的「正常」世界,隱藏著讓人不安的不合理。
事實上,在他還有十隻指頭的時候,就一直有這種違合感了。 -- 發明多點觸控的故事(二)
據說史提夫還沒被解雇的原因,是老闆覺得他上次的報告很逗趣。 -- 發明多點觸控的故事(三)
難得把 TODO list 中的故事真的寫出來。

電腦類:
學了 Go,

練習用 Blender 畫 Python Girl

弄了個可以當成 python, ruby, java, perl  來跑的圖檔


開始玩 Arduino, BeagleBone black, raspberryPi, Lego Mindstorm。

不過這類文章很多,就沒辦法一一列出了。


心靈雞湯類:

 糟糕,就像一開始說的,年紀大了,廢話變多了。
當你的目標是世俗所謂成功的時候,就像老梗笑話講的一樣,「我不需要跑得比老虎快,只要比你快就好了」。你自然會想卡位、攻擊對手。因為你的焦點本來就是擊敗對手。但是反過來,你的目標是提昇自我,成就偉大結果,那你的焦點會放在遠方的目標上,會放在自己身上,而不是對手身上。也只有這樣,你才有可能跑得比老虎快。  -- 追求卓越 成功就會隨之而來

「未來不僅僅是明天而已」。某種意義上來說,這個未來包含了父母對於理想的寄託。
如同 Jor-El 一樣,Jonathan 也將 Clark 視為未來,自己信念的延續。
Jonathan 問 Clark,難道種種田不也是幫助人嗎?為什麼一定要用超能力來救人?
他的意思並不是要 Clark 待在小鎮一輩子不出去。
他的問題就只是一個問題。
 如果 Clark 連這麼簡單的問題都無法很有信心、很清楚的回答,那他還沒有準備好。

同樣的,雖然
Jonathan 時常叮嚀 Clark 不要顯露他的能力,因為 the world is not ready.
但他的意思並不是要等世界準備好才顯露能力,而是
 世界還沒準備好沒錯,但世界永遠也不會準備好。 問題不在於世界是不是準備好了,而是你有沒有準備好面對這個不理想的世界。
以上是鋼鐵英雄觀後感,這部根本應該在每年父親節上演才對。
所以我完全同意如果媒體增加國際深度,就會增加整體國民的國際觀的這個因果關係。但全世界最沒用的就是這個「如果」。這樣的說法,就像說:你被曬傷,並非因為你沒擦防曬油就出門,而是因為太陽太大。如果太陽沒有那麼大,就不會被曬傷了。  -- 沒國際觀是因為媒體很爛,那然後呢?
雖然並非公認如此,但我覺得真夏方程式是加利略系列中,讓我感覺最深刻的一部。
一開始的文字,描述的是真夏方程式的故事,也是描述台灣這個夏天的故事。
在小說中,湯川學為了防止「某人的人生被扭曲」,決意揭開真相。
「任何問題一定會有答案。」
「但答案不見得能立刻導得出來。換成人生也是一樣。今後你會碰到很多無法立刻提出答案的問題。每一次煩惱都有價值,但沒有必要焦急想要找出答案,很多時候自己必須成長才找得到。所以人一定要學習要努力要不斷磨練自己。」
當你決定要開始追求答案時,答案不會自己跑出來找你。只有自己動手驗證、了解,答案才會是你的。
所以湯川學帶著小孩一起動手做實驗。但科學有極限,人也有極限。找到答案的過程也許很難,也許辦不到,但像是湯川學這樣的科學家會告訴你,你不是孤單一個人,有很多人都跟你抱著同樣的問題,一起煩惱下去,直到找到答案為止。 --  真相の方程式

當一個人可以帶給大家歡笑、讓人快樂時,我們會喜歡他。但喜歡他的原因並不是他有讓人快樂的這個貢獻與功能... 你喜歡他是因為你感到快樂 ...
不過,如果你是一個經紀人、秀場老闆,就會以他帶給人歡笑的能力來衡量他。因為你本來就不是把他當成人來衡量他。今天如果一隻猴子、甚至一顆石頭更受觀眾歡迎,你一定二話不說的一定選猴子和石頭。 -- 樹不當木材,人拒當人才

不過似乎最受歡迎的是當個興趣人。看來這似乎是不少人共通的生活經驗。

2013年12月15日 星期日

要當個興趣人

CC-BY-SA-NC Ben Rollman

前一陣子有篇「大學生應該避免的事」引起了一些討論。我大致上認同,不過我對於「不要當興趣人」這點倒是持相反的意見。

首先看其中碰到的症狀:
每次看到學生說「這不是我的興趣」、「和我想要的不一樣」,我雖然會細心引導其脫困,但其實也都覺得有點倒彈。
所以他要年輕人挑一些沒興趣的事情來做,然後鍛鍊意志力。而且,不試試,怎麼知道自己沒興趣呢?

乍看之下這樣的論點言之成理,沒有什麼問題。不過呢,請仔細聽一下上面學生說的話。注意到了嗎?他說的是自己「沒興趣」、「這不是我想要的」。
沒有錯,他很明白說了「沒有興趣」,那你怎麼會覺問題在於他是「興趣人」?
你請別人吃東西,別人說不想吃,你會要他別當貪吃人嗎?

問題反而在於他不是「興趣人」。

可能有人會覺得這根本是詭辯,況且,誰沒有幾個興趣呢?唱歌、跳舞、打球、看電影、看漫畫、玩玩神魔之塔、旅遊什麼的。

先讓我告訴你什麼才叫做興趣。很多人有的不是興趣,而是打發時間的消遣。

狂熱與挑戰是「興趣」的要素。

會讓你瘋狂、廢寢忘食的才叫做興趣。
有挑戰,會讓你想要不斷鍛鍊、鑽研、進步的才叫興趣。

我認識不少寫程式、玩魔術、下棋的瘋子。但不限這些領域,打牌、唱歌、跳舞、打球、衝浪也很多瘋子。當你對一件事情擁有狂熱興趣時,必然會被沒有狂熱經驗的人當成瘋子。

那些等我退休、等我有時間我就要來學跳舞、學日文什麼的,不叫興趣。有閑情逸致才做的事情,依照定義就是打發時間的消遣罷了。
興趣是你沒時間也要硬擠出時間來做的事。

挑戰跟難度不完全一樣。擲骰子等待四個六出現當然也很有難度,但除非你正在鍛鍊你控制骰子點數的能力,那也只是消遣。

拿神魔之塔當例子好了,這可以是一種興趣,也可以只是一種消遣。當你轉珠能力或者是遊戲中的相關知識、策略有在不斷進步時,那的確可以算是一種興趣。但絕大多數應該只是打發時間,轉移對現實的注意力。 星海就比較有競技以及進步的空間。

我認為大多數學生的問題在於沒有真正完整的「興趣」的經驗(或者說成年人也一樣)。

培養興趣這種事情是會成癮的。當你真正對一件事情產生過興趣,產生過狂熱之後,你會很難忘懷這種從無到有、從不會到會、改變人生的經驗。你很自然的會繼續嘗試其他的興趣,企圖重複這種過程。一次、兩次之後,慢慢就會養成習慣。
之前用  blender  來畫 python girl 是一個相當不理智的決定。因為找專業的畫師,絕對可以達到更好的效果。但是我無法抗拒學習、摸索新東西的那種感覺。

當你治好興趣缺乏症之後,你會對所有事情都充滿興趣。真正阻礙你,讓你沒有辦法從事某項興趣的唯一原因是(除了維持你的生命跡象和基本生活水準的時間外),就是你正在做一件你更有興趣的事情。

我沒有 DIY 四軸飛行器及 3D印表機的原因,不是沒興趣,而是我一直有更有興趣的事情在做。我最近練了 Freeline 飄移板,不是我突然對他產生興趣。我大概五六年前聽說這個東西後就有興趣了,只是我的興趣列表很長,我要靠機緣來決定要從事哪一項。

就像一個電玩迷,通常不會只迷一個遊戲。一個電影迷也很少只看一部電影。一個「興趣迷」自然會不斷尋求新興趣。一直反覆看同一本小說的,也難稱為小說迷。
有多次這種「興趣」的經驗後,你甚至可以刻意誘導自己,讓自己對特定事物產生興趣。

所以真正的興趣人是不會回答「這不是我的興趣」的(除非你太像是要來直銷或傳教的)。

也是有人對於某種興趣入迷後,就當成終身志向。很多大人會這樣擔心小朋友誤入歧途。
但通常一個事物越鑽研下去會越難,如果他能持之以恆,不斷破關,持續進步,有何不可? 怕只怕已經不是興趣,而是變成習慣和舒適圈了。

反而是因為太多大人過分強調什麼是正事(讀書),要小朋友把興趣當成是做好正事後,閒暇之餘行有餘力再做些「休閒嗜好」來陶冶性情。其實連大人們自己也是這樣對待自己的「興趣」。
因為這樣的觀念影響,才讓許多學生從來沒有完整的「興趣」經驗,也對於興趣帶有罪惡感,覺得好像得要很痛苦的做「正事」才是正途。 弄得有點像是興趣的厭食症。

沒有興趣,才需要刻苦的培養意志力。

就算再枯燥無味,只要有愛,就沒問題了。
但你能期待一個沒有愛過經驗的人,直接越級打怪嗎?



2013年11月1日 星期五

Great Python Challenge

就像長頸鹿問題一樣,我們也來個蟒蛇 Python 問題。
答案的程式碼很短,不過是個 one-liner,所以不用擔心花太多時間 。


失敗者請換上蟒蛇相關照片,直到想出來為止。
準備好了嗎?
題目在下面。