四月 8, 2016
» Setup a skype chatbot on Respberry pi with 4GB SD Card

It's a small challenge and fun to setup a chatbot on a small device with restrained resource.

Here's the instruction to setup a chatbot on Respberry pi with 4GB SD Card.


1. Download respbian lite

We need respbian lite because normal Respbian took more than 4GB space. If you have 8GB or larger SD Card, normal Respbian works fine for you.

You can download them from https://www.raspberrypi.org/downloads/raspbian/

2. Flash image to sdcard

I did it in Mac with diskutil. You can check the install guide from https://www.raspberrypi.org/documentation/installation/installing-images/README.md for other platforms.

$ diskutil list
/dev/disk0 (internal, physical):
...
/dev/disk1 (internal, virtual):
...
/dev/disk2 (internal, virtual):
#:                       TYPE NAME                    SIZE       IDENTIFIER
0:     FDisk_partition_scheme                        *3.9 GB    disk2
1:             Windows_FAT_32 boot                    58.7 MB    disk2s1
2:                      Linux                         3.8 GB     disk2s2

$ diskutil unmountDisk disk2
$ sudo dd bs=1m if=2016-03-18-raspbian-jessie-lite.img of=/dev/rdisk2

3. Login to respbian

Respbian lite does not provide desktop environment, so we'll do everything with command line.

Insert SDCard, bootup and login into respbian with
name: pi
password: raspberry

Refer from http://elinux.org/RPi_Distributions#Raspbian


4. Install node and redis

Refer from https://nodejs.org/en/download/package-manager/

$ curl -sL https://deb.nodesource.com/setup_5.x > script
$ chmod 755 script
$ sudo -E ./script
$ sudo apt-get install -y nodejs build-essential redis-server
$ node -v
v5.10.1
5. Install webbybot

Webbybot is the rewrite of hubot from coffeescript to ES6, its will be more maintainable in the future.
In respbian lite, the git is not pre-installed, so we need install git-core from apt-get as well.
sudo apt-get install git-core
git clone https://github.com/gasolin/webby-template pibot
cd pibot
npm install
./bin/webby
webby> webby test
webby> pong

6. Deploy on messengers

Check Workable adapters section to install your bot onto telegram, facebook messenger, or skype
https://github.com/gasolin/webby-template#workable-adapters

Let's take skype for example. First you need sign up an skype account, then put the username/password on to .env file.

 
vi .env

HUBOT_SKYPE_USERNAME=name
HUBOT_SKYPE_PASSWORD=password
 
Then install hubot-skyweb adapter and switch the core to webbybot

npm install hubot-skyweb
vi node_module/hubot-skyweb/src/skyweb.coffee
replace require 'hubot' to 'webbybot'.
Then run
 
./bin/webby -a skyweb 

You are good to go! You can add new skills on your pibot by following https://github.com/gasolin/webbybot/#add-plugins
which is same as hubot, and create your own plugin to control the respberry pi https://github.com/gasolin/webbybot#write-your-own-plugin.

Have fun!

二月 17, 2015
» 手工作玩偶


前陣子感到應該用一些方法來驗證現在數位與實體世界的距離是否已經越來越近。而且桌上也缺一些裝飾品,於是從 cubeecraft 下載了多摩君的剪紙,直接用印表機印出A4大小的紙來。

和Designer同事借了剪刀與美工刀後,照著紙上的指示割了起來。


多摩君的構成很簡單,基本就是一個紙盒。白色的地方是要割開的洞,將黑色區塊嵌進去後,不需要膠水就可以組裝成成立體的玩偶。


用中午休息不到20分鐘的時間,多摩君完成啦!


 完成後有了點信心,改天繼續挑戰了難度大一點的成步堂君


 在勞作過程中,發現剪紙時還是美工刀好用。這次的成步堂君剪開來還蠻多配件的。


 組裝好的樣子


 最後來個疊疊樂


手工藝成本:

兩張A4紙。


» 手作鋼鐵衣


我相信現在數位與實體世界的距離已經越來越近,我觀察到某些例子,能讓我們常見的實體商品,透過數位方式加值,產生出相當不同的體驗。

這邊舉 T-Shirt 為例。這是網上已經在銷售的商品。


其實整個想法很簡單。只是透過將手機放入胸前的袋子,就提供了旁觀者新穎的視覺體驗。

在網上也能找到簡易的作法:
 

