|
4 | 4 | <meta charset="UTF-8" /> |
5 | 5 | <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
6 | 6 | <title>Entangled Code — David Coldeira</title> |
7 | | - <meta name="description" content="Entangled Code — home of QRL, a relations-first quantum programming language built from first principles of information theory and relational physics." /> |
| 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, a Claude-powered route planner, a self-hosted fine-tuned model, a local-first coding agent. Also home of QRL, a relations-first quantum programming language." /> |
8 | 8 |
|
9 | 9 | <link rel="canonical" href="https://entangledcode.dev/"/> |
10 | 10 |
|
|
16 | 16 |
|
17 | 17 | <meta property="og:type" content="website"/> |
18 | 18 | <meta property="og:url" content="https://entangledcode.dev"/> |
19 | | - <meta property="og:title" content="Entangled Code — QRL"/> |
20 | | - <meta property="og:description" content="QRL is a relations-first quantum programming language. Entanglement as a first-class citizen. Causal structure as a type-level primitive."/> |
| 19 | + <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."/> |
21 | 21 | <meta property="og:image" content="https://entangledcode.dev/og-image.png"/> |
22 | 22 |
|
23 | 23 | <meta name="twitter:card" content="summary_large_image"/> |
24 | | - <meta name="twitter:title" content="Entangled Code — QRL"/> |
25 | | - <meta name="twitter:description" content="QRL is a relations-first quantum programming language. Entanglement as a first-class citizen. Causal structure as a type-level primitive."/> |
| 24 | + <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."/> |
26 | 26 | <meta name="twitter:image" content="https://entangledcode.dev/og-image.png"/> |
27 | 27 |
|
28 | 28 | <style> |
|
144 | 144 | } |
145 | 145 |
|
146 | 146 | .hero h1 { |
147 | | - font-size: clamp(2.2rem, 6vw, 3.8rem); |
| 147 | + font-size: clamp(2rem, 6vw, 3.4rem); |
148 | 148 | font-weight: 800; |
149 | 149 | letter-spacing: -0.03em; |
150 | 150 | line-height: 1.1; |
|
227 | 227 | border-radius: 4px; |
228 | 228 | } |
229 | 229 |
|
| 230 | + /* ── Project cards ── */ |
| 231 | + .cards { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 1.5rem; } |
| 232 | + .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; } |
| 233 | + .card h3 { font-size: 1rem; font-weight: 700; letter-spacing: -0.01em; } |
| 234 | + .card h3 small { display: block; font-size: 0.72rem; font-weight: 600; color: var(--accent); letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 0.3rem; } |
| 235 | + .card p { font-size: 0.9rem; color: var(--muted2); line-height: 1.6; flex: 1; margin: 0; } |
| 236 | + .card-links { font-size: 0.8rem; display: flex; flex-wrap: wrap; gap: 0.35rem 1rem; } |
| 237 | + .card-links a { color: var(--muted2); border-bottom: 1px solid var(--border); } |
| 238 | + .card-links a:hover { color: var(--text); border-color: var(--muted); } |
| 239 | + .posts { list-style: none; margin-top: 1.25rem; } |
| 240 | + .posts li { padding: 0.85rem 0; border-top: 1px solid var(--border); } |
| 241 | + .posts li:last-child { border-bottom: 1px solid var(--border); } |
| 242 | + .posts a { font-weight: 600; } |
| 243 | + .posts a:hover { color: var(--accent); } |
| 244 | + .posts span { display: block; font-size: 0.875rem; color: var(--muted2); margin-top: 0.2rem; } |
| 245 | + |
230 | 246 | /* ── Footer ── */ |
231 | 247 | footer { |
232 | 248 | border-top: 1px solid var(--border); |
|
243 | 259 | .nav-links .hide-mobile { display: none; } |
244 | 260 | .hero { padding: 4rem 1.5rem 3rem; } |
245 | 261 | .section { padding: 3rem 1.5rem; } |
| 262 | + .cards { grid-template-columns: 1fr; } |
246 | 263 | } |
247 | 264 | </style> |
248 | 265 | </head> |
|
254 | 271 | entangled code |
255 | 272 | </div> |
256 | 273 | <div class="nav-links"> |
257 | | - <a href="https://github.com/entangledcode/qrl" class="hide-mobile">QRL on GitHub</a> |
| 274 | + <a href="#ai" class="hide-mobile">AI engineering</a> |
| 275 | + <a href="#qrl" class="hide-mobile">QRL</a> |
258 | 276 | <a href="https://dcoldeira.github.io" class="hide-mobile">Blog</a> |
| 277 | + <a href="https://github.com/dcoldeira" class="hide-mobile">GitHub</a> |
259 | 278 | <a href="mailto:david@entangledcode.dev" class="btn btn-outline">Contact</a> |
260 | 279 | </div> |
261 | 280 | </nav> |
262 | 281 |
|
263 | 282 | <!-- Hero --> |
264 | 283 | <section class="hero"> |
265 | | - <div class="hero-label">Quantum Relational Language</div> |
266 | | - <h1>Relations first.<br><span>Entanglement built in.</span></h1> |
| 284 | + <div class="hero-label">David Coldeira · Bristol, UK</div> |
| 285 | + <h1>Production AI engineering.<br><span>Physics-grade rigour.</span></h1> |
267 | 286 | <p> |
268 | | - QRL is a quantum programming language built from first principles of information theory and relational physics. |
269 | | - Describe correlations, derive predictions — causal structure as a type-level primitive. |
| 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. |
270 | 290 | </p> |
271 | 291 | <div class="hero-actions"> |
272 | | - <a href="https://github.com/entangledcode/qrl" class="btn btn-primary">View on GitHub</a> |
273 | | - <a href="https://doi.org/10.5281/zenodo.18292199" class="btn btn-outline">Zenodo preprint</a> |
| 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> |
| 294 | + <a href="mailto:david@entangledcode.dev" class="btn btn-outline">Email</a> |
| 295 | + </div> |
| 296 | + </section> |
| 297 | + |
| 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> |
| 302 | + <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 |
| 305 | + permissions are enforced by the system rather than by the prompt. |
| 306 | + </p> |
| 307 | + |
| 308 | + <div class="cards"> |
| 309 | + <div class="card"> |
| 310 | + <h3><small>Day job · Geoquip Marine</small>Gio, an assistant over a live laboratory database</h3> |
| 311 | + <p> |
| 312 | + Claude API tool-use inside GQMLab, the LIMS I built for a UKAS-accredited geotechnical laboratory. |
| 313 | + Natural-language SQL, charts and live report-schema introspection, on a read-only database user |
| 314 | + with query validation and role-gated access. In production for the lab's engineers. |
| 315 | + </p> |
| 316 | + <div class="card-links"> |
| 317 | + <a href="https://dcoldeira.github.io/posts/2026-09-16-llm-production-database/">How the read-only layers work</a> |
| 318 | + <a href="https://gqmlab.geoquip-marine.com">GQMLab</a> |
| 319 | + </div> |
| 320 | + </div> |
| 321 | + |
| 322 | + <div class="card"> |
| 323 | + <h3><small>Forza7 · SailGenius</small>Marco, a Claude-powered passage planner</h3> |
| 324 | + <p> |
| 325 | + Reasons over live weather, tide and boat-performance data to propose offshore routes. |
| 326 | + Every AI-generated waypoint is validated against real water and depth data before the |
| 327 | + sailor sees it. Part of a Flutter sailing suite with a FastAPI/PostgreSQL backend. |
| 328 | + </p> |
| 329 | + <div class="card-links"> |
| 330 | + <a href="https://dcoldeira.github.io/posts/2026-09-16-llm-verified-execution/">Why the model does not do the physics</a> |
| 331 | + <a href="https://forza7.dev">forza7.dev</a> |
| 332 | + </div> |
| 333 | + </div> |
| 334 | + |
| 335 | + <div class="card"> |
| 336 | + <h3><small>Independent · 2025</small>Bell, a self-hosted fine-tuned physics assistant</h3> |
| 337 | + <p> |
| 338 | + Qwen3-8B with a LoRA adapter trained on 815 instruction pairs, as a provider-swappable |
| 339 | + alternative to the Claude API. Sandboxed Python execution, Docker/Caddy deployment, |
| 340 | + GDPR-compliant. Ran live at bell.entangledcode.dev; now offline, code and training data kept. |
| 341 | + </p> |
| 342 | + <div class="card-links"> |
| 343 | + <a href="mailto:david@entangledcode.dev?subject=Bell%20code">Code on request</a> |
| 344 | + </div> |
| 345 | + </div> |
| 346 | + |
| 347 | + <div class="card"> |
| 348 | + <h3><small>Independent · 2026</small>Froe, a local-first coding agent in Go</h3> |
| 349 | + <p> |
| 350 | + A single static binary for the terminal and Neovim that runs on a 4 GB laptop with no source |
| 351 | + code leaving the machine. Measured before designed: the autonomous loop lost on a real |
| 352 | + multi-site edit, so it became small bounded commands with deterministic verification of |
| 353 | + the model's answer, taking <code>locate</code> from 0/3 to 3/3. |
| 354 | + </p> |
| 355 | + <div class="card-links"> |
| 356 | + <a href="mailto:david@entangledcode.dev?subject=Froe%20code">Code on request</a> |
| 357 | + </div> |
| 358 | + </div> |
| 359 | + </div> |
| 360 | + </section> |
| 361 | + |
| 362 | + <!-- Writing --> |
| 363 | + <section class="section" id="writing"> |
| 364 | + <div class="section-label">Writing</div> |
| 365 | + <h2>Notes from running these in production</h2> |
| 366 | + <ul class="posts"> |
| 367 | + <li> |
| 368 | + <a href="https://dcoldeira.github.io/posts/2026-09-16-llm-production-database/">Putting an LLM on a Production Database, Read-Only by Construction</a> |
| 369 | + <span>Four independent layers, only one of which actually matters, and why the prompt is the layer you should trust least.</span> |
| 370 | + </li> |
| 371 | + <li> |
| 372 | + <a href="https://dcoldeira.github.io/posts/2026-09-16-llm-verified-execution/">Don't Let the Model Do the Physics</a> |
| 373 | + <span>Keep the model to reasoning and let deterministic code own every number that reaches a user.</span> |
| 374 | + </li> |
| 375 | + </ul> |
| 376 | + <div class="links-row"> |
| 377 | + <a href="https://dcoldeira.github.io" class="btn btn-outline">All posts</a> |
274 | 378 | </div> |
275 | 379 | </section> |
276 | 380 |
|
277 | 381 | <!-- QRL --> |
278 | | - <section class="section"> |
279 | | - <div class="section-label">The Language</div> |
| 382 | + <section class="section" id="qrl"> |
| 383 | + <div class="section-label">Research</div> |
280 | 384 | <h2>QRL — Quantum Relational Language</h2> |
281 | 385 | <p> |
282 | | - A relations-first approach to quantum computing where entanglement is a first-class citizen, not a derived concept. |
| 386 | + A relations-first quantum programming language where entanglement is a first-class citizen, not a derived concept. |
283 | 387 | The key formal contribution: <strong>causal structure as a type-level primitive</strong>. |
284 | | - A program that type-checks as <code>Switch(d)</code> is provably causally nonseparable — a result no existing quantum programming language can state. |
| 388 | + A program that type-checks as <code>Switch(d)</code> is provably causally nonseparable, a result no existing quantum programming language can state. |
285 | 389 | </p> |
286 | 390 | <p> |
287 | 391 | Implements five foundational papers: process matrices (Oreshkov 2012), causal nonseparability witnesses (Araújo 2015), |
288 | | - quantum causal models (Allen 2017), loophole-free Bell tests (Hensen 2015), and categorical quantum mechanics (Coecke & Kissinger 2017). |
| 392 | + quantum causal models (Allen 2017), loophole-free Bell tests (Hensen 2015), and categorical quantum mechanics (Coecke & Kissinger 2017). |
| 393 | + Full compiler pipeline from relations to MBQC measurement patterns, with four backends (Perceval, PennyLane, graphix, Qiskit). |
289 | 394 | Hardware-verified on Quandela's qpu:belenos photonic QPU (S = 2.61 ± 0.08). |
290 | 395 | </p> |
291 | 396 | <div class="meta-row"> |
292 | 397 | <span>~13,600 lines</span> |
293 | 398 | <span>896 tests passing</span> |
294 | | - <span>24 modules</span> |
295 | | - <span>Paper in preparation — QPL 2027</span> |
| 399 | + <span>31 modules</span> |
| 400 | + <span>Preprint on Zenodo</span> |
296 | 401 | </div> |
297 | 402 | <div class="links-row"> |
298 | 403 | <a href="https://github.com/entangledcode/qrl" class="btn btn-primary">GitHub</a> |
299 | 404 | <a href="https://doi.org/10.5281/zenodo.18292199" class="btn btn-outline">Zenodo DOI</a> |
300 | | - <a href="https://dcoldeira.github.io" class="btn btn-outline">Blog</a> |
| 405 | + <a href="https://github.com/dcoldeira/qrl-book" class="btn btn-outline">QRL Book</a> |
301 | 406 | </div> |
302 | 407 | </section> |
303 | 408 |
|
304 | 409 | <footer> |
305 | 410 | <p> |
| 411 | + <a href="https://github.com/dcoldeira">github.com/dcoldeira</a> · |
| 412 | + <a href="https://www.linkedin.com/in/dcoldeira">linkedin.com/in/dcoldeira</a> · |
306 | 413 | <a href="https://github.com/entangledcode/qrl">entangledcode/qrl</a> · |
307 | 414 | <a href="https://doi.org/10.5281/zenodo.18292199">Zenodo</a> · |
308 | 415 | <a href="privacy.html">Privacy</a> |
|
0 commit comments