2013年12月4日 星期三

好便宜書分享:網路強人會


書本實物大概長這樣
(螢幕背後露出來的網頁是 恰好 是敝公司開發的「手滑背單字」App)

先來猜猜這本書多少錢?

299? 還是 199? 難道只要 99?
事實上,不用錢!讀者只需要自行負擔運費 80 元即可取得

這是一本「自寫、自編、自行出版、自備通路」的書
詳情可以到氣勢磅礡的 pre-order page 瞧瞧!

這本書值不值得看?

我認為 Jamie 寫的 推薦文 非常中肯:
「我會把它推薦給想要進入網路及電子商務產業的人,以及在這個領域工作不久的朋友們。」
我拿到書以後,當天就花了 2.5~3 小時把書給掃完了(我看書頗慢 ...)
感想是:有所收益,可觀,且 80 塊很超值

出來創業一兩年內的新手們,其實還蠻推薦看看這本書的
尤其技術出身的創業者,總想著「我要怎麼做出一個偉大如 Facebook, Dropbox, Evernote ...」諸如此類的服務
卻往往特別不會對內容網站、購物網站、個人網站有所思考
本書作者光是能夠概略的點出這些網站分類,考量到台灣環境的情況下分享見解,就算是功德圓滿了

本人平常是少看網路行銷相關的東西,因為很多文章內容都極空泛
至於本書,我認為對我有參考價值
會不會再看一次不確定,但是要查資料時會記得這本書就是了!

備註:
1. 推薦給創業新手、部落客、對電子商務有興趣的朋友
2. 技術人,除非想要看一下專家如何分析各類型網站及經營指南,不然可以不用看
3. 要取得本書必須填寫會員資料進行註冊、作者的網站 滿滿的行銷個人媒體的資訊,完全符合書中見解 XD
(看完書後,我因此知道作者且相信他有料;作者品牌得到宣傳。這樣應該算是雙贏吧!)


2013年11月24日 星期日

好書分享:Remote - Office Not Required

Remote 是世界知名軟體公司 37Signals 的創辦人發表的新書
他們的前一本暢銷書 Rework (工作大解放) 可以說是每位創業者必讀的好書


前言

儘管我積欠了數篇部落格文沒寫(尤其是上個月底的 MOPCON 2013 心得文)
我還是用個人閒暇有頭腦的時間「優先」把這一本書給看完,亦「優先」撰寫本文
之所以這麼做的原因是要驗證我自己的想法、以及找到一些疑惑的解答


中文版還沒出,如何取得此書?

我是在 iBooks 上面購買的!
為此我申請了美國 iTunes 的帳號,並且購買 GiftCard 以支付費用


為什麼想要讀此書?

我在 Startup 工作兩年,工作環境經歷了以下階段:
  • 「住辦不分,只有睡覺的地方跟工作區」- 極度燃燒(退伍後,短期這樣回魂最快)
  • 「住辦不分,但是是在自己的房間工作」- 效率極佳(但是要跟懶散奮鬥)
  • 「住辦略分,有自己房間,一樓是工作區」- 效率略低(意識到「干擾」這一件事)
  • 「住辦分離,辦公室在商業大樓內」- 效率極低(驚覺這樣下去不行)

其實隔離在自己房間工作的期間,就有 Remote 的樣子了
自己要調配工作與休閒
在這段期間,我一直嚮往的就是完全的住辦分離
但是很遺憾的,公司租用了辦公室以後,並沒有為我帶來更好的工作效率

我有很多的疑問(且大都心中有底了)
所以我非常急迫的想要閱讀此書


誰適合閱讀此書?

廣義而言,只要您對思考「工作效率」這一件事情有興趣,就很適合閱讀此書
此書或許不若上一本書 Rework 般一直讓人感到「當頭棒喝」
但是它提供了對於 Remote 的全面思考:
  • 對於已使用 Remote 的朋友:可供核對自身經驗
  • 對於想要 Remote 的朋友:當作 Guidelines 來閱讀
  • 對於從沒想過使用 Remote 的朋友:這本書的許多觀點將能解放你的思考
  • 對於完全認為 Remote 不可行的朋友:可閱讀後仔細想想「是否真的完全不可行?」

