From f70640148a2952271e4b3e0788e0aad3a7203e7d Mon Sep 17 00:00:00 2001 From: Sadeep Madurange Date: Sun, 24 May 2026 11:17:37 +0800 Subject: Minor improvement to Bumblebee, geometry, urn posts. --- _log/2d-geometry-kernel.md | 35 +++++++++++++++++------------------ _log/bumblebee.md | 13 +++++++------ _log/vcs-1.md | 38 +++++++++++++++++++------------------- 3 files changed, 43 insertions(+), 43 deletions(-) diff --git a/_log/2d-geometry-kernel.md b/_log/2d-geometry-kernel.md index 60d76af..385df18 100644 --- a/_log/2d-geometry-kernel.md +++ b/_log/2d-geometry-kernel.md @@ -6,33 +6,32 @@ layout: post Written in 2026, backdated to 2022. -Joined the real estate firm mid-migration (C# to Java). The Java building -design system lacked a geometry kernel; project had stalled. +Joined real estate firm mid-migration (C# to Java). Java version lacked a +geometry kernel; project stalled. -Small geometries (hundreds of points)—mostly 2D. No frame budget or low-latency -requirements. Architects and structural engineers supplied the test cases. -Numerical parity with Rhino was mandatory. +Geometries were small, mostly 2D—no frame budget or low-latency constraints. +Architects supplied test cases and tolerances; numerical parity with Rhino was +mandatory. Implemented polygon clipping with Sutherland–Hodgman. No drama. -Polygon offsets had always been problematic. Architects flagged two Z and -H-shaped floor plans where offsets produced self-intersections that tripped -Rhino. Instead of straight skeletons, implemented a custom solver that fixed -invalid loops by backtracking. - Fortune's algorithm for Voronoi diagrams was a missed opportunity. Implemented the beach line with an array (O(N2)). Didn't pursue the balanced binary tree (O(N log N))—ran out of time. -Finding the largest inscribed rectangle was messier; no solution covered both -convex and concave polygons. Found a paper on the convex case but couldn't -bridge the gap from theory to implementation. Fell back to a brute-force grid -search: 12% gain over the existing approach, but not the true optimum. +Polygon offsets had always been problematic. Two Z and H-shaped floor plans +produced self-intersections that tripped Rhino. Straight skeletons had too many +edge cases we didn't need—hard to get right under time pressure. Implemented a +custom solver that fixed invalid loops by backtracking. + +Finding the largest inscribed rectangle was messy. No single algorithm covered +both convex and concave shapes. Found a paper on the convex case, but couldn't +translate the math to code. Fell back to a brute-force grid search: 12% gain, +but not the true optimum. -Rhino uses points, vectors, planes, and linear algebra (via BLAS). Java system -used Binary Space Partitioning. The two were numerically incompatible. Replaced -BSP trees with vector-based structures. JBLAS aligned the linear algebra with -Rhino's. +Rhino's BLAS-based linear algebra and Java's Binary Space Partitioning were +numerically incompatible. Replaced BSP trees with vector-based structures. +JBLAS reconciled most floating-point issues. Migration resumed. No regressions in the building layouts. diff --git a/_log/bumblebee.md b/_log/bumblebee.md index a5e761d..f3598ff 100644 --- a/_log/bumblebee.md +++ b/_log/bumblebee.md @@ -6,10 +6,10 @@ project: true thumbnail: thumb_sm.png --- -One year at the trading firm. Scripts are saturating CPUs, stalling servers; +One year at trading firm. Scripts are saturating CPUs, stalling servers. Forced to restart them. -2025-02: Built a tool to record browser sessions and synthesize better scripts. +2025-02: Built tool to record browser sessions and synthesize better scripts.