Prismatic Platform
Dispatches from the stack
Deep dives into platform evolution, engineering standards, architectural decisions, and the intelligence systems that power Prismatic.
Announcing: Kompendium epistemickΓ© a kognitivnΓ anihilace
We're publishing a Czech-language taxonomic system for phenomena of epistemic and cognitive annihilation β a defensive reference for psychiatrists, psychologists, philosophers, and epistemic-security researchers. Here's what's in it, why it exists, and how it integrates with the Prismatic platform.
Shipping Zola to GitHub Pages: A 2938-Broken-Links Postmortem
A single-day devops postmortem: taking a private Elixir umbrella repo and shipping a 2808-page static site to GitHub Pages under a subpath, from 2938 broken links to zero.
Supervision Trees for OSINT Pipelines: Let It Crash, Keep the Evidence
How Prismatic structures supervision trees so that a single flaky OSINT adapter never brings down a case. DynamicSupervisor, Task.Supervisor, and the one-for-one rule that saved production.
LiveView Hub Patterns: Building Intelligence UI That Survives Contact With Reality
Intelligence workflows demand UI that streams, degrades gracefully, and never deadlocks the BEAM. Here are the LiveView patterns Prismatic uses across /hub β async mounts, PubSub fan-out, and the one rule that prevents 90% of prod crashes.
Task.async_stream Patterns: The One OSINT Concurrency Primitive You Actually Need
You don't need a job queue for 50 parallel OSINT lookups. You need Task.async_stream with the right timeout, the right max_concurrency, and `on_timeout: :kill_task`. Here's the recipe and the three gotchas.
Color Team Operations: Red, Blue, Purple, and Why You Need All Three
Red finds the holes. Blue closes them. Purple makes sure they stay closed. A security program with only one color is a security program with a blind spot β and attackers find blind spots for a living.
LiveView Streams for Large Datasets: 10k Rows Without the Memory Bill
Phoenix LiveView streams solve a problem most dashboards pretend they don't have: the DOM keeps every row you ever rendered. Here's when to reach for streams, when to reach for pagination, and the memory math behind the decision.
From Bare Rescue to Typed Errors: How Prismatic Killed 6,000 Silent Failures
A `rescue _ -> :error` is a bug factory. It swallows the context that would have told you what went wrong. The ZERO doctrine banned them β here's what replaced them across 128 OSINT adapters.
Meilisearch for Intelligence Search: Typo Tolerance Is a Security Feature
Intelligence search is not product search. Users type 'Navigara' and the source says 'NavigΓ‘ra spol. s r.o.'. Exact match is worse than useless. Meilisearch + disciplined ranking makes the difference between finding the risk and missing it.
Dialyzer, @spec, and the Shape of Correctness
Dialyzer is not a type checker. It's a proof assistant that accepts anything you can't prove wrong β and that is exactly what you want for a 94-app umbrella. Here's how Prismatic uses @spec and success typing without it becoming busywork.
Circuit Breakers for Flaky OSINT Sources: Fail Fast, Recover Quietly
Some OSINT sources are up 99.9% of the time. Some are up 73%. Retrying a down source synchronously is how pipelines die. Circuit breakers turn a 30-second timeout into a 1-millisecond :circuit_open.
Observer in Production: The BEAM Introspection Nobody Talks About
:observer is the most underused debugging tool in the Elixir ecosystem. Attached to a running node, it shows you every process, every ETS table, every mailbox β live. Here's how to run it safely against prod.