Write good code

The first step to write good code is to define a clear boundary between systems. A boundary that allows you to freely explore the problem without breaking existing functionalities. The second step to write good code is to explore the problem thoroughly via iteration. Your first 2~3 solutions will be bad because you don’t understand the problem yet. Kick-off a feedback-loop as early as possible. Good code, just like good design, need iteration and learning....

<span title='2023-12-05 00:00:00 +0800 CST'>December 5, 2023</span>&nbsp;·&nbsp;poga

Revisiting Modern Data Stack

TL;DR “It’s hard to make predictions in the ever evolving data landscape, but I am not sure if we need a better Airflow. Building a better Airflow feels like trying to optimize writing code that shouldn’t have been written in the first place.” - https://dagster.io/blog/rebundling-the-data-platform Growing Pain The Future of Data https://databased.pedramnavid.com/p/the-future-of-data Data mesh is, in some ways, the admission of defeat in the face of complexity. The demands of teams are so complex that we must break apart the whole thing into smaller, more manageable chunks....

<span title='2023-05-29 00:00:00 +0800 CST'>May 29, 2023</span>&nbsp;·&nbsp;poga

Dealing with Tech Debts

Here’s the rough transcript of a talk I’ve given at my $DayJob. On Dealing with Tech Debts Tech debts has been a sin of software engineers since the dawn of the computer. Today I will talk about concrete methods I’ve been using for many years. I will not talk about high-level ideas since we already have way too many on the internet. So the method is simple: You want to constantly dealing with tech debts during your development process, not just after finished a task, not arranging a special sprint for debts....

<span title='2023-04-01 00:00:00 +0800 CST'>April 1, 2023</span>&nbsp;·&nbsp;poga

Hacking is a Lost Art

What’s hacking? It is the practice of aggressively refining the problem statement in order to identify find the problem that is actually worth solving. It is the art of focusing on solving a problem in the most impactful and economical way possible while minimizing accidental complexity. It is the art of not getting attached to a solution and iterating quickly. It’s the art of having fun while doing it.

<span title='2023-02-19 00:00:00 +0800 CST'>February 19, 2023</span>&nbsp;·&nbsp;poga

The g0v.social Mantra

Under the surveillance capitalism standard, g0v.social is a strange little social network. Traditionally, social networks seek to radicalize people; the more toxic you become, the more traffic the platform will receive, and thus the greater the profit. We used to use the internet to escape from reality. But now we return to reality to escape the toxicity of the internet. The platform has taught us to post radical content, misinformation, hatred, and dunks in order to receive more feedback (likes, reposts) from the platform....

<span title='2023-01-22 00:00:00 +0800 CST'>January 22, 2023</span>&nbsp;·&nbsp;poga

Start with the Least Malleable

Always start with the least malleable whenever you’re onboarding to a new job, switching careers, or just joining a new project. Resources you’re going to encounter in your career, from least malleable to most malleable: People Process Code Always start with the people. People are shaped by their life. It’s impossible to rapidly change a person without some crazy stuff happen. Run if people make you feel uncomfortable. Since It’s not worthy to spend your life to change some other people just to have an okay career....

<span title='2023-01-02 00:00:00 +0800 CST'>January 2, 2023</span>&nbsp;·&nbsp;poga

Cheap Complexity and Cybersecurity

A recurrent theme of modern security is the importance of complexity and the difficulty of containing it. With GPUs, NICs, basebands, and specialized hardware such as TPUs, things are objectively getting more complicated at a superlinear rate. In a world where complexity continues to grow, it is hard to provide security guarantees. The problem of escalating complexity becomes an escalated security problem. What’s driving the complexity? “How does one design an electric motor?...

<span title='2022-08-28 00:00:00 +0800 CST'>August 28, 2022</span>&nbsp;·&nbsp;poga

Developing Godot Projects with Neovim

When I started using Godot Engine, what surprised me the most is the built-in Language Server Protocol support. Thank to it, I can easily develop GDScript with all my customized vim configs. Setup Install vim-godot. Plug 'habamax/vim-godot' Install neovim-remote. pip3 install neovim-remote Setup Neovim as the external editor for Godot Open menu Editor/Editor Settings/ then navigate to General/External/: Tick Use external editor Set nvr to Exec Path, use which nvr to get the absolute path....

<span title='2022-07-23 00:00:00 +0800 CST'>July 23, 2022</span>&nbsp;·&nbsp;poga

Unity, Godot, and Right to Repair

Some years ago, Unity dominated the game engine market. Everyone would recommend Unity to fellow game developers without thinking. However, Unity (as a game engine) is not in a great shape right now: Deprecating features while the replacement isn’t ready, Creating multiple new implementations of features from scratch instead of improving what’s there. Abandoning their own features in favour of acquiring community-made versions, and then abandoning them, Splitting the whole render system into two incompatible, contrary versions, deprecating the previous render system....

<span title='2022-07-01 00:00:00 +0800 CST'>July 1, 2022</span>&nbsp;·&nbsp;poga

What I've been Reading: 2022 Jan and Feb

MLOps The Four Innovation Phases of Netflix’s Trillions Scale Real-time Data Infrastructure https://thedataexchange.media/building-machine-learning-infrastructure-at-netflix-and-beyond/ Real-time machine learning: challenges and solutions Why are ML Compilers so Hard? Compiler UCB CS294-113: Virtual Machines and Managed Runtimes Rendering I’ve been wanting to go back to my root of programming: games and rendering. A Review of Shader Language Finding Your Home in Game Graphics Programming Nanite A Deep Dive Rendering the Hellscape of Doom Eternal...

<span title='2022-02-19 00:00:00 +0800 CST'>February 19, 2022</span>&nbsp;·&nbsp;poga