About & Projects
Full-stack developer at @microsoft by day, indie creator by night, and a cool dad always.
I started in competitive programming (NOI ‘08, ‘09 in China), where I learned to enjoy coding and building cool stuff. Now, I spend my time building apps, games, and compilers.
I also translate tech materials and write short stories.
projects
pick.tools
AI-maintained catalog of softwares & services
pick.tools is an fully AI-maintained catalog of softwares and services. The agents continuously discover, analyze, and categorize tools from different sources, including the their stack, reviews, and testimonies.
Track HN
Data tracking and analysis project for Hacker News
Track HN is a project to track, archive, visualize and analyze data from Hacker News.
The project consists of web tracker, database, server-less functions, no-code dashboards, browser extension, and twitter bot.
Posts/Reports:
WeWord
AI-generated dictionary, thesaurus and crosswords
WeWord is an AI-generated dictionary, thesaurus and crossword puzzles.
It helps to see how the AI sees our world by letting it explain our language.
fiber note
a bi-directional networked note-taking app
fiber-note is a bi-directional networked note-taking app which is open and self-hosting, inspired by roam-research
, obsidian
and others.
I’m working on a series of dev diaries around the building of fiber-note:
ruby on rust
An implementation of ruby in rust
ruby-on-rust is an implementation of ruby language in pure
rust, consists of (barely working) lexer and parser, and a WIP interpreter.
I started this project as a way to learn rust. Eventually, I’ve learned more than that, including lexer & parser, ragel
, and a lot of ruby’s hidden magic.
Lots of the grammar rules and AST conventions are ripped from the parser
gem. For lexer, I adapted some rules from parser
and ported from ragel-6 to ragel-7. For parser, I use syntax-cli
as the parser generator.
charts.land
charts rendering service
charts.land is a chart image and animation rendering service. The ultimate goal is to provide an unified API that can render any chart from different libraries (e.g. d3
, plotly
, echarts
, chart.js
, vega
, etc.).
references.wiki (discontinued)
tracking pop culture references
I watched/played so many tv shows/video games that I have to build references.wiki to organize and visualize pop culture references between tv shows, video games, fictional characters, etc.
I composed scrappers to fetch and parse the occurrences of pop culture references in different wikia (fandom) sites. Currently I’ve parsed around 5000 references between 1000 works/celebrities.
I built my own knowledge base to cross-reference sources like wikidata, google kg, and wolfram alpha. I implemented a customized editor for user to create new references between works.
The next step will be UGC workflow (I’m considering a git-based one), editing history and data visualization.
project yoru
visual novel generator
Project yoru is a set of projects to build cross-platform visual novel games from only assets and scripts, without coding.
To build this project, I was using polymer
, lots of gulp
scripts, phonegap build
, which are all practically dead by now :|
tiny projects
- rails.style: a curated resource hub for Rails developers
- wiki flutter: a wikipedia client in flutter
- streaming guide: help to decide which streaming service (nf, hulu, disney+) should you subscribe to
packages/libraries/utilities
raycast shiori extension : Raycast extension for shiori bookmark manager
acts_as_reactable : emoji reactions support for rails
actioncable_dart: action cable websocket protocol ported to dart
flutter_html_widget: parse HTML dom into flutter widgets
publications
as a translator
- I’m a co-translater of the simplified Chinese version of MongoDB: The Definitive Guide from O’Reilly