<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Zeyuan Hu's Page</title><link>https://zhu45.org/</link><description></description><lastBuildDate>Sat, 03 Jan 2026 23:01:02 +0800</lastBuildDate><item><title>Postmortem on TreeTracker Join: Simple, Optimal, Fast</title><link>https://zhu45.org/posts/2026/Jan/03/postmortem-on-treetracker-join-simple-optimal-fast/</link><description>&lt;p&gt;After five years of blood, sweat, and tears, &lt;a href="https://dl.acm.org/doi/10.1145/3774325"&gt;TreeTracker Join
(&lt;span class="math"&gt;\(\mathsf{TTJ}\)&lt;/span&gt;)&lt;/a&gt; has finally
been published. The research itself is very interesting and kept me
hooked for five years. As a postmortem, I reflect on some of what I
learned during the process. I’m hoping this post can be …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 03 Jan 2026 23:01:02 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2026-01-03:/posts/2026/Jan/03/postmortem-on-treetracker-join-simple-optimal-fast/</guid><category>2025</category><category>papers</category><category>my research</category></item><item><title>Looking for Collaborators</title><link>https://zhu45.org/posts/2024/Mar/24/looking-for-collaborators/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#motivation"&gt;Motivation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#what-im-looking-for"&gt;What I’m looking for&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="motivation"&gt;Motivation&lt;/h2&gt;
&lt;p&gt;Quite often, I stumble upon personal websites from academia with sentence like “I’m always in search of collaborators”.
I figured I may try to write a sentence like that somewhere on my page as well. I think the most important reason for …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 24 Mar 2024 20:11:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2024-03-24:/posts/2024/Mar/24/looking-for-collaborators/</guid><category>2024</category><category>meta</category></item><item><title>Release of sphinxcontrib-pseudocode</title><link>https://zhu45.org/posts/2021/Dec/21/release-of-sphinxcontrib-pseudocode/</link><description>&lt;p&gt;To celebrate the release of &lt;a href="https://github.com/xxks-kkk/sphinxcontrib-pseudocode"&gt;sphinxcontrib-pseudocode&lt;/a&gt;, the 
first &lt;a href="https://www.sphinx-doc.org/en/master/"&gt;sphinx-doc&lt;/a&gt; extension I have ever written, I document some implementation 
details behind this extension. &lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#introduction"&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#implementation-details"&gt;Implementation Details&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#generating-unique-ids"&gt;Generating Unique IDs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#handling-js-scripts-and-code"&gt;Handling JS scripts and code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#support-references"&gt;Support References&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#development-environment-setup"&gt;Development Environment Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;
&lt;p&gt;sphinxcontrib-pseudocode allows one to write &lt;span class="math"&gt;\(\LaTeX\)&lt;/span&gt; &lt;a href="https://www.overleaf.com/learn/latex/Algorithms"&gt;algorithm&lt;/a&gt; 
(using &lt;code&gt;algpseudocode …&lt;/code&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 21 Dec 2021 02:11:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2021-12-21:/posts/2021/Dec/21/release-of-sphinxcontrib-pseudocode/</guid><category>2021</category><category>sphinx-doc</category></item><item><title>Build My First PC</title><link>https://zhu45.org/posts/2021/Sep/29/build-my-first-pc/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#requirement"&gt;Requirement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#motherboard"&gt;Motherboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#cpu"&gt;CPU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#cpu-cooler"&gt;CPU Cooler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#graphics-card"&gt;Graphics Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#storage-drive"&gt;Storage Drive&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#ram"&gt;RAM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#power-supply-unit-psu"&gt;Power Supply Unit (PSU)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#pc-chassis"&gt;PC Chassis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#tools"&gt;Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#my-choice"&gt;My Choice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#reference"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;This page contains my note on how to build a PC.&lt;/p&gt;
&lt;h2 id="requirement"&gt;Requirement&lt;/h2&gt;
&lt;p&gt;I use this PC mostly for research. The requirement is listed below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large memory. 32GiB at least …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 29 Sep 2021 02:11:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2021-09-29:/posts/2021/Sep/29/build-my-first-pc/</guid><category>2021</category><category>hardware</category></item><item><title>"Synthesizing Data Structure Transformations from Input-Output Examples"</title><link>https://zhu45.org/posts/2021/Jan/28/synthesizing-data-structure-transformations-from-input-output-examples/</link><description>&lt;ul&gt;
&lt;li&gt;&lt;p class="first"&gt;The paper presents a method to synthesize functional programs that transform recursive data
structures (e.g., lists, trees)&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Examples: see Figure 6 (e.g., &lt;tt class="docutils literal"&gt;join&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;cprod&lt;/tt&gt;)&lt;/li&gt;
&lt;li&gt;essentially shows how one can orchestrate a list of operators to generate the desired program&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p class="first"&gt;Three techniques&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;type-aware inductive generalization&lt;ul&gt;
&lt;li&gt;purpose: create hypotheses that …&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 28 Jan 2021 04:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2021-01-28:/posts/2021/Jan/28/synthesizing-data-structure-transformations-from-input-output-examples/</guid><category>2021</category><category>papers</category><category>program synthesis</category></item><item><title>Graph Data Models</title><link>https://zhu45.org/posts/2021/Jan/14/graph-data-models/</link><description>&lt;p&gt;It has been a very long time since my last post. As you might know, I left AWS and started to work on my PhD.
Research takes almost all my time. I have written a lot for my research, which consumes all my blogging energy.
However, I decided to try …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 14 Jan 2021 23:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2021-01-14:/posts/2021/Jan/14/graph-data-models/</guid><category>2021</category><category>database</category></item><item><title>Status Update</title><link>https://zhu45.org/posts/2020/Mar/04/status-update/</link><description>&lt;p&gt;As you all probably have noticed, I have been quiet since October last
year. Here is a status update on my side: September last year, I was
laid off due to the strategic change of my last employer and I was
busy with job hunting.  Luckily, I’m able to …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 04 Mar 2020 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2020-03-04:/posts/2020/Mar/04/status-update/</guid><category>2020</category><category>meta</category></item><item><title>Semaphore</title><link>https://zhu45.org/posts/2019/Oct/20/semaphore/</link><description>&lt;p&gt;Concurrency is a big topic that I’m planning to write about more for the upcoming days. In this post, I’ll cover
the concept “semaphore”, a very important concept when we talk about synchronization. I’ll walk through concept and 
offer an implementation of semaphore in C++ with a …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 20 Oct 2019 17:10:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-10-20:/posts/2019/Oct/20/semaphore/</guid><category>2019</category><category>cpp</category><category>golang</category><category>concurrency</category></item><item><title>Secure Connection with MariaDB: A Conceptual Approach</title><link>https://zhu45.org/posts/2019/Sep/14/secure-connection-with-mariadb-a-conceptual-approach/</link><description>&lt;p&gt;In this post, I discuss how we can &lt;a href="https://www.cyberciti.biz/faq/how-to-setup-mariadb-ssl-and-secure-connections-from-clients/"&gt;have a secure connection with MariaDB&lt;/a&gt; by first understanding the computer science fundamentals behind the steps. Once we have built the concept model, the steps linked above are self-explanatory. In addition, this post applies the same concept to understand SSL ccertificate.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#concepts"&gt;Concepts …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 14 Sep 2019 23:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-09-14:/posts/2019/Sep/14/secure-connection-with-mariadb-a-conceptual-approach/</guid><category>2019</category><category>security</category><category>MariaDB</category><category>TLS</category><category>SSL</category></item><item><title>"Ceph: A Scalable, High-Performance Distributed File System"</title><link>https://zhu45.org/posts/2019/Jul/01/ceph-a-scalable-high-performance-distributed-file-system/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#additional-reading"&gt;Additional Reading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How can we design a distributed file system that:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;are scalable (e.g., supports hundreds of petabytes and beyond; extreme workload case)&lt;/li&gt;
&lt;li&gt;flexible to adjust to different workloads&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;while maintaining good performance?&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Object-based storage (an abstraction layer between application and hard disks …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 01 Jul 2019 16:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-07-01:/posts/2019/Jul/01/ceph-a-scalable-high-performance-distributed-file-system/</guid><category>2019</category><category>os</category><category>papers</category><category>storage</category></item><item><title>"Mnemosyne: Lightweight Persistent Memory"</title><link>https://zhu45.org/posts/2019/May/07/mnemosyne-lightweight-persistent-memory/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How can we design programming interface for persistent memory (i.e., storage-class memory)?&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Storage-class memory (SCM) provides interface of memory (load and store instructions) but the persistence of disks&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="system-design"&gt;System Design&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Expose SCM as a persistent memory abstraction to provide direct access to the …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 07 May 2019 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-05-07:/posts/2019/May/07/mnemosyne-lightweight-persistent-memory/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing"</title><link>https://zhu45.org/posts/2019/May/06/resilient-distributed-datasets-a-fault-tolerant-abstraction-for-in-memory-cluster-computing/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#goal"&gt;Goal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#resilient-distributed-datasets-rdd"&gt;Resilient Distributed Datasets (RDD)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to design a system that support in-memory computation (with real-time interaction support) in large cluster efficiently with fault-tolerance?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prior systems are lack of abstraction for leveraging distributed memory (intermediate computing result reuse is problem: has to save and then read …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 06 May 2019 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-05-06:/posts/2019/May/06/resilient-distributed-datasets-a-fault-tolerant-abstraction-for-in-memory-cluster-computing/</guid><category>2019</category><category>papers</category><category>distributed systems</category><category>os</category></item><item><title>"GPUfs: Integrating a File System with GPUs"</title><link>https://zhu45.org/posts/2019/May/06/gpufs-integrating-a-file-system-with-gpus/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;GPU data access needs explicit management by each individual GPU program. How can we provide an illusion similar to VM to physical pages such that
all the data access can be done automatically (i.e., without stating that how data should be fetched from host …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 06 May 2019 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-05-06:/posts/2019/May/06/gpufs-integrating-a-file-system-with-gpus/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Dandelion: a Compiler and Runtime for Heterogeneous Systems"</title><link>https://zhu45.org/posts/2019/May/06/dandelion-a-compiler-and-runtime-for-heterogeneous-systems/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#architecture"&gt;Architecture&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#dandelion-compilers"&gt;Dandelion Compilers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#dandelion-runtime"&gt;Dandelion Runtime&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to design a system that provides programmability for heterogeneous distributed systems?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Challenges are&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Heterogeneous: different programming models, architecture expertise&lt;/li&gt;
&lt;li&gt;Distributed resources: data movement, scheduling&lt;/li&gt;
&lt;li&gt;Concurrency: synchronization, consistency&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="system-design"&gt;System Design&lt;/h2&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Goals: make it simple for programmers to write high …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 06 May 2019 10:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-05-06:/posts/2019/May/06/dandelion-a-compiler-and-runtime-for-heterogeneous-systems/</guid><category>2019</category><category>papers</category><category>os</category></item><item><title>"Operating System Transactions"</title><link>https://zhu45.org/posts/2019/Apr/27/operating-system-transactions/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-transactions"&gt;System transactions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#txos"&gt;TxOS&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#design"&gt;Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#implementation"&gt;Implementation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to implement transaction with ACID guarantee in OS to provide concurrency control?&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Problems that can be solved by using transactions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Security vulnerbilities in the file system that are caused by time-of-check-to-time-of-use (TOCTTOU) race conditions&lt;/li&gt;
&lt;li&gt;Unsuccessful software installation …&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 27 Apr 2019 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-04-27:/posts/2019/Apr/27/operating-system-transactions/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism"</title><link>https://zhu45.org/posts/2019/Apr/13/scheduler-activations-effective-kernel-support-for-the-user-level-management-of-parallelism/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#theme-for-supporting-concurrent-and-parallel-programming"&gt;Theme for supporting concurrent and parallel programming&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#heavyweight-process-model"&gt;“Heavyweight” Process Model&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#lightweight-user-level-threads"&gt;“Lightweight” User-level Threads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#kernel-threads"&gt;Kernel Threads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#user-level-threads-multiplexed-on-kernel-threads"&gt;User-level threads multiplexed on kernel threads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#reference"&gt;Reference&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;User-level library&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Management in application’s address space&lt;/li&gt;
&lt;li&gt;High performance and very flexible&lt;/li&gt;
&lt;li&gt;Lack functionality&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Operating system kernel&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poor performance (compared with user-level …&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 13 Apr 2019 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-04-13:/posts/2019/Apr/13/scheduler-activations-effective-kernel-support-for-the-user-level-management-of-parallelism/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Jitsu: Just-In-Time Summoning of Unikernels"</title><link>https://zhu45.org/posts/2019/Mar/13/jitsu-just-in-time-summoning-of-unikernels/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to build a system that is able to securely manage multi-tenant networked applications on embedded infrastructure?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;High density/scalability&lt;/li&gt;
&lt;li&gt;Fast boot&lt;/li&gt;
&lt;li&gt;Lightweight&lt;/li&gt;
&lt;li&gt;VM-level isolation&lt;/li&gt;
&lt;li&gt;“Embedded cloud”&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OS are traditionally designed to run on a wide range of hardware, and support a variety …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 13 Mar 2019 21:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-13:/posts/2019/Mar/13/jitsu-just-in-time-summoning-of-unikernels/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Rethinking the Library OS from the Top Down"</title><link>https://zhu45.org/posts/2019/Mar/13/rethinking-the-library-os-from-the-top-down/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How can we refactor a commerical OS to follow libOS architecture and achieve a better performance than VMM approach?&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Three categories of services in OS implementations:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="three categories of services" class="img-responsive" src="https://zhu45.org/images/drawbridge-three-services.png"/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Why does a guest OS need a kernel? Because the host interface is virtual hardware&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="typical VMM" class="img-responsive" src="https://zhu45.org/images/drawbridge-question.png"/&gt;&lt;/p&gt;
&lt;h2 id="system-design"&gt;System Design&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Goals …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 13 Mar 2019 20:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-13:/posts/2019/Mar/13/rethinking-the-library-os-from-the-top-down/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Arrakis: The Operating System is the Control Plane"</title><link>https://zhu45.org/posts/2019/Mar/13/arrakis-the-operating-system-is-the-control-plane/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#remarks"&gt;Remarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How can we design an OS for I/O intensive applications such that most I/O operations do not need kernel mediation?&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The authors make a classic efficiency argument: servers usually perform conceptually simple operations, but in practice
this results in too much …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 13 Mar 2019 17:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-13:/posts/2019/Mar/13/arrakis-the-operating-system-is-the-control-plane/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Memory Resource Management in VMware ESX Server"</title><link>https://zhu45.org/posts/2019/Mar/11/memory-resource-management-in-vmware-esx-server/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#ballooning"&gt;Ballooning&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#content-based-page-sharing"&gt;Content-based Page Sharing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#managing-memory-with-taxes"&gt;Managing Memory with Taxes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#others"&gt;Others&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#remarks"&gt;Remarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to design a memory management system inside VMM to manage memory allocated to each guest OS (i.e., VM)? This is challenging
as each guest OS also has its own resource manager and how …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 11 Mar 2019 23:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-11:/posts/2019/Mar/11/memory-resource-management-in-vmware-esx-server/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Xen and the Art of Virtualization"</title><link>https://zhu45.org/posts/2019/Mar/11/xen-and-the-art-of-virtualization/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background"&gt;Background&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-design"&gt;System Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#further-reading"&gt;Further reading&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Provide a high performance resource-managed virtual machine monitor (VMM) that provides performance guarantees to concurrent
execution of multiple operating systems: “hosting up to 100 virtual machine in- stances simultaneously on a modern server”&lt;/p&gt;
&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Big picture&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="OSes, VMs, Containers" class="img-responsive" src="https://zhu45.org/images/OSes-VMs-Containers.png"/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Two types of VMMs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img alt="VMM types" class="img-responsive" src="https://zhu45.org/images/VMM-types.png"/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Virtualization techniques &lt;sup id="fnref:1"&gt;&lt;a class="footnote-ref" href="#fn:1"&gt;1 …&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 11 Mar 2019 23:13:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-11:/posts/2019/Mar/11/xen-and-the-art-of-virtualization/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Practical, transparent operating system support for superpages"</title><link>https://zhu45.org/posts/2019/Mar/10/practical-transparent-operating-system-support-for-superpages/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#superpage-definition-and-benefits"&gt;Superpage definition and benefits&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#superpage-issues"&gt;Superpage issues&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-designs"&gt;System Designs&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#allocation"&gt;Allocation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#incremental-promotion"&gt;Incremental Promotion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#demotions"&gt;Demotions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fragmentation-control"&gt;Fragmentation Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#auxiliary-data-structure-population-map"&gt;Auxiliary data structure: population map&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#remarks"&gt;Remarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to design a general and transparent superpage management system to achieve high and sustained performance for real workloads
and negligible degradation in pathological situations?&lt;/p&gt;
&lt;h2 id="superpage-definition-and-benefits"&gt;Superpage definition and …&lt;/h2&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 10 Mar 2019 15:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-10:/posts/2019/Mar/10/practical-transparent-operating-system-support-for-superpages/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Threads and Input/Output in the Synthesis Kernel"</title><link>https://zhu45.org/posts/2019/Mar/10/threads-and-inputoutput-in-the-synthesis-kernel/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-designs"&gt;System Designs&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#dataflow-synthesis-model-of-computation"&gt;Dataflow: Synthesis Model of Computation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#fast-context-switch-procedure-chaining"&gt;Fast context switch: procedure chaining&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#mechanism-to-reduce-syncrhonization-overhead"&gt;Mechanism to reduce syncrhonization overhead&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#remarks"&gt;Remarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;Design an OS for a parallel and distributed computational environment and achieve the following three goals:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;High performance&lt;/li&gt;
&lt;li&gt;Self-tuning capability to dynamic load and configuration changes&lt;/li&gt;
&lt;li&gt;A simple, uniform and …&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 10 Mar 2019 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-10:/posts/2019/Mar/10/threads-and-inputoutput-in-the-synthesis-kernel/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"END-TO-END ARGUMENTS IN SYSTEM DESIGN"</title><link>https://zhu45.org/posts/2019/Mar/09/end-to-end-arguments-in-system-design/</link><description>&lt;h2 id="main-point"&gt;Main Point&lt;/h2&gt;
&lt;p&gt;The following statements provide different angles of stating the same “end-to-end argument”:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Functions placed at low levels of a system may be redundant or of little value when compared with the cost of providing them
at that low level; low level mechanisms to support these functions are justified …&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 09 Mar 2019 21:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-09:/posts/2019/Mar/09/end-to-end-arguments-in-system-design/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>"Exokernel: An Operating System Architecture for Application-Level Resource Management"</title><link>https://zhu45.org/posts/2019/Mar/09/exokernel-an-operating-system-architecture-for-application-level-resource-management/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#approach"&gt;Approach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#background-extensibility"&gt;Background: extensibility&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#os-per-application"&gt;OS per application&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#microkernels"&gt;Microkernels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#virtual-machines"&gt;Virtual machines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#download-untrusted-code-into-kernel"&gt;Download untrusted code into kernel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-designs"&gt;System designs&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#high-level-architecture"&gt;High-level Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#exokernel-principles"&gt;Exokernel principles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#key-mechanisms"&gt;Key Mechanisms&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#secure-bindings"&gt;Secure bindings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#visible-revocation"&gt;Visible revocation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#abort-protocol"&gt;Abort protocol&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#capabilities"&gt;Capabilities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#others"&gt;Others&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#specific-abstractions"&gt;Specific Abstractions&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#network"&gt;Network&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#multiplexing-the-network-packet-filter"&gt;Multiplexing the network: packet filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#application-specific-safe-handlers-ash"&gt;Application-specific safe handlers (ASH)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How can we design an OS …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 09 Mar 2019 13:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-09:/posts/2019/Mar/09/exokernel-an-operating-system-architecture-for-application-level-resource-management/</guid><category>system</category><category>papers</category><category>os</category></item><item><title>"The UNIX Time- Sharing System"</title><link>https://zhu45.org/posts/2019/Mar/03/the-unix-time-sharing-system/</link><description>&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#problem"&gt;Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#system-designs"&gt;System designs&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#architecture"&gt;Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#file-system"&gt;File System&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#process-management"&gt;Process Management&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="#remarks"&gt;Remarks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="problem"&gt;Problem&lt;/h2&gt;
&lt;p&gt;How to design a interative-use system with easy use (i.e., write, test, and run programs) given the hardware constraint?&lt;/p&gt;
&lt;h2 id="system-designs"&gt;System designs&lt;/h2&gt;
&lt;h3 id="architecture"&gt;Architecture&lt;/h3&gt;
&lt;p&gt;&lt;img alt="monolithic kernel" class="img-responsive" src="https://zhu45.org/images/unix.png"/&gt;&lt;/p&gt;
&lt;h3 id="file-system"&gt;File System&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Untyped data (byte oriented)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Structure of files is controlled by the programs which uses them …&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 03 Mar 2019 11:13:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-03-03:/posts/2019/Mar/03/the-unix-time-sharing-system/</guid><category>2019</category><category>os</category><category>papers</category></item><item><title>Brush up OS</title><link>https://zhu45.org/posts/2019/Jan/23/brush-up-os/</link><description>&lt;p&gt;This post aims to prepare myself for the upcoming &lt;a href="http://www.cs.utexas.edu/~rossbach/380L/index.html"&gt;CS380L Advanced Operating Systems&lt;/a&gt; offered by
&lt;a href="http://www.cs.utexas.edu/~rossbach/"&gt;Christopher J. Rossbach&lt;/a&gt;. The questions are actually from his &lt;a href="http://www.cs.utexas.edu/~rossbach/380L/hw/hw1.pdf"&gt;HW1&lt;/a&gt; aka. “Swapping in the state from undergraduate OS”.&lt;/p&gt;
&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#brush-up"&gt;Brush up&lt;/a&gt;&lt;ul&gt;
&lt;li&gt;&lt;a href="#definitions"&gt;Definitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#short-answer"&gt;Short answer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#virtual-memory-addressing"&gt;Virtual memory addressing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#page-replacement"&gt;Page replacement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#multiprocessing"&gt;Multiprocessing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#achieving-fast-file-reads"&gt;Achieving fast file reads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#synchronization"&gt;Synchronization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#networking"&gt;Networking …&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 23 Jan 2019 22:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2019-01-23:/posts/2019/Jan/23/brush-up-os/</guid><category>2019</category><category>os</category><category>system concepts</category></item><item><title>Modify char in another function</title><link>https://zhu45.org/posts/2018/Sep/26/modify-char-in-another-function/</link><description>&lt;p&gt;Almost two years ago, I write a &lt;a href="https://zhu45.org/posts/2017/Jan/08/modify-array-inside-function-in-c/"&gt;post&lt;/a&gt; on how to 
modify an array in one function through another function in C. I did pretty detailed study through GDB there but 
I find that the illustration is lengthy to read. In this post, I try to show the same
concept …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 26 Sep 2018 10:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-09-26:/posts/2018/Sep/26/modify-char-in-another-function/</guid><category>2018</category><category>c</category></item><item><title>Graph basics + Topological Sort</title><link>https://zhu45.org/posts/2018/Jul/14/graph-basics-topological-sort/</link><description>&lt;p&gt;Basic graph concepts&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 14 Jul 2018 22:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-07-14:/posts/2018/Jul/14/graph-basics-topological-sort/</guid><category>2018</category><category>graph</category><category>sorting</category><category>maw</category></item><item><title>Flash-based SSD Basics</title><link>https://zhu45.org/posts/2018/Jul/01/flash-based-ssd-basics/</link><description>&lt;p&gt;list out the basic concepts in SSD&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 01 Jul 2018 22:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-07-01:/posts/2018/Jul/01/flash-based-ssd-basics/</guid><category>2018</category><category>ssd</category><category>storage</category><category>ostep</category></item><item><title>Generalized binary search</title><link>https://zhu45.org/posts/2018/Jun/10/generalized-binary-search/</link><description>&lt;p&gt;Binary search idea can be generalized to other problems&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 10 Jun 2018 01:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-06-10:/posts/2018/Jun/10/generalized-binary-search/</guid><category>Data Struct &amp; Algo</category><category>algorithm</category><category>leetcode</category><category>cpp</category></item><item><title>Trie</title><link>https://zhu45.org/posts/2018/Jun/02/trie/</link><description>&lt;p&gt;A study of trie data structure&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 02 Jun 2018 22:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-06-02:/posts/2018/Jun/02/trie/</guid><category>Data Struct &amp; Algo</category><category>trie</category><category>prefix tree</category><category>trees</category><category>data structures</category></item><item><title>"Weighted Voting for Replicated Data"</title><link>https://zhu45.org/posts/2018/May/15/weighted-voting-for-replicated-data/</link><description>&lt;p&gt;&amp;ldquo;Weighted Voting for Replicated Data&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 15 May 2018 12:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-05-15:/posts/2018/May/15/weighted-voting-for-replicated-data/</guid><category>system, Data Struct &amp; Algo</category><category>papers</category><category>distributed systems</category><category>quorum</category><category>protocol</category></item><item><title>"The Andrew File System (AFS)"</title><link>https://zhu45.org/posts/2018/May/02/the-andrew-file-system-afs/</link><description>&lt;p&gt;&amp;ldquo;The Andrew File System (AFS)&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 02 May 2018 23:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-05-02:/posts/2018/May/02/the-andrew-file-system-afs/</guid><category>system</category><category>papers</category><category>distributed systems</category></item><item><title>"Petal: Distributed Virtual Disks"</title><link>https://zhu45.org/posts/2018/May/02/petal-distributed-virtual-disks/</link><description>&lt;p&gt;&amp;ldquo;Petal: Distributed Virtual Disks&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 02 May 2018 02:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-05-02:/posts/2018/May/02/petal-distributed-virtual-disks/</guid><category>system</category><category>papers</category><category>distributed systems</category><category>storage</category></item><item><title>"Sun's Network File System (NFS)"</title><link>https://zhu45.org/posts/2018/May/01/suns-network-file-system-nfs/</link><description>&lt;p&gt;&amp;ldquo;Sun&amp;rsquo;s Network File System (NFS)&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 01 May 2018 02:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-05-01:/posts/2018/May/01/suns-network-file-system-nfs/</guid><category>system</category><category>papers</category><category>distributed systems</category></item><item><title>"MapReduce: Simplified Data Processing on Large Clusters"</title><link>https://zhu45.org/posts/2018/Apr/30/mapreduce-simplified-data-processing-on-large-clusters/</link><description>&lt;p&gt;&amp;ldquo;MapReduce: Simplified Data Processing on Large Clusters&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 30 Apr 2018 23:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-04-30:/posts/2018/Apr/30/mapreduce-simplified-data-processing-on-large-clusters/</guid><category>system</category><category>papers</category><category>distributed systems</category></item><item><title>"Scaling Distributed Machine Learning with the Parameter Server"</title><link>https://zhu45.org/posts/2018/Apr/30/scaling-distributed-machine-learning-with-the-parameter-server/</link><description>&lt;p&gt;&amp;ldquo;Scaling Distributed Machine Learning with the Parameter Server&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 30 Apr 2018 01:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-04-30:/posts/2018/Apr/30/scaling-distributed-machine-learning-with-the-parameter-server/</guid><category>system</category><category>papers</category><category>distributed systems</category></item><item><title>"Dynamo: Amazon’s Highly Available Key-value Store"</title><link>https://zhu45.org/posts/2018/Apr/14/dynamo-amazons-highly-available-key-value-store/</link><description>&lt;p&gt;&amp;ldquo;Dynamo: Amazon’s Highly Available Key-value Store&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 14 Apr 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-04-14:/posts/2018/Apr/14/dynamo-amazons-highly-available-key-value-store/</guid><category>system</category><category>papers</category><category>distributed systems</category><category>storage</category><category>consistent hashing</category><category>quorum</category><category>merkle tree</category></item><item><title>"Fast Crash Recovery in RAMCloud"</title><link>https://zhu45.org/posts/2018/Apr/09/fast-crash-recovery-in-ramcloud/</link><description>&lt;p&gt;&amp;ldquo;Fast Crash Recovery in RAMCloud&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 09 Apr 2018 22:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-04-09:/posts/2018/Apr/09/fast-crash-recovery-in-ramcloud/</guid><category>system</category><category>papers</category><category>storage</category><category>distributed systems</category></item><item><title>"PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees"</title><link>https://zhu45.org/posts/2018/Mar/30/pebblesdb-building-key-value-stores-using-fragmented-log-structured-merge-trees/</link><description>&lt;p&gt;&amp;ldquo;PebblesDB: Building Key-Value Stores using Fragmented Log-Structured Merge Trees&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 30 Mar 2018 00:45:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-30:/posts/2018/Mar/30/pebblesdb-building-key-value-stores-using-fragmented-log-structured-merge-trees/</guid><category>system</category><category>papers</category><category>storage</category><category>log-structured merge tree</category></item><item><title>"BLEU: a Method for Automatic Evaluation of Machine Translation"</title><link>https://zhu45.org/posts/2018/Mar/28/bleu-a-method-for-automatic-evaluation-of-machine-translation/</link><description>&lt;p&gt;&amp;ldquo;BLEU: a Method for Automatic Evaluation of Machine Translation&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 28 Mar 2018 01:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-28:/posts/2018/Mar/28/bleu-a-method-for-automatic-evaluation-of-machine-translation/</guid><category>NLP</category><category>natural language processing</category><category>evaluation metrics</category><category>papers</category></item><item><title>"Existential Consistency: Measuring and Understanding Consistency at Facebook"</title><link>https://zhu45.org/posts/2018/Mar/08/existential-consistency-measuring-and-understanding-consistency-at-facebook/</link><description>&lt;p&gt;&amp;ldquo;Existential Consistency: Measuring and Understanding Consistency at Facebook&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 08 Mar 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-08:/posts/2018/Mar/08/existential-consistency-measuring-and-understanding-consistency-at-facebook/</guid><category>system</category><category>papers</category><category>distributed systems</category></item><item><title>"PNUTS: Yahoo!’s Hosted Data Serving Platform"</title><link>https://zhu45.org/posts/2018/Mar/08/pnuts-yahoos-hosted-data-serving-platform/</link><description>&lt;p&gt;&amp;ldquo;PNUTS: Yahoo!’s Hosted Data Serving Platform&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 08 Mar 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-08:/posts/2018/Mar/08/pnuts-yahoos-hosted-data-serving-platform/</guid><category>system</category><category>papers</category><category>distributed systems</category></item><item><title>Cache, Lease, Consistency, Invalidation</title><link>https://zhu45.org/posts/2018/Mar/07/cache-lease-consistency-invalidation/</link><description>&lt;p&gt;Cache, Lease, Consistency, Invalidation&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 07 Mar 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-07:/posts/2018/Mar/07/cache-lease-consistency-invalidation/</guid><category>system</category><category>distributed systems</category><category>system concepts</category></item><item><title>State Machine Replication Approach</title><link>https://zhu45.org/posts/2018/Mar/07/state-machine-replication-approach/</link><description>&lt;p&gt;State Machine Replication Approach&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 07 Mar 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-07:/posts/2018/Mar/07/state-machine-replication-approach/</guid><category>system</category><category>distributed systems</category><category>system concepts</category><category>system design principle</category></item><item><title>Lamport Clocks, Vector Clocks</title><link>https://zhu45.org/posts/2018/Mar/06/lamport-clocks-vector-clocks/</link><description>&lt;p&gt;Lamport Clocks, Vector Clocks&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 06 Mar 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-06:/posts/2018/Mar/06/lamport-clocks-vector-clocks/</guid><category>system</category><category>distributed systems</category><category>system concepts</category></item><item><title>Distributed System Reference Guide</title><link>https://zhu45.org/posts/2018/Mar/06/distributed-system-reference-guide/</link><description></description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 06 Mar 2018 16:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-03-06:/posts/2018/Mar/06/distributed-system-reference-guide/</guid><category>system</category><category>papers</category><category>distributed systems</category><category>protocol</category><category>system design principle</category><category>system concepts</category></item><item><title>"Why do computers stop and what can be done about it?"</title><link>https://zhu45.org/posts/2018/Jan/21/why-do-computers-stop-and-what-can-be-done-about-it/</link><description>&lt;p&gt;&amp;ldquo;Why do computers stop and what can be done about it?&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 21 Jan 2018 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-01-21:/posts/2018/Jan/21/why-do-computers-stop-and-what-can-be-done-about-it/</guid><category>system</category><category>papers</category><category>distributed systems</category><category>system design principle</category><category>system concepts</category></item><item><title>"Introduction to Distributed System Design"</title><link>https://zhu45.org/posts/2018/Jan/17/introduction-to-distributed-system-design/</link><description>&lt;p&gt;&amp;ldquo;Introduction to Distributed System Design&amp;rdquo; paper reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 17 Jan 2018 16:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-01-17:/posts/2018/Jan/17/introduction-to-distributed-system-design/</guid><category>system</category><category>papers</category><category>distributed systems</category><category>system design principle</category><category>system concepts</category></item><item><title>How to write binary search correctly</title><link>https://zhu45.org/posts/2018/Jan/12/how-to-write-binary-search-correctly/</link><description>&lt;p&gt;How to write a binary search correctly on the first try&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 12 Jan 2018 16:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2018-01-12:/posts/2018/Jan/12/how-to-write-binary-search-correctly/</guid><category>Data Struct &amp; Algo</category><category>algorithm</category><category>leetcode</category></item><item><title>Crowdsourcing readings</title><link>https://zhu45.org/posts/2017/Dec/30/crowdsourcing-readings/</link><description>&lt;p&gt;CS 395T Human Computation / Crowdsourcing papers reading&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 30 Dec 2017 12:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-12-30:/posts/2017/Dec/30/crowdsourcing-readings/</guid><category>Crowdsourcing &amp; Human Computation</category><category>crowdsourcing</category><category>papers</category></item><item><title>Introduction to Conditional Random Fields</title><link>https://zhu45.org/posts/2017/Sep/22/introduction-to-conditional-random-fields/</link><description>&lt;div class="admonition note"&gt;
&lt;p class="admonition-title"&gt;Note&lt;/p&gt;
&lt;p&gt;This is a repost of the &lt;a href="http://blog.echen.me/"&gt;Edwin Chen&lt;/a&gt;‘s blog: &lt;a href="http://blog.echen.me/2012/01/03/introduction-to-conditional-random-fields/"&gt;Introduction to Conditional Random Fields&lt;/a&gt; in year 2012.
I do this based on three purposes: 1. Bookmark for my course project reference 2. Fix the math rendering issue happened to the original post 3. Small tweaks to the layout …&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 22 Sep 2017 10:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-09-22:/posts/2017/Sep/22/introduction-to-conditional-random-fields/</guid><category>09</category><category>natural language processing</category><category>machine learning</category></item><item><title>Watching log of CMU Database Systems course</title><link>https://zhu45.org/posts/2017/Sep/08/watching-log-of-cmu-database-systems-course/</link><description>&lt;p&gt;log book for CMU 15-445/15-645 Database Systems Fall 2017 course&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 08 Sep 2017 12:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-09-08:/posts/2017/Sep/08/watching-log-of-cmu-database-systems-course/</guid><category>Database</category><category>database</category></item><item><title>MAW Chapter 8: Disjoint set</title><link>https://zhu45.org/posts/2017/Aug/29/maw-chapter-8-disjoint-set/</link><description>&lt;p&gt;disjoint set Union-Find algorithm&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 29 Aug 2017 01:12:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-08-29:/posts/2017/Aug/29/maw-chapter-8-disjoint-set/</guid><category>Data Struct &amp; Algo</category><category>maw</category><category>union-find</category></item><item><title>Knapsack problem</title><link>https://zhu45.org/posts/2017/Aug/14/knapsack-problem/</link><description>&lt;p&gt;summarizes knapsack problem and its variations&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 14 Aug 2017 16:45:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-08-14:/posts/2017/Aug/14/knapsack-problem/</guid><category>Data Struct &amp; Algo</category><category>dynamic programming</category><category>greedy algorithm</category></item><item><title>Understanding how function call works</title><link>https://zhu45.org/posts/2017/Jul/30/understanding-how-function-call-works/</link><description>&lt;p&gt;Understand call stack in programming language (i.e. C)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 30 Jul 2017 00:21:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-07-30:/posts/2017/Jul/30/understanding-how-function-call-works/</guid><category>programming languages</category><category>assembly language</category><category>call stack</category></item><item><title>Andrew Ng's ML Week 06, 11</title><link>https://zhu45.org/posts/2017/Jul/21/andrew-ngs-ml-week-06-11/</link><description>&lt;p&gt;Advice on building a machine learning system from course&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 21 Jul 2017 12:51:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-07-21:/posts/2017/Jul/21/andrew-ngs-ml-week-06-11/</guid><category>Machine Learning</category><category>machine learning</category><category>coursera</category><category>neural network</category></item><item><title>Virtual methods and polymorphism in C++</title><link>https://zhu45.org/posts/2017/Jul/12/virtual-methods-and-polymorphism-in-c/</link><description>&lt;p&gt;virtual, pure virtual, constructors, abstract base class&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 12 Jul 2017 23:11:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-07-12:/posts/2017/Jul/12/virtual-methods-and-polymorphism-in-c/</guid><category>programming languages</category><category>cpp</category></item><item><title>Merge sort</title><link>https://zhu45.org/posts/2017/Jul/01/merge-sort/</link><description>&lt;p&gt;summary for mergesort&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 01 Jul 2017 23:33:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-07-01:/posts/2017/Jul/01/merge-sort/</guid><category>Data Struct &amp; Algo</category><category>sorting</category><category>maw</category></item><item><title>join in SQL</title><link>https://zhu45.org/posts/2017/Jun/23/join-in-sql/</link><description>&lt;p&gt;A study on join statement in SQL&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 23 Jun 2017 21:23:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-06-23:/posts/2017/Jun/23/join-in-sql/</guid><category>Database</category><category>database</category><category>sql</category><category>relational-algebra</category><category>leetcode</category></item><item><title>The tortoise and the hare</title><link>https://zhu45.org/posts/2017/Jun/18/the-tortoise-and-the-hare/</link><description>&lt;p&gt;Floyd&amp;rsquo;s Tortoise and Hare w/ leetcode 142, 287&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 18 Jun 2017 20:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-06-18:/posts/2017/Jun/18/the-tortoise-and-the-hare/</guid><category>Data Struct &amp; Algo</category><category>linked-list</category><category>leetcode</category><category>algorithm</category></item><item><title>Python case study: leetcode scraper</title><link>https://zhu45.org/posts/2017/Jun/15/python-case-study-leetcode-scraper/</link><description>&lt;p&gt;a record of python usage appears in the leetcode scraper&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 15 Jun 2017 21:22:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-06-15:/posts/2017/Jun/15/python-case-study-leetcode-scraper/</guid><category>programming languages</category><category>python</category><category>scraping</category><category>beautifulsoup</category><category>regex</category></item><item><title>Solving recurrence relations (part 2)</title><link>https://zhu45.org/posts/2017/Jun/12/solving-recurrence-relations-part-2/</link><description>&lt;p&gt;Additional ways to solve recurrence relation&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 12 Jun 2017 17:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-06-12:/posts/2017/Jun/12/solving-recurrence-relations-part-2/</guid><category>Mathematics</category><category>recursion</category><category>math</category></item><item><title>Draw a Neural Network through Graphviz</title><link>https://zhu45.org/posts/2017/May/25/draw-a-neural-network-through-graphviz/</link><description>&lt;p&gt;Use NN as an example to show graphviz tricks&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 25 May 2017 22:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-05-25:/posts/2017/May/25/draw-a-neural-network-through-graphviz/</guid><category>tools</category><category>machine learning</category><category>graphviz</category><category>neural network</category></item><item><title>Andrew Ng's ML Week 04 - 05</title><link>https://zhu45.org/posts/2017/May/23/andrew-ngs-ml-week-04-05/</link><description>&lt;p&gt;Neural network&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 23 May 2017 22:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-05-23:/posts/2017/May/23/andrew-ngs-ml-week-04-05/</guid><category>Machine Learning</category><category>machine learning</category><category>coursera</category><category>neural network</category></item><item><title>Andrew Ng's ML Week 01 - 03</title><link>https://zhu45.org/posts/2017/May/05/andrew-ngs-ml-week-01-03/</link><description>&lt;p&gt;ML overview, Linear regression, Logistic regression, Regularization&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 05 May 2017 16:18:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-05-05:/posts/2017/May/05/andrew-ngs-ml-week-01-03/</guid><category>Machine Learning</category><category>machine learning</category><category>coursera</category></item><item><title>Shell sort</title><link>https://zhu45.org/posts/2017/May/01/shell-sort/</link><description>&lt;p&gt;summary for shell sort&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 01 May 2017 21:33:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-05-01:/posts/2017/May/01/shell-sort/</guid><category>Data Struct &amp; Algo</category><category>sorting</category><category>maw</category></item><item><title>Simple sorting algorithms</title><link>https://zhu45.org/posts/2017/Apr/24/simple-sorting-algorithms/</link><description>&lt;p&gt;bubble sort, selection sort, and insertion sort&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 24 Apr 2017 21:33:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-24:/posts/2017/Apr/24/simple-sorting-algorithms/</guid><category>Data Struct &amp; Algo</category><category>sorting</category><category>maw</category></item><item><title>Introducing the "Andrew Ng's ML course study notes"</title><link>https://zhu45.org/posts/2017/Apr/21/introducing-the-andrew-ngs-ml-course-study-notes/</link><description>&lt;p&gt;Let the battle begins :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 21 Apr 2017 23:48:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-21:/posts/2017/Apr/21/introducing-the-andrew-ngs-ml-course-study-notes/</guid><category>Machine Learning</category><category>machine learning</category><category>coursera</category></item><item><title>Sorting prelim</title><link>https://zhu45.org/posts/2017/Apr/18/sorting-prelim/</link><description>&lt;p&gt;Prelim for sorting&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 18 Apr 2017 10:03:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-18:/posts/2017/Apr/18/sorting-prelim/</guid><category>Data Struct &amp; Algo</category><category>sorting</category><category>maw</category></item><item><title>MAW Chapter 7: Sorting writing questions</title><link>https://zhu45.org/posts/2017/Apr/15/maw-chapter-7-sorting-writing-questions/</link><description>&lt;p&gt;My solutions to selected problems in MAW Chapter 7&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 15 Apr 2017 23:54:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-15:/posts/2017/Apr/15/maw-chapter-7-sorting-writing-questions/</guid><category>Data Struct &amp; Algo</category><category>sorting</category><category>proof</category><category>math</category><category>maw</category></item><item><title>MAW: Chapter 6 Reflection</title><link>https://zhu45.org/posts/2017/Apr/09/maw-chapter-6-reflection/</link><description>&lt;p class="first last"&gt;An overview summary of MAW Chapter 6&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 09 Apr 2017 10:45:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-09:/posts/2017/Apr/09/maw-chapter-6-reflection/</guid><category>misc</category><category>maw</category><category>heaps</category></item><item><title>Binomial queue</title><link>https://zhu45.org/posts/2017/Apr/08/binomial-queue/</link><description>&lt;p&gt;Summary for binomial queue&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 08 Apr 2017 23:33:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-08:/posts/2017/Apr/08/binomial-queue/</guid><category>Data Struct &amp; Algo</category><category>heaps</category><category>maw</category></item><item><title>Skew heap</title><link>https://zhu45.org/posts/2017/Apr/05/skew-heap/</link><description>&lt;p&gt;Summary for skew heap&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 05 Apr 2017 23:33:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-05:/posts/2017/Apr/05/skew-heap/</guid><category>Data Struct &amp; Algo</category><category>heaps</category><category>maw</category></item><item><title>Leftist heap</title><link>https://zhu45.org/posts/2017/Apr/04/leftist-heap/</link><description>&lt;p&gt;Summary for leftist heap&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 04 Apr 2017 10:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-04:/posts/2017/Apr/04/leftist-heap/</guid><category>Data Struct &amp; Algo</category><category>heaps</category><category>maw</category></item><item><title>Binary heap</title><link>https://zhu45.org/posts/2017/Apr/02/binary-heap/</link><description>&lt;p&gt;Binary heap summary&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 02 Apr 2017 11:30:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-04-02:/posts/2017/Apr/02/binary-heap/</guid><category>Data Struct &amp; Algo</category><category>heaps</category><category>maw</category></item><item><title>MAW Chapter 6: Priority Queues (Heaps) writing questions</title><link>https://zhu45.org/posts/2017/Mar/26/maw-chapter-6-priority-queues-heaps-writing-questions/</link><description>&lt;p&gt;My solutions to selected problems in MAW Chapter 6&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 26 Mar 2017 12:01:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-03-26:/posts/2017/Mar/26/maw-chapter-6-priority-queues-heaps-writing-questions/</guid><category>Data Struct &amp; Algo</category><category>heaps</category><category>proof</category><category>math</category><category>maw</category></item><item><title>Hash Table</title><link>https://zhu45.org/posts/2017/Mar/17/hash-table/</link><description>&lt;p class="first last"&gt;Summary of hash table for MAW Chapter 5&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 17 Mar 2017 15:56:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-03-17:/posts/2017/Mar/17/hash-table/</guid><category>misc</category><category>maw</category><category>hashing</category><category>data structures</category></item><item><title>MAW Chapter 5: Hashing writing questions</title><link>https://zhu45.org/posts/2017/Mar/16/maw-chapter-5-hashing-writing-questions/</link><description>&lt;p&gt;My solutions to selected problems in MAW Chapter 5&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 16 Mar 2017 17:41:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-03-16:/posts/2017/Mar/16/maw-chapter-5-hashing-writing-questions/</guid><category>Data Struct &amp; Algo</category><category>hashing</category><category>proof</category><category>math</category><category>maw</category><category>data structures</category></item><item><title>MAW: Chapter 4 Reflection</title><link>https://zhu45.org/posts/2017/Mar/12/maw-chapter-4-reflection/</link><description>&lt;p class="first last"&gt;An overview summary of MAW Chapter 4&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 12 Mar 2017 10:45:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-03-12:/posts/2017/Mar/12/maw-chapter-4-reflection/</guid><category>misc</category><category>maw</category></item><item><title>B-Tree</title><link>https://zhu45.org/posts/2017/Mar/11/b-tree/</link><description>&lt;p&gt;B-tree summary&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 11 Mar 2017 21:32:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-03-11:/posts/2017/Mar/11/b-tree/</guid><category>Data Struct &amp; Algo</category><category>trees</category><category>maw</category></item><item><title>Splay Tree</title><link>https://zhu45.org/posts/2017/Feb/13/splay-tree/</link><description>&lt;p&gt;Splay tree summary&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 13 Feb 2017 01:12:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-02-13:/posts/2017/Feb/13/splay-tree/</guid><category>Data Struct &amp; Algo</category><category>trees</category><category>maw</category></item><item><title>AVL Tree</title><link>https://zhu45.org/posts/2017/Feb/05/avl-tree/</link><description>&lt;p&gt;AVL tree summary&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 05 Feb 2017 10:43:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-02-05:/posts/2017/Feb/05/avl-tree/</guid><category>Data Struct &amp; Algo</category><category>trees</category><category>maw</category></item><item><title>Solving recurrence relations in a nutshell</title><link>https://zhu45.org/posts/2017/Feb/02/solving-recurrence-relations-in-a-nutshell/</link><description>&lt;p&gt;MATH475 methods to solve recurrence relation&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 02 Feb 2017 01:05:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-02-02:/posts/2017/Feb/02/solving-recurrence-relations-in-a-nutshell/</guid><category>Mathematics</category><category>recursion</category><category>combinatorics</category><category>math</category></item><item><title>Binary Tree &amp; Binary Search Tree</title><link>https://zhu45.org/posts/2017/Jan/29/binary-tree-binary-search-tree/</link><description>&lt;p&gt;Binary tree and binary search tree summary&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 29 Jan 2017 13:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-29:/posts/2017/Jan/29/binary-tree-binary-search-tree/</guid><category>Data Struct &amp; Algo</category><category>trees</category><category>maw</category></item><item><title>MAW Chapter 4: Tree writing questions</title><link>https://zhu45.org/posts/2017/Jan/26/maw-chapter-4-tree-writing-questions/</link><description>&lt;p&gt;My solutions to selected problems in MAW Chapter 4&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 26 Jan 2017 17:41:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-26:/posts/2017/Jan/26/maw-chapter-4-tree-writing-questions/</guid><category>Data Struct &amp; Algo</category><category>trees</category><category>proof</category><category>math</category><category>maw</category></item><item><title>Tree Terminology</title><link>https://zhu45.org/posts/2017/Jan/24/tree-terminology/</link><description>&lt;p class="first last"&gt;Commonly seen tree terminology&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 24 Jan 2017 20:23:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-24:/posts/2017/Jan/24/tree-terminology/</guid><category>Data Struct &amp; Algo</category><category>trees</category><category>maw</category></item><item><title>MAW: Chapter 3 Reflection</title><link>https://zhu45.org/posts/2017/Jan/23/maw-chapter-3-reflection/</link><description>&lt;p class="first last"&gt;An overview summary of MAW Chapter 3&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 23 Jan 2017 10:45:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-23:/posts/2017/Jan/23/maw-chapter-3-reflection/</guid><category>misc</category><category>maw</category></item><item><title>Num of function calls in recursive Fibonacci routine</title><link>https://zhu45.org/posts/2017/Jan/22/num-of-function-calls-in-recursive-fibonacci-routine/</link><description>&lt;p&gt;Origin from MAW 3.24&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 22 Jan 2017 23:12:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-22:/posts/2017/Jan/22/num-of-function-calls-in-recursive-fibonacci-routine/</guid><category>Data Struct &amp; Algo</category><category>math</category><category>call-stack</category><category>recursion</category><category>maw</category></item><item><title>Typecasting in C</title><link>https://zhu45.org/posts/2017/Jan/19/typecasting-in-c/</link><description>&lt;p class="first last"&gt;A study of typecasting in C&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Thu, 19 Jan 2017 00:53:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-19:/posts/2017/Jan/19/typecasting-in-c/</guid><category>programming languages</category><category>c</category><category>pointer</category></item><item><title>Difference between i++ and ++i</title><link>https://zhu45.org/posts/2017/Jan/11/difference-between-i-and-i/</link><description>&lt;p class="first last"&gt;Understanding easily confused part of C&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 11 Jan 2017 22:39:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-11:/posts/2017/Jan/11/difference-between-i-and-i/</guid><category>programming languages</category><category>c</category></item><item><title>Modify array inside function in C</title><link>https://zhu45.org/posts/2017/Jan/08/modify-array-inside-function-in-c/</link><description>&lt;p class="first last"&gt;Commonly seen C usage&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 08 Jan 2017 09:23:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-08:/posts/2017/Jan/08/modify-array-inside-function-in-c/</guid><category>programming languages</category><category>c</category></item><item><title>Josephus Problem &amp; Radix Sort Reflection</title><link>https://zhu45.org/posts/2017/Jan/06/josephus-problem-radix-sort-reflection/</link><description>&lt;p class="first last"&gt;Takeaway from MAW 3.13 and 3.10&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 06 Jan 2017 00:34:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2017-01-06:/posts/2017/Jan/06/josephus-problem-radix-sort-reflection/</guid><category>programming languages</category><category>c</category><category>linked-list</category></item><item><title>Josephus problem</title><link>https://zhu45.org/posts/2016/Dec/31/josephus-problem/</link><description>&lt;h2 id="preface"&gt;Preface&lt;/h2&gt;
&lt;p&gt;This is actually MAW 3.10. I gradually realize how dense MAW is.
In the &lt;a href="http://zhu45.org/posts/2016/Dec/26/reflection-on-integer-arithmetic-package-problem/"&gt;previous problem&lt;/a&gt;,
I write almost 500 lines of code. For this one, the problem is not really diffcult to solve if we implement a program 
that follows the game rule exactly. However, I figure …&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 31 Dec 2016 20:24:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-31:/posts/2016/Dec/31/josephus-problem/</guid><category>2016</category><category>recursion</category><category>dynamic programming</category><category>math</category><category>maw</category></item><item><title>A peek in code optimization</title><link>https://zhu45.org/posts/2016/Dec/28/a-peek-in-code-optimization/</link><description>&lt;p class="first last"&gt;MAW 3.9 solution optimization&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 28 Dec 2016 13:21:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-28:/posts/2016/Dec/28/a-peek-in-code-optimization/</guid><category>Data Struct &amp; Algo</category><category>linked-list</category><category>software-engineering</category></item><item><title>Reflection on integer arithmetic package problem</title><link>https://zhu45.org/posts/2016/Dec/26/reflection-on-integer-arithmetic-package-problem/</link><description>&lt;p class="first last"&gt;Origin from MAW 3.9&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 26 Dec 2016 23:03:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-26:/posts/2016/Dec/26/reflection-on-integer-arithmetic-package-problem/</guid><category>Data Struct &amp; Algo</category><category>software-engineering</category><category>c</category></item><item><title>A small C trick I learned today</title><link>https://zhu45.org/posts/2016/Dec/24/a-small-c-trick-i-learned-today/</link><description>&lt;p class="first last"&gt;A C one-liner&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 24 Dec 2016 23:11:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-24:/posts/2016/Dec/24/a-small-c-trick-i-learned-today/</guid><category>programming languages</category><category>c</category></item><item><title>Print singly linked list in reverse order</title><link>https://zhu45.org/posts/2016/Dec/23/print-singly-linked-list-in-reverse-order/</link><description>&lt;p class="first last"&gt;See above&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 23 Dec 2016 00:05:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-23:/posts/2016/Dec/23/print-singly-linked-list-in-reverse-order/</guid><category>Data Struct &amp; Algo</category><category>linked-list</category><category>recursion</category></item><item><title>Environment variable substitution using Sed</title><link>https://zhu45.org/posts/2016/Dec/21/environment-variable-substitution-using-sed/</link><description>&lt;p class="first last"&gt;A &lt;tt class="docutils literal"&gt;sed&lt;/tt&gt; example&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 21 Dec 2016 12:07:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-21:/posts/2016/Dec/21/environment-variable-substitution-using-sed/</guid><category>tools</category><category>sed</category><category>shell</category></item><item><title>What's the difference between sourcing a script and executing a script?</title><link>https://zhu45.org/posts/2016/Dec/20/whats-the-difference-between-sourcing-a-script-and-executing-a-script/</link><description>&lt;p class="first last"&gt;Amusing question in shell&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Tue, 20 Dec 2016 21:49:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-20:/posts/2016/Dec/20/whats-the-difference-between-sourcing-a-script-and-executing-a-script/</guid><category>tools</category><category>shell</category></item><item><title>Polynomial Multiplication</title><link>https://zhu45.org/posts/2016/Dec/18/polynomial-multiplication/</link><description>&lt;p class="first last"&gt;Origin from MAW 3.7&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 18 Dec 2016 18:53:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-18:/posts/2016/Dec/18/polynomial-multiplication/</guid><category>Data Struct &amp; Algo</category><category>linked-list</category><category>maw</category></item><item><title>Pelican Hack Day</title><link>https://zhu45.org/posts/2016/Dec/17/pelican-hack-day/</link><description>&lt;p class="first last"&gt;Design log for Pelican website&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 17 Dec 2016 22:44:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-17:/posts/2016/Dec/17/pelican-hack-day/</guid><category>tools</category><category>pelican</category><category>Jinja</category></item><item><title>Lesson Learned: Portability</title><link>https://zhu45.org/posts/2016/Dec/16/lesson-learned-portability/</link><description>&lt;p class="first last"&gt;Shell is not portable!&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Fri, 16 Dec 2016 23:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-16:/posts/2016/Dec/16/lesson-learned-portability/</guid><category>misc</category><category>software-engineering</category><category>shell</category><category>AIX</category></item><item><title>Reverse Singly Linked List</title><link>https://zhu45.org/posts/2016/Dec/03/reverse-singly-linked-list/</link><description>&lt;p class="first last"&gt;MAW 3.12 question&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sat, 03 Dec 2016 20:34:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-12-03:/posts/2016/Dec/03/reverse-singly-linked-list/</guid><category>Data Struct &amp; Algo</category><category>linked-list</category><category>recursion</category><category>maw</category></item><item><title>PrintLots</title><link>https://zhu45.org/posts/2016/Nov/28/printlots/</link><description>&lt;p class="first last"&gt;MAW 3.2&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Mon, 28 Nov 2016 18:20:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-11-28:/posts/2016/Nov/28/printlots/</guid><category>Data Struct &amp; Algo</category><category>c</category><category>linked-list</category><category>maw</category></item><item><title>Automatically publish Tinkerer bld output to GitHub with Travis CI</title><link>https://zhu45.org/posts/2016/Nov/27/automatically-publish-tinkerer-bld-output-to-github-with-travis-ci/</link><description>&lt;p class="first last"&gt;A taste of DevOps&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 27 Nov 2016 22:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-11-27:/posts/2016/Nov/27/automatically-publish-tinkerer-bld-output-to-github-with-travis-ci/</guid><category>tools</category><category>github</category><category>travis-ci</category></item><item><title>Generate a Linked List from a given array</title><link>https://zhu45.org/posts/2016/Nov/27/generate-a-linked-list-from-a-given-array/</link><description>&lt;p class="first last"&gt;Where MAW starts&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 27 Nov 2016 19:38:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-11-27:/posts/2016/Nov/27/generate-a-linked-list-from-a-given-array/</guid><category>Data Struct &amp; Algo</category><category>c</category><category>linked-list</category><category>maw</category></item><item><title>Hello World</title><link>https://zhu45.org/posts/2016/Nov/23/hello-world/</link><description>&lt;p class="first last"&gt;Hello&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Wed, 23 Nov 2016 23:00:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2016-11-23:/posts/2016/Nov/23/hello-world/</guid><category>misc</category><category>meta</category></item><item><title>Minimal Emacs Tutorial</title><link>https://zhu45.org/posts/2015/Oct/18/minimal-emacs-tutorial/</link><description>&lt;p class="first last"&gt;Emacs quick reference&lt;/p&gt;
</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Zeyuan Hu</dc:creator><pubDate>Sun, 18 Oct 2015 16:18:00 +0800</pubDate><guid isPermaLink="false">tag:zhu45.org,2015-10-18:/posts/2015/Oct/18/minimal-emacs-tutorial/</guid><category>tools</category><category>emacs</category></item></channel></rss>