由於今年尾牙要求的dress code是 cosplay 電影動漫人物,於是我把腦筋動到鋼鐵衣上面。

1. 首先找一件不要的衣服(這件是 2011 年參加 Coscup 送的,穿到現在)
2. 在胸口適當的地方開個洞。

 

3. 為了手機容易拿取,黏一個袋子進去(剛好最近常常看醫生,就拿藥袋頂上)。袋子對應胸口的地方也要開洞。


4. 下載 Digital Dudz App, 選鋼鐵人裝扮

於是就完成有 Arc Reactor 的「We love Open」鋼鐵衣啦!







二月 18, 2014
» 人生就像是遊戲,這篇就是你的攻略指南


這篇文章的原文為 Life is a game. This is your strategy guide,作者為 Oliver Emberton,譯者為 gasolin。已獲得作者的翻譯許可。

(按下開始鍵)

真實的人生就像是遊戲,每個人都身在其中。 但遊戲過程可能會遇到困難,這篇文章就是你的人生攻略指南。

基礎

你可能還沒意識到,但真實的生活其實是場策略遊戲。遊戲裡面還包含了許多有趣的小遊戲 -- 像是跳舞、開車、跑步、與愛愛 -- 但是遊戲勝利的關鍵其實只在如何善用你的資源。
最重要的是,成功的玩家將他們的時間用在正確的事情上。即使在遊戲的中後階段加入了「金錢」這個要素,但你應該優先考慮的,依然是關於如何運籌帷幄你的時間。


童年

人生遊戲開始於你被指派了一個隨機的角色與隨機的環境

(選擇你的角色)

遊戲的前15年左右只是新手導引任務。這部分的導覽實在做得不怎麼樣,而且還不提供跳過選項。

青年階段

作為一個年輕的玩家,你擁有許多時間與精力,但幾乎沒有經驗。你會發現大部份的東西 -- 像是最好的工作、最好的財產、最好的伙伴 -- 直到你取得之前都仍然未解鎖。
這個階段是可以快速升級你的技能的時機。在之後的階段裡,你再也不會那麼多時間與精力了。
現在你要好好地玩這場遊戲,你的首要任務是將你的時間作最好的分配。每件你做的事情都會影響你的狀態與技能:

(編程 +程式能力 +職業前景 + 邏輯)
(喝酒 -健康 -精力 -金錢) 

這聽起來很容易,但問題是你不總是知道該選擇做什麼事,而且你的身體不見得總是服從你的命令。這就來一一說明吧:

如何讓身體服從你的命令

許多玩家發現,當他們選擇做某個任務時 -- 例如「去健身房健身吧」-- 他們的身體完全忽略了這個命令。這並不是一個錯誤(bug)。 每個人身上其實都有一個狀態欄,只是你無法直接看到它。這個狀態欄很可能長得像這樣:

(健康 精力 意志力) 

如果你的某個狀態指數太低,你的身體將抗拒執行你的指令,直到你的需求已被滿足。試著在你又累又餓的時候讀書吧,你會發現你的注意力一直跑到臉書上。

在這些狀態中,你的意志力指數狀態是最重要的。每天起床後,意志力就會隨著時間降低,在吃些東西後會回復少許,只有透過睡一晚好覺才會完全回復。當你的意志力指數很低的時候,
你只能做那些你身體想要做的任務。
生活中作出每個決定時,都會消耗意志力指數。對於那些你必須要作出不做比較吸引你的任務,而去做較不吸引你的任務的決定(例如不看電視而去健身)需要消耗大量的意志力。

這邊有許多技巧可以幫助你保持良好狀態:

1. 保持良好的狀態. 如果你覺得飢餓、疲憊、或感覺全無樂趣,你的意志力會崩潰。請確保你有持續地好好對待你自己。
 2. 不要一天內消耗太多意志力. 將你最困難的項目分作多天完成,並搭配一些沒那麼難的項目一起做。
  
3. 每天先做最重要的事. 這會讓其他的事情更困難一些,但這讓你最重要的項目更可能完成。

4. 透過減少選項來減少消耗意志力. 如果你試著在可以連上臉書的電腦前工作,你需要更多的意志力來工作,因為你必須持續地選擇做困難的項目而不是選簡單的。消除這些分心的事吧。

玩這場遊戲的重要部分是平衡你的眾多任務的順序與你的身體狀態。別讓你自己進入隨波逐流的
自動導航模式,否則你什麼事都完不成。


選擇正確的任務

