|
| 1 | +<!doctype html> |
| 2 | +<html lang="en"> |
| 3 | +<head> |
| 4 | + <meta charset="utf-8" /> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1" /> |
| 6 | + <title>Codehead Systems — open source by Ned Wolpert</title> |
| 7 | + <meta name="description" content="An open-source workshop of cryptography, authentication, and infrastructure libraries by engineer Ned Wolpert. Featuring pk-auth, the Hofmann Elimination (OPAQUE PAKE), and a collection of JVM utilities." /> |
| 8 | + <meta name="theme-color" content="#0B0B0D" /> |
| 9 | + |
| 10 | + <link rel="preconnect" href="https://fonts.googleapis.com" /> |
| 11 | + <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> |
| 12 | + <link href="https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght,SOFT,WONK@0,9..144,300..900,0..100,0..1;1,9..144,300..900,0..100,0..1&family=JetBrains+Mono:ital,wght@0,300..800;1,300..800&display=swap" rel="stylesheet" /> |
| 13 | + |
| 14 | + <link rel="stylesheet" href="styles.css" /> |
| 15 | +</head> |
| 16 | +<body> |
| 17 | + <div class="grain" aria-hidden="true"></div> |
| 18 | + <div class="vignette" aria-hidden="true"></div> |
| 19 | + |
| 20 | + <header class="topbar"> |
| 21 | + <a href="#top" class="topbar__brand"> |
| 22 | + <span class="brand-mark" aria-hidden="true"></span> |
| 23 | + <span class="mono-tiny">CODEHEAD SYSTEMS</span> |
| 24 | + </a> |
| 25 | + <nav class="topbar__nav" aria-label="primary"> |
| 26 | + <a href="#projects" class="mono-tiny">↓ catalogue</a> |
| 27 | + <a href="#contact" class="mono-tiny">↓ contact</a> |
| 28 | + <a href="https://github.com/codeheadsystems" class="mono-tiny">↗ github</a> |
| 29 | + </nav> |
| 30 | + </header> |
| 31 | + |
| 32 | + <main id="top"> |
| 33 | + |
| 34 | + <!-- ─────────── HERO ─────────── --> |
| 35 | + <section class="hero"> |
| 36 | + <div class="hero__meta"> |
| 37 | + <span class="rule" aria-hidden="true"></span> |
| 38 | + <span class="mono-tiny">CODEHEAD SINCE 2005 · APACHE 2.0 / MIT</span> |
| 39 | + </div> |
| 40 | + |
| 41 | + <h1 class="hero__title"> |
| 42 | + <span class="hero__title-line">An open-source</span> |
| 43 | + <span class="hero__title-line">workshop, <em>since 2005</em>.</span> |
| 44 | + </h1> |
| 45 | + |
| 46 | + <div class="hero__split"> |
| 47 | + <p class="hero__lead"> |
| 48 | + Run by <a href="https://github.com/wolpert">Ned Wolpert</a> — coding |
| 49 | + since 1994, Codehead since 2005 (Amazon · Alexa, and points |
| 50 | + before and after). Libraries I've reached for too many times to keep |
| 51 | + rebuilding. |
| 52 | + </p> |
| 53 | + |
| 54 | + <aside class="hero__sidecar" aria-label="workshop facts"> |
| 55 | + <dl> |
| 56 | + <div><dt>Curator</dt><dd>Ned Wolpert</dd></div> |
| 57 | + <div><dt>Coding since</dt><dd>1994</dd></div> |
| 58 | + <div><dt>Codehead since</dt><dd>2005</dd></div> |
| 59 | + <div><dt>License</dt><dd>Apache 2.0 / MIT</dd></div> |
| 60 | + <div><dt>Status</dt><dd><span class="status-dot" aria-hidden="true"></span>actively maintained</dd></div> |
| 61 | + </dl> |
| 62 | + </aside> |
| 63 | + </div> |
| 64 | + |
| 65 | + <div class="hero__cta"> |
| 66 | + <a href="#projects" class="btn btn--primary">enter the catalogue →</a> |
| 67 | + <a href="#contact" class="btn btn--ghost">make contact</a> |
| 68 | + </div> |
| 69 | + </section> |
| 70 | + |
| 71 | + <!-- ─────────── PROJECTS ─────────── --> |
| 72 | + <section id="projects" class="projects"> |
| 73 | + <header class="section-head"> |
| 74 | + <span class="mono-tiny">§ THE CATALOGUE</span> |
| 75 | + <h2 class="section-head__title">Three corners of the workshop.</h2> |
| 76 | + <p class="section-head__lede"> |
| 77 | + Three projects, each with its own discipline — passkeys, password-less |
| 78 | + cryptography, and the small Java tools in between. |
| 79 | + </p> |
| 80 | + </header> |
| 81 | + |
| 82 | + <!-- ─── 01 · pk-auth ─── --> |
| 83 | + <article class="project"> |
| 84 | + <header class="project__rail"> |
| 85 | + <span class="mono-tiny">PROJECT</span> |
| 86 | + <span class="project__num" aria-hidden="true">01</span> |
| 87 | + <span class="mono-tiny project__rail-tag">A – AUTH</span> |
| 88 | + </header> |
| 89 | + |
| 90 | + <div class="project__body"> |
| 91 | + <div class="project__heading"> |
| 92 | + <h3 class="project__title">pk-auth</h3> |
| 93 | + <span class="project__kicker mono-tiny">passkeys · jvm · webauthn</span> |
| 94 | + </div> |
| 95 | + |
| 96 | + <p class="project__lede"> |
| 97 | + A production-grade, <strong>passkeys-first</strong> authentication |
| 98 | + template for the JVM. |
| 99 | + </p> |
| 100 | + |
| 101 | + <p class="project__text"> |
| 102 | + Ships as a reusable library set you can drop into a Spring Boot, |
| 103 | + Dropwizard, or Micronaut application. The core is framework-neutral; |
| 104 | + the host's user and credential storage is a plug-in SPI. |
| 105 | + </p> |
| 106 | + |
| 107 | + <ul class="chips"> |
| 108 | + <li>Java</li><li>Spring Boot</li><li>Dropwizard</li><li>Micronaut</li><li>WebAuthn / FIDO2</li> |
| 109 | + </ul> |
| 110 | + |
| 111 | + <div class="project__links"> |
| 112 | + <a class="link-arrow link-arrow--lead" href="https://codeheadsystems.github.io/pk-auth/"> |
| 113 | + <span>visit the project site</span><span class="link-arrow__icon">↗</span> |
| 114 | + </a> |
| 115 | + <a class="link-arrow" href="https://github.com/codeheadsystems/pk-auth"> |
| 116 | + <span>view source</span><span class="link-arrow__icon">↗</span> |
| 117 | + </a> |
| 118 | + </div> |
| 119 | + </div> |
| 120 | + </article> |
| 121 | + |
| 122 | + <!-- ─── 02 · Hofmann Elimination ─── --> |
| 123 | + <article class="project"> |
| 124 | + <header class="project__rail"> |
| 125 | + <span class="mono-tiny">PROJECT</span> |
| 126 | + <span class="project__num" aria-hidden="true">02</span> |
| 127 | + <span class="mono-tiny project__rail-tag">B – CRYPTO</span> |
| 128 | + </header> |
| 129 | + |
| 130 | + <div class="project__body"> |
| 131 | + <div class="project__heading"> |
| 132 | + <h3 class="project__title"> |
| 133 | + <span class="project__title-pre">the</span> |
| 134 | + Hofmann Elimination |
| 135 | + </h3> |
| 136 | + <span class="project__kicker mono-tiny">opaque · oprf · elliptic curves</span> |
| 137 | + </div> |
| 138 | + |
| 139 | + <p class="project__lede"> |
| 140 | + OPAQUE PAKE — a server that <em>never</em> sees your password. |
| 141 | + </p> |
| 142 | + |
| 143 | + <p class="project__text"> |
| 144 | + An implementation of the OPAQUE password-authenticated key exchange, |
| 145 | + written directly from its RFC specifications. Built on OPRF and |
| 146 | + elliptic-curve cryptography. The server authenticates the client |
| 147 | + without ever receiving — or being able to derive — the password. |
| 148 | + </p> |
| 149 | + |
| 150 | + <div class="rfc-block" role="list" aria-label="implemented RFCs"> |
| 151 | + <div role="listitem"> |
| 152 | + <span class="mono-tiny rfc-block__id">RFC 9380</span> |
| 153 | + <span class="rfc-block__name">Hash-to-Elliptic-Curve</span> |
| 154 | + </div> |
| 155 | + <div role="listitem"> |
| 156 | + <span class="mono-tiny rfc-block__id">RFC 9497</span> |
| 157 | + <span class="rfc-block__name">OPRF <span class="muted">(mode 0)</span></span> |
| 158 | + </div> |
| 159 | + <div role="listitem"> |
| 160 | + <span class="mono-tiny rfc-block__id">RFC 9807</span> |
| 161 | + <span class="rfc-block__name">OPAQUE-3DH</span> |
| 162 | + </div> |
| 163 | + </div> |
| 164 | + |
| 165 | + <p class="project__text"> |
| 166 | + Java implementation via Bouncy Castle, with a TypeScript client library |
| 167 | + bundled. Rust, Go, and C# implementations are next, alongside a |
| 168 | + cross-language test suite. |
| 169 | + </p> |
| 170 | + |
| 171 | + <ul class="chips"> |
| 172 | + <li>Java</li><li>TypeScript</li><li>Bouncy Castle</li><li>PAKE</li><li>Crypto Research</li> |
| 173 | + </ul> |
| 174 | + |
| 175 | + <div class="project__links"> |
| 176 | + <a class="link-arrow link-arrow--lead" href="https://codeheadsystems.github.io/hofmann-elimination/"> |
| 177 | + <span>visit the project site</span><span class="link-arrow__icon">↗</span> |
| 178 | + </a> |
| 179 | + <a class="link-arrow" href="https://github.com/codeheadsystems/hofmann-elimination"> |
| 180 | + <span>view source</span><span class="link-arrow__icon">↗</span> |
| 181 | + </a> |
| 182 | + </div> |
| 183 | + </div> |
| 184 | + </article> |
| 185 | + |
| 186 | + <!-- ─── 03 · Libraries ─── --> |
| 187 | + <article class="project"> |
| 188 | + <header class="project__rail"> |
| 189 | + <span class="mono-tiny">PROJECT</span> |
| 190 | + <span class="project__num" aria-hidden="true">03</span> |
| 191 | + <span class="mono-tiny project__rail-tag">C – UTILS</span> |
| 192 | + </header> |
| 193 | + |
| 194 | + <div class="project__body"> |
| 195 | + <div class="project__heading"> |
| 196 | + <h3 class="project__title"> |
| 197 | + <span class="project__title-pre">the</span> |
| 198 | + Libraries |
| 199 | + </h3> |
| 200 | + <span class="project__kicker mono-tiny">java · utilities · testing</span> |
| 201 | + </div> |
| 202 | + |
| 203 | + <p class="project__lede"> |
| 204 | + Small, sharp Java libraries — the things I keep reaching for. |
| 205 | + </p> |
| 206 | + |
| 207 | + <p class="project__text"> |
| 208 | + A growing collection of well-scoped tools, extracted from real |
| 209 | + services so they stay practical rather than aspirational. |
| 210 | + </p> |
| 211 | + |
| 212 | + <ol class="sub-list"> |
| 213 | + <li> |
| 214 | + <div class="sub-list__row"> |
| 215 | + <span class="sub-list__name">Feature-Flag</span> |
| 216 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/feature-flag" class="sub-list__link mono-tiny">view →</a> |
| 217 | + </div> |
| 218 | + <p class="sub-list__note">Lightweight A/B testing & feature toggles, inspired by an internal Alexa tool.</p> |
| 219 | + </li> |
| 220 | + <li> |
| 221 | + <div class="sub-list__row"> |
| 222 | + <span class="sub-list__name">Codehead Test</span> |
| 223 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/codehead-test" class="sub-list__link mono-tiny">view →</a> |
| 224 | + </div> |
| 225 | + <p class="sub-list__note">Test utilities for Jupiter, Immutables, and Jackson. Small, easy to consume.</p> |
| 226 | + </li> |
| 227 | + <li> |
| 228 | + <div class="sub-list__row"> |
| 229 | + <span class="sub-list__name">Database Test</span> |
| 230 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/database-test" class="sub-list__link mono-tiny">view →</a> |
| 231 | + </div> |
| 232 | + <p class="sub-list__note">Test helpers for Cassandra and unique-string generation.</p> |
| 233 | + </li> |
| 234 | + <li> |
| 235 | + <div class="sub-list__row"> |
| 236 | + <span class="sub-list__name">Metrics</span> |
| 237 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/metrics" class="sub-list__link mono-tiny">view →</a> |
| 238 | + </div> |
| 239 | + <p class="sub-list__note">Dropwizard / Micrometer integration with Dagger support and unit-test helpers.</p> |
| 240 | + </li> |
| 241 | + <li> |
| 242 | + <div class="sub-list__row"> |
| 243 | + <span class="sub-list__name">OOP Mock</span> |
| 244 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/oop-mock" class="sub-list__link mono-tiny">view →</a> |
| 245 | + </div> |
| 246 | + <p class="sub-list__note">Out-of-process mocking for functional tests — a spiritual successor to Amazon's Chameleon.</p> |
| 247 | + </li> |
| 248 | + <li> |
| 249 | + <div class="sub-list__row"> |
| 250 | + <span class="sub-list__name">State Machine Redux</span> |
| 251 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/smr" class="sub-list__link mono-tiny">view →</a> |
| 252 | + </div> |
| 253 | + <p class="sub-list__note">A KISS state machine. Import/export, games and services. The simpler successor.</p> |
| 254 | + </li> |
| 255 | + <li> |
| 256 | + <div class="sub-list__row"> |
| 257 | + <span class="sub-list__name">Local Queue</span> |
| 258 | + <a href="https://github.com/codeheadsystems/libraries/tree/main/local-queue" class="sub-list__link mono-tiny">view →</a> |
| 259 | + </div> |
| 260 | + <p class="sub-list__note">In-process queueing primitives.</p> |
| 261 | + </li> |
| 262 | + </ol> |
| 263 | + |
| 264 | + <div class="project__links"> |
| 265 | + <a class="link-arrow link-arrow--lead" href="https://github.com/codeheadsystems/libraries/"> |
| 266 | + <span>view the libraries repo</span><span class="link-arrow__icon">↗</span> |
| 267 | + </a> |
| 268 | + </div> |
| 269 | + </div> |
| 270 | + </article> |
| 271 | + </section> |
| 272 | + |
| 273 | + <!-- ─────────── PULL QUOTE ─────────── --> |
| 274 | + <section class="pull"> |
| 275 | + <span class="mono-tiny pull__mark">¶</span> |
| 276 | + <p class="pull__text"> |
| 277 | + These libraries started life inside of other service, |
| 278 | + then got cleaned up enough to live on its own. |
| 279 | + </p> |
| 280 | + </section> |
| 281 | + |
| 282 | + <!-- ─────────── CONTACT ─────────── --> |
| 283 | + <section id="contact" class="contact"> |
| 284 | + <header class="section-head"> |
| 285 | + <span class="mono-tiny">§ MAKE CONTACT</span> |
| 286 | + <h2 class="section-head__title">Find Ned in the wild.</h2> |
| 287 | + </header> |
| 288 | + |
| 289 | + <ul class="contact__grid"> |
| 290 | + <li> |
| 291 | + <span class="mono-tiny">Mastodon</span> |
| 292 | + <a rel="me" href="https://hachyderm.io/@CodeHead">@CodeHead<span class="muted">@hachyderm.io</span></a> |
| 293 | + </li> |
| 294 | + <li> |
| 295 | + <span class="mono-tiny">GitHub</span> |
| 296 | + <a href="https://github.com/wolpert">github.com/<span class="muted">wolpert</span></a> |
| 297 | + </li> |
| 298 | + <li> |
| 299 | + <span class="mono-tiny">LinkedIn</span> |
| 300 | + <a href="https://www.linkedin.com/in/wolpert">linkedin.com/in/<span class="muted">wolpert</span></a> |
| 301 | + </li> |
| 302 | + <li> |
| 303 | + <span class="mono-tiny">Email</span> |
| 304 | + <a href="mailto:ned.wolpert@gmail.com">ned.wolpert<span class="muted">@gmail.com</span></a> |
| 305 | + </li> |
| 306 | + </ul> |
| 307 | + </section> |
| 308 | + </main> |
| 309 | + |
| 310 | + <footer class="footer"> |
| 311 | + <div class="footer__col"> |
| 312 | + <span class="mono-tiny">Colophon</span> |
| 313 | + <p>Set in <em>Fraunces</em> & JetBrains Mono. Hand-written HTML and CSS. No frameworks, no trackers, no analytics.</p> |
| 314 | + </div> |
| 315 | + <div class="footer__col"> |
| 316 | + <span class="mono-tiny">License</span> |
| 317 | + <p>All projects released under Apache 2.0 or MIT.</p> |
| 318 | + </div> |
| 319 | + <div class="footer__col"> |
| 320 | + <span class="mono-tiny">© 2005 – present</span> |
| 321 | + <p>Codehead Systems · Ned Wolpert.</p> |
| 322 | + </div> |
| 323 | + </footer> |
| 324 | +</body> |
| 325 | +</html> |
0 commit comments