Throughout my career I've been trained with simplicity driven design deeply in my mind. I firmly believe simplicity is the most effective weapon against complicated computer systems, as well as ever-changing domain logics. I can bring the following values to a software project:
- I can build and innovate as project needs. Great software should be built in the simplest way that also makes the most sense feature-wise, not necessary the way where everyone else is doing.
- I can balance the tradeoffs between features and a shipping deadline. Not all software have a rolling release design. Some will naturally have a deadline, and we should honour it.
I have extensive low level systems programming experience. I have built performant low level virtual machine whose bottleneck lies in modern CPU's micro-architecture, tweaked embedded devices with extremely low memory, modified Hadoop to unlock more potential performance.
I've been working with WebAssembly related technologies from the very beginning, whether it is emscripten, LLVM, asm.js or the current WebAssembly. My journey in this area even started before WebAssembly was a thing.
Nervos Network Member of the Technical Staff / Remote / 2018 - Now
Started as a Software Engineer working on many aspects of the Nervos CKB permissionless blockchain, I am now leading the Nervos Developer Tools team, working to improve the whole ecosystem around Nervos CKB. Some of my work highlights include:
- Designed, implemented and now lead the team to improve CKB VM, the core virtual machine used in Nervos CKB. Unlike other blockchains, CKB VM leverages RISC-V ISA directly as the virtual machine's instruction set. Although RISC-V was originally designed for hardware, it also excels as a virtual machine's instruction set. To the best of our knowledge, CKB is the only available blockchain enabling shipping cryptographic algorithms inside a smart contract. Though designed initially for blockchain usage, CKB VM also has potentials in the cloud native space.
- Lead the team building aML, a new smart contract programming language for Nervos CKB. The highlight of aML, is formal verification: not only is aML designed with first class, state of the art, source level formal verification in mind, the whole compiler for aML is also designed to be fully formally verified. Using Coq, we are collaborating with a leading research lab in the formal verification field, to bring the latest progress in the formal verification to aML.
- Lead the team building a series of frameworks, libraries and tools to aid dapp development in the Nervos ecosystem, including capsule, lumos, tippy, ckb-debugger and more.
- Led and now advise the team building godwoken, the first layer 2 solution on Nervos CKB. Polyjuice was built to provide Ethereum compatible layer on top of godwoken. For more details on godwoken and polyjuice, I've written 2 architectural documents: Life of a Godwoken Transaction, and Life of a Polyjuice Transaction.
Citrusbyte(now Theorem) Software Engineer / Remote / 2013 - 2018
As a remote Software Engineer, I both worked and led teams on buliding assorted projects ranging from Web apps, embedded systems, as well as Linux kernel related technologies. Some of my work highlights include:
- Lead the technical team building a major internal project for Apple Retail stores. The project was once used by all the Apple Stores globally, it was also featured in one of Apple's keynote events.
- Built the initial backend of asset tracking platform for Caterpillar's supply chain.
- Helped build the device component of Overwatch for threat and intrusion analysis. Linux kernel module technology was leveraged for performance considerations.
- Helped build many of the client libraries used in the AT&T M2X internet of things services.
Google Software Engineer Intern / Shanghai / 2010 - 2011
Worked in the AdWords team for over a year, I helped built a series of internal and external tools, including a conversion tool for importing advertising campaigns from Sklik into Google AdWords, a visualization tool for presenting AdWords potential conversion results to advertisers, and a range encoding algorithm for compressing URLs on the fly by exploiting URL patterns.
Open Source Work Anywhere / 2011 - Now
I've also contributed to open source projects from time to time. Since many of my professional work also result in open source projects, I will only include selected personal projects here:
- diviner: a FoundationDB style simulation testing framework. I've written a complete post describing this project here.
- paguridae: a Web IDE inspired from acme, using simplicity driven design principles.
- ckb-boxer: an attempt at building a minimal CKB distribution. I've also written a post describing the project here.
- redix_sharding: an Elixir based Redis sharding library
- sohm and sohm.lua: a scalable variant of the Object-hash mapping library for Redis. The lua version was written to leverage extreme performance provided via OpenResty. The sohm.lua library has been deployed in an environment where 200,000+ queries per second were recorded at peak time.
- webruby: webruby brings mruby, a lightweight Ruby implementation to the browser, enabling one to run Ruby code in the browser environment. Note this project compiles mruby into asm.js, which is the predecessor of WebAssembly. I've also been learning and trying WebAssembly since then to keep a knowledge of WebAssembly's nuts and bolts.