在正確的時間選擇正確的任務就是這遊戲的精髓。有些任務會影響你的狀態,例如

(吃東西 +精力 -飢餓)

另外一些任務會影響你的技能:

(練搖滾 +音樂性 +臉部彩繪)

你需要花時間在那些保證你健康狀態的事情上 - 例如進食與睡眠 - 好讓你的意志力狀態維持高檔。然後你需要發展你尚未俱備的技能。一些技能比其他的技能更有價值。好的技能可以開啓整條升級道路,像是科技樹一樣:

(電腦技能 -> 電影制作者, 程式設計師, 網頁設計師 -> 臉書創辦人 ->千萬富豪)


有些技能則是沒有發展性的死路:


(用膝蓋頂球)

結合多個技能是最有效的。要把一個技能練滿是非常困難的 -- 事實上,通常是不可能的。但把一堆相關的技能練到似模似樣就簡單多了。例如:

(商業 + 自信 + 心理學 = 企業家)

(烹飪 + 跳舞 + 心理學 = 舞男)

看到心理學如何讓你變得又富有又有魅力了吧?你應該學學這個(笑)。

你在哪裡生活

你所生活的環境會持續地影響你的狀態、技能,與你升級的機會。你可以在任何地方把遊戲玩地很好,但在一些地方,要把遊戲玩好卻更簡單。例如如果你是身在某些國家的女性玩家,有許多成就你都不能解鎖。任何玩家生在最佳環境的機會都基本上是零。所以搜索看看你的選擇吧,仔細思考是否要早點移動。環境是你的技能與狀態的一個乘數。在適合的環境中,你的表現會成倍增長。

尋找伴侶

「魅力」本身就是個複雜的小遊戲。但大部份伴生於你已經在玩的遊戲。如果你已處在很好的狀態並擁有很好的技能,那麼你已經具備不小的魅力了。一個疲憊、易怒、身無所長的玩家一點都不吸引人,而且可能不該嘗試尋找另一半。

(成就解鎖 快樂 +1 頭痛 x2)

在這個小遊戲的初期,不管是拒絕其他玩家,或是被其他玩家拒絕都很常見。這是正常的。但不幸地是大部份玩家不太會處理拒絕,這都會降低你的狀態。你需要消耗一些意志力以恢復遊戲,而意志力需要透過睡眠來回復,所以給點時間吧。

80%要找到另一半的因素,通常歸結於如何讓自己變成最有魅力的自己 -- 就像人生遊戲的其他方面一樣 -- 意味著將你的時間放在正確的地方。如果你運動、社交、補充營養、發展自己的事業,你的魅力也會自動增加。剩下的20%則是讓自己出現在會遇到對的人的地方。

錢、錢

 遊戲的稍後階段中你需要管理一種叫做「金錢」的新資源。大多數玩家會發現遊戲的早期階段金錢通常會逐漸增加,但通常這只會造成更多問題,而不是更少。


關於處理金錢最重要的規則是「絕不借錢,除非借了錢能讓你賺更多回來」
 例如,教育或房貸可能有價值(但得看狀況,並不一定)。借錢買鞋則不是。

根據你的財務目標,這邊有幾種策略可以參考:

  1. 不為錢煩惱. 低壓力策略:只要量入為出,並未雨綢繆即可。在你可以存錢的階段時就盡量存錢吧,不然你會後悔的。
  2. 小康. 審慎選擇一個職業與環境,準備經常轉職或升職。你需要大量投資在相關的技能上,這會花掉你許多時間。而且注意別因此操壞你的身體,不然你會提早掛掉的。
  3. Mega rich. 開始自己的生意. 為別人工作幾乎不可能變得富有。自己工作不會變得富有,擁有東西 – 資產 – 才會變得富有。資產會回報比投資時所花費的更多,而且你的公司是你可以從頭建立起的一個有力的資產。 結合你的回報變成更多的資產,最終它們讓你完全不需工作.
晚年階段


在遊戲進行的過程中,你能選擇的也跟著改變。婚姻和孩子將減少你的時間和精力,而且在遊戲中引入了更多隨機元素(緊急換尿布任務!)這讓你更難以快速地發展你自己。
 較年長的角色通常擁有更多的技能、資源,與經驗,能解鎖那些之前無法參與的大任務。例如「擁有一棟房子」,或「寫一本(好)小說」。

(聽力 -1 寬鬆的褲子 +10) 

