Git Product home page Git Product logo

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

Jonathan Chan Kwan Yin's Projects

2048 icon 2048

A small clone of 1024 (https://play.google.com/store/apps/details?id=com.veewo.a1024)

actionapi icon actionapi

Generalized user interface framework for PocketMine plugins.

actix-web icon actix-web

Actix web is a small, pragmatic, and extremely fast rust web framework.

alloyperms icon alloyperms

A new approach to permissions. No longer permissions! They are now alloys!

amethyst icon amethyst

Data-oriented and data-driven game engine written in Rust

anyhow icon anyhow

Flexible concrete Error type built on std::error::Error

apibossbar icon apibossbar

A simple virion API for Minecraft Bossbars for PocketMine-MP

arc-swap icon arc-swap

Support atomic operations on Arc itself

arcstr icon arcstr

Better reference counted strings for Rust

auctionhouse icon auctionhouse

Feature-packed auction house plugin for PocketMine-MP (pmmp)

await-rt icon await-rt

The low-level runtime of the await-generator library

await-std icon await-std

Virion for writing PocketMine plugins in await style

basin icon basin

The ultimate PocketMine-MP load balancing solution

bedcoreprotect icon bedcoreprotect

BedcoreProtect is a fast, efficient, data logging and anti-griefing tool for PocketMine servers. Rollback and restore any amount of damage.

bedwars icon bedwars

A new BedWars plugin for PocketMine-MP by XenialDan, frequently updated

betterban icon betterban

A plugin for PocketMine-MP to simply ban players for a certain period of time.

bfc-asm icon bfc-asm

Compile Brainfuck into Assembly (without any optimization)

blob-mirror icon blob-mirror

A Discord bot that mirrors a file on GitHub to messages on a Discord channel

blocksniper icon blocksniper

An innovative new world editing tool for PocketMine-MP

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.