pc Ruby

osm-simple-router is a A*-based routing library designed for OpenStreetMap. The library provides a simple API and it has been packaged as a ruby gem for the ease of reusing. It also supports dynamic weighting routing. The picture shown above is an example of dynamic weighting. The blue route tries to avoid passing through dangerous areas as much as resonable.


apple Objective-C

An elegant Hacker News reader application for iPhone. Spent a lot of time to design and implement an high-quality interface. A large portion of time is used for improving user experiences, such as implementing infinity scrolling list and client-side document parser.


android Java

I teamed up with 2 of my friends to make this app, and we won a first prize for a Taipei City Government contest. We designed and implemented this Metro-esque UI on the Android. We spent a lot of time to make this UI can adapt dynamically to all kinds of Android phones with different screen resolution. We used lots of open data sources, such as OpenStreetMap and Wikipedia.


globe Ruby on Rails, Obj-C

This is an web-based photo album editor. User can import their photos from flickr, arrange photos on the website with precise preview. Hypo will then print the book out and deliver it to the user. I designed the system architecture for this website and implemented both front-end and back-end of this website using Ruby on Rails. I also built a scalable queue system for serving previews and generating PDF files.


globe Ruby w/ Sinatra

TwTrk is a webapp that sync your twits to a social network popular in Asian called Plurk. I made a terminal emulator in JavaScript and wrote messages in the website using ANSI.


pc vim scripts

Javacomplete is a vim plugin that extend OmniComplete to support Java. I forked the project and extend it to further support Android projects. My plugin can automatically find the Android project root and infer all 3rd-party libraries used by the project. It was accomplished by tapping into the ant build system.


android Java

One of the first Chinese input methods implemented for the Android platform. The fact that it can be easily extended made it a perfect playground to experiment different new and creative mobile input methods.


android Java

An experiment that brings Google Maps to your watch. The app tracks your current location and fetch an static map from Google Maps. The speed and destination information is overlayed on top of the map on your phone. The map is being processed using threshold algorithm to black/white image before transmit to MetaWatch.


android Java, JNI

An Android live wallpaper which making your Android Phone looks "transparent". The original version used JNI and some improvement to algorithm to boost its performance from 5fps to 15fps. The current version takes advantage of new system API, thus running at full speed.