About Me

  • I am a full-stack hacker hacking on anything interested to me. I have done academic research on speech processing but not limited to that. I built industrial-strength recommendation engine, and conntributed to open source community in Haskell, Python, Rust, Ruby.
  • I have been working for Grab since 2015
  • My GPG Key: 1FF14010, Fingerprint: 0F99 E2AA 38C4 600C 1A11 B7F1 98A2 4676 1FF1 4010
  • elasticsearch_dsl

    Domain Specific Language for elasticsearch in Python

    An emerging trend in recent year for software, including mongodb, elasticsearch and Chef, is to expose an JSON interface to accept complex requests. They give up the traditional SQL query and adopt JSON as the text encoding of abstract syntax tree. Therefore, whenever you are making up a request to these services, you are actually hand coding an abstract syntax tree in JSON. Although it is flexible and easy to extend, it is also error prone and hard to maintain. A common solution for this is to write a Domain Specific Language. And with python’s language design, a naive and natural solution is to use Class to denote AST node and Visitor pattern to code-generate the underlying JSON.


    A Clojure library designed to read raw index from Solr

    Both of Solr and Elasticsearch are built on Lucene. However, when you would like to migrate from one of the technology to the other. There isn’t any tool help you do so. Nwer version of Solr has dump handler built-in, but it is just for exporting raw Lucene index and it is not in JSON format. You could use install the Lucence jar and manipulate the raw index with Java API. An naive way is to write Java, but to enjoy the feeling of dipping into new technology. We decided to write it in Clojure. The dump format would be JSON.

    Learn you a Haskell for Great Good -- Chinese Translation

    Chinese translation of famous introduction material: "Learn you a Haskell for great good". Mainly co-worked with Fleuria

    The Haskell learning resource in Chinese is very few as the time of 2011. As one of the initiators of #haskell.tw channel on freenode. I took over the unfinished first eight chapters translation from Fleuria, and continued to translate the last six chapters. The translation is licensed by CC-BY-SA-NC. The work has been viewed by thousands of people.