Giter VIP home page Giter VIP 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

glium icon glium

Safe OpenGL wrapper for the Rust language.

gomine icon gomine

A Minecraft (Bedrock Edition) server software written in Go

gonum icon gonum

Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more

graphmine icon graphmine

An experimental server software project. DO NOT TRY TO USE THIS. This is just a proof of concept.

gsp icon gsp

A Generalized Subprocess Plugin (GSP) is a PocketMine plugin written in any language supporting standard IO.

gusket icon gusket

Yet another geter/setter derive macro.

heck icon heck

oh heck, a case conversion library

hello-hacktober icon hello-hacktober

This repository is for people who are starting to program, and want to participate in hacktoberfest or just want to contribute

hereauth icon hereauth

Your auth plugin is here, for you. The PocketMine auth plugin with the most customization ever.

hierarchy icon hierarchy

[WIP] It's time to ditch PurePerms and PureChat. // Innovative role-based permission management system

hormones icon hormones

Advanced plugin for network load balancing and network administration

hptt icon hptt

HKU programming team training

include-flate icon include-flate

A variant of include_bytes!/include_str! with compile-time deflation and runtime lazy inflation

indent-stack icon indent-stack

Rust library for parsing off-side syntax like YAML or Python

indvec icon indvec

A vec literal that assigns item indices.

infoapi icon infoapi

Placeholder registry and formatting API.

infochat icon infochat

A simple chat format plugin powered by InfoAPI.

infomcpe icon infomcpe

INFOMCPE.RU plugin for Pocketmine and Genisys

instaperms icon instaperms

The instant permissions manager that really is instant!

inventoryexchanger icon inventoryexchanger

Inventory Exchanger is a plugin that allows you to change inventory in same world.

invmenu icon invmenu

A PocketMine-MP virion to create and manage virtual inventories!

j2mlog icon j2mlog

Java to mindustry logic transpiler

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.