406430 views
# Voboda - ![](https://i.imgur.com/ZQXJrtK.png) ## **Salvor Voboda** I like making new things with cryptography. - [email](mailto:voboda@voboda.com) - [blog](http://blog.voboda.com/) - [bluesky](https://bsky.app/profile/voboda.com) Come play [One Line For Your Mind](https://onelineforyourmind.com), solve [Lost In Transaction](https://paragraph.xyz/@infinite/lost-in-transaction), or join us at [The Infinite Build](https://infinite.build). ## Apps - ### One Line For Your Mind A game [inspired by koan study](https://blog.voboda.com/the-anti-app/). Access your innate enlightenment. - [Play](https://onelineforyourmind.com) - ### Voice Rip Private, local, in-browser voice notes (still alpha!) - [Speak](http://app.voice.rip) ## Cryptography & Privacy Explorations - ### HDK Sessions Tamper-proof sessions without cookies or server storage, using HD keys for client-custodied state. [code](https://gitlab.com/voboda/hdk-sessions) / [demo](https://onelineforyourmind.com/) / [design.md](https://gitlab.com/voboda/hdk-sessions/-/blob/main/DESIGN.md?ref_type=heads&plain=1) - ### Serverfull Get git-deploy automation with your own server. [code](https://github.com/voboda/serverfull/) - ### zKal A community calendar that respects everyone's privacy. [![](https://img.shields.io/badge/🥇-1st_Prize_ethBerlin-F4DF57?style=flat-square&logoColor=black)](https://ethberlin.org) [code](https://github.com/voboda/zKal) / [demo](https://poc.dev.zkal.voboda.com/) / [design](https://blog.voboda.com/proof-projectors) / [origin story](https://blog.voboda.com/the-third-floor-at-ethberlin/) <span data-shield="ethBerlin" data-shield-gold></span> - ### Fission Non-antoganistic forking protocol. Spin out funded DAOs from minority-backed proposals. [code](https://gitlab.com/infinite-build/fission) - ### Fusion Self-select your breakout group friends -- privately using MPC [code](https://gitlab.com/infinite-build/fusion) - ### Ephemerant A Gibson-inspired system for anonymous communities with zero-knowledge tech. [![](https://img.shields.io/badge/🥈-2nd_Prize_Mina-F3FEF1?style=flat-square&logoColor=black)](https://minaprotocol.com) [v1 code](https://github.com/voboda/ephemerant) / [v2 exploration](https://blog.voboda.com/meeting-where-ai-eyes-cant-follow/) - ![](https://i.imgur.com/DeTxK8z.png) ## Play & learn - ### The Immutalists Learn cryptography through a quest game about DeFi history. - [Start](https://immutalists.infinite.build/) - ### Humanity’s Hidden Path Making cryptography's math accessible and showing how it shapes society. - [Start](https://atlas.infinite.build/compendium) ## Stories - [Lost In Transaction](https://paragraph.xyz/@infinite/lost-in-transaction) Who are the guilty behind crypto scams? [Cleave](https://notes.infinite.build/s/Mwd_K26dT) Losing ourselves and losing each other - ![](https://i.imgur.com/m4xjbMs.png) ## Community - ### The Infinite Build A peer-support group for builders. Philosophy: let everyone [choose their own adventure](https://blog.voboda.com/healthy-forks/), focus on [connection over containment](https://blog.voboda.com/node-connector-perspective/), build a culture of [response](https://blog.voboda.com/contributor-churn/). - [Join us](https://infinite.build) - ### Chaos Communication Congress At [CCC](https://events.ccc.de/congress/), I help out at [Critical Decentralisation Cluster](https://decentral.community) and run [microlab](https://notes.infinite.build/s/UhHIMe9-t), problem-solving group sessions for FOSS projects. - ### Social Distorti0n Protocol Joined these time-travelling activists, who make technical [treasure hunt games](https://github.com/social-dist0rtion-protocol) for DevCon, CCC and ethBerlin. - ### Minacon I organised an unconferences where [60 builders unraveled the L1s most persistent knots](http://minaprotocol.com/blog/minacon-an-inflection-point). The rallying call: [We are the preimage of a post-zk world.](https://notes.infinite.build/5EnkSX9jTQeuz42_JscxDA) The playbook: [Musters](https://notes.infinite.build/bLwmyb4kRvWmaIKSbeuolg) o1 Labs wrote [a follow-up](https://www.o1labs.org/blog/minacon-2024-recap) and I describe some outcomes [here](https://blog.voboda.com/healthy-forks/). ## [Get an email when I make something new 📨](https://n8n.infinite.build/form/7367a63d-de01-4e12-a45a-a83115beab99) <img src="https://voboda.goatcounter.com/count?p=/"> <style> /* HedgeDoc reset Purpose: neutralize HedgeDoc / github-markdown presentation without breaking editor layout. Scope: preview/rendered markdown only. */ :root { --hd-page-pad-x: clamp(18px, 2.2vw, 28px); --hd-page-pad-y: clamp(28px, 4vw, 56px); --hd-flow-space: 1rem; --hd-list-space: 0.5rem; } html { box-sizing: border-box; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; } *, *::before, *::after { box-sizing: inherit; } html, body { margin: 0; min-height: 100%; width: 100%; max-width: none !important; } body { line-height: 1.5; } body > .container, body > .container-fluid { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; } img, picture, svg, canvas, video, iframe { display: block; max-width: 100%; } img { height: auto; border-style: none; } a { color: inherit; text-decoration-thickness: 0.08em; text-underline-offset: 0.16em; } button, input, textarea, select { font: inherit; } pre, code, kbd, samp { font: inherit; } hr { height: 0; border: 0; } /* HedgeDoc chrome that is safe to hide in both view and edit */ #ui-toc-affix, .ui-infobar, .ui-toc, .ui-affix-toc, .ui-new-note, .ui-extra-help { display: none !important; } /* Do not touch split-pane/editor sizing. Only neutralize preview wrappers. */ .ui-view-area, .ui-view-mode, .ui-view-container { background: transparent !important; border: 0 !important; box-shadow: none !important; } /* Full-width in view mode. */ body.view-mode, body.view-mode .container, body.view-mode .container-fluid, body.view-mode .ui-view-area, body.view-mode .ui-view-mode, body.view-mode .ui-view-container { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; } /* Full-width preview pane in split/edit mode without touching editor pane sizing. */ .ui-view-area .container, .ui-view-area .container-fluid, .ui-view-mode .container, .ui-view-mode .container-fluid, .ui-view-container .container, .ui-view-container .container-fluid { width: 100% !important; max-width: none !important; margin: 0 !important; padding: 0 !important; } /* In edit/split mode, leave HedgeDoc layout alone and only style the markdown content. */ .markdown-body { width: 100% !important; max-width: none !important; margin: 0 !important; padding: var(--hd-page-pad-y) var(--hd-page-pad-x) !important; border: 0 !important; background: transparent !important; box-shadow: none !important; color: inherit; font-size: 70%; line-height: inherit; overflow-wrap: anywhere; } /* neutralize github-markdown spacing */ .markdown-body > * { margin-top: 0; } .markdown-body > * + * { margin-top: var(--hd-flow-space); } .markdown-body > :first-child, .markdown-body > *:first-child { margin-top: 0 !important; } .markdown-body :where(h1, h2, h3, h4, h5, h6) { margin: 0; padding: 0; border: 0; font-size: inherit; font-weight: inherit; line-height: inherit; color: inherit; } .markdown-body :where(p, blockquote, ul, ol, dl, pre, table, figure) { margin: 0; } .markdown-body :where(ul, ol) { padding-left: 1.25em; } .markdown-body li + li { margin-top: var(--hd-list-space); } .markdown-body :where(ul ul, ul ol, ol ul, ol ol) { margin-top: var(--hd-list-space); } .markdown-body blockquote { padding: 0; color: inherit; border-left: 0; } .markdown-body hr { margin: clamp(1.5rem, 5vw, 4rem) 0; background: none; } .markdown-body table { width: 100%; border-collapse: collapse; border-spacing: 0; background: transparent !important; } .markdown-body table, .markdown-body tr, .markdown-body th, .markdown-body td { border: 0 !important; background: transparent !important; } .markdown-body th, .markdown-body td { padding: 0; text-align: left; } .markdown-body pre, .markdown-body code { background: transparent; border: 0; border-radius: 0; } .markdown-body pre { padding: 0; overflow: auto; } .markdown-body code { padding: 0; white-space: break-spaces; } .markdown-body pre code { white-space: pre; } .markdown-body img { margin: 0; background: transparent; } .markdown-body figure, .markdown-body figcaption { margin: 0; padding: 0; } .markdown-body input[type="checkbox"] { vertical-align: middle; } /* HedgeDoc / night mode overrides, limited to preview chrome */ body.night .ui-view-area, body.night .ui-view-mode, body.night .modal-content, body.night .panel, body.night .panel-heading, body.night .markdown-body table, body.night .markdown-body tr, body.night .markdown-body th, body.night .markdown-body td { background: transparent !important; color: inherit !important; border-color: transparent !important; } /* Voboda theme Builds on hedgedoc-reset.css Keeps the original card irregularities and text rhythm, with only subtle shadow added. */ :root { --bg: #180524; --bg-2: #031a27; --text: #eaeaea; --card-text: #ccc; --link: #5fa1dd; --selection: #114283; --surface: rgba(255, 255, 255, 0.05); --rule: #e7e7e7; --inline-code: #f0f0f0; --shield-gold: #f4df57; --shield-silver: #f3fef1; --shield-bronze: #d99a5b; --shadow: 0 14px 44px rgba(0, 0, 0, 0.26); --font-sans: Arial, "Helvetica Neue", Helvetica, sans-serif; --font-mono: Menlo, Inconsolata, monospace; } body { margin: 0; font-family: var(--font-sans); letter-spacing: 0.02em; font-size: clamp(24px, 1.15rem + 0.1vw, 40px); line-height: 1.5; background: var(--bg); color: var(--text); background-image: radial-gradient(circle 1939px at 144.7% 100%, var(--bg-2) 10%, var(--bg)); min-height: 100vh; background-attachment: fixed; background-size: cover; background-repeat: no-repeat; } ::selection, ::-moz-selection { background: var(--selection); color: #fff; } body > .container, body > .container-fluid, .ui-view-area .container, .ui-view-area .container-fluid, .ui-view-mode .container, .ui-view-mode .container-fluid, .ui-view-container .container, .ui-view-container .container-fluid { padding: 40px !important; } .markdown-body { font-family: var(--font-sans); color: var(--text); line-height: 1.5; max-width: none; } .markdown-body > *:first-child { margin-top: 120px !important; } .markdown-body h1 { display: none; } .markdown-body h2, .markdown-body h3, .markdown-body h4, .markdown-body h5, .markdown-body h6 { margin: 0.83em 0 0.5em 0; padding: 0.3em 0; font-weight: normal; line-height: 1.2; font-size: 80%; letter-spacing: 0.26em; text-transform: uppercase; text-align: left; } .markdown-body h2 { margin-top: 8em; border-bottom: none; text-align: left; } .markdown-body > h2 + p { text-align: left; } .markdown-body > h3 { margin-top: 80px; text-align: left; } .markdown-body ul h2 { margin-top: 2em; text-align: left; font-size: 140%; } .markdown-body p { text-align: left; margin: 0 0 20px 0; } .markdown-body a, .markdown-body li a { color: var(--link); } .markdown-body hr { height: 0.05em; margin: 24px 0; background-color: var(--rule); border: 0; } .markdown-body code { font-family: var(--font-mono); font-size: calc(1em - 2px); background-color: var(--inline-code); color: #222; padding: 0.2em 0.4em; border-radius: 2px; } .markdown-body img[src*="shields.io/"] { filter: saturate(0.3) contrast(0.7); } img { filter: hue-rotate(140deg) saturate(30%); } .markdown-body > p > a > img { width: 8em; } .markdown-body table { width: 100%; margin-bottom: 40px; } .markdown-body table, .markdown-body table tr, .markdown-body table td, .markdown-body table th { border: none; background: transparent; } .markdown-body table th, .markdown-body table td { padding: 10px; text-align: left; } .markdown-body > ul { display: flex; flex-wrap: wrap; justify-content: flex-start; gap: 56px; list-style: none; padding: 0; margin: 0; } .markdown-body > ul > li { position: relative; background-color: var(--surface); color: var(--card-text); text-align: left; gap: 10px; flex: 0 1 510px; max-width: 465px; min-width: 225px; padding: 32px 42px 42px 42px; border: 0; box-shadow: var(--shadow); border-top-left-radius: 255px 15px; border-top-right-radius: 15px 225px; border-bottom-right-radius: 225px 15px; border-bottom-left-radius: 15px 255px; } .markdown-body > ul > li[data-shield] { --shield-color: var(--link); } .markdown-body > ul > li[data-shield][data-gold] { --shield-color: var(--shield-gold); } .markdown-body > ul > li[data-shield][data-silver] { --shield-color: var(--shield-silver); } .markdown-body > ul > li[data-shield][data-bronze] { --shield-color: var(--shield-bronze); } .markdown-body > ul > li[data-shield]::after { content: attr(data-shield); position: absolute; top: 18px; right: 22px; max-width: calc(100% - 64px); padding: 0.35em 0.7em; border-radius: 999px; color: var(--shield-color); background: color-mix(in srgb, var(--shield-color) 14%, transparent); box-shadow: 0 0 0 1px color-mix(in srgb, var(--shield-color) 28%, transparent) inset; font-size: 0.42em; line-height: 1.2; letter-spacing: 0.12em; text-transform: uppercase; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; pointer-events: none; } /* top-left corner */ .markdown-body > ul > li:nth-child(3n + 1) { border-top-left-radius: 255px 15px; } .markdown-body > ul > li:nth-child(3n + 2) { border-top-left-radius: 155px 15px; } .markdown-body > ul > li:nth-child(3n) { border-top-left-radius: 205px 15px; } /* top-right corner */ .markdown-body > ul > li:nth-child(4n + 1) { border-top-right-radius: 15px 225px; } .markdown-body > ul > li:nth-child(4n + 2) { border-top-right-radius: 45px 225px; } .markdown-body > ul > li:nth-child(4n + 3) { border-top-right-radius: 45px 25px; } .markdown-body > ul > li:nth-child(4n) { border-top-right-radius: 30px 190px; } /* bottom-right corner */ .markdown-body > ul > li:nth-child(5n + 1) { border-bottom-right-radius: 225px 15px; } .markdown-body > ul > li:nth-child(5n + 2) { border-bottom-right-radius: 125px 15px; } .markdown-body > ul > li:nth-child(5n + 3) { border-bottom-right-radius: 25px 15px; } .markdown-body > ul > li:nth-child(5n + 4) { border-bottom-right-radius: 190px 40px; } .markdown-body > ul > li:nth-child(5n) { border-bottom-right-radius: 160px 20px; } /* bottom-left corner */ .markdown-body > ul > li:nth-child(7n + 1) { border-bottom-left-radius: 15px 255px; } .markdown-body > ul > li:nth-child(7n + 2) { border-bottom-left-radius: 25px 255px; } .markdown-body > ul > li:nth-child(7n + 3) { border-bottom-left-radius: 25px 255px; } .markdown-body > ul > li:nth-child(7n + 4) { border-bottom-left-radius: 20px 180px; } .markdown-body > ul > li:nth-child(7n + 5) { border-bottom-left-radius: 30px 200px; } .markdown-body > ul > li:nth-child(7n + 6) { border-bottom-left-radius: 50px 220px; } .markdown-body > ul > li:nth-child(7n) { border-bottom-left-radius: 25px 170px; } /* slight card wobble */ .markdown-body > ul > li:nth-child(9n + 1) { transform: rotate(0.2deg); } .markdown-body > ul > li:nth-child(9n + 2) { transform: rotate(0.5deg); } .markdown-body > ul > li:nth-child(9n + 3) { transform: rotate(0.2deg); } .markdown-body > ul > li:nth-child(9n + 4) { transform: rotate(-0.4deg); } .markdown-body > ul > li:nth-child(9n + 5) { transform: rotate(-0.22deg); } .markdown-body > ul > li:nth-child(9n + 6) { transform: rotate(-0.33deg); } .markdown-body > ul > li:nth-child(9n + 7) { transform: rotate(0.5deg); } .markdown-body > ul > li:nth-child(9n + 8) { transform: rotate(0.3deg); } .markdown-body > ul > li:nth-child(9n) { transform: rotate(0deg); } .markdown-body li + li { margin-top: 0; } .markdown-body > ul > li > img { width: 100%; object-fit: cover; aspect-ratio: 1 / 1; display: block; margin-bottom: 10px; } .markdown-body > ul > li[data-shield] img[src*="shields.io/"] { display: none; } .markdown-body > ul > li > h2, .markdown-body > ul > li > h3, .markdown-body > ul > li > p { text-align: left; } .markdown-body > ul > li > h2, .markdown-body > ul > li > h3 { margin-top: 0.9em; margin-bottom: 0.7em; padding: 0.3em 0; } /* first card on the page only: center all direct content */ .markdown-body > ul:first-of-type > li:first-child { text-align: center; } .markdown-body > ul:first-of-type h2, .markdown-body > ul:first-of-type h3, .markdown-body > ul:first-of-type p, .markdown-body > ul:first-of-type ul { text-align: center; } .markdown-body > ul:first-of-type > li:first-child > ul { justify-content: center; } .markdown-body > ul:first-of-type > li:first-child > ul > li { flex-grow: 0; text-align: center; } .markdown-body > ul:first-of-type > li:first-child > h3 { margin-bottom: 20px; } .markdown-body > ul > li > ul { list-style: none; margin-top: 20px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; } .markdown-body > ul > li > ul > li { flex-grow: 1; margin: 0; } .markdown-body > ul > li > ul > li > a { color: var(--link); padding: 10px 15px; border: 1px solid #ccc3; border-radius: 10px; text-decoration: none; font-weight: bold; text-align: center; display: inline-block; margin: 3px 0; } .markdown-body > ul > li > ul > li > a:hover, .markdown-body > ul > li > ul > li > a:focus-visible { background-color: #e0e0e0; color: #180524; } body.night .ui-view-area, body.night .ui-edit-area, body.night .modal-content, body.night .panel, body.night .panel-heading { background-color: transparent !important; color: var(--text) !important; } body.night .CodeMirror { background-color: #2d2d2d !important; color: var(--text) !important; } body.night a { color: #5eb7e0 !important; } body.night ::selection, body.night ::-moz-selection { background: var(--selection) !important; color: #fff !important; }