Skip to content

SOF3/SOF3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 

Repository files navigation

About Me

  • 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 updated here.
  • Linux: My personal computer runs on Ubuntu. I use Bash as the default shell. My setup is here.
  • Other preferences:
    • Scripting languages: Bash, Python and NodeJS.
    • JVM language: Kotlin.
    • Deployment: Docker on Alpine Linux image.

Personal blog

I have started jotting down some weird opinions from me in the wiki of this personal repo.

Highlighted projects

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.

General-purpose libraries

  • 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 purposes and are not known to have any other users. Examples include serde-iter, count-write, xias, qualify-derive, etc.

Programming language analysis

  • enclavlow, my final year project that performs Java flow analysis to verify SGX data security.

Cloud native

  • 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.

Game development

  • 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 editing libglocal language files
  • Traffloat, a 3D web game written in Rust.
  • dynec, an ECS library that focuses on type safety and optimized for specific scenarios.

Systems programming

  • 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

Robotics

I was a member of the HKU Robocon Team.

Web development

  • 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

Android development

Discord bots

The Discord bots I write follow minimalistic approach and 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

Other accounts

Releases

No releases published

Packages

No packages published