Why you need select() even with communication channels

Go has re-popularized the idea of handlingall of your blocking waiting-for-things operations by using CSP -likecommunication channels instead of select() (in Go, using goroutinesand channels). However, it's my firm belief that this isn't good enough;despite what some people think, you cannot replace select() in mostcommon CSP-like implementations.

The crucial ability that select() gives you is the ability to stopwaiting for something in response to some external event


不魔幻王國

同一條街,十年前後已經很不同,於我而言。不是桃花依舊人面全非,不是無良地產商趕走可憐小商戶的香港故事,也不是政府徒增就業率的舊區活化計劃,而是有一日,我發現好像甚麼都與我有關了。

一個人是從甚麼時候開始

前晚看首映


《據我所知》


(我說想寫好久終於寫出來的書評,此為一。刪節版刊於信報。2500刪到1800呀陰公。)



混亂時代裡,知識的溫柔



在喧囂和吵鬧的年代裡,雷競璇的《據我所知》悄悄出版。

「據我所知」這個書名就已吸引了我。它是一

How to Stream from Tricaster Broadcast/Pro to Ustream.tv or Watershed

How to Stream from Tricaster Broadcast/Pro to Ustream.tv

The following instructions are based on this video , embedded below:

Preliminary Notes:

  • You need at least version 2.5 of Tricaster software.
  • Download 2.5 or later at register.newtek.com (go to my downloads).
  • For Watershed, the process is similar, but you need to get the Flash XML file from Watershed directly.

First, you'll need to turn on the Tricaster, and make sure it's connected to the


Spam as a tax on public participation in open source projects

One of the things that has struck me lately is that spam has becomean implicit tax on publicly participating in various open sourceprojects. The mechanisms of this are fairly simple: if you have asufficiently popular open source project, the spammers are sittingthere mining the project mailing lists and their web spinoffs for emailaddresses and then spamming the heck out of them. There's probablyalso spammers mining web-based bug trackers too, where bug trackersexpose this information.

(Actually, this is probably a simplification.


Looking back at the Fall 2010 anime season

Since I wrote about my first reactions , I feel likewriting a retrospective of the season. I wound up regularly watchingfive fall shows this season, and this time around this list isdefinitely in order:

  • Star Driver : if pressed, I would have to summarize this as anUtena-oid magical girls show except with giant robots and boys(mostly). It's the clear standout of the season for me, partlybecause it is so novel and unusual instead of being yet anotherretread. I like seeing

買東西

很多人都喜歡買東西,但很少人會搞清楚買東西也需要有態度。

因為需要某種東西,而決定要買,跟覺得人人都有那種東西,而非買不可,兩者是截然不同的行為。有需要才買的人和人買我又買的人,是兩種很值得搞清楚的生活

Drupal Performance Guide - Drupal and the LAMP/LEMP stack

LAMP Stack with Drupal - Druplicon, Linux, Apache, MySQL, PHP

Drupal is a scalable, flexible, and open source content management system that is built to run on a variety of server architectures. The only real requirement is that PHP runs on your system. You can run Linux, Microsoft, Mac OS X, etc., along with Apache, IIS, nginx, MariaDB, MySQL, PostgreSQL, etc. if you're willing to do a few extra things.

However, the overwhelming majority of Drupal websites use the most popular LAMP stack on the backend: Linux, Apache


Using hook_init() to include CSS and JS files

For some time, I've been using the most hackish ways of including custom CSS and Javascript in my site via themes and custom modules. The problem has been (at least, in Drupal 6) that the hook_preprocess_page() function, inside which I'd really like to include my drupal_add_css() and drupal_add_js() functions, due to the fact that it's easy to see what page I'm on, or what kind of