Cryptape Chief Technology Officer / Remote / 2018 - 2021
Started as a Software Engineer working on many aspects of the Nervos CKB permissionless blockchain, I grew to lead the whole Cryptape technical team, working to improve the whole ecosystem around Nervos CKB. Some of my work highlights include:
- Designed, implemented and led the team to improve CKB VM, the core virtual machine used in Nervos CKB. CKB VM leverages RISC-V ISA directly as the virtual machine's instruction set, making it also suitable for more uses cases other than blockchains. It can achieve ~10x of native code performance using an interpreter, or ~2.34x of native code performance via an LLVM-powered AOT engine. To the best of our knowledge, CKB is the only available blockchain that ships cryptographic algorithms inside smart contracts, instead of hardcoding them.
- Led 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.
- Led 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 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 TheoremOne) 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:
- Led the technical team building a major internal project for the retail department of one industry leading consume electronics company. The project was once used by all the retail stores of the company globally, which was also featured in one of its global marketing 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.
Throughout my career I've practiced with simplicity driven design. I firmly believe simplicity is the most effective weapon against complicated computer systems, as well as ever-changing domain logics.
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 software for 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. I've also been up to date with latest developments in the WASM world.