Is it possible to take fine-grained control on a program after it being compiled? Directly manipulating the machine code in the binary can be an approach. As impractical as it sounds, this technique can be used to tackle real-world problems, as shown in this article.

Bypass Instructions in ELF with radare2

May 17, 2023

It's handy to instruct an executable to use a different version of libc when encountering some compatibility issues. By patching the binary, this change can be made permanent.

Patch Binary to Use An Alternative Libc

Apr 15, 2023

Aimed to bring the interactive C++ experience to the Internet, cline is a web application built upon many brilliant ideas. Discover the magic behind the user interface in this open-source project.

Cline The Online C++ Interpreter

Feb 15, 2023

The column index of a node in a complete binary tree encodes the path to reach it from the root. A simple and efficient encode/decode scheme can be made upon this result, and facilitate other algorithm implementations.

Path and Positional Encoding In a Binary Tree

Nov 10, 2022

A brief summary to the GSoC-2022 Project - thrift for zephyr, which I have contributed to.

Review of My GSoC-2022 Project

Sep 01, 2022

It's well known that inappropriate use of std::shared_ptr can lead to memory leak due to circular reference. In this article, a simple case where circular reference can happen on std::unique_ptr is demonstrated, and the method to avoid it is suggested.

A Simple Memory Leak Scenario with unique_ptr

Aug 08, 2022

Objects lifetime management is one of the critical elements in C++ development, but corresponding tools for debugging are rather scarce. This article described a non-invasive to track the invocation of ctors and dtors of classes in C++, which is enabled with the decorator pattern.

Track Lifetime of Objects in C++

Feb 02, 2022

Placement new is a rarely used feature in C++. This article gives a brief introduction to this feature, and shows how it can be helpful in the implementation of circular linked lists.

Circular Linked List and Placement new

An open-source RISC-V 64 single board computer under 10$ based on Allwinner D1s SoC

Sub-10$ RISC-V 64 SBC

Oct 16, 2021

A stylish and feature-rich theme for Jekyll using (almost) no JavaScript

Theme Antarctica

Aug 25, 2021

A single-board computer based on Mediatek MT76x8 Wi-Fi SoC

Xassette IoT

Aug 24, 2021

A USB-PD sink power supply built with no MCU.

BBSink

May 17, 2021

Tiny Breakout Board for CH551G/CH552G/CH554G 8-bit MCUs.

CH55xG Tiny

Mar 17, 2021

Get the pin assignment of a board without destroying it.

a Non-invasive Way to Investigate IO Connections

Oct 30, 2020

Typically, a D flip-flop can only be triggered by either the leading edge or the trailing edge of the clock signal. In some scenario, a flip-flop can be triggered by both edges is required. In this article, an implementation of such flip-flop consists only 2 7400 ICs is proposed. The idea is to use 2 D flip-flops in which one is triggered by the leading edge and the other is triggered by the inverted clock signal. The outputs of these two flip-flops are multiplexed according to the clock sig...

Dual Edge D Flip-flop Implemented with two 7400s

Nov 08, 2019

A three.js demo to visualize high-dimensional geometries like hypercubes.

Visualization of Hyper Geometries

Jun 15, 2019