事實上,「老闆」會比員工更加需要閱讀此書 :)


此書內容在說些什麼?

有興趣的朋友可以前往官方網站 REMOTE: The new book from 37signals
內有宣傳影片、搞笑訪問影片以及部分章節試讀的連結
國外也有人整理出五分鐘懶人包:A Book in 5 Minutes: “Remote: Office Not Required”

本書的主要章節有:
  • The time is right for remote work
  • Dealing with excuses
  • How to collaborate remotely
  • Beware the dragons
  • Hiring and keeping the best
  • Managing remote workers
  • Life as a remote worker
  • Conclusion

書中理性客觀地分析 Remote 工作的優缺點
且透過全面性的思考,告知讀者如何實行 Remote 及解決衍生的問題


部分摘要與筆記

  • You can settle into your own productive zone. #Remote 的最大好處之一
  • It’s the technology, stupid #能夠 Remote 的最大原因之一
  • People go to the office all the time and act as though they’re working remotely: emailing, instant messaging, secluding themselves to get work done. #其實人們只是在辦公室做可以在遠端做的事情...
  • Embracing remote work doesn’t mean you can’t have an office, just that it’s not required. #37Signals 總部也是有辦公室的,只是員工可以自己選擇上班的時間地點。另外該公司大多數員工皆分散在世界各地
  • The bottom line is that you shouldn’t hire people you don’t trust, or work for bosses who don’t trust you #雇傭關係建立在互信之上
  • Why not let people work the way they prefer, and judge everyone on what—not where—work is completed? #工時 != 產能
  • If you’re in a room with five people for an hour, it’s a five-hour meeting. #常識
  • When you’re used to interrupting anyone any time you want, there’ll be severe withdrawal symptoms when you can’t. #Interrupt 對產能的影響大家應該都感同身受
  • You need solid writers to make remote work work, and a solid command of your home language is key. #雇用 Remote 員工時,要特別注重他的書寫能力
  • If people can manage to build world-class operating systems, databases, programming languages, web frameworks, and many other forms of software while working remotely, you’d probably be wise to look more closely at how it’s done. #世界一流的開放原始碼專案,不幾乎都是 Remote 開發的嗎?
  • Be on the lookout for overwork, not underwork #員工 Remote 時要擔心的真正問題
  • But when they become the norm—when they’re abundant—you’ve got a problem. #人類對於易取得的資源總是傾向不珍惜,Remote 可以讓面對面這一件事變得更加被重視,進而好好利用這樣的資源


37Signals 的人是如何工作的?

其實我猜,這是已在 Remote 的朋友最想要知道的事情
這些經驗大都打散在書中的各個部分
看過之後,可以一窺少許面貌:
  • Remote 的人要有基本的 Security 防範措施(書中列舉六點)  
  • Remote 工作時要與其他人有 overlap,建議 4 hours
  • 善用各種軟體以供協力作業(書的附錄有列表)
  • 每週進行一次「你最近在忙什麼?」的討論串
  • 一周工作以 40 小時附近為佳
  • 每個月至少打一通電話給 Remote 的員工,聊聊他們的情況(因為很多員工都在國外)
  • 員工會有一張公司的信用卡,使用準則是「spend wisely」(當然,賬單是記錄且公開的)
  • 員工如果要請假(無論長短),不用經過審核
  • 提防 overwork 而非 underwork
  • 有些員工在家會用各種不同的方法來區分出上班模式與休閒模式
  • 有人每天去不同的咖啡店工作,觀察細節上的異同
  • 書中有提醒到「人體工學設施」的重要性
  • 面試重解決問題的能力而不是腦筋急轉彎
  • 用 pre-hiring 的方式丟 mini-project 給面試者實作以評估能力(一兩周,給大約 $1500)
  • “Have I done a good day’s work?” 可以拿來自己詢問自己(不論是否 Remote)

