<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Proliminal AB — Peter Bruinsma</title><meta name="description" content="Proliminal AB — Consulting, Technology, AI. Peter Bruinsma. AI-accelerated observability and performance engineering. Based in Sweden."><link rel="canonical" href="https://proliminal.net/"><meta property="og:title" content="Proliminal AB — Peter Bruinsma"><meta property="og:description" content="Proliminal AB — Consulting, Technology, AI. Peter Bruinsma. AI-accelerated observability and performance engineering. Based in Sweden."><meta property="og:type" content="website"><meta property="og:url" content="https://proliminal.net/"><meta property="og:site_name" content="Proliminal AB"><meta name="twitter:card" content="summary"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&family=IBM+Plex+Serif:ital,wght@0,300;0,400;0,500;0,600;1,300;1,400&family=Space+Mono:ital,wght@0,400;0,700;1,400&family=Special+Elite&family=IBM+Plex+Sans:ital,wght@0,300;0,400;0,500;1,300;1,400&display=swap" rel="stylesheet"><link rel="stylesheet" href="/_astro/Footer.8oKbK5m1.css">
<link rel="stylesheet" href="/_astro/DetailsMobile.Bzm35QR0.css">
<style>.top-banner[data-astro-cid-j7pv25f6]{position:fixed;top:0;left:0;right:0;z-index:101;background:var(--ink);color:var(--paper);font-family:IBM Plex Mono,monospace;font-size:.68rem;font-weight:400;letter-spacing:.06em;text-transform:uppercase;text-align:center;padding:.45rem 0}.top-banner[data-astro-cid-j7pv25f6] .container[data-astro-cid-j7pv25f6]{display:flex;align-items:center;justify-content:center;gap:.5rem}.top-banner[data-astro-cid-j7pv25f6] a[data-astro-cid-j7pv25f6]{color:var(--paper);text-decoration:none;font-weight:500;transition:opacity .25s}.top-banner[data-astro-cid-j7pv25f6] a[data-astro-cid-j7pv25f6]:hover{opacity:.7}.banner-dot[data-astro-cid-j7pv25f6]{width:6px;height:6px;border-radius:50%;background:#6dbf7b;display:inline-block;animation:pulse-banner 2s ease-in-out infinite}@keyframes pulse-banner{0%,to{opacity:1}50%{opacity:.4}}nav{top:30px!important}.hero{padding-top:110px!important}@media(max-width:600px){.top-banner[data-astro-cid-j7pv25f6]{display:none}nav{top:0!important}.hero{padding-top:60px!important}}
</style></head> <body> <div class="page-content">  <div class="top-banner" data-astro-cid-j7pv25f6> <div class="container" data-astro-cid-j7pv25f6> <span class="banner-dot" data-astro-cid-j7pv25f6></span> Currently accepting new challenges — <a href="#contact" data-astro-cid-j7pv25f6>get in touch →</a> </div> </div> <nav data-astro-cid-dmqpwcec> <a href="/" class="nav-logo" data-astro-cid-dmqpwcec> <img src="/proliminal-logo.svg" alt="Proliminal" data-astro-cid-dmqpwcec> <span data-astro-cid-dmqpwcec>Proliminal</span> </a> <button class="nav-hamburger" aria-label="Toggle menu" aria-expanded="false" data-astro-cid-dmqpwcec> <span data-astro-cid-dmqpwcec></span> <span data-astro-cid-dmqpwcec></span> <span data-astro-cid-dmqpwcec></span> </button> <ul class="nav-links" data-astro-cid-dmqpwcec> <li data-astro-cid-dmqpwcec><a href="/#services" data-astro-cid-dmqpwcec>Services</a></li> <li data-astro-cid-dmqpwcec><a href="/lab" data-astro-cid-dmqpwcec>Lab</a></li> <li data-astro-cid-dmqpwcec><a href="/notes" data-astro-cid-dmqpwcec>Notes</a></li> <li data-astro-cid-dmqpwcec><a href="/#work" data-astro-cid-dmqpwcec>Work</a></li> <li data-astro-cid-dmqpwcec><a href="/#about" data-astro-cid-dmqpwcec>About</a></li> <li data-astro-cid-dmqpwcec><a href="/voodoo" class="nav-voodoo" data-astro-cid-dmqpwcec>Voodoo</a></li> <li data-astro-cid-dmqpwcec><a href="/#contact" data-astro-cid-dmqpwcec>Contact</a></li> <li class="nav-lang-item" data-astro-cid-dmqpwcec><a href="/sv/" class="nav-lang" data-astro-cid-dmqpwcec>SV</a></li> </ul> </nav> <script type="module">const e=document.querySelector(".nav-hamburger"),t=document.querySelector(".nav-links");e&&t&&(e.addEventListener("click",()=>{const a=e.getAttribute("aria-expanded")==="true";e.setAttribute("aria-expanded",String(!a)),t.classList.toggle("open")}),t.querySelectorAll("a").forEach(a=>{a.addEventListener("click",()=>{e.setAttribute("aria-expanded","false"),t.classList.remove("open")})}));</script> <section class="hero" data-astro-cid-bbe6dxrz> <div class="container" data-astro-cid-bbe6dxrz> <div class="hero-inner" data-astro-cid-bbe6dxrz> <div class="hero-text" data-astro-cid-bbe6dxrz> <div class="hero-tagline" data-astro-cid-bbe6dxrz>Consulting · Technology · AI</div> <h1 data-astro-cid-bbe6dxrz>Building things that make complex systems <strong>understandable</strong></h1> <p class="hero-description" data-astro-cid-bbe6dxrz>AI-accelerated observability and performance engineering for organizations navigating complexity. Based in Sweden.</p> <div class="hero-cta" data-astro-cid-bbe6dxrz> <a href="/#contact" class="btn-primary" data-astro-cid-bbe6dxrz>Get in touch →</a> <a href="/#work" class="btn-ghost" data-astro-cid-bbe6dxrz>View work</a> </div> <div class="hero-availability" data-astro-cid-bbe6dxrz> <span class="avail-dot" data-astro-cid-bbe6dxrz></span> Available for new challenges </div> </div> <div class="hero-visual" data-astro-cid-bbe6dxrz> <div class="dissolution" id="dissolution" data-astro-cid-bbe6dxrz> <div class="char-field" id="charField" data-astro-cid-bbe6dxrz></div> <div class="dissolution-logo" data-astro-cid-bbe6dxrz> <img src="/proliminal-logo.svg" alt="Proliminal" data-astro-cid-bbe6dxrz> </div> <div class="dissolution-threshold" data-astro-cid-bbe6dxrz></div> <div class="dissolution-labels" data-astro-cid-bbe6dxrz> <span class="lbl-before" data-astro-cid-bbe6dxrz>Before</span> <span class="lbl-threshold" data-astro-cid-bbe6dxrz>Threshold</span> <span class="lbl-after" data-astro-cid-bbe6dxrz>After</span> </div> </div> </div> </div> </div> </section> <script type="module">document.addEventListener("DOMContentLoaded",()=>{const l=document.getElementById("charField");if(!l)return;const i=28,c=34,M=i*c,o=c/2,h=i/2,f=["fn observe(sys: &System) {","  let state = sys.measure();","  assert!(state.is_valid());","  for node in sys.graph() {","    node.emit(Event::Tick);","    if node.threshold() > 0","      { node.transform() }","  }","  sys.checkpoint().await;","}","","struct Liminal<T> {","  before: State<T>,","  after:  Option<State<T>>","  phase:  Phase::Pending,","}","impl<T> Liminal<T> {"],m=["impl Observable for System {","  fn explain(&self) -> View","    { self.graph.render() }","}","","pub fn emerge(ctx: Context)","  -> Result<State> {","  let new = ctx.transform();","  assert!(new.observable());","  metrics.record(&new.state);","  for i in 0..new.nodes() {","    yield Signal::Ready(i);","  }","  ctx.publish(Event::Clear);","  Ok(SystemState::Emerged)","}","// clarity restored"],a="░▒▓▄▀■□▪▫●○◐◑◒◓◔◕·.,:;!?#@&%~^*+-=<>|/\\{}[]()";function d(e,n,s){const t=e[n%e.length]||"";return s<t.length?t[s]:" "}const g=[];for(let e=0;e<M;e++){const n=Math.floor(e/i),s=e%i,t=document.createElement("span");t.className="c";const p=(n-o)/o,u=(s-h)/h,C=Math.sqrt(p*p*.7+u*u*.5),r=1-Math.min(C,1);r>.6?(t.classList.add("void"),t.textContent=" "):r>.4?(t.classList.add("dissolving"),t.textContent=a[Math.floor(Math.random()*a.length)],Math.random()<.12&&t.classList.add("red-char")):r>.25?Math.random()<r*1.8?(t.classList.add("dissolving"),t.textContent=a[Math.floor(Math.random()*a.length)],Math.random()<.06&&t.classList.add("red-char")):(t.classList.add("fading"),t.textContent=n<o?d(f,n,s):d(m,n-Math.ceil(o),s)):(t.classList.add("ordered"),t.textContent=n<o?d(f,n,s):d(m,n-Math.ceil(o),s)),l.appendChild(t),g.push({el:t,dissolving:t.classList.contains("dissolving")})}const v=g.filter(e=>e.dissolving);window.__dissolutionInterval&&clearInterval(window.__dissolutionInterval),window.__dissolutionInterval=setInterval(()=>{if(!document.hidden)for(let e=0;e<10;e++){const n=v[Math.floor(Math.random()*v.length)];n&&(n.el.textContent=a[Math.floor(Math.random()*a.length)])}},250)});</script> <div class="container" data-astro-cid-arj5dyob> <div class="divider-typed" data-astro-cid-arj5dyob></div> <div class="liminal-quote reveal" data-astro-cid-arj5dyob> <blockquote data-astro-cid-arj5dyob>&quot;The liminal space is where transformation happens — the threshold between what was and what will be.&quot;</blockquote> <cite data-astro-cid-arj5dyob>The philosophy behind Proliminal</cite> </div> <div class="divider-typed" data-astro-cid-arj5dyob></div> </div> <section id="services" data-astro-cid-g5jplrhu> <div class="container" data-astro-cid-g5jplrhu> <div class="section-header reveal" data-astro-cid-g5jplrhu> <span class="section-number" data-astro-cid-g5jplrhu>01</span> <h2 data-astro-cid-g5jplrhu>Services</h2> <span class="line" data-astro-cid-g5jplrhu></span> </div> <div class="services-grid reveal" data-astro-cid-g5jplrhu> <div class="service-card" data-astro-cid-g5jplrhu> <div class="service-icon" data-astro-cid-g5jplrhu>λ</div> <h3 data-astro-cid-g5jplrhu>AI Integration</h3> <p data-astro-cid-g5jplrhu>Helping organizations adopt AI meaningfully — from strategy to implementation. Agent architectures, LLM integration, and AI-first development frameworks.</p> </div><div class="service-card" data-astro-cid-g5jplrhu> <div class="service-icon" data-astro-cid-g5jplrhu>⊿</div> <h3 data-astro-cid-g5jplrhu>Performance Engineering</h3> <p data-astro-cid-g5jplrhu>Making complex system dynamics visible, comparable, and optimizable. Bespoke load testing, capacity planning, SLA/SLO analysis, and architectural risk assessment — from early design through production.</p> </div><div class="service-card" data-astro-cid-g5jplrhu> <div class="service-icon" data-astro-cid-g5jplrhu>◎</div> <h3 data-astro-cid-g5jplrhu>Systems &amp; Observability</h3> <p data-astro-cid-g5jplrhu>Making complex systems understandable through visualization, flow modeling, and developer tooling. From architecture to the user interface.</p> </div><div class="service-card" data-astro-cid-g5jplrhu> <div class="service-icon" data-astro-cid-g5jplrhu>⌂</div> <h3 data-astro-cid-g5jplrhu>UX &amp; Usability</h3> <p data-astro-cid-g5jplrhu>Interfaces that serve people. Bringing empathy and usability thinking to technical products — because good systems deserve good interfaces.</p> </div><div class="service-card" data-astro-cid-g5jplrhu> <div class="service-icon" data-astro-cid-g5jplrhu>⟁</div> <h3 data-astro-cid-g5jplrhu>Architecture</h3> <p data-astro-cid-g5jplrhu>Distributed systems and event-driven architectures. Building foundations that scale with clarity.</p> </div><div class="service-card" data-astro-cid-g5jplrhu> <div class="service-icon" data-astro-cid-g5jplrhu>↻</div> <h3 data-astro-cid-g5jplrhu>Transformation</h3> <p data-astro-cid-g5jplrhu>Guiding teams and systems through the liminal space — from legacy to modern, from manual to AI-native, from opaque to observable, leading by example.</p> </div> </div> <div class="services-methodology reveal" data-astro-cid-g5jplrhu> <h3 data-astro-cid-g5jplrhu>How I Work</h3> <p class="approach-intro" data-astro-cid-g5jplrhu>Proliminal takes its name from liminality — the transformative space between what was and what will be. Whether working early in architecture to identify risks, or close to production to find real bottlenecks, every engagement follows this arc:</p> <div class="approach-phases" data-astro-cid-g5jplrhu> <div class="phase" data-astro-cid-g5jplrhu> <div class="phase-icon" data-astro-cid-g5jplrhu>I</div> <h4 data-astro-cid-g5jplrhu>Understand</h4> <p data-astro-cid-g5jplrhu>Instrument, measure, and model. Find where assumptions about the system diverge from actual behavior. Identify the real constraints and the real opportunities hiding in the flows.</p> </div> <div class="phase" data-astro-cid-g5jplrhu> <div class="phase-icon" data-astro-cid-g5jplrhu>II</div> <h4 data-astro-cid-g5jplrhu>Transform</h4> <p data-astro-cid-g5jplrhu>The liminal phase. Build bespoke tooling, test hypotheses with real data, iterate fast. AI-accelerated delivery from design through validation. Embrace productive chaos.</p> </div> <div class="phase" data-astro-cid-g5jplrhu> <div class="phase-icon" data-astro-cid-g5jplrhu>III</div> <h4 data-astro-cid-g5jplrhu>Emerge</h4> <p data-astro-cid-g5jplrhu>Arrive at clarity. Dashboards leadership can read, flow models teams can reason about, and before-and-after evidence that justifies the investment. Knowledge transferred. Autonomy restored.</p> </div> </div> <p class="lab-bridge" data-astro-cid-g5jplrhu>The tools and methods in the Lab aren&#39;t theoretical — they inform how I approach client work. Provenance thinking shapes audit trails. Flow modeling informs performance analysis. The same architectural rigor applies to consulting engagements. <a href="/lab" data-astro-cid-g5jplrhu>Lab →</a></p> </div> </div> </section> <section id="work" data-astro-cid-wkx7uqji> <div class="container" data-astro-cid-wkx7uqji> <div class="section-header reveal" data-astro-cid-wkx7uqji> <span class="section-number" data-astro-cid-wkx7uqji>02</span> <h2 data-astro-cid-wkx7uqji>Selected Work</h2> <span class="line" data-astro-cid-wkx7uqji></span> </div> <div class="projects-list" data-astro-cid-wkx7uqji> <a href="https://www.linkedin.com/in/peterbruinsma/" class="project-item reveal" target="_blank" rel="noopener noreferrer" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2019–26</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>Biometria</h3> <p data-astro-cid-wkx7uqji>Six years of performance engineering on a mission-critical platform handling ~1M daily transactions. Built a bespoke observability and load testing platform, introduced queue-centric flow analysis, and reduced critical document lead times from ~1 hour to under 1 minute.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>Consulting</span> <svg class="icon-linkedin" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-astro-cid-wkx7uqji><path d="M13.6 0H2.4C1.08 0 0 1.08 0 2.4v11.2C0 14.92 1.08 16 2.4 16h11.2c1.32 0 2.4-1.08 2.4-2.4V2.4C16 1.08 14.92 0 13.6 0zM4.75 13.6H2.4V6h2.35v7.6zM3.58 5.04c-.76 0-1.37-.62-1.37-1.37 0-.76.62-1.37 1.37-1.37.76 0 1.37.62 1.37 1.37 0 .76-.62 1.37-1.37 1.37zM13.6 13.6h-2.35V9.92c0-.88-.02-2-.1-2.24-.18-.5-.62-.82-1.18-.82-.94 0-1.3.72-1.3 1.77v4.97H6.32V6h2.26v1.04h.03c.31-.6 1.08-1.23 2.23-1.23 2.39 0 2.83 1.57 2.83 3.61v4.18h-.07z" data-astro-cid-wkx7uqji></path></svg> </span> </a> <a href="/lab/liminara" class="project-item reveal" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2024–</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>Liminara</h3> <p data-astro-cid-wkx7uqji>Open-source provenance runtime making computations reproducible, auditable, and verifiable. Cryptographically sealed evidence trails for EU regulatory compliance.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>Elixir · OTP</span> <span class="icon-arrow" data-astro-cid-wkx7uqji>→</span> </span> </a><a href="/flowtime" class="project-item reveal" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2025–</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>FlowTime</h3> <p data-astro-cid-wkx7uqji>Flow analytics and simulation platform that makes operational systems understandable — replay what happened, run what-if scenarios, and identify bottlenecks before changes hit the real world.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>C#</span> <span class="icon-arrow" data-astro-cid-wkx7uqji>→</span> </span> </a><a href="https://github.com/23min/a2ui-blazor" class="project-item reveal" target="_blank" rel="noopener noreferrer" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2026</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>A2UI Protocol</h3> <p data-astro-cid-wkx7uqji>Agent-to-UI protocol implementations — agents send declarative JSON component trees; the client renders approved widgets.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>C# · Elixir</span> <svg class="icon-github" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-astro-cid-wkx7uqji><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" data-astro-cid-wkx7uqji></path></svg> </span> </a><a href="https://github.com/23min/agent-lens" class="project-item reveal" target="_blank" rel="noopener noreferrer" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2026</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>Agent Lens</h3> <p data-astro-cid-wkx7uqji>VS Code extension that makes AI coding agents observable. Works with GitHub Copilot and Claude Code.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>TypeScript</span> <svg class="icon-github" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-astro-cid-wkx7uqji><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" data-astro-cid-wkx7uqji></path></svg> </span> </a><a href="https://github.com/23min/ai-first-framework" class="project-item reveal" target="_blank" rel="noopener noreferrer" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2026</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>AI-First Framework</h3> <p data-astro-cid-wkx7uqji>Portable AI-assisted development framework with role-based agents, reusable workflow skills, and guardrails.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>Shell</span> <svg class="icon-github" viewBox="0 0 16 16" fill="currentColor" aria-hidden="true" data-astro-cid-wkx7uqji><path d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z" data-astro-cid-wkx7uqji></path></svg> </span> </a> <div class="project-item reveal" data-astro-cid-wkx7uqji> <span class="project-year" data-astro-cid-wkx7uqji>2018–19</span> <div class="project-info" data-astro-cid-wkx7uqji> <h3 data-astro-cid-wkx7uqji>Daklapack Europe</h3> <p data-astro-cid-wkx7uqji>Mission-critical production system for medical self-test kits. When a legal freeze killed all Azure assets, rebuilt the entire system on-prem in days — zero downtime, zero tolerance for errors.</p> </div> <span class="project-meta" data-astro-cid-wkx7uqji> <span class="project-tech" data-astro-cid-wkx7uqji>C# · Azure</span> </span> </div> </div> </div> </section> <section id="about" data-astro-cid-v2cbyr3p> <div class="container" data-astro-cid-v2cbyr3p> <div class="section-header reveal" data-astro-cid-v2cbyr3p> <span class="section-number" data-astro-cid-v2cbyr3p>03</span> <h2 data-astro-cid-v2cbyr3p>About</h2> <span class="line" data-astro-cid-v2cbyr3p></span> </div> <div class="about-grid reveal" data-astro-cid-v2cbyr3p> <div class="about-text" data-astro-cid-v2cbyr3p> <p data-astro-cid-v2cbyr3p><img src="/proliminal-logo.svg" alt="" class="about-logo" aria-hidden="true" data-astro-cid-v2cbyr3p>Peter Bruinsma is a consultant and technologist with over 30 years of experience across the USA, the Netherlands, and Sweden. He started his career at Microsoft in Redmond, later returning to Microsoft in the Netherlands as an application development consultant. In 2000 he founded CraitonTesting AB, an independent test house specializing in hardware and system certification for international manufacturers, which he ran for 13 years.</p> <p data-astro-cid-v2cbyr3p>He spent six years with Biometria — Sweden&#39;s central measurement organization for the forestry industry — doing performance engineering and systems work on mission-critical platforms handling over a million transactions per day. Most recently, he designed and launched a bespoke near-real-time observability platform serving SRE, developer, architect, and executive audiences.</p> <p data-astro-cid-v2cbyr3p>Today, his focus has shifted heavily toward AI — not just as a technology to integrate, but as a fundamental shift in how we build, observe, and interact with software systems. His own delivery is now fully AI-native, using AI end-to-end from planning through coding, testing, and deployment. His open source work reflects this: tools for AI agent observability, agent-to-UI protocols, and frameworks for AI-first development.</p> <p data-astro-cid-v2cbyr3p>He believes that the best technology is technology you can understand. This conviction drives everything from his approach to systems architecture to his deep interest in UI/UX and usability. <strong>Good interfaces are acts of empathy.</strong></p> <p data-astro-cid-v2cbyr3p>The instinct started early. During his Microsoft internship in 1991, he designed the Wizard UI pattern, on paper, before it existed in any product. Printing and charting in Excel were painful multi-step processes. The Wizard made them simple by guiding decisions one step at a time. It went on to become one of the most widely adopted UI patterns in software history. It started with noticing where people were struggling.</p> <a href="/voodoo" class="about-name-link" data-astro-cid-v2cbyr3p>About the name ProLiminal →</a> </div> <div class="about-sidebar" data-astro-cid-v2cbyr3p> <div class="sidebar-block" data-astro-cid-v2cbyr3p> <h4 data-astro-cid-v2cbyr3p>Focus Areas</h4> <ul data-astro-cid-v2cbyr3p> <li data-astro-cid-v2cbyr3p>AI &amp; LLM Integration</li> <li data-astro-cid-v2cbyr3p>Performance Engineering</li> <li data-astro-cid-v2cbyr3p>Observability</li> <li data-astro-cid-v2cbyr3p>Agent Architectures</li> <li data-astro-cid-v2cbyr3p>UI/UX &amp; Usability</li> </ul> </div> <div class="sidebar-block" data-astro-cid-v2cbyr3p> <h4 data-astro-cid-v2cbyr3p>Technologies</h4> <ul data-astro-cid-v2cbyr3p> <li data-astro-cid-v2cbyr3p>C# / .NET / Blazor</li> <li data-astro-cid-v2cbyr3p>Elixir / OTP</li> <li data-astro-cid-v2cbyr3p>Microsoft Azure</li> </ul> </div> <div class="sidebar-block" data-astro-cid-v2cbyr3p> <h4 data-astro-cid-v2cbyr3p>Tools</h4> <ul data-astro-cid-v2cbyr3p> <li data-astro-cid-v2cbyr3p>Claude Code</li> <li data-astro-cid-v2cbyr3p>GitHub Copilot</li> <li data-astro-cid-v2cbyr3p>OpenAI Codex</li> </ul> </div> <div class="sidebar-block" data-astro-cid-v2cbyr3p> <h4 data-astro-cid-v2cbyr3p>Location</h4> <p data-astro-cid-v2cbyr3p>Sweden</p> <p class="sidebar-note" data-astro-cid-v2cbyr3p>Previously: USA · NL</p> </div> <div class="sidebar-block" data-astro-cid-v2cbyr3p> <h4 data-astro-cid-v2cbyr3p>Background</h4> <p data-astro-cid-v2cbyr3p>Ex-Microsoft · Founded CraitonTesting AB (2000–2013)</p> </div> <div class="sidebar-block" data-astro-cid-v2cbyr3p> <h4 data-astro-cid-v2cbyr3p>Company</h4> <p data-astro-cid-v2cbyr3p>Proliminal AB</p> </div> </div> </div> </div> </section> <div class="container" data-astro-cid-j7pv25f6><hr class="divider" data-astro-cid-j7pv25f6></div> <section id="ask" data-astro-cid-6h5oirbh> <div class="container" data-astro-cid-6h5oirbh> <div class="section-header reveal" data-astro-cid-6h5oirbh> <span class="section-number" data-astro-cid-6h5oirbh>04</span> <h2 data-astro-cid-6h5oirbh>Ask Proliminal</h2> <span class="line" data-astro-cid-6h5oirbh></span> </div> <div class="chat-section reveal" data-astro-cid-6h5oirbh> <div class="chat-header" data-astro-cid-6h5oirbh> <div class="chat-dot" data-astro-cid-6h5oirbh></div> <h3 data-astro-cid-6h5oirbh>AI-Powered Q&amp;A</h3> </div> <div class="chat-messages" id="chat-messages" data-lang="en" data-api="https://proliminal-chat.peterbru.workers.dev/chat" data-label-you="You" data-label-ai="AI" data-msg-typing="Thinking..." data-msg-error="Something went wrong. Please try again." data-msg-limit="You've reached the message limit for this session. Refresh to start over." data-astro-cid-6h5oirbh> <div class="chat-welcome" data-astro-cid-6h5oirbh> <p data-astro-cid-6h5oirbh>Hi! Ask me anything about Peter&#39;s work, expertise, or Proliminal.</p> <div class="chat-suggestions" id="chat-suggestions" data-astro-cid-6h5oirbh> <button type="button" class="chat-suggest-btn" data-astro-cid-6h5oirbh>What&#39;s Peter&#39;s background?</button> <button type="button" class="chat-suggest-btn" data-astro-cid-6h5oirbh>Tell me about FlowTime</button> <button type="button" class="chat-suggest-btn" data-astro-cid-6h5oirbh>What happened at Biometria?</button> <button type="button" class="chat-suggest-btn" data-astro-cid-6h5oirbh>Tell me about voodoo</button> </div> </div> </div> <div class="chat-status" id="chat-status" data-astro-cid-6h5oirbh></div> <form class="chat-input" id="chat-form" data-astro-cid-6h5oirbh> <input type="text" id="chat-input" placeholder="Ask about Peter, Proliminal, or the work..." maxlength="500" autocomplete="off" data-astro-cid-6h5oirbh> <button type="button" id="chat-mic" class="chat-mic" hidden aria-label="Voice input" data-astro-cid-6h5oirbh> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="14" height="14" data-astro-cid-6h5oirbh><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" data-astro-cid-6h5oirbh></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" data-astro-cid-6h5oirbh></path><line x1="12" y1="19" x2="12" y2="23" data-astro-cid-6h5oirbh></line><line x1="8" y1="23" x2="16" y2="23" data-astro-cid-6h5oirbh></line></svg> </button> <button type="submit" data-astro-cid-6h5oirbh>Send</button> </form> </div> </div> </section> <script type="module" src="/_astro/ChatPreview.astro_astro_type_script_index_0_lang.HEg2eCY0.js"></script> <section class="details-mobile" data-astro-cid-p7ig3fpr> <div class="container" data-astro-cid-p7ig3fpr> <div class="details-grid" data-astro-cid-p7ig3fpr> <div class="details-block" data-astro-cid-p7ig3fpr> <h4 data-astro-cid-p7ig3fpr>Focus Areas</h4> <ul data-astro-cid-p7ig3fpr> <li data-astro-cid-p7ig3fpr>AI &amp; LLM Integration</li> <li data-astro-cid-p7ig3fpr>Performance Engineering</li> <li data-astro-cid-p7ig3fpr>Observability</li> <li data-astro-cid-p7ig3fpr>Agent Architectures</li> <li data-astro-cid-p7ig3fpr>UI/UX &amp; Usability</li> </ul> </div> <div class="details-block" data-astro-cid-p7ig3fpr> <h4 data-astro-cid-p7ig3fpr>Technologies</h4> <ul data-astro-cid-p7ig3fpr> <li data-astro-cid-p7ig3fpr>C# / .NET / Blazor</li> <li data-astro-cid-p7ig3fpr>Elixir / OTP</li> <li data-astro-cid-p7ig3fpr>Microsoft Azure</li> </ul> </div> <div class="details-block" data-astro-cid-p7ig3fpr> <h4 data-astro-cid-p7ig3fpr>Tools</h4> <ul data-astro-cid-p7ig3fpr> <li data-astro-cid-p7ig3fpr>Claude Code</li> <li data-astro-cid-p7ig3fpr>GitHub Copilot</li> <li data-astro-cid-p7ig3fpr>OpenAI Codex</li> </ul> </div> <div class="details-block" data-astro-cid-p7ig3fpr> <h4 data-astro-cid-p7ig3fpr>Location</h4> <p data-astro-cid-p7ig3fpr>Sweden</p> <p class="details-note" data-astro-cid-p7ig3fpr>Previously: USA · NL</p> </div> <div class="details-block" data-astro-cid-p7ig3fpr> <h4 data-astro-cid-p7ig3fpr>Background</h4> <p data-astro-cid-p7ig3fpr>Ex-Microsoft · Founded CraitonTesting AB (2000–2013)</p> </div> <div class="details-block" data-astro-cid-p7ig3fpr> <h4 data-astro-cid-p7ig3fpr>Company</h4> <p data-astro-cid-p7ig3fpr>Proliminal AB</p> </div> </div> </div> </section> <div class="container" data-astro-cid-j7pv25f6><hr class="divider" data-astro-cid-j7pv25f6></div> <section id="contact" data-astro-cid-xmivup5a> <div class="container" data-astro-cid-xmivup5a> <div class="section-header reveal" data-astro-cid-xmivup5a> <span class="section-number" data-astro-cid-xmivup5a>05</span> <h2 data-astro-cid-xmivup5a>Contact</h2> <span class="line" data-astro-cid-xmivup5a></span> </div> <div class="contact-grid reveal" data-astro-cid-xmivup5a> <div data-astro-cid-xmivup5a> <p class="contact-text" data-astro-cid-xmivup5a>Looking for help with difficult optimization problems where standard tooling isn&#39;t enough, from someone who brings both deep technical expertise and genuine care for how systems serve people? Let&#39;s talk.</p> <div style="margin-top: 2rem;" data-astro-cid-xmivup5a> <a href="/cdn-cgi/l/email-protection#ed9d8899889f8f9f98ad9d9f8281848084838c81c3838899" class="btn-primary" data-astro-cid-xmivup5a><span class="__cf_email__" data-cfemail="6111041504130313142111130e0d080c080f000d4f0f0415">[email&#160;protected]</span> →</a> </div> </div> <div class="contact-sidebar" data-astro-cid-xmivup5a> <div class="sidebar-block" data-astro-cid-xmivup5a> <h4 data-astro-cid-xmivup5a>Links</h4> <ul data-astro-cid-xmivup5a> <li data-astro-cid-xmivup5a><a href="https://github.com/23min" target="_blank" rel="noopener noreferrer" data-astro-cid-xmivup5a>GitHub</a></li> <li data-astro-cid-xmivup5a><a href="https://www.linkedin.com/in/peterbruinsma/" target="_blank" rel="noopener noreferrer" data-astro-cid-xmivup5a>LinkedIn</a></li> <li data-astro-cid-xmivup5a><a href="https://proliminal.net" data-astro-cid-xmivup5a>proliminal.net</a></li> </ul> </div> <div class="sidebar-block" data-astro-cid-xmivup5a> <h4 data-astro-cid-xmivup5a>Availability</h4> <p data-astro-cid-xmivup5a>Open to new engagements</p> </div> </div> </div> </div> </section> <footer data-astro-cid-sz7xmlte> <div class="container" data-astro-cid-sz7xmlte> <div class="footer-inner" data-astro-cid-sz7xmlte> <div class="footer-left" data-astro-cid-sz7xmlte> <span class="label" data-astro-cid-sz7xmlte>Proliminal AB</span> <p data-astro-cid-sz7xmlte>Consulting · Technology · AI<br data-astro-cid-sz7xmlte>Sweden</p> </div> <div class="footer-right" data-astro-cid-sz7xmlte> <a href="https://github.com/23min" target="_blank" rel="noopener noreferrer" data-astro-cid-sz7xmlte>GitHub</a> <a href="https://www.linkedin.com/in/peterbruinsma/" target="_blank" rel="noopener noreferrer" data-astro-cid-sz7xmlte>LinkedIn</a> <a href="/cdn-cgi/l/email-protection#0575607160776777704575776a696c686c6b64692b6b6071" data-astro-cid-sz7xmlte>Email</a> </div> </div> <div class="footer-copyright" data-astro-cid-sz7xmlte> <span data-astro-cid-sz7xmlte>&copy; 2026 Proliminal AB. All rights reserved.</span> <span data-astro-cid-sz7xmlte>Built in the liminal space</span> </div> </div> </footer> <a href="#ask" class="chat-fab" id="chat-fab" aria-label="Ask Proliminal" data-astro-cid-wsky2akj> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" width="22" height="22" data-astro-cid-wsky2akj> <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" data-astro-cid-wsky2akj></path> </svg> </a> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script><script type="module">const e=document.getElementById("chat-fab"),t=document.getElementById("ask");e&&t&&new IntersectionObserver(([s])=>{e.classList.toggle("hidden",s.isIntersecting)},{threshold:.2}).observe(t);</script>  </div> <script type="module">document.addEventListener("DOMContentLoaded",()=>{const t=new IntersectionObserver(e=>{e.forEach(r=>{r.isIntersecting&&r.target.classList.add("visible")})},{threshold:.1,rootMargin:"0px 0px -40px 0px"});document.querySelectorAll(".reveal").forEach(e=>t.observe(e))});</script> </body> </html>