教小朋友寫程式

最近收到一個很有挑戰的任務是教小一的女兒寫程式。 想一想決定來接受這個挑戰!!

先從準備教材開始,我想小朋友最重要的就是要有趣,激發他們興趣,跟大人比較不一樣。

剛剛大略收集了一下資料,很多都是從做遊戲開始,或是一些圖形化拖拉的部分。  這個方向感覺不錯,可以走走看。  另外就是控制機器人或是馬達資料的東西。

這些訓練邏輯的部分應該都相當好,這幾天趁著等車的時候來思考看看。

以身作則?

這一陣子再帶新人的時候,都叫他們每天要寫一篇部落格。  記述一下今天學到/看到的東西。 不過隨著開始忙碌起來,他們就逐漸開始漏了。

或許以身作則看看 是個好主意。 我也好久沒有寫部落格了。

 

This day

這個月做了一個蠻重大的決定,決定自己跟朋友們出來專心闖一闖了。 前幾年都不是很專心。

看看自己到底能做到怎樣的程度呢?  是否可以一直不斷地持續的進步跟成長。

也想要知道自己可以成長的怎樣的程度。人生短短幾十年寒暑啊 !

creative framework 開發進度(回到原點之一)

有種回到原點的感覺…。 因為啊,底層用的go-ui 不更新了。 作者的新作github上也都沒有commit 。等了一段時間後覺得不行了,還是得自己動手。但沒想到這麼複雜…。

第一步呢就是模仿go-ui 來建立一個qt的 dynamic lib ,光這邊就弄一段時間了…。首先要改出可以產出  .dylib的.pro檔案,找了老半天 後來才發現是修改TARGET 即可。不過還是有點怪怪的問題,暫時先不想理他,所以現在是用….go-ui 的 .pro檔案來產生 dylib 檔案….。(感謝open source 啊!!)  之後再來看看怎麼修正這個問題。

第一關就是寫在註解裡面的C程式  Go找不到,後來才發現 寫完之後要緊接著 import “C" …也就是說

/*

void hello();

*/

import “fmt"

import “C"

這樣是錯的,一定要

/*

void hello();

*/
import “C"

甚至多一行空白也不行勒。

第二關就是呼叫編譯好的lib了,一開始一直出錯,一直跟我說找不到這個函式。後來想起來之前看過的 程式設計師的自我修養:連結、載入、程式 一書中有提到可以dump出dll裡面的symbol,於是搜尋一下 發現在mac上可以用 nm  -gU  libname  來看。 我比照一下列表跟程式碼。才發現原來是需要…. extern “C" 來把他匯出成全域的函式…(看來C/C++ 還有一段長路要走勒)。 到這邊終於可以呼叫函式了,感覺很棒!!。

 

但是下一關開始呼叫 qt的 qappliction.exec()的時候 就又出錯了……。 等解決後再來寫下一篇了!

Rt-n16 &vpn

最近我弟去大陸,跟我詢問vpn的用法,我就大方的開放了我家的RT-N16(哼哼)。 沒想到….。 第一天在桃園機場就連不上了。我本來手機上用3G測試可以連線,但晚間又不行了….=.=  。而且即便連接好vpn 也無法上網….。之前老闆去大陸也是遇到這樣的問題,後來用學弟阿達的居易的router就可以了。

真是太詭異了,不過我弟說他要待到八月底,為了解救手足只好熬夜來更新韌體看看。

更新到最新的beta版本……  無效。

一怒之下,整個洗成蕃茄的版本….😦    到現在我在外面使用都可以很愉快的連線。

官方啊!!怎麼會這樣呢  !!

creative framework 開發進度

名字還是難產….。

我目前把實作processing 1.5 的範例當作目標。稍微計算了一下processing的範例有101個..目前的進度是…4 (T_T)這樣要做到何年何月啊XD 不過後來應該是會越來越快啦!! 前一個在寫hsv ->rgb的時候因為對go data type 不熟 卡住好久…。不過他要一直轉換來轉換去的很繁瑣,像是:

a float64 = 4/3 (X 不行 ) 簡單的說就是一定要相同類型。所以常常會 float64, int, uint8(用在色碼上) 轉來轉去,有點在考慮是不是數字就一律 float64 uint8 就好.. 。 不過寫好 hsv->rgb的時候感覺很開心!! 底下就是目前四個範例的畫面。

