Today is the last day of 2020, which means it is time to have my 2020 Github Rewind!
Last year I've had 1,775 contributions on Github and I got 4,104 contributions as of today. You can see my Github profile here.
Let's go through what I've worked on one by one in an arbitrary order.
vote4hk/warsinhk
warsinhk is a static website for covid19.vote4.hk. I've developed some components such as alert message boxes, datepicker, share buttons and etc, integreated react-i18next, did some bug fixing and revised the documentation.
aws/aws-sam-cli
aws-sam-cli is a CLI tool to build, test, debug, and deploy Serverless applications using AWS SAM.
I've worked on a bug ticket with Jacob who is a senior software engineer at AWS. The bug was about the attribute Command.ScriptLocation
not being updated for Glue::Job
when running sam build
because dot notations were not supported. At the beginning, my implementation was a bit complicated and Jacob suggested to use jmespath
to handle the querying for nested attributes in JSON instead. The pull request was merged after 2-month discussion.
wingkwong/hk-address-parser
hk-address-parser is an unofficial library for Hong Kong Address Parser, designed for Python applications.
The usage is pretty simple.
from hk_address_parser import AddressParser
# Single Query
address = AddressParser.parse( "Eaton Hotel, 380 Nathan Road, Jordan")
# Batch Query
addresses = AddressParser.parse(
[
"九龍觀塘海濱道 181號 9樓",
"九龍長沙灣道 303號長沙灣政府合署 12樓",
"九龍啟德協調道 3號工業貿易大樓 5樓",
"香港中環統一碼頭道 38號海港政府大樓 7樓",
"香港北角渣華道 333號北角政府合署 12樓1210-11室",
"九龍旺角聯運街 30號旺角政府合署 5樓 503室",
"九龍觀塘鯉魚門道 12號東九龍政府合署 7樓",
"九龍深水埗南昌邨南昌社區中心高座 3樓",
"九龍黃大仙龍翔道 138號龍翔辦公大樓 8樓 801室",
"新界沙田上禾輋路 1號沙田政府合署 7樓 708-714室",
"新界大埔墟鄉事會街 8號大埔綜合大樓 4樓",
"新界荃灣大河道 60號雅麗珊社區中心 3樓",
"新界屯門震寰路 16號大興政府合署 2樓 201室",
"新界元朗橋樂坊 2號元朗政府合署暨大橋街市 12樓"
]
Then you can call the methods to get the corresponding info.
cli/cli
cli is GitHub’s official command line tool written in Go. I've worked on the command gh gist create
which is used to create a new Github gist with given contents. The feature has been released. For the usage, please check out the official documentation here.
aws/copilot-cli
copilot-cli is a tool for developers to build, release and operate production ready containerized applications on Amazon ECS and AWS Fargate.
I was responsible for a few bug fixing tickets and a feature adding an optional env flag to the command app delete
with test cases.
wingkwong/k8sgen
k8sgen, written in Go, is an utility which is designed to guide users to build their Kubernetes resources in an interactive CLI. At that time I was learning k8s and drilling down into the details of its internal designs. It was an experimental project.
k8sgen jumpstart
_ ___
| | _( _ ) ___ __ _ ___ _ __
| |/ / _ \/ __|/ _ |/ _ | |_ \
| | (_) \__ | (_| | __| | | |
|_|\_\___/|___/\__, |\___|_| |_|
|___/
? What kind of object you want to create? [Use arrows to move, type to filter]
ClusterRole
ClusterRoleBinding
Configmap
> Deployment
Job
Namespace
PodDisruptionBudget
PriorityClass
Quota
Role
RoleBinding
Secret
Service
ServiceAccount
? What deployment you want to name? my-deployment
? What image you want to name to run? busybox
? Please select an output format yaml
json
> yaml
? What directory you want to save? /home/wingkwong/deployment.yaml
Result:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: my-deployment
name: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-deployment
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: my-deployment
spec:
containers:
- image: busybox
name: busybox
resources: {}
status: {}
cortexlabs/cortex
Cortex is an open source platform for large-scale inference workloads.
I added a feature to support .cortexignore
file to exclude files/directories from cortex project zip and also updated AWS resource metadata.
wingkwong/react-quiz-component
react-quiz-component is a ReactJS component allowing users to attempt a quiz. I've added some new features and worked on some bug fixing tickets. Currently it got 10K+ downloads in NPM.
alexellis/k3sup
k3sup is a light-weight utility to get from zero to KUBECONFIG with k3s on any local or remote VM. All you need is ssh access and the k3sup binary to get kubectl access immediately.
I've made a pull request with the changes to add app info
sub-command to show post-install instructions for an app and the app homepage link, so that users don't have to unnecessarily install again to see them, which was the only way till now to see post install instructions. The changes were implemented for nginx-ingress, cert-manager, metrics-server, tiller, linkerd, cron-connector, kafka-connector, minio, postgresql, kubernetes-dashboard, istio, and crossplane commands.
inlets/inlets & inlets/inletsctl
inlets is a Cloud Native Tunnel written in Go and inletsctl creates inlets tunnel servers in the cloud.
The same bug was found in both repository. When running get.sh
, the program will fail if the target folder contains a space. Therefore I made the same fix to both repository. The fix was simple enough - just added several double quotes.
My Self-Learning Playgrounds
I learn something new by doing when I feel bored. Here's the list.
- aws-playground
- azure-playground
- gcp-playground
- qsharp-playground
- nlp-playground
- deno-playground
- gRPC-playground
- argocd-playground
- skaffold-playground
- traefik-playground
- lxd-playground
wingkwong/competitive-programming
competitive-programming contains CP solutions (mostly written in C++) from different OJs and contest sites with explanations. I believe most of the commits come from this repository as I've solved quite a lot of problems this year.
Competitive programming is a mind sport for programmers to solve mathematical or logical problems. I started my CP journey in 2014 and I had a chance to participant in ACM-HK Collegiate Programming Contest in 2015. I took a long break since then. Most of the people practice lots of CP problems just to get into FANNG companies but I only treat it as a hobby.
Conclusion
In 2020, I mainly worked on CLI projects in Go, practiced 1000+ CP problems in C++, and learned cloud native stuff. In the next year, I believe I'll focus on advanced algorithms. Probably I'll try to use different programming languages to solve the CP problems to sharpen my programming skills.