2026
- 07-19 Your Biggest Competitor Has Your Face
- 06-30 Why I Stopped Arguing With People
- 01-13 Personal Taste Is the Moat
2025
- 02-27 eBPF Trend Analysis
- 02-09 Persistent Memory in Linux Kexec
- 02-02 Two-Phase eBPF Program Signing
2021
2019
2018
- 12-08 OverTheWire Advent writeup — Boxy
- 09-18 CSAW CTF writeup — A Tour of x86
- 08-25 The design of lock_sock() in Linux kernel
- 07-14 How to pave a way to fascism legally?
- 04-29 BlazeCTF writeup — shellcodeme_hard
- 04-26 BlazeCTF writeup — shellcodeme
- 02-09 记忆中的兰州拉面
- 01-16 Hi, Mark
- 01-09 Defending Spectre/Meltdown attacks
- 01-06 Understanding Spectre/Meltdown attacks
2017
- 11-29 Debugging PIE binaries
- 10-29 Pwnable.kr writeup — asm
- 10-23 Pwnable.kr writeup — unlink
- 10-19 Pwnable.kr writeup — uaf
- 10-16 Pwnable.kr writeup — cmd2
- 10-08 Square CTF writeup — 6yte
- 09-01 The art of exploiting heap overflow, part 7
- 08-21 The art of exploiting heap overflow, part 6
- 08-16 The art of exploiting heap overflow, part 5
- 08-08 SHA2017 CTF writeup — Malware Testrun
- 08-08 SHA2017 CTF writeup — Vod Kanockers
- 08-03 The art of exploiting heap overflow, part 4
- 08-02 The art of exploiting heap overflow, part 3
- 07-31 The art of exploiting heap overflow, part 2
- 07-29 The art of exploiting heap overflow, part 1
2014
- 08-01 Ottawa Linux Symposium
2013
- 10-22 Ingress traffic control
2012
- 12-18 What every programmer should know...
- 10-20 An overview of Openvswitch implementation
- 09-03 C binary literals
- 08-09 撤销 git 操作
- 07-17 Parallelism != Concurrency
- 07-12 Linux kernel memory model
- 07-06 treap
- 06-05 Python memoize decorator
- 05-29 Dracut: Introduction and Overview
- 05-25 Floyd's cycle-finding algorithm
- 05-16 A poem about division
- 05-09 SEASIDE CANON
- 05-05 A Programmer's Poem
- 01-19 抵制 SOPA
2011
- 12-17 Polyglot
- 06-17 Sleep sort
- 06-02 Kernel Crash Logging and Core Dump
- 03-16 That is love
- 01-31 LINUX_REBOOT_MAGIC
2010
- 09-28 Gcc Trampoline
- 09-24 Jump Label
- 04-25 Kimian Self Reproduction
- 04-23 ELF Extended Numbering
- 02-24 Integer format conversion
- 02-23 dogtail
- 01-25 Coders at Work (一)
2009
- 12-22 Christmas gifts from Portugal!
- 04-10 Got a new job
- 03-21 Serenity
- 03-09 emacs PK vi
- 03-04 Linux kernel ASCII art
- 02-14 Happy Birthday, UNIX!
- 02-03 C++ string literals
- 01-31 Returning void
- 01-17 Linux PID namespace
2008
- 12-26 When I was in Portugal ...
- 12-09 Thank you, Ana!!
- 11-10 Make pthread suck less
- 10-14 fakeroot vs sudo
- 09-30 Lapa do Lobo
- 07-20 Figueira da Foz
- 06-08 Programming and Sex
- 04-01 Happy Joking!
- 03-11 SUID, SGID and sticky bit
- 02-23 Programming Competitions are Considered Harmful
- 02-18 Because I wanted to live deliberately
- 01-20 splice(2) considered useful?
2007
- 11-25 TCP Closure
- 11-23 shebang
- 11-13 Static -- A Pain From Past
- 11-08 Benchmarking big number operations: C vs Python
- 11-05 Geek & Joke
- 11-03 No newline at end of file!
- 10-27 Plan For Next
- 10-23 Been there, done that...
- 10-16 Reverse Mapping in Linux kernel
- 09-29 I Try
- 09-01 Happy Blog Day!
- 08-30 Think Different
- 08-25 Learn English speaking
- 08-18 Slab, Slob, Slub
- 08-15 Masters of Science Fiction
- 08-11 Brackets, too
- 08-10 Brackets
- 06-23 Exam Day
- 06-07 Quilt
- 06-03 Sleep
- 05-20 Enjoy the life together
- 05-19 git
- 05-15 Schedule
- 05-14 Debugging Day
- 05-13 Java!!!
- 05-03 Something to mention…
- 04-30 JDB
- 04-28 Nerd Tests
- 04-02 mutt+fetchmail+procmail
- 03-19 To Live Is To Function
- 03-10 My answers on yahoo!
- 03-10 Google hacks
- 03-10 JFK (film)
- 03-10 The Da Vinci Code
- 01-07 All about vi