所有的玩家在大概 29000 天,或80年後死去。如果你的狀態和技能良好,你可能可以延長一點時間。但是並沒有作弊碼可以大幅延長遊戲時間。

在遊戲開始時,你沒有辦法控制你是誰或你在哪裡。在遊戲結束時,你依然無法在這時改變結局。你過去所下的那些決定,會絕大地形塑你最終結局的好壞。如果在你最後的人生中開心、健康、圓滿 -- 或不然 -- 你都無法再改變什麼。

這就是為什麼攻略很重要。 因為隨著時間我們大部份人都會瞭解人生遊戲到底怎麼玩,但這時我們已經浪費掉太多精華部分了。

現在你最好趕緊去玩人生遊戲吧。



十月 19, 2011
» 程式屍

程式屍常常待在他天然的巢穴裡,駝背坐在顯示器淡淡的光線中,在文字編輯器中輸入著複雜的標點字元組合。有時候,這個膽小的傢伙會離開他的窩,四處尋找咖啡或比薩。很快的,他就會回到安全的地方,繼續在鍵盤上做他一直在做的事
-- 編程創藝

十一月 1, 2010
» 從過去遙望未來

但這是 Internet 對我們未來生活真正的影響嗎?我覺得不是。
如果我們著眼於大眾,就會發現真正大的影響還沒有開始。

如果 Internet 的意義確如 Bill Gates 說的 "Information at your fingertips" (彈指間立得訊息),我們就該進一步追問大眾平日最多的「訊息行為」是什麼?

想想看,普通老百姓最常見的「訊息行為」是不是「買東西」和「看電視看報紙」呢?這裡我們才看到一個新技術與生活型態的未來。
-- 詹宏志, E時代, 1999

九月 4, 2009
» 打鼓






九月 1, 2009
» Cool Interactive




九月 28, 2008
» 建立自己的程式碼群圖



看了 Creating your own code swarm 這篇文章,照著弄了一套程式碼群圖(Code Swarm) ,真的很簡單有趣。

程式碼群圖是指從 svn, git, hg 上取得更新 log,由 CodeSwarm 程式分析,產生出以時間為單位的一張張截圖。

上圖是周蟒的程式碼群圖。

六月 10, 2008
» Google Reader裡有隱藏人物!

如果童年時代有玩過紅白機上的經典遊戲魂斗羅, 就一定會知道著名的密技: 上上下下左右左右BA。而在Google Reader中,竟然也有一個密技存在,而且使用方法就是 “上上下下左右左右BA”(要按快一點喔),可以呼叫出隱藏在Google Reader中的隱藏人物!(至於按完密技會出現什麼就讓大家自行去發掘囉) 在程式裡放這種復活節彩蛋似乎已經變成一種程式設計師愛玩的小花招,而且Google人又愛將娛樂結合於工作中,不禁令人好奇其他Google app會不會也有類似的密技可以使用呢? XD

[MORE...]

五月 1, 2008
» 程式語言面相學

要知道哪門程式語言紅不紅,先看程式語言發明者的鬍子!

程式語言幾乎是現代電腦的基礎。不只是資訊相關工作才會用到,只要讀理工科的碩士班,幾乎也都會因為實驗中需用到電腦模擬,而多多少少學了一些程式語言。電腦/手持設備的換代速度飛快,因此相對應的編寫程式技術與使用的程式語言也更新很快。於是很多人在跌跌撞撞學習程式語言時,心中都難免會存疑:

「我怎麼樣才能知道,我現在學習的語言,過了幾年以後還仍然熱門有用哩?」

答案很簡單,卻充滿驚奇:

看程式語言發明者的面相。(特別是鬍子!)


這個非常簡便的方式,可以相當準確地用來檢視我們所使用的程式語言的發展大勢,與判斷這門程式語言是不是值得我們繼續投資學習!

Tamir Khason 在四年前的 第一篇 (簡體中文版) 文章中,提出了這個經由歸納而來的假說。其核心理論為:「程式語言的發展,與開發者臉上鬍子的疏密有莫大關係。擁有一個滿臉濃密鬍子的程式語言發明者,該程式語言的發展會比擁有沒蓄鬍子程式語言發明者的程式語言好得多 (Java v.s C#、C++ v.s Object C)」

Tamir Khason 今年再接再厲發表 第二篇,顯示這幾年程式語言的發展,仍然持續地應證了這個假說的正確性 XD

你相信這個假說嗎?

biggo.com.tw

A Django site.