New Pandora’s box: Install Linux and Windows onto the same NTFS partition

5 minute read

Linux 5.15 is shipped with a brand new driver for Microsoft’s classic NTFS filesystem, NTFS3. Unlike the decades-old open-source NTFS-3G project, which is based on FUSE and have always received criticism for breaking existing filesystems, NTFS3 is a new driver that is designed to be compatible wi...

Reinstall Windows VPS into Linux with iPXE network boot

3 minute read

This November I found a discount from one of my favorite VPS providers, NETfront. They offered Linux VPS with 2 vCPUs and 2 GB RAM at HK$56/mo, and also Windows VPS with 4 vCPUs and 4 GB RAM at HK$49/mo. Looks strange, right? Why buy the crappy Linux VPS when you can have a better configuration w...

Secure site-to-site connection with Linux IPsec VPN

15 minute read

Linux has a built-in framework for Internet Protocol Security (IPsec), which is often combined with other tunneling technologies (e.g. L2TP and GRE) to create secure cross-site network connections. As an innovative attempt to a lab in this semester’s Network Security course, which was designed to...

Disassembling a hardware RAID 1 array in Proxmox VE

7 minute read

Yesterday in a server maintenance period, we decided to tune the storage layout of our Proxmox VE server, which included disassembling a RAID 1 array and adjusting the size of the root filesystem.

I switched from Google Chrome to Microsoft Edge

4 minute read

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 half a year now. In this article I’ll share my ideas with this move.

Setting up a GitHub webhook on AWS Lambda

6 minute read

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 the whole thing onto a VPS, but thinking about the complexity and maintenance efforts, serverless pla...

A Deep Dive into Containers

24 minute read

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 without diving into all the gory details of them, so I decided to go on this exploration myself.

Keep using Flash Player in browsers in 2021

2 minute read

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 that’s been around for decades, or managing your organization’s infrastructure via VMware vSphere F...

Back to top ↑


Working against WordPress DeBlocker plugin

5 minute read

I’ll go straight to the solution (keep in mind that it’s considerably primitive, so use at your own risk) with code attached below. It’s a Tampermonkey userscript.

Enabling better “Related Posts” with Jekyll

1 minute read

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.

Use RSA CA Certificates with OpenSSH 8.2

3 minute read

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 ways to use MySQL / MariaDB CLI without password

4 minute read

For all of us who are learning to use or developing with MySQL or MariaDB, it’s a common task to manually log in to the database for inspection. This is usually done with the mysql command line client, and for sure it’s cumbersome to log in to the database using your application’s credentials. Fo...

Back to top ↑


High-performance mass web crawling on AWS

16 minute read

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 the training data of 9M user-item pairs and a social network.

Managing servers with OpenSSH Certificate Authority

6 minute read

Since the addition of the website server for an external corporation, I now have 5 Linux servers to manage on my own. I also have 4 terminal devices that I use to connect to those servers: two of my laptops, my Android phone (using Termux), and one of those servers that I use as a workstation.

How to change email of your Nvidia account

1 minute read

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 an exception - There wasn’t an option to change it!

Make your GitHub Pages website faster with Cloudflare

4 minute read

This September I employed Cloudflare to optimize my website (https://ibugone.com) in various aspects. It turned out to be a brilliant move and Cloudflare has proved to be a great service to have.

Converting DFA to Regular Expression

1 minute read

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 comment /* */ was the most troublesome to handle for most of us (excluding me, for sure).

My speech at Microsoft Summer Camp 2019

10 minute read

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.

Creating templated Systemd services

2 minute read

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.

Using SSH deploy keys on CircleCI

2 minute read

A year ago back I wrote an article on automating build & deployment of GitHub Pages website with Travis CI. It’s a great CI service at first, but since Travis CI has completely moved away from containers, speed is a real issue to whoever is concerned. On the other side, CircleCI is continuing...

How I saved a lost commit from GitHub

2 minute read

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 his work (1 commit) to it, and now it’s lost.

Build a minimal Linux system and run it in QEMU

6 minute read

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.

Bootstrapping Make

4 minute read

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.

Setting up Ubuntu in VMware Workstation

3 minute read

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.

Access your Raspberry Pi remotely with SSH

3 minute read

Do you have a personal server at home but can’t access it from work or travel because your home doesn’t have a public IP? If so, then, this article is what you’re looking for.

Back to top ↑


Programming the On-Board SPI Flash of Digilent Nexys4 DDR

less than 1 minute read

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 generating bitstream for the project and downloading it to Nexys4 DDR board to verify the functiona...

Pairing the new Xbox One S controller (2018) with Android

1 minute read

I just bought an Xbox One S controller yesterday, expecting it would pair with my Android phone via Bluetooth. I have learned that the key mapping would be a bit messed up because it’s a Microsoft product, and have already prepared for it by downloading a key layout file and placing it in my phon...

Alpha-Beta Pruning

4 minute read

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.

Making a Reversi game with Python

3 minute read

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.

Joining SmokeDetector

3 minute read

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 non-trivial amount of code to the project.

Back to top ↑


Append int to std::string

1 minute read

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:

Some ideas about multicore on Android

3 minute read

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 quadcore, even with CPU intensive tasks.

Back to top ↑


Back to top ↑