Open Source

i18n, a11y, and Shareable Lab State in the Browser

Published: June 13, 2026 Reading Time: 3 min

Shipping an educational lab to a global audience means more than translation strings. Bio-Dynamics adds RTL layout for Persian, keyboard region shortcuts, ARIA live announcements, touch gesture hints, and URL-encoded lab checkpoints so teachers can share a mid-simulation state without a backend. Companion resource Bio-Dynamics: Microbiome Sandbox Try ?lang=fa or copy a lab link after running a scenario — source for i18n and labState.ts is on GitHub. github.com/omidfarhang/example-projects/labs/microbiome-sandbox Open live lab View source on GitHub Lightweight i18n without a framework Locales live in src/i18n/en.ts, de.ts, and fa.ts. A small t() helper resolves dot-path keys with parameter interpolation: ...

Continue Reading

Catalog-Driven Dashboard: Strains, Stressors, and Action Impact

Published: June 12, 2026 Reading Time: 3 min

The Bio-Dynamics dashboard exposes a lot of buttons: regional stressors, inoculations, environment sliders, and four catalog tabs for strains, prebiotics, postbiotics, and products. The trick is not rendering HTML — it is keeping the catalog honest as content grows. This post explains the data-first layout and the action impact preview panel. Companion resource Bio-Dynamics: Microbiome Sandbox Hover strains and products in the live lab to see impact preview, or browse the catalog TypeScript files on GitHub. github.com/omidfarhang/example-projects/labs/microbiome-sandbox Open live lab View source on GitHub Data catalogs, not hard-coded panels Almost every control maps to a typed catalog under src/data/: ...

Continue Reading

Macro/Micro 3D: One Scene Graph, Seven Tissue Builders

Published: June 11, 2026 Reading Time: 3 min

Most microbiome diagrams are flat. Bio-Dynamics tries the opposite: a single Three.js scene that starts as a rotatable body map, then animates into a tissue cross-section when you pick a region — with microbe meshes, SCFA particles, and fog density tied to live simulation state. This post covers the visualization layer. Companion source and the full architecture write-up are in the repository. Companion resource Bio-Dynamics: Microbiome Sandbox Open the live lab, zoom into gut or nasal tissue, then inspect the Three.js scene code on GitHub. github.com/omidfarhang/example-projects/labs/microbiome-sandbox Open live lab View source on GitHub One scene, two modes SceneManager owns a single WebGL scene with two interaction modes: ...

Continue Reading

Designing a Deterministic Microbiome Simulation Without Overclaiming Science

Published: June 10, 2026 Reading Time: 3 min

Bio-Dynamics is an educational 3D lab, not a clinical simulator. That constraint shaped every decision in the simulation layer: reproducible ticks, scalar tissue state, capped agent counts, and inflammation that emerges from pressure instead of jumping on every button press. This post walks through the engine design. Companion resource Bio-Dynamics: Microbiome Sandbox Run the live lab or inspect the simulation source — tick engine, golden tests, and full docs in the repository. github.com/omidfarhang/example-projects/labs/microbiome-sandbox Open live lab View source on GitHub Why deterministic? Interactive demos fail the educational test when the same button sequence produces different outcomes on refresh. Readers cannot build intuition from noise. ...

Continue Reading

Building Bio-Dynamics: An Educational 3D Microbiome Lab in the Browser

Published: June 9, 2026 Reading Time: 4 min

I write a lot about Angular platforms, monorepos, and production frontends. Bio-Dynamics is different: a browser-only educational lab where you rotate a 3D body map, zoom into tissue, and run deterministic probiotic scenarios tied to health articles on omid.dev. It started for three reasons — a human one, a developer-story one, and a career one. This post is the anchor for that project. Deeper technical posts follow in a short series linked at the end. ...

Continue Reading

Why I Started Adding Full Source Code to My Blog Posts

Published: June 1, 2026 Reading Time: 4 min

One thing I have always found frustrating in technical writing is the gap between a nice explanation and code you can actually explore. A post can explain an idea clearly, but if the code is only a few isolated snippets, the reader still has to imagine the project around it. Where does this file live? What package versions were used? How do the pieces connect? Can I run it, or is it only illustrative? ...

Continue Reading