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....

April 1, 2023 · 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.

February 19, 2023 · 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....

January 2, 2023 · 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?...

August 28, 2022 · poga

gRPC status codes

gRPC defined 18 status codes for returning different types of errors. I think they’re a pretty good reference if you want to design clear error handling for API. ...

January 3, 2022 · poga

Pipelines and Glue Systems

Context: Machine Learning Projects are mainly just a complex interdependent pipeline. We desperately need a better abstraction for them. ...

December 12, 2021 · poga

On Building Glue Systems

I spent most of my life building glue systems. Sometimes, I got to work on a deep, sparkling project. But most of the time, my work is about gluing things together. ...

September 18, 2021 · poga

Learning Julia, Line by Line

Cardsjl is a simple Julia package which demonstrate many interesting bits of the Julia Programming Language. Reading it is an enjoyable experience. The note I’ve writtend down is here: ...

August 4, 2021 · poga

Haxe and Programming for Many Machines

The title sounds obvious. We always program for a machine! A program won’t run itself! ...

May 11, 2021 · poga

Common Lisp Local Project Development with Quicklisp

Probably the cleanest way to do it: (pushnew (truename "/projects/app/") ql:*local-project-directories* ) (ql:register-local-projects) (ql:quickload :app) From Use Quicklisp to load personal projects from arbitrary locations. Alternatively, you can create a symlink in ~/quicklisp/local-projects/.

May 1, 2021 · poga