People who shaped code-driven CAD

Lin Xin-Liang
(JustinSDK)

Taiwanese technical author, educator, and creator of dotSCAD—a library that brought a teacher's instinct for reusable ideas to OpenSCAD.

Taiwanese technical author and educator Lin Xin-Liang turned decades of public teaching into dotSCAD, a reusable mathematical vocabulary for OpenSCAD.

#openscad#dotscad#computational-geometry#generative-design#programming-history

Teaching in public

Lin Xin-Liang (林信良, 1975–2022) was known to Chinese-language programmers as 良葛格, to JavaWorld@TW readers as caterpillar, and to the OpenSCAD community as JustinSDK. Those names belong to one continuous body of work: learning difficult technical ideas, explaining them in public, and turning the reusable parts into tools for other people.

Lin maintained 良葛格學習筆記, or openhome.cc, and published more than a thousand technical documents across C, C++, Java, Ruby and Rails, Python, JavaScript, Haskell, and other subjects. He worked as a technical consultant at a Sun Microsystems training centre, served as an authorized Oracle instructor, moderated JavaWorld@TW, and wrote or translated a substantial catalogue of programming books.1林信良紀念專輯, iThome, accessed August 25, 2026.2林信良, iThome author profile and article archive, accessed August 25, 2026.3良葛格的Java之路:做有把握的事, iThome, December 30, 2008.

In April 2012 he began the 程式人 column for iThome. The publication's memorial collection records 459 columns over ten years—more than one million Chinese characters—covering programming practice, mathematics, algorithms, learning, and the culture around software development.1林信良紀念專輯, iThome, accessed August 25, 2026.2林信良, iThome author profile and article archive, accessed August 25, 2026. This scale matters because dotSCAD did not emerge separately from his teaching. It applied the same habit: identify the difficult, reusable idea; give it a clear interface; and leave an example that another person can change.

  1. Moved from electrical engineering into programming, technical writing, translation, and education.
  2. Shared tutorials through JavaWorld@TW and became a recognized Java author, consultant, and instructor.
  3. Published 459 iThome columns—more than one million Chinese characters—across software, mathematics, algorithms, and learning.
  4. Published reusable OpenSCAD modules and examples under JustinSDK, culminating in the 3.3 release.

From algorithms to geometry

Lin's later iThome writing makes the connection between education and computational design especially visible. In “Sources of inspiration for algorithmic creation”, he described a treble-clef dragon built by combining an Archimedean spiral, Catmull–Rom curves, path-following operations, and a cosine-controlled body. The finished dragon is expressive, but the method is also a lesson: complex form can come from a small vocabulary of understandable mathematical operations.4演算創作的靈感來源, iThome, September 19, 2022.

Other columns followed the same pattern. His writing on L-systems moved from formal grammars and turtle graphics to reusable fractal-generation processes.5碎形與L-system, iThome, May 28, 2020. His article on alpha shapes examined how a parameter changes the boundary recovered from a point set.6從凹包到alpha shape, iThome, October 17, 2022. A discussion of Sierpiński triangles connected the chaos game and iterated function systems with forms that extend naturally into three dimensions.7構造謝爾賓斯基三角, iThome, September 26, 2022.

Taken together, these articles show a consistent idea: algorithmic creation turns learning itself into a source of visual form. dotSCAD brought that idea into an OpenSCAD library.

dotSCAD: a reusable mathematical vocabulary

dotSCAD describes its purpose directly: reduce the burden of mathematics and algorithms when working in OpenSCAD. Its public modules and functions are organized so a modeller can use one focused operation without having to reproduce the derivation behind it.8dotSCAD 3.3, GitHub repository and API reference, accessed August 25, 2026.

