Blog
- 2022-07-10 » How "let it fail" leads to simpler code
- 2022-01-01 » 我的 2021
- 2021-07-18 » Stop using Behaviour to define interfaces, use Protocol!
- 2021-06-13 » What I learned from implementing Combinators in 3 Elixir patterns
- 2020-07-24 » CSSKatas: A Better Way to Sharpen Your CSS Skills
- 2020-06-29 » Making Audit Logs on Hex.pm Public
- 2020-06-05 » Book Review: The Goal - A Process of Ongoing Improvement
- 2020-05-17 » Phoenix LiveView 简介
- 2020-05-09 » 如何在阿里云上部署 Dokku - 打造私有软件部署平台
- 2020-05-07 » OKR Case Study #4 - Key Results Don't Have to Be Numeric
- 2020-04-26 » OKR Case Study #3 - OKR is not about "YOU"
- 2020-04-23 » OKR Case Study #2 - Reduce emails from clients?!
- 2020-04-17 » OKR Case Study #1 - How to find KEY results?
- 2020-04-03 » Lessons Learned from Optimizing a Rails Endpoint by 100x
- 2020-02-26 » What is an Effective OKR?
- 2020-01-15 » 没有 if,怎么写代码? - GDCR 2019
- 2020-01-13 » How to Partially Restore a PostgreSQL Database?
- 2020-01-06 » How to Write Elixiry Ruby - Result Object
- 2019-12-31 » Growing a Result-Driven Mindset
- 2019-12-27 » 从单元测试到集成测试 - GDCR 2019
- 2019-12-17 » Why do we need OKR (Objectives and Key Results)?
- 2019-12-03 » 结对编程时思路不同,怎么办? - GDCR 2019
- 2019-11-19 » Fault-Tolerant GTD
- 2019-11-12 » Why Billing by Hours is a Bad Idea?
- 2019-11-01 » Every business is a relationships business - Million Dollar Consulting Review
- 2019-10-09 » How to Build Software Without Estimates
- 2019-10-08 » Isn't Class Violating Single Responsibility Principle By Definition?
- 2019-09-16 » Agile Is Continuous Learning
- 2019-09-05 » Discuss Ruby 3 and Open Source with Matz at RubyConf China 2019
- 2019-08-19 » 记一次「数独算法」工作坊
- 2019-08-16 » Use Return Value to Defer Decisions
- 2019-07-11 » 用 Tech Plan 来为开发提速
- 2019-07-10 » Do We Need a Better Medium for Representing Code?
- 2019-07-07 » How to Give/Receive Feedback?
- 2019-06-24 » Life Changing Tools (Book Review: Nonviolent Communication)
- 2019-06-14 » Make it Safe! (Book Review: Crucial Conversations)
- 2019-06-13 » 面向对象编程之我见
- 2019-05-27 » Estimating is Hard, Let's Cut Scope!
- 2019-05-22 » My GTD Workflow (2019 ver.)
- 2019-05-16 » Defining a MVP by Setting OKRs
- 2019-05-14 » Book Review: A Philosophy of Software Design
- 2019-05-11 » How to build a Minimum CMS in an Agile way
- 2019-04-09 » "Pattern Matching" When Rendering Views in Rails
- 2019-03-29 » Agile Podcast Recording
- 2019-03-17 » Keep Code Review In Scope
- 2019-03-12 » Test Suite as a Complexity Measuring Tool
- 2019-01-30 » 为什么 Native English Speaker 更容易写好代码?
- 2019-01-29 » My Advent of Code 2018 Recap
- 2019-01-18 » Writing Software v.s. Organizing Notes
- 2019-01-03 » How to pattern match a function in Elixir
- 2018-11-29 » Shall we test our Router?
- 2018-11-27 » $handle_undefined_function in Elixir/Erlang
- 2018-11-15 » Similarities between TDD and Management
- 2018-10-26 » Don't Repeat Your Domain Knowledge
- 2018-08-04 » How to do Outside-In TDD with Phoenix
- 2018-07-24 » 记一个由 Surge 更新发现的 Bug
- 2018-07-10 » TIL: mix test --stale
- 2018-06-14 » Elixir Pattern Matching on Struct Module
- 2018-04-09 » Book Review: The Mythical Man-Month
- 2018-03-27 » Learn Incremental Deployment the Hard Way
- 2018-03-06 » Book Review: Extreme Programming Explained: Embrace Change
- 2018-03-05 » Use prettify-symbols-mode to enable Iosevka ligatures for GNU Emacs
- 2018-03-02 » My org-refile workflow
- 2018-02-27 » Book Review: Fearless Rails Refactoring
- 2018-02-24 » Book Review: Smalltalk Best Practice Patterns
- 2018-02-17 » My 2017 Review
- 2018-02-12 » Tech Debts and Financial Debts
- 2018-01-29 » Searching Files in Finder using Natural Language
- 2018-01-28 » Using Vim/Emacs is like a refactoring process
- 2018-01-26 » A code formatter is a must-have tool in my workflow
- 2018-01-25 » Thoughts/Summary for Using Callbacks in Rails Applications
- 2018-01-22 » Compare Doom-emacs, Spacemacs, and vanilla Emacs
- 2018-01-21 » Thoughts/Summary for Writing Documentations
- 2018-01-19 » Book Review: 奇特的一生
- 2018-01-19 » Books I read in 2017
- 2018-01-08 » Book Review: Being Mortal
- 2018-01-01 » Book Review: Crafting Rails 4 Applications
- 2017-12-28 » Book Review: Programming Phoenix
- 2017-12-22 » Learnings from playing with FizzBuzz for 3 days
- 2017-12-20 » Error Message Really Matters
- 2017-12-18 » As the tests get more specific, the code gets more generic
- 2017-12-08 » Book Review: 99 Bottles of OOP
- 2017-12-07 » Add STI to a Legacy ActiveRecord Model
- 2017-12-07 » 给小白解释「面向对象」(问答体)
- 2017-12-01 » Write Custom RSpec Matchers to Simplify Your Specs
- 2017-11-28 » AWS Lambda is what Microservices should be like
- 2017-11-24 » Retrospect on Image Processing Using AWS Lambda
- 2017-11-17 » Safari 11 CJK 伪粗体问题
- 2017-11-16 » Sony WH-1000XM2 Review
- 2017-11-10 » Enabling Font Ligatures in emacs-mac-port
- 2017-11-08 » Migrate Surge using iMazing
- 2017-10-31 » Build an Image Resizing Microservice on AWS Lambda
- 2017-10-30 » How to do Code Review correctly
- 2017-10-27 » macOS High Sierra 下中文输入法突然消失
- 2017-10-26 » Thoughts on "Implementing a Strong Code-Review Culture"
- 2017-10-21 » Kingsman: The Goldren Circle Review
- 2017-10-20 » Ruby Tips from Ben Orenstein
- 2017-10-18 » GOOS: Build a Faster Feedback Loop
- 2017-10-11 » RubyConf China 2017 小记
- 2017-09-24 » 我是怎么练英语的
- 2017-09-17 » RSpec failures caused by I18n.locale
- 2017-08-30 » Show PR-like commits log in Magit
- 2017-08-23 » Sandi Metz's Rules for OOP
- 2017-08-09 » Use Hammerspoon to auto switch input methods
- 2017-06-18 » 我看程序语言的历史、现在与将来
- 2017-05-12 » My Review of Practical Object-Oriented Design in Ruby
- 2017-04-09 » Review of Refactoring: Improving the Design of Existing Code
- 2017-04-07 » Review of Objects on Rails
- 2017-04-05 » My Summary for Object-Oriented Programming
- 2017-03-04 » La La Land Review
- 2017-02-21 » Comparison between Poker II and New Poker II
- 2017-02-19 » Review of /Are your lights on?/
- 2017-02-05 » Why I give up Wubi
- 2016-06-03 » Lisp 的语言特点和价值浅析
- 2016-05-25 » Five ways to free up rootfs in Arch Linux
- 2016-05-08 » How do I use org-capture on Mac
- 2016-04-25 » Use xhyve as Docker client host
- 2016-04-25 » Develop in Docker I: Virtualbox file syncing bug
- 2016-04-14 » Use :var in code blocks
- 2016-04-10 » 《看海的人》书评
- 2016-01-28 » Add org-store-link Entry for elfeed
- 2016-01-15 » My 2015 Review
- 2016-01-14 » Why did I switch to Arch Linux
- 2015-12-19 » How To Use OS X With Keyboard Only
- 2015-12-11 » A Simple Introduction to Docker IX
- 2015-12-04 » A Simple Introduction to Docker III
- 2015-11-26 » A Simple Introduction to Docker II
- 2015-11-20 » My Ideal Editor
- 2015-11-13 » A Simple Introduction to Docker I
- 2015-11-06 » Emacs 25 compiled file conflicts with Emacs 24
- 2015-10-30 » Answers for Liqi Problems
- 2015-10-30 » Why Blog?