p.s go-ui 裡面的qt 的 drawPoint 畫出來的點跟processing的不一樣,怪怪的….

 

Screen Shot 2013-04-28 at 8.37.44 AM

Annotated portfolios and other forms of intermediate-level knowledge

source:  Jonas Löwgren. 2013. Annotated portfolios and other forms of intermediate-level knowledge.interactions 20, 1 (January 2013), 30-34. DOI=10.1145/2405716.2405725 http://doi.acm.org/10.1145/2405716.2405725

本篇文章主要探討中介形式的知識以及設計物。作者認為這些物品以及知識雖不若最終成品一樣完善,但仍舊擁有其價值。設計研究可以在軸向上分成抽象化的通則以及實際的設計物這兩個終端,而中介知識則位於其中間的空白處。

Screen Shot 2013-04-28 at 8.37.44 AM

 

作者在開頭探討了設計研究跟設計實務的不同之處,很巧的是作者的論點跟Epistemic artifacts  [1]相當類似。他們都認為設計"研究" 的目的都是產出知識,也就是上圖中的 General Theory 這個部分,而設計實務所產出的則是設計物。中間的部分作者認為仍舊是有相當的價值,即便它可能沒有實際的產出。Epistemic artifacts  中所提到的中介產物的範圍較小,本文作者提供了中介知識的概觀以及其他的許多形式。 Depth of File [2] 中也提到了用影片這種媒介來做設計。

這幾種種類的中介知識最大的用途是提供其他人一些聯想以及洞見。例如 Annotated portfolios 的方式,使用者將設計物或圖片化約為幾組關鍵字,再通票選選出其中好的一些關鍵字。但除此之外其他的中介知識像是 概念發想的一些記錄,也都可以提供很多知識在裡面。

 

 

 

[1] Epistemic artifacts : 之前寫的報告

[2] “Depth of field". Timo Arnall. http://www.nearfield.org/2010/09/depth-of-field-film-in-design-research

go-framworks

Screen Shot 2013-04-26 at 3.07.24 PM今年雖然沒有寫展望,不過一直有一個目標在我的心中,就是自己寫一套自己的 creative coding framework 。之前一直卡在 跟qt去對接。目前最近有高手寫了一個很完整的版本 – qt-ui ,初步都可以使用。所以我就得以繼續下去了!!  上面就是仿造processing 教學的第一個作品(http://processing.org/learning/gettingstarted/ )。 程式碼長這樣(go還沒非常熟!!):


package main
import (
 "../goframework"
)
func Draw(){
 goframework.Fill(0,255,255)
 if goframework.MousePressed() {
 goframework.Fill(0,0,0)
 }else{
 goframework.Fill(255,255,255)
 }
 goframework.Ellipse(goframework.MouseX(),goframework.MouseY(),80,80)

}
func main(){
 goframework.FrameRate(60)
 goframework.Draw(Draw)
 goframework.Win(400,400)
}

不過我還是修改了qt-ui的幾個部分。

  1.  設定背景繪圖的時候不會會清除。
  2. 設定滑鼠 move事件 在不按下左右鍵的時候也會觸發。

未來大概還要改不少吧@@  qt 這邊對我就比較難了 。 目前的計劃是先把2D的部分api給完成。再來是參數化設計 , 影像處理的api  , 內建使用go 寫的 簡易的電腦視覺的lib(像是找邊緣之類的。) ,  最後跟硬體 Arduino對接。  最後是3D的部份,要有3D的部分才有辦法做投影校正的lib阿!!

creative coding II

之前提過今年的新希望是想要用google-go寫一個自己的creative coding的framework。 今天想好code name了 就先叫做 Lu_Ban (魯班),正式名字再請老闆來命名。 期望它可以成為一個有用的工具啊!!

最近的進度還是在追如何產生視窗(其實是go-native window的溝通),今天終於有了一些進展。搜尋之下找到一些go的 gui /drawing framework

https://github.com/skelterjohn/go.wde

https://github.com/skelterjohn/go.uik

https://github.com/zozor/hgui

http://code.google.com/p/draw2d/

http://golang.org/doc/articles/c_go_cgo.html  (用go去叫c)

其中go.wde給我許多啟發,我終於知道怎麼做了。  不過go.wde是採用原生的mac視窗,我想我就直接去接qt看看了。明天一早來試試看啊!!