Colophon
Human-readable and agent-readable from the same source. This site is built to my own BiModal Design framework: one interface, two audiences, no second codebase.
Construction
Static site built with Astro. Plain HTML and CSS; design tokens are CSS custom properties. No CSS framework, no CMS, no third-party analytics, no tracking scripts, no cookies. Traffic is measured only in first-party server logs on my own machine, never in your browser. Client-side JavaScript is limited to the theme toggle and the agent-view toggle below.
Type & color
Inter and JetBrains Mono, self-hosted, no hotlinked fonts. The interface is nearly monochrome, with interactivity carried by tone, weight, and contrast. Color enters as a single phosphor-green accent doing two quiet jobs: in the diagrams it marks human judgment while the machine stays grey, and in running text it colors a link, which also sits a shade heavier than the copy around it and underlines when you point at it, so the link never depends on color alone. The mono face does real work, carrying the metadata layer, the scale tags, the kickers, and the figure captions, so it signals the systems thesis instead of decorating.
BiModal Design
The site is built to BiModal Design, my open framework for interfaces that serve human users and AI agents with equal effectiveness, from the same markup rather than two separate builds. Its non-negotiable rule (FR-1) is that everything an agent needs is present in the initial HTTP response. This site is statically rendered, so it is: no content hides behind JavaScript.
The framework's five layers, as they appear here:
- Layer 1 · Semantic structure. Server-rendered HTML5 landmarks, one
h1per page, a skip link, visible focus. - Layer 2 · Structured data. One
Personidentity with a single @id, referenced everywhere viasameAs, with the ORCID record and the ACM DOI as the strongest anchors. Book and article schema where relevant. - Layer 3 · Standards-based attributes. WAI-ARIA roles and states, plus
data-agent-*attributes that name each component, action, and content field for tool-use agents. - Layer 4 · API surface. Not applicable: this is a canonical presence, not an application with endpoints.
- Layer 5 · Agent protocols. A published llms.txt and llms-full.txt, an agent.json card, and a robots policy that explicitly welcomes AI crawlers.
Agent view
Use the Agent view toggle in the header to reveal the machine-readable layer that is already in this page: the landmarks, the data-agent-* structure, the structured data, and the agent surfaces. Nothing is swapped or reloaded. It is the same HTML an agent receives, shown so a human can see it. One artifact, read by both.
Accessibility
A skip-to-content link, visible focus on every interactive element, and reduced-motion honored: motion is reserved for one deliberate moment, never spent on decoration.
Editorial discipline
Maintained under the same editorial discipline as behaviorlayer.ai. Case studies describe confidential work by method and domain, with no customer names and no internal product names, and the diagrams are reconstructions, not product screenshots, with any data in them invented. Where the work is public, it's linked: two peer-reviewed papers, a published patent application, and a research site whose entire change history is open.