AHA Moments

Kickstart the topic of system thinking

November 12, 2023

What's system thinking? It's the realisation that individual events are not the cause but the result of a wider system traced back to way earlier. It's when more focus are put on the interactions of parts rather than themselves. "Thinking in Systems…

Progress on my learning of cognitive biases and emotional control

July 09, 2023

Conscious control of emotion has been a ever-lasting struggle with myself. Many times I find myself in the middle of aftermath of instinctive emotional response, bewildered why it ended up there. On top of that, in less serious but more common…

Every decisions in architecture is about trade-off: Review of Software Architecture: The Hard Parts

May 31, 2023

The sub title of the book is "Modern Trade-off Analyses for Distributed Architectures", which perfectly summarizes the key topics of the book: distributed system and trade-offs. What makes this book stand out, in my opinion, is the latter. What makes…

Notes on Devoxx UK 2023

May 11, 2023

Developer Jox by Sven Peters from Atlassian Simple process could be automated, like poking people to review code Measure developer joy with 8 metrics Speed to ship Waiting time Independence Access to tools Effort managing external standards Managing…

Five dysfunctions of a team is a must-read for all

July 30, 2022

When reading the book, I had the impression that it's not only about workplace collaboration, it's the utopia we'd like to achieve in all our society. A place You could comfortably expose your vulnerability, knowing that it won't be leveraged against…

Thought after joining second job in UK

June 25, 2022

I left Codurance this April and joined an online mortgage platform company, named Landbay. So far, the challenges and the novel experiences have been more or less as I had expected before joining. It's a good timing to record the fresh thoughts…

Using systemd drop-in configuration to allow remote docker host

January 10, 2022

Summary It's supposed to be an easy task, but the technical loophole at every step make it harder than expected. The problem I was trying to solve is to allow myself working on a M1 macbook with some x86 only docker images running on a Ubuntu box at…

Async Vue lifecycle hook

January 07, 2022

Summary For who is looking for an approach to ensure async operation such as backend data loading is done in created lifecycle hook, this blog hopes to shed some light and reveal under the hood mechanism for the sake of other scenarios. Final…

A real case study of distributed messaging - explicit contract, business logics driven and more

November 27, 2021

Summary This article is about a real case in my project to deliver a real-time feature, which relies on distributed messaging between service boundaries. Instead of a pure technical literature on choice of tools or coding approaches, or the…

Why it's hard to write notes for [the Secrets of Consulting]

June 26, 2021

It's a peculiar book. the Secrets of Consulting by Gerald M.Weinberg is a mixture of insights, anecdotes, fabricated rules and invitation of further thoughts. It could be compared to Goals or The Phoenix Project which embrace the style of novels…

Tricks to read legacy code

January 12, 2021

Though it's always a fancy thing to start with a greenfield, the same chances are that we start with a codebase having been there, large or small, messy or tidy. Reading an existing codebase could be a preparatory work before a project (as mentioned…

My work environment setup

September 20, 2020

Hardware Macbook Pro 13-inch 2018: Nowadays fast SSD and at least 16 gigabytes of memory is the lowest bar for a development box Normal mouse and normal keyboard: I'm not even using mechanic keyboard, might due to their noises. I'm still using a ten…

Book review on [The Software Craftsman] by Sandro Mancuso

September 20, 2020

Summary There have been a whole bookshelf of books, if not more, on the market about software development practices, both methodological and practical approaches. They are also covered in the book The Software Craftsman by Sandro Mancuso, with a…

Testing strategy in real cases

September 20, 2020

This is a topic I'm not capable to cover succinctly yet. I'll try my best at the moment and revisit later. Why tests are valuable Confidence in implementation Freedom of change Act as documentation Reduce costly debugging All practices come with…

How to work with huge git repo

August 08, 2020

Background Monolith doesn't only bite you in one way. Lately I have been in a project with thousands of developers working on the same git repo. Every day there would be dozens of new branch and hundreds of new commits. Don't mention that some guys…

Reading [So you want to talk about race]

July 19, 2020

Summary For the motivation we are all aware of, I finished this book a colleague mentioned. This has been a self-discovery read with frequent rejection at first and ensuing doubt then uncertainty. The author, Ijeoma Oluo, combined the ideology with…

How I reinstall macbook

June 21, 2020

Why I've never actually cleaned my Macbook system since my first use of it even the current Macbook has been my third one. The migration experience has always been perfect, and I don't really feel any slowness due to the growing system. Somehow…

Book review on [The Phoenix Project]

June 14, 2020

Praise The Phoenix Project is a must read for anyone serious about modern IT industry. Its format in novel set the scene for the readers whom are brought back to their daily life: endless task queue, unsatisfied boss, and worst of all, tensioned…

Understanding wait time versus utilization - from reading Phoenix Project

May 18, 2020

Source of the confusion When reading the novel book on software development, Phoenix Project, one formula kept popping up and caused an enduring confusion in me. This is the chart I take directly from the book. It's involved in a discussion about…

Transducers in Clojure Explained

April 13, 2020

If you've read the official article and still feel confused, you're not alone. So here I try to articulate it with my own words and examples. Transducing is an idea based on reducers. It's introduced into Clojure since 1.7, and there's not really a…

Takeaway on Teaching Apprentices

March 15, 2020

Background In my current workplace Codurance, there's a program called Software Craftsman Apprenticeship in which developers with working experience but not fully ready to be a Software Craftsman are recruited with salary. They will take a three…

The story of debugging a failure of apt-update in Docker container

February 16, 2020

Summary This blog is about how I encounter an unexpected issue while maintaining the AWS deployed machine. Plus how I found out the true culprit and solve it acceptably for now. Also, the joining of my colleagues eased the pain a lot. Brief take away…

Approaches to Installing Ubuntu along with Windows 10

February 07, 2020

Why I've got a Intel Skull Canyon mini PC box at home with Windows 10 installed. Most of time it's only used for watching online stream on projector and as light gaming pc for my wife for Planet Zoo. Still MacBook is my main working platform but I am…

Thoughts about Practices/Principles behind Good Design (Part 1)

September 10, 2019

Object Calisthenics It’s one of my favorite practices for clean code. It seems a bit strict and hard to follow at first encounter, yet proves profitable if you could stick with it or at least have those principles in mind. I believe the name comes…

First impression of Event Storming

August 28, 2019

You may have heard of Event Storming before, or maybe not. Yet today is the first time I kinda have a grasp of what that amazing tool is about. What’s more, we practiced that on a user story kata and the process evoked a lot of thinking inside me. I…

Very Incomplete Summary of 'Learning How To Learn'

August 20, 2019

Before we started apprenticeship in Codurance, there was a list of recommended readings all of which were quite valuable and worth an attentive reading. Yet among other topics like apprenticeship program itself, TDD, etc, I found this non-technical…