另外,怎麼從到辦公室上班轉成 Remote?
他們建議可以從一周 Remote 幾天開始
看看發生了什麼事情?再來決定該怎麼做?
(建議要做 Remote 就真的做看看,一次 3 個月)

37Signals 在芝加哥的辦公室總部,有 13 個人有桌子
大多是情況只有 5,6 個人會出現


讀書前的疑惑

在公司租用正式的辦公室之前(住辦略分階段,一樓是辦公區)
我們就為了互相干擾、工作效率等等事情討論過

有同事說:「辦公室只能確保最低產值」
這句話大致上是對的,但是其實辦公室的作息有時候還不能守住最低產值
因為若精神不濟而寫出有 Bug 的程式,那就有機會變成負產值了 ...

隔一陣子以後,公司還是因為要招募設計師跟其他員工的需求,而租用了商辦
並且規定 10~12, 14~18 為工作時間(大致上是超短的工作時數)
儘管如此,工作了一陣子後我還是感到不對勁
當時我自己簡單筆記了一下家中工作與到辦公室工作的優缺表:
  • 家中
    • 優點 - 作息自己控制(可以無壓力的睡覺睡到自然醒)、自己切割上班/休息時間、工作效率佳
    • 缺點 - 可能會有家中事物的干擾
  • 辦公室
    • 優點 - 公私分明、有空調、視線明亮、便於溝通、有在工作的安心感、可訂便當
    • 缺點 - 睡眠品質變差、通勤要騎機車 25 分鐘(近 10 km)、很多干擾、中午飯後小憩的休息品質不佳、不喜歡公廁ooxx ...

不對勁的地方在於效率與工時,最終影響的結果是產量
在辦公室工作的效率評等,我自評大概是上午 C 下午 B,下班前會接近 A,工作時數是 6 hours
反之,以前在家中獨處時的平均效率是 B+,偶爾還能夠到達 S,工作時數 8+ hours
兩者的產值對比起來,相差甚遠

「這其中一定有什麼誤會!」

為了讓自己能夠在辦公室發揮更好的產能
我買了機械式鍵盤(讓打字變成樂趣 XD)
買了 111 人體工學椅(可以久坐不累、飯後還可以後躺 60 度休息,堪用)
無奈的是,產能的提升還是不夠 ...
更甚者,我發現下班之後,疲勞會讓我沒辦法在晚上做(與工作無關)其他需要專注的事情
至多只能讀讀少許較簡單的技術文章而已

大致估算一下,我發現一個事實:
我每天需要花 1 個小時通勤 + 8 個小時出門在外上班
然後可以得到中低效率的 6 hours 工作產值跟疲累的身心
荒謬的地方在於,同樣的事情是可以一個人在家中完成的,且效率更好
因此我一直在想「為什麼」跟「怎麼辦」 ...


讀書後的解答

與其說此書直接解答了我的疑惑
倒不如說隨著書中思考的脈絡,再來更加仔細想想「工作」這一件事情
一切就變得清晰易懂了

工作這一件事情建立在「意願」之上,有「意願」才有可能把事情做好
意即,在遵守最少的限制之下,「想工作才工作」「需要休息就休息」才是發揮效率的王道
限制工作的「時、空」並不是對每個人都適用的(或說對大多數人都不適用)
當時空限制被打破後,除了可以省下 context switch 的成本及消除 side effects 以外
有心要做事情的人自然會最佳化自己的「工作/休閒」演算法,以完成工作

舉例而言,上個月 MOPCON2013 結束後,我非常疲累(因為臨時投稿閃電秀)
隔天週一就在身心還沒回復的情況下上班,低效能地撰寫出程式碼
又心心念念該好好寫篇部落格來消化一下思緒跟補充演講的資料
最後 ... 遭遇許多外務後就很丟臉的就拖到現在還沒動工了 ...
理由是「下班已經累了、懶惰、過了最佳的時間點、有更重要的事情要做」

