2024

Feb 11 One Definition Rule

2023

Dec 8 Git Commits History Summary
Sep 3 mmap: The Effect of MAP_NORESERVE
Sep 2 Catalan Number
Mar 10 C Static Storage
Jan 22 Transparent Huge Page

2022

Dec 20 A Good Day to Play Ping-Pong
Dec 18 Context Switch on Linux
Dec 13 CPU-bound vs IO-bound
Oct 8 Memory Fence
Oct 8 Profiling JVM using perf
Jul 22 G1 Pre-Barrier Implementation
Jan 2 JNI Hello World

2021

Dec 23 Sudo Without Password
Nov 12 Using Swap file to Mimic Larger RAM
Nov 12 VirtualBox USB
Oct 16 Embed JVM Configuration Flags in Java Programs
Oct 1 Using Custom DNS on KDE
Sep 18 Boy Or Girl Paradox
Aug 11 Memory Order Consume
Aug 3 Brief Intro to the Template Interpreter in OpenJDK
Jun 5 OpenJDK - C1 Intrinsify Example

2020

Oct 24 Priority Queue in Java
Oct 17 Unsupported Workflow
Sep 20 Linux VM Mapping
Aug 31 Chinese font fallback
Jul 18 Linear-time Temporal Logic (LTL) Formula in SPIN
Jun 30 Count Inversion (Haskell)
Jun 29 Continuation
Jun 6 Covariance vs Contravariance
May 20 Memory Model
May 4 Standard Error & Confidence Interval
Apr 21 Producing Plots for Papers using Octave
Apr 11 Introduce New Variable Without Polluting Global Namespace in Ruby
Apr 4 Free Alternative to Helvetica Font
Mar 24 SSH Failed Attempts
Mar 19 OpenJDK CMakeList.txt
Feb 29 Postage Stamp
Jan 30 Debian APT configs and commands

2019

Dec 9 Sorted Product
Aug 31 Aliases For Git
Mar 17 Monoid example
Mar 10 Depth-first search vs Breadth-first search
Feb 16 Check Whether Physical Memory is in Use Using mincore

2018

Sep 24 My Keyboard Layout
Sep 4 C++ Ownership Transfer with Move
Jul 13 Devirtulization in C++
Jun 16 Weak Reference in Java
Apr 8 Cube Shadow Theorem
Apr 1 C++ Constructors
Mar 28 My Music collection
Mar 2 Google Hash Code
Feb 16 N Queens in Haskell
Jan 26 Stack Overflow
Jan 2 Section Info for Variables in C

2017

Dec 27 Inspecting JVM JIT assembly using Java Microbenchmark Harness (JMH)
Dec 22 The Cost of Branching in C
Dec 11 Wildcard Matching
Dec 9 Circle Sum
Dec 4 Distributed Hangman using Erlang/OTP
Nov 26 Setting up Development Env for OpenJDK on Mac 10.9 Mavericks
Nov 23 My Hexo Theme
Nov 19 Distributed Erlang
Nov 15 Reading SEI CERT C Coding Standard
Nov 12 What's a Monad
Oct 31 HD Handmade Hero Video
Oct 28 Dynamic Programming
Oct 24 Thread-local Storage Access Costs
Oct 20 2-3 Tree
Oct 4 V8 CMakeLists.txt
Jul 9 Stack Frame
Jul 2 Signed and Unsigned Comparison in C
Jun 10 Solving Water Jug Problem by Contradiction
May 7 Compiler Barrier
Apr 14 Reduce Dropbox Auto Update Frequency
Apr 14 Some Tips in Model Checking using Spin
Mar 11 Tracing using ltrace and strace
Feb 17 Placement of Alignment Attribute in typedef
Feb 17 Pthread Affinity
Feb 10 Stack Protector
Jan 22 Quine
Jan 18 Back Pressure

2016

