글

The "optimal" plant layout flooded on its own ground — GPU flood simulation, OpenUSD and Omniverse Kit in a generative-design loop

이미지
In short A generative-design (GA) tool picked a water-treatment-plant layout 6.3 % cheaper than the current plan. It got there by cutting the whole plant into a basin 1.3–3.4 m below original ground. Its flood map could not see that, because the map was run over the original ground. I re-ran rain and inflow over the ground each layout creates with a 2D shallow-water solver in NVIDIA Warp (GPU, 4.7 s per plan). The optimum flooded at 3 facilities, and after repair it lost its lead. The result agreed with HEC-RAS 2D (flooded-area IoU 0.94, danger verdicts 14/14). OpenUSD is the source of truth: the plans are variants of one file and the design numbers are attributes (150 checked, 0 mismatches). Review happens in Omniverse Kit. Four AI surrogates were tested; none was safe enough to judge, so AI only suggests evaluation order. Site, terrain and unit costs are synthetic or assumed; no real client or site data. What it looks like in Omniverse This is the GA's optimum, plan C, in ...

Knowledge Graph Audit: Six of Mine, Twelve Capabilities, No Complete Column

이미지
I had built the same layer six times without noticing. Over the past few years a knowledge graph kept appearing inside otherwise unrelated work. It turned up as a routing viewer for one client, as a layout explorer for another, as a word map I use for teaching, as a live add-in that watches a Revit model while somebody edits it, and as a governance layer over a personal vault of notes. Each one was built for its own reason on its own schedule, and not one of them borrowed a line of code from the others. Last week I stopped and opened all of them at the same time. The trigger was a complaint I had about my own tooling, and the complaint had three parts: none of these tools handled bulk, none of them offered more than one way of looking at the same data, and none of them showed the process by which an answer was reached. I wanted to know whether the fix was a new tool or something I already owned without having collected it. This post is the audit, and the short version is that the sp...

KMAP: A BIM Knowledge Map in Two Languages, and Why Position Had to Mean Something

이미지
Every BIM class I teach runs into the same wall. The vocabulary is not the difficult part, because IFC, ISO 19650, level of development, the common data environment, clash detection and digital twins are all terms that people can define on request. The difficulty is that almost nobody can show how those terms connect to each other on a single page, so each one arrives as an isolated fact and the shape of the field never appears. So I built the page. It is one map of BIM containing 73 terms, 92 relations and 8 clusters, and it exists in Korean and in English with the same structure on both sides. This post shows the map, explains why the clusters are cut the way they are, and then covers the two rounds of tool updates that building the map forced me to make. One page of BIM Solid outline means a person confirmed the term. Dashed outline means the term is still an unreviewed AI draft. At the moment exactly one term out of 73 is confirmed, and the legend prints that accounting in...

Dynamo Generative Design for Water Treatment Plant Layout

At Autodesk University 2025 I had about three minutes. The segment sits at 27:30 inside Sol Amour's session Exploring the Dynamo Product Road Map and Vision for the Future , which runs 46:30 in total, and the subject was water treatment plant layout generated with Generative Design. Three minutes is a reasonable amount of time to demonstrate that something works. It is nowhere near enough time to show another engineer how to rebuild it. This month the same material had to become a twelve-hour course, delivered over two days to practising engineers at a public-sector training academy. Expanding a three-minute demo by a factor of two hundred and forty sounded absurd when I first wrote the number down, and then I built the curriculum and discovered that the ratio was never the interesting part. A demo and a course are not the same content played at different speeds. They are largely different content, and the portions that survive the translation are not the portions I would have ...

Claude Remote Control: Why My Phone Could Not Start a Session

 Research Log [2026 08 16]: Diagnosing and Automating a Phone-to-PC Remote Control Link for an LLM Agent 1. Objective Driving an LLM agent on a desktop machine from a phone is useful for a specific reason. The agent operates on the real files that exist only on that machine, including models, scripts, and drawings, so work started at the desk can be continued while away from it. A cloud session cannot do this, because the files are not there. The link had been in use for about a month and it stopped working one morning. This log documents the diagnosis, the three separate causes that were found underneath the failure, and the configuration that now survives a reboot. It also documents six errors in my own diagnostic reasoning, because those errors consumed roughly five hours and are more generally useful than the fix itself. 2. Summary of Work The failure had three independent causes that happened to coincide. A refresh token had expired on a thirty-day clock, an autostar...

AEC 3D Viewers: What 32 Tools Chose, and a 5x Speed Gap

이미지
 Over the past year I built five different 3D viewers for AEC work - routing, structural review, tunnel sections, a Revit perspective tool, a spreadsheet-to-3D viewer. Before I trusted my own instincts about how to build them, I did two things: I profiled all five on the same GPU, and I studied how 32 other AEC 3D tools - Autodesk Forma, Speckle, TestFit, xeokit, Bentley iTwin, and more - solve the same problem. This post is both halves: what the industry chose, and then what my own measurements showed. The short version is that rendering is a commodity, and the interesting decisions are everywhere else. Part 1 - What 32 AEC viewers actually chose I expected a mess of proprietary engines. Instead the choices collapse into six patterns, and the deciding question is never "which renderer is best" - it is "what is our actual moat."

Parsing 149 GB of JSON Without Loading It Into Memory

이미지
  Part 9 of a series — a Dynamo tunnel geometry that was already finished, a 39-sheet Excel workbook it had never been wired to, the web viewer built to referee the two, and the Revit add-in at the end of it. When the work stopped, it had left 149 GB of snapshots on a desktop drive. The obvious next task was to delete them. This post is about what happened when I tried to establish that deleting them was safe — which turned out to be a longer job than the deletion, and ended with a different answer than the one I started with.