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.

NGINX #4#

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.

Other

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.

Updated:

Leave a comment