但是,事情是可以更加簡單而且圓滿的:
隔天上班,開完週會後跟處理必要的事務後,就該結束該天的工作的
剩下的時間應該轉為私人休閒時間拿來寫部落格
畢竟,「人要在最想要做的時候就去做那一件事情,才有可能把事情做好」
欠公司的時數,當天晚上或是分散在其他精神好的時候再補回來就好了

如果依循著這樣的思維仔細觀察
那麼就可以發現有許多公司,致力于企圖營造讓人覺得「很棒」的工作環境
比方說不強制上下班時間、良好的設備、能夠專心工作的小房間、休閒區 ...
這些措施的目的在於把對員工「時、空」的工作制約放寬,以提高生產力

會有 Remote 這樣的工作形態也變得合情合理
因為這樣可以打破大多數(並不是全部喔)的時空制約,以最大化效率
而就執行時數來講,Remote 其實也比較吃香:
  • 若一個員工一天到公司待 8 hours,則他的真實工作時間大概只有 6~7 hours
  • 但若要求 Remote 的員工做滿 8 hours,這可以說是很紮實的 8 hours

至此為止,若您是老闆,員工要求 Remote 工作,您會怎麼看待?


結論

請您也拿出紙和筆,簡單計算一下自己工作的效率與產值
想想看,有遭遇到哪些問題,有沒有辦法能改善與提升?
若您是老闆,也不妨對工作產值重新深思?坐在一起才是上班嗎?何不雇用遠方的優秀人才?

我相信當 Remote 的概念被您領略,即便不完全實行、甚至不實行它
您一定會發現能讓現況更好的契機

至於這一本 37Signals 創辦人撰寫的 Remote
它不但全局地從各個角度看待 Remote (絕非只有像本文般這麼狹隘的探討它)
也內含許多 37Signals 珍貴的思路與經驗,絕對值得一讀!

(對我而言,最大收獲是:告訴了我該如何工作與「生活」!)


2013年10月11日 星期五

介紹:Multi-Mechanize (Performance Test Framework)

最近恰好需要為正在開發的系統進行壓力測試
還記得上一次做壓力測試已經是一年半多以前了 …
出來打混近兩年的創業經驗告訴我
要遇到 scalability 的問題也不是一件很容易的事情(默)






Multi-Mechanize (簡稱 MM) 是 VU-based 的壓力測試軟體
之所以選擇使用他是因為:
  • MM 支援報表輸出
  • VU-based (Virtual User)的模式,能夠依照需求一定程度的模擬使用者的行為
  • 是 Python Solution,且撰寫時可以直接「參考」之前寫過的 functional testing 程式碼

不多說,不講解,直接附上參考資料:


比較入門的投影片:






進階的投影片,且提到其他壓力測試的東西:





MM 因為使用 matplotlib (相依 numpy …) 來繪圖
所以安裝時間沒意外應該會比看完他全部的文件還要長 … Orz


MM 使用上的特點有:
  • 用 multimech-newproject 建立專案; 用 multimech-run 執行壓力測試
  • 執行壓力測試時,如果強行使用 control-c/d 中斷,並不會完全停止測試(因為有使用到 multiprocessing)
  • mechanize.Browser 可以協助建立一瀏覽器物件,該物件有對 html form 進行操作的相關方法,亦支援 cookies 操作
  • 不使用 mechanize.Browser 也無所謂,urllib2, httplib, httplib2, requests … 皆可使用
  • 使用 Transaction 此 class 撰寫測試,如果比較喜歡在一個 transaction 內進行比較多測試,可以參考 Python Web 性能和压力测试 multi-mechanize 一文
  • 設定檔內如果設定 threads = 50 ,即表示同時(先不管 python 實作的真實情況 XD)使用 50 個 VUs 來進行壓力測試,每個 VU 的行為都是「發送 -> 等回覆 -> 收到 -> 再發」的 loop 行為
  • 測試結果會在 results 資料夾內建立新資料夾,含 csv, 圖檔, html … ,且支援直接將測試結果存到 DB 內(未實驗過)


個人小結論是,MM 沒有特別好用,但是也沒什麼不好的地方!


值得一提的是,其 VU 的概念
讓我這種之前用 ab 的業餘人士,花了一點時間才能夠理解過來

