44 < meta charset ="UTF-8 " />
55 < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
66 < title > Entangled Code — David Coldeira</ title >
7- < meta name ="description " content ="David Coldeira — full-stack Python engineer building production systems with LLMs in them: an agentic assistant over a live laboratory database, an LLM-powered route planner, a self-hosted fine-tuned model, a local-first coding agent built for data residency. Also home of QRL, a relations-first quantum programming language . " />
7+ < meta name ="description " content ="David Coldeira — a quantum programming language (QRL), a fine-tuned assistant that runs it live (Bell), and the local-first coding agent used to build both (Froe). Also production AI engineering: an agentic assistant over a live laboratory database, an LLM-powered route planner . " />
88
99 < link rel ="canonical " href ="https://entangledcode.dev/ "/>
1010
1717 < meta property ="og:type " content ="website "/>
1818 < meta property ="og:url " content ="https://entangledcode.dev "/>
1919 < meta property ="og:title " content ="Entangled Code — David Coldeira "/>
20- < meta property ="og:description " content ="Production AI engineering with physics-grade rigour. LLM systems that run in production , and QRL, a relations-first quantum programming language . "/>
20+ < meta property ="og:description " content ="A quantum language, a fine-tuned assistant that runs it live , and the coding agent used to build both. Plus production AI engineering with physics-grade rigour . "/>
2121 < meta property ="og:image " content ="https://entangledcode.dev/og-image.png "/>
2222
2323 < meta name ="twitter:card " content ="summary_large_image "/>
2424 < meta name ="twitter:title " content ="Entangled Code — David Coldeira "/>
25- < meta name ="twitter:description " content ="Production AI engineering with physics-grade rigour. LLM systems that run in production , and QRL, a relations-first quantum programming language . "/>
25+ < meta name ="twitter:description " content ="A quantum language, a fine-tuned assistant that runs it live , and the coding agent used to build both. Plus production AI engineering with physics-grade rigour . "/>
2626 < meta name ="twitter:image " content ="https://entangledcode.dev/og-image.png "/>
2727
2828 < style >
227227 border-radius : 4px ;
228228 }
229229
230+ /* ── Connected system flow ── */
231+ .flow { display : flex; align-items : stretch; gap : 0.5rem ; margin-top : 1.75rem ; }
232+ .flow-step {
233+ flex : 1 ;
234+ background : var (--surface );
235+ border : 1px solid var (--border );
236+ border-radius : var (--radius-lg );
237+ padding : 1.35rem 1.35rem 1.25rem ;
238+ display : flex;
239+ flex-direction : column;
240+ gap : 0.4rem ;
241+ position : relative;
242+ }
243+ .flow-num {
244+ width : 22px ; height : 22px ;
245+ border-radius : 50% ;
246+ background : var (--primary-glow );
247+ color : var (--accent );
248+ font-size : 0.75rem ;
249+ font-weight : 700 ;
250+ display : flex; align-items : center; justify-content : center;
251+ margin-bottom : 0.15rem ;
252+ }
253+ .flow-step h3 { font-size : 1.05rem ; font-weight : 700 ; letter-spacing : -0.01em ; }
254+ .flow-tag { font-size : 0.7rem ; font-weight : 600 ; color : var (--accent ); letter-spacing : 0.04em ; text-transform : uppercase; }
255+ .flow-step p { font-size : 0.875rem ; color : var (--muted2 ); line-height : 1.6 ; flex : 1 ; margin : 0.2rem 0 0 ; }
256+ .flow-arrow {
257+ display : flex; align-items : center; justify-content : center;
258+ color : var (--muted ); font-size : 1.1rem ; flex : 0 0 auto; width : 1.5rem ;
259+ }
260+ @media (max-width : 720px ) {
261+ .flow { flex-direction : column; }
262+ .flow-arrow { transform : rotate (90deg ); width : auto; padding : 0.15rem 0 ; }
263+ }
264+
230265 /* ── Project cards ── */
231266 .cards { display : grid; grid-template-columns : 1fr 1fr ; gap : 1rem ; margin-top : 1.5rem ; }
232267 .card { background : var (--surface ); border : 1px solid var (--border ); border-radius : var (--radius-lg ); padding : 1.25rem 1.35rem ; display : flex; flex-direction : column; gap : 0.5rem ; }
271306 entangled code
272307 </ div >
273308 < div class ="nav-links ">
274- < a href ="#ai " class ="hide-mobile "> AI engineering </ a >
275- < a href ="#qrl " class ="hide-mobile "> QRL </ a >
309+ < a href ="#system " class ="hide-mobile "> QRL · Bell · Froe </ a >
310+ < a href ="#work " class ="hide-mobile "> AI engineering </ a >
276311 < a href ="https://dcoldeira.github.io " class ="hide-mobile "> Blog</ a >
277312 < a href ="https://github.com/dcoldeira " class ="hide-mobile "> GitHub</ a >
278313 < a href ="mailto:david@entangledcode.dev " class ="btn btn-outline "> Contact</ a >
282317 <!-- Hero -->
283318 < section class ="hero ">
284319 < div class ="hero-label "> David Coldeira · Bristol, UK</ div >
285- < h1 > Production AI engineering .< br > < span > Physics-grade rigour .</ span > </ h1 >
320+ < h1 > A quantum language .< br > < span > An assistant that runs it live .</ span > </ h1 >
286321 < p >
287- I am a full-stack Python engineer who builds and runs production systems end to end,
288- and I put language models inside them only where their output can be verified.
289- Ten years in software, a physics degree, and a quantum programming language on the side.
322+ QRL is a relations-first quantum programming language with a type-level soundness result no
323+ existing quantum language can state. Bell puts it in front of anyone — plain English in, real
324+ QRL code executed, real numbers out, running live today. Froe is the coding agent I built and
325+ use to develop both. Ten years in production software and a physics degree underneath all of it.
290326 </ p >
291327 < div class ="hero-actions ">
292- < a href ="#ai " class ="btn btn-primary "> What I have shipped </ a >
293- < a href ="https://www.linkedin.com/in/dcoldeira " class ="btn btn-outline "> LinkedIn </ a >
328+ < a href ="#system " class ="btn btn-primary "> See how it fits together </ a >
329+ < a href ="https://bell.entangledcode.dev " class ="btn btn-outline "> Try Bell </ a >
294330 < a href ="mailto:david@entangledcode.dev " class ="btn btn-outline "> Email</ a >
295331 </ div >
296332 </ section >
297333
298- <!-- AI engineering -->
299- < section class ="section " id ="ai ">
300- < div class ="section-label "> AI engineering in production </ div >
301- < h2 > Language models with a verifier around them </ h2 >
334+ <!-- The connected system: QRL, Bell, Froe -->
335+ < section class ="section " id ="system ">
336+ < div class ="section-label "> The connected work </ div >
337+ < h2 > A language, an assistant for it, and the tool that builds both </ h2 >
302338 < p >
303- The pattern in everything below is the same: the model does the concentrated reasoning,
304- deterministic code checks the result before it reaches a user or a database, and
339+ Three pieces, one practice: describe the physics precisely, make it usable by someone who isn't
340+ its author, and build it all with a tool that respects where the code and the data are allowed
341+ to live.
342+ </ p >
343+
344+ < div class ="flow ">
345+ < div class ="flow-step ">
346+ < div class ="flow-num "> 1</ div >
347+ < h3 > QRL</ h3 >
348+ < div class ="flow-tag "> Relations-first quantum language</ div >
349+ < p >
350+ Causal structure as a type-level primitive. A program that type-checks as < code > Switch(d)</ code >
351+ is provably causally nonseparable — a result no existing quantum programming language can state.
352+ </ p >
353+ < div class ="card-links "> < a href ="https://github.com/entangledcode/qrl "> GitHub</ a > </ div >
354+ </ div >
355+ < div class ="flow-arrow " aria-hidden ="true "> →</ div >
356+ < div class ="flow-step ">
357+ < div class ="flow-num "> 2</ div >
358+ < h3 > Bell</ h3 >
359+ < div class ="flow-tag "> Fine-tuned assistant, live now</ div >
360+ < p >
361+ Plain English in, real QRL code executed, real numbers out — not the model guessing a number.
362+ Provider-swappable: running on Mistral (EU-hosted) today, a self-hosted fine-tune in standby.
363+ </ p >
364+ < div class ="card-links "> < a href ="https://bell.entangledcode.dev "> Try it — bell.entangledcode.dev</ a > </ div >
365+ </ div >
366+ < div class ="flow-arrow " aria-hidden ="true "> →</ div >
367+ < div class ="flow-step ">
368+ < div class ="flow-num "> 3</ div >
369+ < h3 > Froe</ h3 >
370+ < div class ="flow-tag "> The tool that builds both</ div >
371+ < p >
372+ A local-first coding agent in Go. Source never has to leave the machine, the LAN, or the EU.
373+ A single static binary for the terminal and Neovim, dogfooded daily on QRL and Bell themselves.
374+ </ p >
375+ < div class ="card-links "> < a href ="mailto:david@entangledcode.dev?subject=Froe%20code "> Code on request</ a > </ div >
376+ </ div >
377+ </ div >
378+
379+ < p style ="margin-top:2rem ">
380+ QRL implements five foundational papers — process matrices (Oreshkov 2012), causal nonseparability
381+ witnesses (Araújo 2015), quantum causal models (Allen 2017), loophole-free Bell tests (Hensen 2015),
382+ and categorical quantum mechanics (Coecke & Kissinger 2017) — with a full compiler pipeline from
383+ relations to MBQC measurement patterns across four backends (Perceval, PennyLane, graphix, Qiskit),
384+ hardware-verified on Quandela's qpu:belenos photonic QPU (S = 2.61 ± 0.08).
385+ </ p >
386+ < div class ="meta-row ">
387+ < span > ~13,600 lines</ span >
388+ < span > 896 tests passing</ span >
389+ < span > 31 modules</ span >
390+ < span > Preprint on Zenodo</ span >
391+ </ div >
392+ < div class ="links-row ">
393+ < a href ="https://github.com/entangledcode/qrl " class ="btn btn-primary "> QRL on GitHub</ a >
394+ < a href ="https://doi.org/10.5281/zenodo.18292199 " class ="btn btn-outline "> Zenodo DOI</ a >
395+ < a href ="https://github.com/dcoldeira/qrl-book " class ="btn btn-outline "> QRL Book</ a >
396+ </ div >
397+ </ section >
398+
399+ <!-- Production AI engineering elsewhere -->
400+ < section class ="section " id ="work ">
401+ < div class ="section-label "> Production AI engineering</ div >
402+ < h2 > Language models with a verifier around them, for other people's systems</ h2 >
403+ < p >
404+ Same pattern as above, applied at a day job and a side project: the model does the concentrated
405+ reasoning, deterministic code checks the result before it reaches a user or a database, and
305406 permissions are enforced by the system rather than by the prompt.
306407 </ p >
307408
@@ -331,34 +432,6 @@ <h3><small>Forza7 · SailGenius</small>Marco, an LLM-powered passage planner</h3
331432 < a href ="https://forza7.dev "> forza7.dev</ a >
332433 </ div >
333434 </ div >
334-
335- < div class ="card ">
336- < h3 > < small > Independent · 2025–26</ small > Bell, a quantum physics reasoning assistant</ h3 >
337- < p >
338- Plain English in, real numbers out — questions about entanglement and causal structure
339- answered by generating and executing real QRL code, not by the model guessing a number.
340- Provider-swappable by design: running on Mistral (EU-hosted) today, a self-hosted
341- fine-tuned Qwen3-8B (815 training pairs) in standby. Sandboxed execution, Podman/Caddy
342- deployment on Hetzner.
343- </ p >
344- < div class ="card-links ">
345- < a href ="https://bell.entangledcode.dev "> Try it — bell.entangledcode.dev</ a >
346- < a href ="mailto:david@entangledcode.dev?subject=Bell%20code "> Code on request</ a >
347- </ div >
348- </ div >
349-
350- < div class ="card ">
351- < h3 > < small > Independent · 2026</ small > Froe, a local-first coding agent in Go</ h3 >
352- < p >
353- A coding agent built for data governance: source code never has to leave the machine, the LAN
354- or the EU. Local open-weight models are the default path, hosted providers are optional
355- adapters, and nothing about a model is compiled in, so the tool survives model churn.
356- A single static Go binary for the terminal and Neovim that runs on a 4 GB laptop.
357- </ p >
358- < div class ="card-links ">
359- < a href ="mailto:david@entangledcode.dev?subject=Froe%20code "> Code on request</ a >
360- </ div >
361- </ div >
362435 </ div >
363436 </ section >
364437
@@ -381,34 +454,6 @@ <h2>Notes from running these in production</h2>
381454 </ div >
382455 </ section >
383456
384- <!-- QRL -->
385- < section class ="section " id ="qrl ">
386- < div class ="section-label "> Research</ div >
387- < h2 > QRL — Quantum Relational Language</ h2 >
388- < p >
389- A relations-first quantum programming language where entanglement is a first-class citizen, not a derived concept.
390- The key formal contribution: < strong > causal structure as a type-level primitive</ strong > .
391- A program that type-checks as < code > Switch(d)</ code > is provably causally nonseparable, a result no existing quantum programming language can state.
392- </ p >
393- < p >
394- Implements five foundational papers: process matrices (Oreshkov 2012), causal nonseparability witnesses (Araújo 2015),
395- quantum causal models (Allen 2017), loophole-free Bell tests (Hensen 2015), and categorical quantum mechanics (Coecke & Kissinger 2017).
396- Full compiler pipeline from relations to MBQC measurement patterns, with four backends (Perceval, PennyLane, graphix, Qiskit).
397- Hardware-verified on Quandela's qpu:belenos photonic QPU (S = 2.61 ± 0.08).
398- </ p >
399- < div class ="meta-row ">
400- < span > ~13,600 lines</ span >
401- < span > 896 tests passing</ span >
402- < span > 31 modules</ span >
403- < span > Preprint on Zenodo</ span >
404- </ div >
405- < div class ="links-row ">
406- < a href ="https://github.com/entangledcode/qrl " class ="btn btn-primary "> GitHub</ a >
407- < a href ="https://doi.org/10.5281/zenodo.18292199 " class ="btn btn-outline "> Zenodo DOI</ a >
408- < a href ="https://github.com/dcoldeira/qrl-book " class ="btn btn-outline "> QRL Book</ a >
409- </ div >
410- </ section >
411-
412457 < footer >
413458 < p >
414459 < a href ="https://github.com/dcoldeira "> github.com/dcoldeira</ a > ·
0 commit comments