- Hong Kong / Singapore
- 20:39
(UTC +08:00) - https://github.com/SOF3
- https://keybase.io/sofe
- Rust: Almost all my serious personal projects are written in Rust.
- Type-driven: I adopt type-driven development.I tend to express most code concepts with the type system.For example, I use newtype pattern extensively for basic numeric types,and assertions about types are expressed in wrapper types.
- Plaintext only: I avoid working with files that cannot be managed by Git.This means I avoid committing images(unless they won't be modified or in SVG) into a repo,and I don't like producing multimedia.
- For documents, I use Markdown and LaTeX and generate the PDF on CI.
- For graphs, I use GraphViz and compile the image on CI.
- Vim: My primary IDE is NeoVim + coc.nvim.On mobile, I develop with Vim over SSH.My setup is updatedhere.
- Linux: My personal computer runs on Ubuntu.I use Bash as the default shell.My setup ishere.
- Other preferences:
- Scripting languages: Bash, Python and NodeJS.
- JVM language: Kotlin.
- Deployment: Docker on Alpine Linux image.
I have started jotting down some weird opinions from mein thewiki of this personal repo.
I have started a lot of open-source projects for personal interest,but many are incomplete because of lack of time and financial support.Incomplete projects are marked as ⏳.
Some of these projects were not created or maintained by me,but I included them here as I have contributed a substantial amount of code to them.
- await-generator, a PHP library that enables async/await pattern
- portrait, a Rust proc-macro framework to write trait-aware proc-macro attributes such as impl-by-delegation.
- dirmod, a Rust macro to smartly detect modules to include
- rwlock-promise, a JavaScript library that implements mutually-exclusive and shared-exclusive locks with a Promise API
- thisrc, a PHP extension that observes the refcount of the
$this
object without inducing side effects - xylem, a Rust framework for statetul type conversion (a post-deserialize processing stage).
I have also created numerous tiny macros and libraries in Rust,but those generally have very ad-hoc purposesand are not known to have any other users.Examples includeserde-iter,count-write,xias,qualify-derive, etc.
- enclavlow, my final year project that performs Java flow analysis to verify SGX data security.
- Kelemetry, an observability tool to provide global control plane tracing for Kubernetes.
- KubeAdmiral, a multi-cluster orchestrator and scheduler for Kubernetes.
- KubeZoo, a lightweight multi-tenancy solution for Kubernetes.
- PocketMine-MP, a reverse-engineered Minecraft server software.
- PocketMine-MP has a huge ecosystem of plugins, and most of my work in earlier years were related to developing tools and cohesion of the ecosystem,such as dependency management, build tools and common-dependency APIs.
- PocketMine-MP is an ancient project started in 2012. Some of my contributions include introducing modern tools and paradigms to the project.
- ⏳libglocal-idea-plugin, an intellij plugin for editinglibglocal language files
- ⏳Traffloat, a 3D web game written in Rust.
- ⏳dynec, an ECS library that focuses on type safety and optimized for specific scenarios.
- include-flate, a Rust macro for attaching constants as deflated strings in the executable.
- phar.rs, a Rust library for the PHAR (PHp ARchive) format. Also includes a WASM app and a CLI command for phar manipulation.
- signed-vimrc, a vim plugin that loads PGP-signed .vimrc files in cwd
- ⏳pathetique, an object-oriented abstraction of OS paths in PHP
I was a member of theHKU Robocon Team.
- ⏳octorest, generated Rust bindings for the GitHub API (can adapt to other OpenAPI implementations too)
- ⏳webcord, a webapp + discord bot that mirrors a discord chat
- AndTransfer, a simple Android app that shares files to anytransfer.sh server.
- Mentamatics, an app to train mental arithmetic calculation
- MySQLClientCompact, a small MySQL browser.
The Discord bots I write follow minimalistic approachand rarely have sophisticated framework.
- bthint, a bot that tries to extract syntactically correct code from chat messages
- boredphoton, a minimalistic bot for alerting spam raids
- orbs.bot, a fan project that reverse engineers the API of the webgame orbs.it and mirrors live games
- ⏳blob-mirror, a bot mirroring GitHub markdown files to Discord.
- ⏳webcord, a webapp + discord bot that mirrors a discord chat
PinnedLoading
- pmmp/PocketMine-MP
pmmp/PocketMine-MP PublicCustom server software for Minecraft: Bedrock, built from scratch in PHP, C and C++
- await-generator
await-generator PublicWrite code in async/await style in PHP using generators.
- include-flate
include-flate PublicA variant of include_bytes!/include_str! with compile-time deflation and runtime lazy inflation
If the problem persists, check theGitHub status page orcontact support.