Write What You Absorb: The Life and Twenty-Year Technical Writing Journey of Hsin-Liang Lin (Liang Gege)
For more than two decades, whenever a software engineer in Taiwan hit a syntax error, the first lucid Chinese explanation they found on a search engine almost invariably pointed to the same destination: openhome.cc, the personal website of “Liang Gege” (Hsin-Liang Lin, 1975–2022).
His work spanned from BBS and web-forum notes in the dial-up era to nearly twenty systematic technical books, and from instructing at Sun Microsystems Educational Services to spending a decade writing 459 columns for iThome. Through relentless discipline and introspection, Lin demonstrated how an independent technologist, armed solely with rigorous understanding and lucid prose, could continually accompany two generations of Taiwanese developers on their self-taught journeys.
The Electrical Engineering “Deserter”: Turning Away from the Hsinchu Beaten Path
In the mid-to-late 1990s, Taiwan’s semiconductor and integrated circuit foundry boom was in full swing. Lucrative employee stock bonuses in the Hsinchu Science Park drew the island’s brightest engineering minds. For a graduate of the Department of Electrical Engineering at National Taiwan University (NTU), pursuing a master’s degree and joining the ranks of the park’s newly affluent tech elite was widely regarded as the golden path.
Yet during his undergraduate years, Lin recognized his genuine inclinations and personal limitations with unusual clarity. In a 2008 interview with iThome’s “IT People: Joys and Tribulations”, he confessed frankly: “During college, I bombed every course that started with the word ‘Electro-.’” Rigorous hardware and circuit theory dominated two-thirds of the EE curriculum, but what truly captivated him was the remaining one-third: a world of software woven purely from logic and abstract concepts.
During quiet night watches while serving his compulsory military service in Kinmen, Lin took stock of his own capital and inclinations. Pivoting toward computing meant walking away from much of his four years of hard-won hardware expertise, but he refused to be trapped by sunk costs. After his discharge, he made a decision that baffled his peers: leaving Taipei to return to his hometown of Kaohsiung, joining a fledgling software shop with only a handful of people as an entry-level programmer earning a modest monthly salary of NT$30,000.
Software resources were then relatively scarce in southern Taiwan. Lacking a formal computer science degree, Lin had to tackle low-level technical challenges head-on in real-world client projects. On the strength of intense self-study and hands-on practice, he was promoted to deputy manager of R&D within just a year and a half, boosting his salary to NT$53,000.
This trial by fire on the front lines forged the career philosophy he would stand by for the rest of his life:
I never make a turn without some measure of certainty.
In that interview, he laid out his well-known “Ten-Point Philosophy”: if your current capital equals ten points, taking a detour might forfeit six of them. But as long as you can focus the remaining four points and amplify them into seven or eight points of impact in your chosen domain, you have earned the right to make the turn. If you lack that certainty, your duty is to keep building your foundation steadily—never charge blindly into the dark.
NOTE
Further reading: The Long Way Around Was My Shortest Path: Why Steel Ball Run’s Lesson 5 Can’t Be Taught
Shanghai Jiao Tong and Fortuitous Encounters: From Forum Notes to Official Courseware
Around 2003, in the aftermath of the first dot-com bubble collapse, the small Kaohsiung firm where Lin worked began faltering, and signs of impending layoffs emerged. Through earlier work collaborations with mainland Chinese enterprises, Lin had noticed that their engineers possessed exceptionally solid technical foundations, and the depth of technical discussion in simplified-Chinese developer communities far exceeded his expectations.
Driven by intense curiosity and a keen sense of urgency, he resigned and traveled to Hong Kong to sit for the Joint Entrance Examination for Hong Kong, Macao, and Taiwan Students. He gained admission to the Department of Computer Application Technology at Shanghai Jiao Tong University to pursue a master’s degree.
Throughout his two years in Shanghai, Lin steadily turned the technical concepts he untangled into crisp, well-organized notes, publishing them on JavaWorld@TW—the epicenter of Taiwan’s Java developer community at the time—under the handle “caterpillar.”
His time abroad sparked encounters with two pivotal mentors:
- Lin Shang-chieh (Founder of JavaWorld@TW): He noticed that caterpillar’s posts were neither frantic calls for help nor flashy code snippets, but orderly, penetrating dissections of memory architecture, multithreading, and the Collections Framework. In caterpillar’s second year in Shanghai, as his savings ran dry, Lin Shang-chieh connected him with a publisher, leading to his debut book, Learning Java JDK 5.0 (2005, GOTOP Information Inc.).
- Wang Sen (Former Manager at Sun Microsystems Educational Services and author of Adventures in Java): In 2005, Lin returned to Taiwan for the JavaTwo conference, where he met Wang Sen. Deeply impressed by Lin’s writing and pedagogical clarity, Wang reached out over MSN Messenger to invite him to author official courseware. Operating purely on trust, Wang even advanced the full author fee before a single page was written, temporarily easing Lin’s financial strain in Shanghai.
Shortly thereafter, Wang urged him to return to Taiwan and join Sun Microsystems Educational Services as an instructor. When his elders expressed regret that he was leaving Shanghai Jiao Tong before completing his master’s thesis, Lin displayed his characteristic sober pragmatism:
I left when it was time to leave. I have no regrets.
He insisted that his foundational grasp of Java and object-oriented programming had been forged during his time at Jiao Tong; those two years in Shanghai were profoundly meaningful and anything but wasted.
At Sun, he was immediately thrown into brutal course preparations. Assigned to teach “Java Performance” for the first time without any existing curriculum on hand, he scoured technical monographs, tearing out any chapter that touched on performance to study it inside out.
The grueling pressure brought on a stomach ulcer, but the curriculum he produced became Sun’s official Chinese-language courseware for Java performance. More importantly, it codified his lifelong learning ethos: reject chewed-over secondhand fragments and go straight to source code and official specifications.
The Independent Author’s Survival Engine: Specifications, Discipline, and Anti-Cyclical Resilience
In Taiwan’s tech landscape, elite senior engineers typically climb the ranks to become chief architects at major enterprises, step into engineering management, or launch startups. After leaving Sun, however, Lin chose a path rarely traveled: returning to his hometown of Kaohsiung to operate as a full-time freelancer, independent technical author, and corporate consultant for more than a decade.
The life of an independent writer may look like freedom, but in practice it demands ferocious self-discipline. Sustaining his livelihood through book publishing, corporate training, and technical translation, he engineered a sustainable rhythm of writing and verification:
- Deep reading of primary specifications: From JDK specifications to API source code, he insisted on uncovering the foundational design motivations (“Why”) and engineering trade-offs, rather than merely memorizing syntax.
- Building hands-on prototypes: He constructed minimal runnable prototypes to probe edge cases repeatedly, verifying system behavior against specifications before committing words to paper.
- High-frequency output and feedback loops: He stress-tested his mental models through regular columns and public notes, systematically consolidating teaching insights into authoritative handbooks.
As he noted in his book introductions, his material was distilled from “more than a decade of hands-on training experience, synthesizing the conceptual hurdles, implementation snags, and application challenges encountered by real students”—authoring books derived from real learner friction, not regurgitating official documentation.
This methodology enabled him to navigate twenty years of shifting software paradigms with remarkable precision. During the bloated, convoluted heyday of J2EE, his early Spring Technical Handbook opened Taiwanese developers’ eyes to the power of POJOs and lightweight Inversion of Control (IoC). His subsequent Servlet & JSP Technical Handbook thoroughly deconstructed the HTTP request lifecycle and session management, becoming an evergreen standard across multiple editions.
When the industry pivoted toward functional paradigms, he published the Java SE 8 Technical Handbook, dissecting Lambdas and the Stream API, before branching into dynamic languages with comprehensive handbooks on Python and JavaScript. He once open-sourced the entire manuscript of his Java SE 6 Technical Handbook on GitHub. His handbooks also enjoyed long-standing simplified-Chinese editions in mainland China—so enduring that in 2025, nearly three years after his passing, Tsinghua University Press published the sixth edition of Learning Java.
Following the debut of Java 9 in 2017, Oracle transitioned from multi-year major releases to a fast-paced six-month release cadence. This shift dealt a severe blow to technical authors worldwide: a comprehensive tome taking a year to draft faced obsolescence within six months, leading many authors to lay down their pens entirely.
Faced with rapid release cycles, Lin devised a modular architecture for his books, cleanly decoupling content into two distinct tiers:
| Content Tier | Core Scope | Revision Strategy |
|---|---|---|
| Foundational Architecture | OOP polymorphism, JVM memory model, concurrency | Serves as the enduring backbone, remaining stable across releases |
| Progressive Features | Preview syntax (Records, Sealed Classes), new APIs | Updated dynamically via dedicated chapters and online sample repositories |
This decoupling strategy allowed him to absorb six-month release cadences with composure, steadily revising his flagship works all the way through Java SE 17 LTS while actively translating books on asynchronous Python and publishing material on Spring Boot.
A Million Words Over Ten Years at iThome: Linguistic Relativity, Storytelling, and Craftsmanship
In April 2012, iThome invited Lin to launch a recurring column titled “Programmer.” The column ran without interruption for an entire decade until his sudden passing in November 2022, spanning 459 installments and exceeding one million words. Here, he stripped away the minutiae of API syntax, lifting his sights to engineering culture, cognitive science, and the philosophy of language.
Across this ten-year body of work, he returned continuously to three central themes:
1. Linguistic Relativity: How Languages Shape Thought
His writing circled back persistently to the dialogue between language and cognition, echoing the Sapir-Whorf hypothesis: the programming language you use shapes how you decompose reality.
In his final column, “Major Languages That Influenced Me,” published on November 17, 2022, he reflected on the languages that reshaped his intellect: Java provided the bedrock for systematic learning, while Scala’s ambitious synthesis of object-oriented and functional paradigms delivered his first profound exposure to functional programming.
Among dynamic languages, JavaScript’s prototype chain dismantled his rigid class-based assumptions, later shaping how he implemented abstract syntax trees in his own toy language project (toy_lang).
Reflecting on Haskell, he wrote: “Viewing functional programming through the lens of Scala and JavaScript always felt veiled in mist.” Only by immersing himself in pure Haskell, with its algebraic data types and monads, could he truly comprehend the essence of map, filter, and fold. He acknowledged openly that he had never built anything with Haskell, but as he put it, “the purpose of learning Haskell is enlightenment.”
NOTE
Further reading: Three Cracks Beneath High Satisfaction: The 2025 Go Developer Survey
2. Cognitive Load and the Technical Storyteller
Lin served as a final judge for three iterations of the iThome Ironman Competition (including the 7th in 2014 and the 13th in 2021), spending weeks reviewing hundreds of multi-part technical blog series. In his seminal 2014 piece, “Telling Stories with Technical Elements,” he cut straight to the heart of the craft:
Writing code for machines for thirty consecutive days is easy… The true difficulty lies in being willing, for thirty days straight, to put yourself in the shoes of fellow programmers, striving to make them understand the technical elements you present. You must constantly ask yourself: “If I were the reader, would I want to finish reading this thirty-day story?”
This is precisely what cognitive psychology terms the “curse of knowledge”: once engineers grasp a concept, they struggle to fathom what it feels like not to understand it. Lin’s remedy was never technical bravado; it was radical empathy for other programmers, putting “making oneself understood” back at the heart of writing.
3. Design Principles and Software Craftsmanship
When it came to engineering methodology, Lin maintained a cool skepticism toward the industry’s habit of turning principles into dogma. In his 2015 column, “Random Musings on Design Principles,” he stated bluntly: “Principles exist to reveal just how STUPID code can be.” He criticized dogmatic fixation on rules like SOLID, calling out empty posturing and blind reverence that never translate into clean execution. The value of a principle, he argued, is simply to help you smell code rot, not to hang as an ornament on the wall.
An engineer’s dignity does not hinge on reciting grandiose slogans, but on confronting system boundaries honestly and producing clean, maintainable code.
Hacker Playfulness and Spatial Geometry: 3D Printing and dotSCAD
In the latter half of his career, Lin displayed the playful curiosity of a hacker in the purest sense, exploring the unknown. Unconstrained by commercial utility, he dove into 3D printing, designing and openly sharing printable mazes and mechanical toys while branching into computational geometry, fractal theory, and parametric 3D modeling.
Upon encountering OpenSCAD, an open-source script-based 3D modeler, he realized that its immutable, purely functional paradigm paired naturally with geometric algorithms. In his spare time, he created dotSCAD, an open-source library that effectively lowers the mathematical barrier to entry for developers performing complex surface calculations and geometric transformations.
The open-source project has attracted contributions from others, garnered over 900 stars on GitHub, and earned a spot among OpenSCAD’s officially recommended libraries. In his GitHub profile, he quoted the painter Jackson Pollock before adding his own quiet codicil:
It’s all a big game of construction—some with a brush, some with a shovel, some choose a pen. —Jackson Pollock
…and some choose code. —JustinSDK
“Caterpillar and Excavator”: The Shared Legacy and Digital Immortality of Openhome
Lin’s personal technical notebook was originally hosted at caterpillar.onlyfun.net. That domain name, “onlyfun,” encapsulated his original impulse for programming: “solely for the joy of it.” As his notes expanded across multiple languages, the site found its permanent home at openhome.cc, where a personal manifesto greeted visitors on the revamped homepage:
The passage captured the dual metaphor behind his moniker: starting out as a humble, slow-moving caterpillar, yet through tireless daily excavation of knowledge, eventually transforming into the heavy machinery of a Caterpillar excavator—clearing a path forward for himself and fellow travelers alike.
Tucked quietly inside the <meta> tags of the homepage source code was a personal credo he wrote for himself:
Write what you absorb, not what you think others want to absorb.
He refused to chase ephemeral marketing buzzwords or trending hype; every single note was a faithful reconstruction built on thoroughly digesting official specifications. This posture—meeting readers as equals and sharing without condescension—became one of the most beloved fixtures of Taiwan’s open technical notebook culture.
When Lin passed away after an illness in November 2022 (at the age of 48), tributes poured in from across the developer community. Many echoed the same sentiment: “On our journey as programmers, practically everyone in our generation was helped by Liang Gege in one way or another.” The international open-source community also opened an issue in the dotSCAD repository titled “RIP Lin Xinliang (Liang Gege) 1975~2022” to pay homage; to this day, that issue remains open.
To preserve this shared commons, community members voluntarily organized a mirror archive. Today, openhome.cc remains freely accessible on the web, continuing to serve every new developer taking their first self-taught steps into software.