Explore the complementary roles of divergent and convergent thinking in research, problem-solving, and creative work. Learn how to balance exploration and exploitation to maximize intellectual productivity.
How to achieve nominal typing in TypeScript with branded types, preventing subtle runtime bugs by making types explicitly incompatible even when their structures match.
Discover how to apply the Strangler Fig Pattern from software architecture to career transitions and skill development. Learn to modernize yourself gradually without the risk of a 'Big Bang' change.
Explore how AI agents differ from traditional decision-tree chatbots. Learn about the perceive-reason-act loop and the four key characteristics that make agents autonomous, goal-oriented, reactive, and proactive.
Learn how vector projection and dimensionality reduction techniques like PCA help simplify high-dimensional data for visualization and machine learning.
Extend a simple arithmetic language with variables, functions, and conditionals. Learn about environments, closures, and lexical scoping in operational semantics.
An introduction to operational semantics for programming languages. Learn small-step and big-step semantics through a simple arithmetic expression language.
Learn functional programming through OCaml, from lambda calculus foundations to practical programs. Covers immutability, pattern matching, recursion, and higher-order functions.
An introduction to algorithms in computer science. Learn what computational problems are, the difference between decision and optimization problems, and why algorithm design matters.
Learn how to protect sensitive data in Rails applications using ActiveSupport::ParameterFilter. Covers filtering passwords, API keys, and custom patterns from logs.
My journey from studying Medicine in China to becoming a self-taught software engineer. A personal story about discovering coding, making career changes, and lessons learned along the way.