<feed xmlns="http://www.w3.org/2005/Atom"> <id>https://ianyepan.github.io/</id><title>Ian Y.E. Pan</title><subtitle>software engineer, emacs enthusiast, keyboard lover. occasionally nerdy.</subtitle> <updated>2026-05-25T07:18:31+00:00</updated> <author> <name>Ian Y.E. Pan</name> <uri>https://ianyepan.github.io/</uri> </author><link rel="self" type="application/atom+xml" href="https://ianyepan.github.io/feed.xml"/><link rel="alternate" type="text/html" hreflang="en" href="https://ianyepan.github.io/"/> <generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator> <rights> © 2026 Ian Y.E. Pan </rights> <icon>/assets/img/favicons/favicon.ico</icon> <logo>/assets/img/favicons/favicon-96x96.png</logo> <entry><title>Git Blaming in Emacs</title><link href="https://ianyepan.github.io/posts/git-blame-emacs/" rel="alternate" type="text/html" title="Git Blaming in Emacs" /><published>2026-05-21T22:00:00+00:00</published> <updated>2026-05-23T06:37:52+00:00</updated> <id>https://ianyepan.github.io/posts/git-blame-emacs/</id> <content src="https://ianyepan.github.io/posts/git-blame-emacs/" /> <author> <name>Ian Y.E. Pan</name> </author> <category term="Emacs" /> <summary> Many times when working on open-source codebases, I encounter a piece of code that I’d like to learn more context about or simply want to know who wrote it or when it was written. In most modern IDEs, there’s some sort of “git blame” functionality to show the history of any line of code, either built-in natively or through extensions like VSCode’s GitLens. In this short post, let’s explore how ... </summary> </entry> <entry><title>From C to Silicon - Hands-on Guide to QEMU Hardware Emulation for OpenBMC</title><link href="https://ianyepan.github.io/posts/qemu-hw-emulation-for-openbmc/" rel="alternate" type="text/html" title="From C to Silicon - Hands-on Guide to QEMU Hardware Emulation for OpenBMC" /><published>2026-04-17T05:30:00+00:00</published> <updated>2026-05-25T05:12:29+00:00</updated> <id>https://ianyepan.github.io/posts/qemu-hw-emulation-for-openbmc/</id> <content src="https://ianyepan.github.io/posts/qemu-hw-emulation-for-openbmc/" /> <author> <name>Ian Y.E. Pan</name> </author> <category term="Programming" /> <summary> In this blog post, we’ll explore how to write code that mimics physical silicon. We will create and integrate a virtual temperature sensor and expose it to the BMC’s (baseboard management controller) processor - effectively simulating the process of soldering a physical IC (integrated circuit) onto a motherboard. We will use QEMU to emulate an Aspeed AST2600 EVB board and “wire” our sensor, pro... </summary> </entry> <entry><title>Building a Simple Web Server in C - an open source project</title><link href="https://ianyepan.github.io/posts/c-web-server/" rel="alternate" type="text/html" title="Building a Simple Web Server in C - an open source project" /><published>2023-05-07T01:30:00+00:00</published> <updated>2023-05-07T23:34:23+00:00</updated> <id>https://ianyepan.github.io/posts/c-web-server/</id> <content src="https://ianyepan.github.io/posts/c-web-server/" /> <author> <name>Ian Y.E. Pan</name> </author> <category term="Programming" /> <summary> This Github repo is a well-designed small project to learn about web servers in C. A lot of the heavy lifting data structures and basic interactions using the socket API have been given to us. The focus of this project is to build an HTTP request parser, an HTTP response builder, and an LRU cache consisting of a doubly linked list and a hash table. Understanding the given code is also pretty mu... </summary> </entry> <entry><title>新版微軟雅黑，以及在 Windows 上優化中文顯示的多種技巧</title><link href="https://ianyepan.github.io/posts/noble-scarlet-ms-yahei/" rel="alternate" type="text/html" title="新版微軟雅黑，以及在 Windows 上優化中文顯示的多種技巧" /><published>2022-12-31T19:22:00+00:00</published> <updated>2023-01-15T06:21:07+00:00</updated> <id>https://ianyepan.github.io/posts/noble-scarlet-ms-yahei/</id> <content src="https://ianyepan.github.io/posts/noble-scarlet-ms-yahei/" /> <author> <name>Ian Y.E. Pan</name> </author> <category term="Typography" /> <summary> 新版微軟雅黑，代號 Noble Scarlet Windows 作業系統上的微軟雅黑字體是一個劃時代的創作，其原型可追溯至方正蘭亭黑。近年更是擴充了繁體字形（雅黑原本只有簡體字形），也涵蓋了 GBK 中的字符，在實用度和優美程度上可說是完勝了 Windows 內建所有中文黑體，甚至包括預設繁體：“微軟正黑”。但雅黑 “中宮大”，“重心低”，“字面大” 的特點，容易在現代高畫質屏幕上顯得擁擠，不如 macOS 的蘋方或是 Google/Adobe 合作設計的思源黑體來的優雅現代。 微軟曾在幾年前的一次 Windows Insider Preview Build（測試版）中提到了一款新的微軟雅黑字體，代號 “Noble Scarlet”。下圖中可見新版的雅黑 “中宮收窄”， “字距加大” 的新版設計。也有內行的網友提到，這次新版雅黑其實就是基於方正蘭亭黑 Pro，英文字符則是繼續沿用... </summary> </entry> <entry><title>C++ Uniform Initialization - Benefits &amp; Pitfalls</title><link href="https://ianyepan.github.io/posts/cpp-uniform-initialization/" rel="alternate" type="text/html" title="C++ Uniform Initialization - Benefits &amp; Pitfalls" /><published>2022-12-15T19:44:00+00:00</published> <updated>2022-12-17T20:47:32+00:00</updated> <id>https://ianyepan.github.io/posts/cpp-uniform-initialization/</id> <content src="https://ianyepan.github.io/posts/cpp-uniform-initialization/" /> <author> <name>Ian Y.E. Pan</name> </author> <category term="Programming" /> <summary> Scott Meyer’s book, “Effective Modern C++”, has a nice section talking about uniform initialization, specifically, how to “distinguish between () and {} when creating objects”. This blog post summarizes some important tips that the author pointed out, along with some advice according to my experience and preferences. Understanding uniform initialization in C++ Uniform initialization, sinc... </summary> </entry> </feed>
