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

2014年4月22日 星期二

蟒極客的彩蛋: 把 Chrome 的 JavaScript console 變成 Python console.


之前在蟒極客 放了一個彩蛋, 在蟒極客首頁,把 Chrome 的 JavaScript console 變成 Python console.

因為我用的是 ubuntu 上的 chromium, 版本有點舊, 所以之前有點 bug, 一般的 chrome 不靈。

整修後,現在應該在 webkit based 的瀏覽器可用。沒有出錯的話,到蟒極客 用 Chrome 打開JavaScript console ,會變成 Python console。

比方可以試試看 import math 然後會發現 math. 後面的 auto completion 也可以用。或試試看 [x**3 for x in range(10)],語法是 Python3 語法。

(不過沒有用什麼太神奇的東西, python 是 brython)
有興趣,可以直接看 geekpy.org 的 html source 。

更新: 又修改了一個 bug,讓 ubuntu 的 chromium 也可以用了。

2014年4月11日 星期五

網路、開源與民主

這篇基本上是對「資安問題變國安事件?張善政:我們政府沒有那麼無能」有感而發的。一個官方表格都是用 MS Word 文件,很多網頁都還是 IE only 的政府這樣講,很沒有說服力啊。

有一種說法是,工業革命才讓民主制度可能。有一定程度的識字率,資訊才能廣泛傳遞。有了交通器材、電報,很多事情都能更有笑的完成。經濟繁榮了,大家也更有時間想到更進一步的需求。有了需求,就會想到參與決策的可能。
所以,現代的民主制度只是這種潮流之下的必然產物。

那網路革命呢?
代議制度只是用來解決 Scalability 的一種方式,這種制度的反應速度已經跟不上網路革命後,被稱為十倍速時代、甚至百倍速時代的節奏了。
電玩之所以吸引人,就是因為即時回饋。
民意選出來的民意代表,最後投票時聽的還是黨意。人民明明就不滿,但是一到選舉時還是含淚投票。為什麼?就是因為這個回饋機制很慢很間接,不會造成學習的效果。
反倒是婚喪喜慶什麼的,有來沒來,有送花沒送花什麼的,某某委員蒞臨,真情流露、有情有義的,反應就很直接也很快。

過去這樣是沒有辦法,投個票還要全國放假一天,勞師動眾的監票開票。但網路時代,你在網路上投票的次數還少嗎?
聚個會你都會上 doodle 問大家的時間。 排時間填意願你還會開個 google 文件或是表單來弄。
所以,很多東西,其實可以直接開放給全民公投,跳過代議制度這一層。
當然,這中間還有許多運作機制上的問題,一開始,也一定會有些很錯誤的決策,就像你選到很爛的民意代表一樣。但由於回饋迅速,而且要負責的對象比較明確,選民會開始學會事情。快則二十年,慢則五十、一百年,這種民主方式一定會變成常態。
太陽花學潮有很大一部分可以放在這個脈絡之下。割闌尾也可以算是加快回饋速度的一種嘗試。十年內就會有個人或組織,利用網路工具,打著服從民意的旗幟出來參選。

但資訊水準的普及度是一個很重要的問題。為了讓這種制度能夠公平,一定要讓資訊教育普及到弱勢的族群。雖然,弱勢族群再怎麼樣還是相對弱勢,即使是現在的代議制度也是如此。但至少要達到一個大家良心上可以接受的程度。所以,資訊教育的推廣和普及是目前一個很重要的工作。
開源軟體就很重要了。再回到工業革命以及民主的類比。當然經濟繁榮有利於民主的發展。但像是一些產油大國,經濟再好,也不容易促成民主。因為資源掌握在少數人手上。開源,就是讓所有人都能直接接觸資源的來源,避免資訊資源變成像是石油這樣的東西。
要讓每一個人,特別是弱勢族群都能掌舵資訊處理的能力,開源是不可或缺的。

弱勢學童的資訊普及教育,其實不需要二十年、五十年那麼久。真正資訊能力弱勢的,是中老年人(不是全部,而是很多)。聽到某些中老年人的言論,你可能會覺得他們好像是活在平行世界一樣。因為,不是好像,而是真的活在平行世界裡面。一個是有網路的世界,一個是沒有網路的世界。當然那些人的世界裡也是有網路,他們也會發發 email,上上 facebook,寫寫 blog。但這個網路跟網路世代眼中的網路不是一樣的東西。

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

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

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