The library ranges from familiar construction helpers—rounded solids, arcs, lofts, and sweeps—to a much broader computational-design vocabulary. It includes Bézier and B-spline paths, Archimedean and golden spirals, helixes and torus knots; transformations and cross-section generation; turtle graphics and two- and three-dimensional L-systems; noise, mazes, voxels, Voronoi structures, triangle algorithms, point sampling, polyhedra, and surface tools.8dotSCAD 3.3, GitHub repository and API reference, accessed August 25, 2026.9dotSCAD documentation, JustinSDK, accessed August 25, 2026.

This breadth is what makes dotSCAD historically interesting. It is not just a folder of shortcuts. Its structure reads like a curriculum for code-driven geometry: paths become cross-sections, cross-sections become surfaces, formal rules become drawings, and mathematical processes become editable models.

Paths and curvesArchimedean spirals, Bézier curves, splines, path sampling, offsets, and sweep operations.
Surfaces and extrusionParametric surfaces, height maps, polyhedra, box extrusion, and transformation pipelines.
Generative systems2D and 3D turtle graphics, L-systems, noise, mazes, and voxel-based construction.
Computational geometryTriangle algorithms, Voronoi structures, hull-related techniques, and point-selection helpers.

Try a dotSCAD idea

The quickest way to understand Lin's approach is to move from reading into a working model. Varcad's JustinSDK projects mount dotSCAD as a library, preserve the original source structure, and let readers edit parameters while watching the geometry change.

The featured study below focuses on the core operation in Lin's twist_bottle.scad example. The displayed code is an excerpt rather than a standalone program; the complete upstream source defines the selectable profiles and inner container. The Varcad gallery provides a runnable collection of preserved examples, while the focused quickstart introduces the same library with a smaller rounded-cube model.

twist_bottle.scadCore operation · excerpt
use <box_extrude.scad>

height = 100;
thickness = 1;
twist = 180;
slices = 200;

module bottle() {
  box_extrude(
    height = height + thickness,
    shell_thickness = thickness,
    twist = twist,
    slices = slices
  ) children();
}
Rendered preview of the dotSCAD twisted bottle model

Continuing influence

Lin died in 2022 at the age of 48. iThome assembled a memorial collection around his writing, and TVBS reported on programmers who remembered learning from his articles.1林信良紀念專輯, iThome, accessed August 25, 2026.10程式達人「良葛格」驚傳離世!全網悼:看他文章受益良多, TVBS News, November 16, 2022. In the OpenSCAD community, remembrances emphasized both his technical range and the playful ambition of models such as dragons and programmatically generated mazes.11JustinSDK / Lin Xin-Liang / 良葛格 (1975–2022), r/openscad community memorial, November 2022. Community comments are used here as qualitative evidence of influence, not as biographical authority.

The most useful way to carry that influence forward is not to treat the models as static pictures. They should remain inspectable programs. A reader should be able to follow a curve into its source, change a parameter, render the result, and reuse the technique in a different design.

References

  1. 林信良紀念專輯, iThome, accessed August 25, 2026.
  2. 林信良, iThome author profile and article archive, accessed August 25, 2026.
  3. 良葛格的Java之路:做有把握的事, iThome, December 30, 2008.
  4. 演算創作的靈感來源, iThome, September 19, 2022.
  5. 碎形與L-system, iThome, May 28, 2020.
  6. 從凹包到alpha shape, iThome, October 17, 2022.
  7. 構造謝爾賓斯基三角, iThome, September 26, 2022.
  8. dotSCAD 3.3, GitHub repository and API reference, accessed August 25, 2026.
  9. dotSCAD documentation, JustinSDK, accessed August 25, 2026.
  10. 程式達人「良葛格」驚傳離世!全網悼:看他文章受益良多, TVBS News, November 16, 2022.
  11. JustinSDK / Lin Xin-Liang / 良葛格 (1975–2022), r/openscad community memorial, November 2022. Community comments are used here as qualitative evidence of influence, not as biographical authority.
  12. OpenSCAD Advent Calendar 2022, OpenSCAD.