Dec 29 Selecting JVM Garbage Collector
Dec 27 Dynamic Linking
Dec 14 Data Size in Assembly and C
Dec 9 Runtime Scheduling - Theory and Reality (reprint)
Nov 23 Link Time Optimization
Nov 11 Simple Shell (reprint)
Oct 19 Call shell from Ruby using Systemu
Oct 18 Strict Alias
Oct 8 Small-Size Optimization in C (reprint)
Sep 24 Journey To The West
Sep 17 Rank2Types
Sep 6 Memory Layout
Sep 4 State Monad
Sep 2 Reverse Polish Notation
Aug 27 Parser Combinator
Aug 11 Modulo and Remainder Operator
Aug 6 NaN Boxing
Aug 5 Beauty
Aug 4 Sieve of Eratosthenes in Haskell
Jul 31 Very Simple Interpreter
Jul 29 A Poem for the West
Jul 23 Collision
Jul 17 Random C Snippet
Jul 17 Measure CPU time in C
Jul 4 Same Origin Policy
Jun 30 HTTP Cache
Jun 26 Jam Coins
Jun 23 Observe Cache Effect Using C
Jun 11 Bloom Filter
Jun 7 Reverse Bits
May 28 Measure CPU Frequency
May 21 No Need to Be Too Serious on TDD
May 1 ABA Problem
Apr 23 Restrict in C
Apr 7 Mac PDF Auto Reload
Apr 6 Rails Form Submit
Apr 5 Hotpatching a C Function on x86 (reprinted)
Apr 5 Makefile Built In Rules
Apr 3 Variables in Ruby
Feb 21 Rails Active Record Query
Feb 21 Chasing the Latest TeX Live
Feb 6 Dice
Jan 30 My Android Phone Reborn
Jan 23 The Road Not Taken
Jan 10 Analysis on A kind of Permutation Algorithm Using Induction

2015

Dec 9 Two Aspects of shells
Dec 8 Compiler, Build System and Package Manager
Nov 8 Configuring iTerm 2
Oct 21 Max Opened Files in Linux
Oct 16 Run Multiple Instances of an Application on MacOS
Sep 23 Wanderers
Sep 20 Intuition goes a long way
Sep 6 Migrating to Github Pages with Hexo
Aug 21 Postgres Authentication Methods
Aug 7 Generalized Algebraic Data Types (GADT)
Jul 30 Notes on Neon Genesis Evangelion
Jul 18 Non-blocking Algorithm
Jul 14 Hackathon
Jul 14 Partial Evaluation - Interpreter vs Compiler
Jul 3 Calculator in Parsec
Jul 2 My notes on Functor, Applicative and Monad
Jun 30 Real Time Web
Jun 30 Hello World
Jun 12 Remove or Keep intermediate files using Makefile
May 25 Run until segfault in GDB
Mar 23 Return from pthread
Mar 14 Networking
Mar 6 Closure Scope
Feb 7 Quick text transformation using Perl one-liner
Jan 20 Clean Git Commit History

2014

Dec 5 Adventure with ucontext on Linux and Mac
Oct 24 Story with MVar
Oct 9 Type Classes vs Interface
Aug 28 Import local DB to Heroku using Dropbox
Aug 13 Rails Deployment using Docker
Aug 9 How to Make Google Plus Photo Storage Tolerable
Jul 25 LiveReload
Jul 18 Star -- my dream
Jul 13 It all starts with volatile
Jul 4 Premake
Jun 25 Docker -- one VM runs fast
May 23 Some reasons why Python isn't as elegant as you thought
May 11 Quotes
Apr 21 Concurrency
Apr 21 Library
Apr 7 Mechanical Keyboard
Mar 23 Job-seeking Summary in 2013
Feb 15 Parser
Jan 28 Xfce4 Volumed

2013

Dec 4 Some thought on Careers
Nov 25 Alternate Screen in Terminal Emulator
Nov 23 Dot2Texi -- combining Tikz and GraphViz
Nov 17 Books I Have Encountered on the Way of Learning Various Programming Languages
Nov 1 Variable Placement in C
Oct 18 X To JS Translator
Oct 17 Keyboard Mapping
Oct 13 Start of Blogging