tech

My automated Daily Health Report infrastructure

Back in the days when the Zero COVID policy was prevailing, our university introduced a Daily Health Report system. Students and faculty were mandated to submit a daily online form detailing their ...

6 minute read

Centralized Linux authentication with OpenLDAP

LDAP, the #1 way to get your graduation delayed (as has always been the meme around Tsinghua University), is every SysAdmin’s dream tool for their servers. As mighty as its rumors fly, LDAP takes t...

14 minute read

Install Proxmox VE on eMMC

Recently I bought a mini PC looking forward to setting up a home router. It started quite well except the specs were higher than I anticipated. 8 GB RAM plus 128 GB eMMC - too much waste for “just ...

2 minute read

Setting up a GitHub webhook on AWS Lambda

Last month I set up my own Telegram bot for GitHub event notification. To receive GitHub events via webhook, a receiver is needed. True, it isn’t hard to write a Flask or Sinatra server and throw t...

7 minute read

A Deep Dive into Containers

Since years ago, containers have been a hot topic everywhere. There are many container softwares like Docker, Linux Containers and Singularity. It’s hard to say one understand what containers are w...

24 minute read

Keep using Flash Player in browsers in 2021

It’s 2021 now, and Adobe Flash Player has been end-of-life after December 31, 2020. There are many cases where you want to retain it, however. For example, you may want to keep enjoying an old game...

2 minute read

Enabling better “Related Posts” with Jekyll

There’s a less-known feature of Jekyll that populates related_posts correctly with “related” posts, instead of the 10 latest posts when it’s disabled by default.

1 minute read

Use RSA CA Certificates with OpenSSH 8.2

OpenSSH 8.2 is coming to the latest Long-Term Service release of Ubuntu, Focal Fossa (20.04), and has some breaking changes for users using an SSH Certificate Authority.

3 minute read

How to change email of your Nvidia account

I recently retired a few old email addresses, and am currently going in a row to change email for accounts associated with those emails. Everything else went smoothly, with my Nvidia account being ...

1 minute read

Converting DFA to Regular Expression

This post originated from Lab 1 of course Compilers: Principles that I’m currently taking, in which we were required to write a flex program to parse a subset of the C language. The multiline comme...

1 minute read

Creating templated Systemd services

Last time I wrote an article about NAT traversal using FRP, which has been my personal solution for exposing SSH access of machines behind NAT to the internet for a long time.

2 minute read

How I saved a lost commit from GitHub

Earlier today I force-pushed to my repository USTC-RV-Chisel for testing purposes, without noticing that my local ref origin/master is 1 commit behind the actual master on GitHub. My friend pushed ...

2 minute read

Build a minimal Linux system and run it in QEMU

Linux is the #1 open-source operating system nowadays, and many people are running a Linux distro, such as Ubuntu or Arch. Linux is also the most popular choice for a server OS.

6 minute read

Bootstrapping Make

Have C or C++ project to build? You may think, “Yeah this is very easy, I’ll just call the compiler to do so”, and yes, let’s take a look at an example.

4 minute read

Setting up Ubuntu in VMware Workstation

A quick step-by-step guide for those wanting to get in touch with Ubuntu in a virtual machine with minimal effort. For example, at the start of a semester of Operating System Concepts course.

3 minute read

Programming the On-Board SPI Flash of Digilent Nexys4 DDR

This semester I have the course “Experiments of Digital Circuits”, the content of which is designing digital circuits using Vivado software, and writing Verilog code. Most of the lab papers require...

less than 1 minute read

Alpha-Beta Pruning

As described in a previous article, Alpha-Beta pruning can be used to speed up minimax heuristic searching by pruning branches that will never be reached.

4 minute read

Making a Reversi game with Python

As a casual attempt to accomplish a Grand Assignment, I created a Reversi game with Python. The project is open-source on GitHub and you can view it with the link above.

3 minute read

Back to top ↑

stack-exchange

Append int to std::string

For people new to template resolution and template type deduction in C++, they may have written this code and get confused why it doesn’t compile:

1 minute read

Some ideas about multicore on Android

Laptops have usually at most four cores, and dualcores are probably more common. I have recently switched from quadcore to dualcore and I can confirm there is a limited number of use cases for quad...

3 minute read

Back to top ↑

story

High-performance mass web crawling on AWS

The 3rd-and-last experiment of course Web Information Processing and Application required us to create a recommendation engine, and “predict” the rating (1-5 stars) for 4M user-item pairs based on ...

16 minute read

Joining SmokeDetector

After a plain request, an administrator of the SmokeDetector project added me under the Developers section of their team member list, which indicates that I am a known personnel for contributing a ...

3 minute read

Back to top ↑

life

I switched from Google Chrome to Microsoft Edge

Last year (maybe September? I don’t remember now) I switched my primary browser from Google Chrome to the new Microsoft Edge. It turned out to be a wise move and I’ve been with Edge for more than h...

4 minute read

Back to top ↑

gaming

Back to top ↑

software

Back to top ↑

talk

My speech at Microsoft Summer Camp 2019

This is a translated version from the Chinese (original) script. The slideshow can be acquired here. For comments, please head to the Chinese version of this post.

10 minute read

Back to top ↑