November 2009 Archives

November 25, 2009

Plurking in Social, and more

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.

Screenshots:

Social dashboard page

Social irc channel list page

November 15, 2009

Twitter in Social

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.

November 12, 2009

指鹿為馬 Perl 版

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";

很驚人而有趣的事實。

November 11, 2009

IRC on Web and then iPhone

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: http://github.com/gugod/Social.

Here’s how it looks now:

photo.jpg

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.

November 8, 2009

Google Closure Compiler

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.

November 6, 2009

開放源碼中的軟體台灣名稱問題

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

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

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

無論如何,台灣人不主動花些口舌些去說明問題並推動世人修改的話,這宗大問題是不會變小的。

November 5, 2009

A jQuery outerHTML one-liner

$(...).clone().wrapAll("<div/>").parent().html();

November 3, 2009

The Tatsumaki Move

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 #chupei.pm channel page:

photo.jpg

The channel switcher at to top:

photo.jpg

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