Hanwen ZhangWhat are Containers, Images, and Volumes in the Docker EngineDocker provides a consistent, reproducible, and isolated environment for applications, solving many of the problems associated with running…Jun 8Jun 8
Hanwen ZhangSidekiq and Redis in Ruby-on-RailsHandle background processing and job queuingMay 18May 18
Hanwen ZhangSystem Design Points to Consider and Architectural Design Goals At WorkSoftware design at the high level is referred to as “Architecture.” The simpler you can keep the system, the better.Mar 5Mar 5
Hanwen ZhangProcess v.s. Thread & Background Processing with Worker & Context Switching in O.S.Process v.s. ThreadDec 18, 2023Dec 18, 2023
Hanwen ZhangWhat Makes a Good EngineerThe foundation of enginerity is to seek the truth.Nov 21, 2023Nov 21, 2023
Hanwen ZhangDifferent Types of Software Testing (Unit/Integration/E2E) and TDD/BDD TechniquesSoftware Testing helps ensure quality, prevent bugs, reduce development costs, and improve performance. Both inspection and testing are…Oct 9, 2023Oct 9, 2023
Hanwen ZhangHow JavaScript/Node Works Behind the SceneA “high-level single-threaded, garbage-collected, interpreted (or just-in-time compiled), prototype-based, multi-paradigm, dynamic language…Sep 18, 2023Sep 18, 2023
Hanwen ZhangA Quick Overview of Code Smells and Refactoring Techniques by Martin FowlerRefactoring is a systematic process of improving code by transforming the messy dirty code into clean code and simple design that is easy…Aug 13, 2023Aug 13, 2023
Hanwen ZhangStructural and Behavioral Design Patterns with Java Coding ExamplesKey Takeaways of Structural and Behavior Design Patterns for Java Design Patterns, 2nd Edition by Vaskaran SarcarAug 12, 2023Aug 12, 2023
Hanwen ZhangOverview of Server-Side Rendering v.s. Client-Side Rendering and Next.jsUse CSR if a site is under development, like a dynamic SPA handled by ReactAug 6, 2023Aug 6, 2023