VU 的目的該是模擬同時有多少使用者,以此前提進行測試
而 ab 則單純依據參數產生固定的流量,以對伺服器進行測試

大體上,我認為 ab 是看八卦用的指標,畢竟很少有人上線的服務是回傳 hello world
自己家的機器,還是要真的去跑自己家真實的服務,測起來才會準確點 : )

2013年10月1日 星期二

活動:Tainan.py x MOSUT 2013 9 月聚會

由於學校已開學,擔心聚會的參與人數塞爆 Isrlab
所以這次活動便選在成大資工舉辦(人數約 3x 人)
photo by CCC @ Tainan.py

開場後我丟了一個很小的分享
因為是臨時擠出來的,內容頗不全面 Orz

會後有朋友在聚會的 meetup 頁面 發問相關問題
我有推薦前一陣子在 pythontw (FB) 看到的 ghost.py 與 selenium 供參考






這次聚會邀請到了「貴公司」的 Kilik 來一次給兩個小講題
第一個講題使人受益匪淺,第二個講題則是相當有趣

這次聚會看到常在 Taipei.py 分享 Python 原始碼相關演講的果凍出現
感覺是衝著第一個講題過來的(後來發現其實只是週末回家路過)

備註:Isrlab 的 kuku 在閃電秀時有對第一個講題做補充,非常值得一看





第二位講者是 Wen,講題「使用Linux/C組裝軟體的心得」看似是入門講題
可是演講的密度高而內容有趣,完全不只是給 Linux 新手看的,推薦一看!





這次活動中場休息時間,我們訂的飲料來自波哥 XD




第三位講者是 Nylon,分享了暑假在 RoBoard Lab 實習的經驗
樂於見到現在的學弟妹能夠利用暑假的時候去做「有意義的事情」並且願意分享出來
而演講中,台下亦有前輩補充資訊






閃電秀/工商服務時間時的講題如下:


Descent 用很短的時間證明了 git 其實沒有表面上看起來這麼簡單
(其實我也不太會用 git ... Orz)




jserv 介紹了這學期在成大開的課程(熱血啊!)





另外,Kuku 介紹了 Zato 與 pyjs  
對於有寫 Web 的朋友,前者務必一看,非常有幫助(儘管不一定有機會用到 XD) 







最後的最後,以開發 App/Web 為主的敝公司(利昇科技)
有計劃徵 Android 實習生/工讀生
有興趣請內恰: joe@lirise.com



這次的聚會感謝 MOSUT 社群的朋友們幫忙出主意跟向成大資工借教室
錄影機是由「創業抬槓」的朋友帶來,借我們使用
演講過程中,感謝果凍幫忙錄影
最後,感謝老闆幫忙訂飲料(是的,那個幫大家訂飲料的人是我老闆)

2013年9月30日 星期一

活動:Taipei.py 2013 8 月聚會

恰好有機緣前往北部,便在颱風中風雨無阻地來到了 CLBC
CLBC 的演講廳,要拿來舉辦小型聚會已經算是綽綽有餘
不過讓我驚艷的,還是做起來很舒服的「共用工作空間 Coworking Space」的 Herman Miller Aeron 椅子 
(事後跌入椅子坑,可是買不起 Aeron 啊啊~) 



以往我會試著整理講者投影片之類的東西來充實文章
可是 Python Taiwan (多虧 Mynt,強大) 實在太迅速
聚會還沒結束,心得文跟整理就都出來了:
活動記錄(含錄影及投影片)

主要的兩場演講講者是果凍與他學弟
同樣皆讓人覺得受益良多(不過學弟的演講節奏太慢,對於台下的老人,可以用兩倍速沒關係)
我投的閃電秀 其實是工商服務「Taipei.py Logo 的小故事」:



原本想說來 Taipei.py 看看朋友們
哈哈,不過常出現的 Keith, Mosky, c3h3 … 怎麼好像都沒出現
害我不能當面邀稿
不過寫 Flask 的朋友果然也不少,會後也與幾位朋友有機會聊到 Flask 與 startup 的經驗,蠻開心的!

