newsfilter.io
Interview, Fireside Chat

Building Tools for Traders with Ian Henry

  • Career Trajectory: Ian Henry joined Jane Street in 2016, transitioning from front-end iOS and web development at Trello and Warby Parker to low-latency exchange software, and finally to tools for the options trading desk.
  • Functional Programming Influence: Henry's entry into functional programming began with Reactive Cocoa in 2013, followed by self-study in Clojure (using the Overtone music environment) and Haskell (driven by curiosity about monads).
  • Reputation Correction: Jane Street addresses the perception that a PhD is required for engineering roles, noting that while the OCaml type theory team includes PhDs, the broader engineering organization is populated primarily by engineers without them.
  • Exchange Software Architecture: The internal platform functions as a single-dealer platform that mimics an exchange via an order book, matching engine, and public tape, though all trades occur between counterparties and Jane Street rather than between peers.
  • Language Strategy: The firm leverages OCaml for its ability to handle both imperative low-latency code (measured in microseconds) and high-level functional code within a single codebase, utilizing phantom types to ensure type safety during data serialization without incurring runtime overhead.
  • Latency Standards: In this environment, a millisecond latency is considered a catastrophic failure, representing a shift from the millisecond-scale metrics common in internet-facing applications.
  • Options Market Complexity: Traders face an "impedance mismatch" where they must manage hundreds of strikes and expirations (options) derived from a single underlying security, requiring software that abstracts high-dimensional volatility surfaces into actionable data.
  • UI Evolution: The options desk shifted from legacy Curses-based terminal applications to modern web interfaces to improve data aggregation and alerting, though keyboard-first input remains a critical design constraint for expert users.
  • Information Density: Tools are designed for extreme information density (e.g., 6-pixel line heights) and zero mouse usage, prioritizing high-bandwidth input over discoverability, as users are trained experts rather than general consumers.
  • Internal Developer Experience: Jane Street avoids mass-market concerns like authentication, payment processing, and CDN configuration, allowing engineers to focus on core application logic and spin up new apps rapidly without managing external dependencies.
  • Ecosystem Control: The firm maintains a "parallel universe" software stack, avoiding standard web protocols like REST/HTTP and JSON in favor of custom OCaml-based RPCs over WebSockets to ensure type safety and eliminate API versioning issues.
  • Bonsai Framework: To solve front-end challenges, the team built Bonsai, a React-like framework using OCaml types and a virtual DOM that allows for explicit state management and granular incremental computation updates.
  • Type System Benefits: OCaml's sum types and pattern matching force exhaustive case analysis, explicitly handling scenarios like loading states, errors, and data presence that are often implicit or nullable in other languages.
  • Domain Knowledge Barrier: Engineers must bridge an information gap by acquiring sufficient domain knowledge of options trading to build effective tools, often relying on senior traders for UX intuition and iterative feedback loops.
  • Alert System Optimization: Recent work focuses on balancing "alert fatigue" with signal clarity by implementing configurable thresholds, time-based deduplication rules, and desk-wide parameters rather than excessive per-user knobs.
  • Bauble Project: Henry developed Bauble, a live coding environment for 3D graphics that uses a high-level functional language compiled to GLSL shaders, utilizing Signed Distance Functions (SDFs) for efficient ray marching and composability.
  • Janet Language Adoption: Bauble is written in Janet, an obscure Lisp variant chosen for its S-expressions, powerful macro system, and ability to compile to WebAssembly with image-based state serialization.
  • Runtime State Serialization: The Janet environment supports "image" semantics, allowing the program to serialize the entire runtime state (including coroutines and closures) to disk and resume later, facilitating complex multi-stage programming.
  • Expect-Testing Workflow: Henry advocates for "expect tests" (stolen from Mercurial), a workflow where test files contain the expected output and automatically update via REPL interaction, merging code and data traces to simplify debugging and code review.
  • Side Project to Production: Knowledge gained from personal projects, such as the Janet macro system and SDF algorithms, frequently informs internal engineering decisions and tooling at Jane Street within a year of discovery.