Grading scale mechanism:

Score Explanation
10 You literally have written a book.
7 - 9 Expert, go-to person on this technology.
5 - 6 Solid daily working knowledge. Highly proficient.
3 - 4 Comfortable working with this, have to check manual on some things.
1 - 2 Have worked with it previously but either not much, or rusty.

(Taken from a Google interview from Ciro Santilli.)

However, since I’m only an amateur CS student without too many years of solid development experiences (without the word solid, I may add a few years, but with it, I’d go conservative), I’m very hesitant to give myself a single 5 score on anything, because I still need to occasionally check manuals and documentations on many technologies I work with (who don’t?). For this reason, instead of numbers, I’ll show the scores with stars. One ★ means one score (and it’s also more intuitive to look at).

Ordered at my own discretion, whatever I deem more important goes first :)

Software Programming

C++ #3#

Stack Overflow activity (also my top tag as of May 2019)

Reason for not giving a fourth score: I’m not particularly familiar with STL and I haven’t participated in a scaled C++ project. This should be considered a downside as I’m familiar with C++ syntax and many sneaky language features (and that’s where my Stack Overflow score under the [c++] tag primarily comes from).

C #4#

Stack Overflow activity (also my second top tag as of May 2019) and my repositories

Python #4#

Stack Overflow activity

Also long-term contributor to SmokeDetector, a mid-scale Python chatbot that detects spam and deletes them rapidly.

Bash #3#

Stack Overflow activity and a collection of my gadgets written in Bash or POSIX sh.

VBScript #3#

A vicious project and some gadgets.

SQL #1#

Merely touched and played with. Built some projects with MariaDB. SQLite3 CLI utility is good for tampering game saves :)

Ruby #1#

Barely touched Ruby, write short snippets to aid existing Ruby projects (my Jekyll website or other Rails apps)

The Web Trilogy (HTML/CSS/JavaScript) #3#

The ugly “previous” website that I designed and wrote on my own. I also extensively modified the theme to suit my needs for a nice-looking personal website.

Go #4#

My preferred language for small gadgets, especially when involving an HTTP server or non-trivial data structures.

Verilog #1#

Learned from school courses Digital Circuit labs and Computer Organization and Design labs. Not practiced much

Scala / Chisel #1#

Assigned a research on Chisel for performing particularly well in Digital Circuit labs, and have worked on a few entry-level projects (my Cmputer Organization and Design repo and this RISC-V project).

Flash ActionScript #2#

A very addictive plane-shooting game when I wrote back when I was 14. (Project home page)

Regular expressions #5#

The only item on this page that I dare claiming solid knowledge on. Still learned and practiced in the SmokeDetector project linked above.

Tools and technologies

Git #4#

I was about to give myself a score of 5 on this when I realized that Ciro Santilli claimed the same score, but backed with a huge tutorial he wrote on his own. Then I reevaluated myself and calibrated the score to 4 - I can’t even write the smallest portion of Ciro’s tutorial.

Linux #4#

Daily working environment (WSL) with enough supporting knowledge. Ironically, I don’t have a preferred desktop environment because I mostly work in CLI. I have a few Ubuntu and Debian servers that I maintain personally, including a Raspberry Pi.

What about checking out my tmux config?

Windows Desktop #4#

Long since I was 12 I began to learn various configurations and tweaks (primarily the Registry) of Windows XP and Windows 7, which helped build my solid knowledge on Windows setup, maintenance and recovery.

Still using a Windows laptop (by MSI) for day-to-day working, yet heavily relies on WSL.

Vim #4#

My most-used text editor. With Vim coding is just so easy and I’ve always wondered why one would need VSCode or JetBrains stuff.


Preferred HTTP server over Apache. Have some experiences configuring and tuning it, as well as web optimization. Best paired with Docker.

Docker #4#

My favorite application deployment solution, but haven’t got much experience with it. I also have private CIs running in Docker containers.

Haven’t yet touched Kubernetes.

LXC / LXD (Linux Containers #3#

Did a project organizing LXD containers as VMs for students to do their course experiments on. Wrote a Django frontent with the help of pylxd library. Also manages a small cluster of LXD containers for own and friends’ use.

Make #2#

My preferred build automation system. Usually writes Makefile for personal projects.


Computer Networking #4#

Managed technical infrastructure of Linux User Group @ USTC for years. We have a complex overlay network based on tinc as our intranet. We also help school staff with issues in our campus network. I have learned a lot from these experiences.

Hardware maintenance #3#

I assembled several desktop computers, and I maintain all my hardware on my own, ranging from my laptop to my phones. I send them to repair shops only when I identify that I can’t repair or replace it by myself.

  • I disassembled new laptop even on day 1 of purchase for an immediate upgrade (e.g. SSD 256 GB → 1 TB). (2018)
  • I replaced a broken screen of an old phone manually. (2016)
  • I dismantled a HDD to learn how it worked. (2016)
  • I assembled my first desktop computer from parts. (2014)
Cryptography #2#

My speciality in CTF competitions.


Leave a comment