2013年9月14日 星期六

活動:Tainan.py x MOSUT 2013 8 月聚會

這一陣子在趕專案,儘管對於 Flask 的使用及 API Server 的規劃有所收獲
卻苦於撥不出時間整理相關資料跟想法,嘗試分享給朋友們以供改進
更慘的是,聚會文跟筆記都完全拖稿 … Orz

趕緊來補一下!
8月炎炎夏日,聚會時間首次(可能也是近期唯一的一次)選在週六晚上舉辦
並且達成了成就:聚會時間破十一點 + 我要征服臺南牛肉湯 的作者領軍帶大家吃牛肉湯續攤
photo by mosky@府城牛肉湯





這次聚會首先邀請到了來自 Taipei.py 的 Tim 分享「Python 打包注意報」



這個演講相當實用啊!
儘管使用 Python 已經快要滿兩年,我對 distutils, setuptools … 的關係都不太瞭解
聽完演講後,毅然決然以後 pip install 都只在 virtualenv 下使用,確保乾淨


第二場演講的講者是來自 pinkoi 的 Mosky,帶來了「Web App 實戰:Mr.Bus」

此為開場部分的錄影,下週陸續上傳後續片段
(檔案放公司電腦 Orz)

此演講涵蓋 nginx, uwsgi, flask 許多願望一次滿足 XD
其中 Mosky 分享的 nginx config 設定小技巧有趣而實用
不過 flask 聽不夠啦 XD 備註:講者還在改投影片,修正錯誤且做完整後才會釋出


中場休息時間時,我們安排了「吃鹹酥雞配綠豆湯」的活動
這次總算讓大家吃到熱的鹹酥雞了 XD


第三場演講是 Descent 帶來的「linux 下中文終端機徹底研究, 輸入法與秀字」



儘管當年大家在用倚天系統的時候,我大概還在玩彈珠跟搜集旋風卡 XD
但是對於沒用過的人來講,此講題仍非常有趣,大家的氣氛非常熱絡!
強烈推薦觀看錄影!


第四場演講是宗翰帶來的「使用有限時域差分法計算電磁波」Reference

什麼? python 版本比 c++ 還要快 !!??

強烈建議不要只讀 Reference ,一定要看錄影
若對數學沒轍,可從影片 13 分開始觀賞,歡樂到結束 XD

常規演講結束後,BitCoin 中文社群的朋友也投了個 lightning talk

縱觀這幾次 Tainan.py x MOSUT 的聚會
發現南部的朋友投稿都很踴躍,講者演講時的參與度也非常高 而每次聚會都有「驚喜」能讓人意外地學到更多 XDDD


--
下次聚會改善事項:錄影, 拖稿
最懶的方法是不是找一個行車記錄器,掛在大電視對面的牆上就好了 XD


2013年7月22日 星期一

筆記:Python 輸出 .csv .xls .tsv …

近期恰好遇到需要在網站上提供輸出 .csv 檔案的功能
而無奈地,由於內含 utf8 中文字元的關係
使得輸出後的 .csv 檔案,透過 excel 開啟後會出現亂碼(明明 google 表單匯入都正常)

為了解決此問題,於是我曾嘗試使用 python 內建的 csv module, 高階版的 unicodecsv, 手動 補上 BOM 的資訊 … 但是透過 excel 2011 for mac 開啟後,中文仍然都是亂碼 Orz

仔細想想,既然假定使用者會用 excel 開啟檔案
那也不用強求一定要輸出 csv, 直接輸出 醜醜的 excel 檔案即可
於是最後找到了 tablib ,神速的短短幾行程式碼便能完成工作:

# 安裝
sudo pip install tablib

# 使用
headers = (u'中文', u'沒在怕的')
data = [
    ('John', 'Adams'),
    ('George', 'Washington')
]
data = tablib.Dataset(*data, headers=headers)

# 轉換成各種格式的字串
data.csv
data.xls
data.xlsx
data.yaml
data.tsv
data.json
…