Friday, February 25, 2011

Estimation Toolkit for Agile Developer

From the article InfoQ: Estimation Toolkit , I have some thoughts
Each user story can be a function (mathematical view), or service (SOA view).
With some input methods (user form, event triggers, links, ... )

Tuesday, February 22, 2011

How to scan ISBN and post your book to blogger

When I need to find a book in my library, it's so boring  because it's not there. So I should do something that make my life easier with my Droid.

Every book has a ISBN number, which's encoded in barcode, just like this one. You can see here, my book "Dealing with Darwin" has ISBN 971591842149.

Step 1: I  write a small Android app "OrganizeMyStuff" , call to the Barcode Scanner App in my phone.

Step 2: Got the ISBN number, then my app search it from the Google Book.

Step 3: Finally, my app posts the book data to blogger.

You can see at this

That's it.

Monday, February 14, 2011


require 'unicode'

# Normalizes token text to lower case.
class UnicodeLowerCaseFilter
def initialize(token_stream)
@input = token_stream

def text=(text)
@input.text = text

def next()
t =

if (t == nil)
return nil

t.text = Unicode.downcase(t.text)
return t

class VietnameseAnalyzer < Ferret::Analysis::Analyzer include Ferret::Analysis # Standard Character mappings to remove all special characters # so only default ASCII characters get indexed CHARACTER_MAPPINGS = { ['á','à','ạ','ả','ã','ă','ắ','ằ','ặ','ẳ','ẵ','â','ấ','ầ','ậ','ẩ','ẫ'] => 'a',
['đ'] => 'd',
['é','è','ẹ','ẻ','ẽ','ê','ế','ề','ệ','ể','ễ'] => 'e',
['í','ì','ị','ỉ','ĩ'] => 'i',
['ó','ò','ọ','ủ','õ','ơ','ớ','ờ','ợ','ở','ỡ','ô','ố','ồ','ộ','ổ','ỗ'] => 'o',
['ú','ù','ụ','ů','ũ','ư','ứ','ừ','ự','ử','ữ'] => 'u',
['ý','ỳ','ỵ','ỷ','ỹ'] => 'y',
} unless defined?(CHARACTER_MAPPINGS)

def token_stream(field, str)
ts =
ts =

How to implement a search engine for Vietnamese language.
Cool, I found a solution!