Blog
Thoughts on programming, systems, robotics, and everything in between. Sharing what I learn and build.
The Missing Link: Calibrating a Sparse RGB Rig with OptiTrack
It has been a long time since I last wrote a blog post. Honestly, I almost stopped. In the age of LLMs, writing about technical topics feels pointless — whatever you want to know, an AI will explain it more clearly and faster than any blog. So why bother? What changed my mind was running into a problem where AI could tell me the theory perfectly well but couldn’t tell me what actually went wrong when I tried it. That gap only gets filled by doing it: wiring two physical sensor systems together, watching them disagree, and working out why. That kind of experience doesn’t live in training data yet. Physical AI is full of it.
Setup 802.1X Authentication on Arch Linux
Over the past few days, I attempted to set up 802.1X authentication on Arch Linux, a wired identity authentication protocol widely used in enterprise environments and well-supported on Windows and Ubuntu. However, when it came to Arch Linux, a series of strange issues emerged. This post will detail the problems I encountered and the debugging process. WPA-Supplicant for 802.1X Authentication On Arch Linux, 802.1X authentication is handled by wpa_supplicant. To begin, you need to test our protocol configuration and user credentials by manually running wpa_supplicant. If you haven’t installed it yet, use the following command:
Migrating from WordPress to Hugo
I recently switched from WordPress to Hugo. This post outlines the reasons behind my migration and provides a step-by-step guide on how to make the transition. Rethinking Why Use WordPress I began using WordPress in 2009 when static site generators were not prevalent, and WordPress was the go-to CMS for nearly everyone. However, since my blog had infrequent updates but high readership, I started reconsidering the use of WordPress. Five years ago, I decided to convert the WordPress site into static HTML and uploaded it to a CDN to accelerate access speed for users in mainland China.
Enable Microsoft Remote Desktop (RDP) on Linux
Gnome 42 has a fantastic new feature that allows Linux users to share their desktops with Microsoft’s Remote Desktop Protocol remotely, namely GNOME remote desktop. In this tutorial, we’ll show you how you can use this great new feature. Without this feature, an alternative solution is xrdp. However, xrdp cannot provide a consistent desktop environment as used in current Linux. Enable Automatic Login and Disable Screen Lock For the remote desktop to work on GNOME, we have to enable automatic login and disable automatic screen lock. Otherwise, it is unable to connect to the Linux PC remotely from Windows 10/11 using the Remote Desktop Connection app.
Arch Linux ARM on an M1 Mac with VMware Fusion
Arch Linux ARM is a simple and lightweight Linux distribution that is actually the official port of the Arch Linux operating system. It’s built especially for processors that support ARM architecture. With its use, the users can have full control of the system and shape their system according to their needs. In this tutorial, we provide the detailed procedure to install Arch Linux ARM on a Macbook Pro (with Apple M1 Pro) running VMware Fusion 13.0.
Build an iOS App: from Beginning to Abandon
Background I created a static website that saves couple pictures, namely Infinite Love, on Valentine’s day 2021. As it is static, adding content requires modifying the source code. To make it more convenient, I decide to create an iOS app. I am quite familiar with web development, however, it is the first time I learn to write an iOS app. In this tutorial, I will introduce how to create an iOS application from scratch.
Use Internet Explorer in Windows 11
Background With Windows 11, Microsoft has removed several outdated apps and features, including the long-hated Internet Explorer. However, some proprietary apps and legacy sites still require Internet Explorer functionality to run. Several posts suggest using the IE mode in Microsoft Edge. However, it is not working for some websites, such as the Talent Introduction System for Shenzhen. Solution Step 1. Create a VB script, named ie.vbs with the following content. CreateObject("InternetExplorer.Application").Visible = true Step2. Run the VB script, and Internet Explorer will be launched as expected.
Compile Caffe without Root Privileges
In this tutorial, we are going to introduce how to install Caffe without root privileges. We assume that you have installed Anaconda and CUDA on your PC. Create Virtual Environment conda create -n caffe conda activate caffe Install Dependencies Since we decide not to use system dependencies, we need to install them in the Anaconda environment. To install, you can use the following commands: conda install boost=1.65.1 openblas mkl mkl-include gflags glog lmdb leveldb h5py hdf5 scikit-image conda install -c conda-forge ffmpeg opencv==3.4.3 Build Protocol Buffer (protobuf) Please DO NOT install it with Anaconda, because it causes the problem of the undefined reference in the linking process.