BeanHub: A 3-Year Journey Building and Selling a Beancount-Based Accounting Software

2025-03-05

Driven by a passion for data security and automation, the author spent three years developing BeanHub, an accounting software built on the open-source Beancount. Central to its design is the "file-over-app" philosophy, performing all operations on text files instead of a database, ensuring data openness and long-term accessibility. This journey involved open-sourcing 15 projects and overcoming challenges such as building a large-scale auditable Git repository and securely handling user-uploaded files. Despite sales and competitive pressures, the author prioritized quality, building a community and tutorials to enhance user experience, ultimately attracting paying customers and proving the long-term value of the 'file-over-app' approach.

Read more
Development

Nvidia GPUs on a Bare-Metal Kubernetes Cluster with NixOS: A Rabbit Hole Adventure

2025-03-02

To scale his machine learning framework, MAZE, the author attempted to enable Nvidia GPU support on his Kubernetes cluster, comprising three mini-PCs and a retired workstation. This proved far more challenging than anticipated, involving hurdles such as configuring the Nvidia device plugin, navigating the complexities of a NixOS environment, and deploying PKI certificates. He ultimately succeeded, sharing his experiences deploying a Kubernetes cluster using NixOS, Ansible, and Sops, alongside a deep dive into CRI, CDI, nvidia-container-toolkit, and more. He also developed nix-playground, a tool to simplify patching and building open-source projects, and leveraged Grok 3 for debugging. Along the way, he encountered further challenges like PyCharm issues with WSL NixOS and Kubernetes RuntimeClass configuration. The entire journey, akin to Alice's Adventures in Wonderland, highlights the author's impressive execution power and problem-solving skills.

Read more
Development

A Software Engineer's CAD and 3D Printing Journey: An Overengineered Webcam Raiser

2024-12-16

A seasoned software engineer, tired of the virtual world of coding, yearned to create in the real world. He acquired a Bambu Lab X1C 3D printer and quickly mastered 3D printing. He then started learning Fusion 360 CAD software, surprisingly finding its constraint concepts similar to iOS UI constraints, and parametric CAD design echoing functional programming. His first project: an overengineered webcam raiser to solve the issue of the webcam obstructing his screen. This project not only provided him with the joy of 3D printing and CAD design but also a deep understanding of the manufacturing, material, and other details that need to be considered during the design phase.

Read more