Blog posts


CS 219: Network Verification - Course Review

16 minute read


George is a fantastic teacher with very attractive lectures. I think his secret sauces include the following:

  • Look at everything from different views: Zoe (ζωή, big picture) versus Bios (βίος, details).
  • Selectively focus on the most important techniques and examples, ignoring unnecessary points. Students can feel that they learned a lot without remembering too much boring concepts.
  • Have his own methodologies on creative process. Students can experience those “Aha” times when following his introduction.

Authentication and Authorization

9 minute read


Authentication (AuthN, 認証) and authorization (AuthZ, 承認) are important pieces in system security. In one word, AuthN verifies the identity of the requester, and AuthZ decides whether a specific operation is allowed.


Polynomial Algorithms

10 minute read


This post introduces some tricks on polynomials widely used in ICPC. I will try to practice algebraic knowledge as well.

Chess Picking Problem

3 minute read


Rephrase the chess picking problem in a more formal way.

Algebra Miscs

15 minute read


Misc things that are taught in class but not written in the note of MATH 210.

Residue Theorem and its Application

8 minute read


This post makes notes on residue theorem and its application, since most non-mathematicians only need to remember this after learning complex analysis. Some definitions may be not defined very rigorously from a complex analysis view.

LIS and network flow

19 minute read


This post discusses Longest Increasing Subsequence (LIS) and network flow problem.

Stability of DLedger

5 minute read


In this post I want to analyze the stability of Dledger, a DAG-based distributed logging system.

Service Invocation: A Brief Survey

30 minute read


Service invocation is tricky. The protocol itself seems to be super simple: we call a function, and it returns. But the problem is, when the function is on another machine, how we know the state of that machine / the whole system. The developers of the caller do not want to care, so we protocol designers should care for them. But trying to make everyone happy is so tough here.

Service Discovery: A Survey

19 minute read


There is always a need for service discovery and load balancing, but no universal solution. Sometimes naive ways may satisfy most needs.

Confusing Terms

6 minute read


I find that some terms are confusing.

NDN API 1: Encoding

21 minute read


TL; DR: Reflection should be used for encoding or serilization.

The sqrt thesis of mixing strategies

23 minute read


When solving a problem, it is common that we have two different strategies that fit in different cases. For example, one algorithm may have a better time complexity but uses more memory than the other. Or, one is fast when there are only a few of large objects, but the other works better when there are many small objects. However, I found that there usually exists a solution which is a naive mixture of the two strategies, and its performance will be the sqrt of the two.