November 2009 Archives

Plurking in Social, and more

| No Comments | No TrackBacks

Social supports plruk now. c9s released Net::Plurk last week and I made AnyEvent::Plurk with it. Programming with AE feels really good, a much easier alternative to POE.

Besides that, as a heavy user of Social, I found myself desired to peek messages inside channels before switching to the channel page. Therefore, I added a dashboard page that displays messages from all irc channels, Twitter, and Plurk. Also, On the channel list page, the latest 3 messages from each channel is right there to be seen.

And they are all live-updated. That is, you can just stay on the dashboard page watching messages flowing by, which I found very enjoyable.


Social dashboard page

Social irc channel list page

Twitter in Social

| No Comments | No TrackBacks

The list of twitter clients is already too long. It is almost like the “hello world” example program.

After I polish Social UI with jqtouch, I then start integrating twitter into Social.

Screenshots comes first:

The new iPhone-UI look.

Social dashboard

Statuses of friends:

Social Twitter page

Inline flickr photo:

Social Twitter page with inline image

IRC supports multiple networks now:

Social IRC channel list, multiple network.

The underlying AnyEvent::Twitter polls for twitter update. It is amazing how this Social app works with only one running process. No background program and/or crontab setup are required. The mixed of synchronous and asynchronous coding style provided by AnyEvent is a really comfortable chair for web programmers. It backs you up with awesome support. Such web programming technique must rock the future, otherwise /dev/null can suck the universe.

指鹿為馬 Perl 版

| No Comments | No TrackBacks

Perl 可以用 *a = *b 這種寫法來做函式別名。而且可以用中文寫(檔案內容要以 utf8 編碼) :

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use encoding 'utf8';

sub 馬 { "馬函式" };

 # 指鹿為馬
*鹿 = *馬;

print 鹿(), "\n";


package 糜鹿;
sub 速 { "慢" };

package main;

print 糜鹿->速, "\n";


IRC on Web and then iPhone

| No Comments | No TrackBacks

My previous playing with Tatsumaki turns out to be really useful. I ended up checking IRC logs on iPhone every day recently. This is particularly handy when I am on the bus or stuck in the traffic.

I named it Social, for I want to make it do many things more the just an IRC client. The code is here:

Here’s how it looks now:


I made the HTML semantic similar to Limechat so I can use their theme, and it worked just fine. The currently theme of choice is vicutake. Very nice-looking, and it fits iPhone screen perfectly.

Google Closure Compiler

| 1 Comment | No TrackBacks

I created a program to send js code to google closure compiler service to see how it performs.

This tool is pretty awesome doing minimization. With ADVANCED_OPTIMIZATIONS, it shrink jquery-1.3.2.min.js from 57254 bytes to 49636 bytes. That is about 7Kb smaller. Amazing result.


| No Comments | No TrackBacks

雖然 FreeBSD 台灣名稱問題 已被 妥善解決,但這只是一個案例。「直接使用 ISO 3166 資料」以便軟體開發的心態仍然普偏存在;前有 Ruby On Rails 之例。 但絕對不限於此。現在也有很多其他開放源碼軟體 依然不知此問題而直接使用。

FreeBSD 的國際化政策 或許可做為此後爭論上一有力的後援。

世人將 ISO 3166 中的國家名稱資料直接拿來使用,也無可厚非,畢竟沒有其他哪個資料來源如此容易取得,又有這麼多的國名。使用這份資料的研發人員就在不知情況之下,繼承了這份資料的所有政治問題。修改 ISO 3166 資料中名稱當然是必要的,但這份資料的使用者眾,那廣大數目的軟體也都要隨著更新才算是真的生效了。只是,若原作者不知情、不關心,又怎會主動跟著修改呢。


A jQuery outerHTML one-liner

| No Comments | No TrackBacks

The Tatsumaki Move

| 2 Comments | No TrackBacks

Instead of playing with Google Wave, I’m trying to write my own IRC client these days. Why ? Because I want to check IRC messages with my phone, and the solution of using screen+irssi all these years doesn’t cover that.

Turns out it is surprisingly trival.

AnyEvent::IRC::Client does a really nice work in detail dealing with the underlying IRC protocol, and the new shiny miyagawa-ware, Tatusmaki, nicely implemented message queue, keep the log of everything after started too. This nice little project made my weekend.

Before I release the code, let me show some screenshots:

The channel page:


The channel switcher at to top:


MobileSafari doesn’t work nicely with mxhr, it timesout in about 60 second. However the plain-old long-polling works just fine.