41554 blogs · [ { "id": "01a087e8-3c67-7365-bb18-f366e65b6601", "title": "Finding Signal in Market Noise: I Stopped Reading the Tape and Started Measuring It", "url": "https://www.susanpotter.net/quant/order-flow-quantitative-methods/", "published_at": "2026-05-30T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366e67a5e90", "title": "Premarket Dashboard: Design Specification", "url": "https://www.susanpotter.net/quant/premarket-dashboard-design/", "published_at": "2026-05-30T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366e75d4598", "title": "Metamorphic Relations for Backtests: Testing the Engine, Not the Strategy", "url": "https://www.susanpotter.net/quant/metamorphic-relations-backtests/", "published_at": "2026-05-27T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366e8078e57", "title": "Monte Carlo Permutation Tests for Strategy Significance: Is Your Alpha Real or Random?", "url": "https://www.susanpotter.net/quant/monte-carlo-permutation-tests-strategy-significance/", "published_at": "2026-05-25T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366e826a7c3", "title": "Bootstrap Methods for Strategy Robustness: Resampling When You Can't Get More Data", "url": "https://www.susanpotter.net/quant/bootstrap-methods-strategy-robustness/", "published_at": "2026-05-23T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366e904fca8", "title": "A Taxonomy of Backtest Lies: Survival Bias, Lookahead Bias, and the Rest", "url": "https://www.susanpotter.net/quant/backtest-bias-taxonomy/", "published_at": "2026-05-22T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366e9a7fa28", "title": "Walk-Forward Optimization: Anchored vs. Rolling Windows and When Each Fails", "url": "https://www.susanpotter.net/quant/walk-forward-optimization/", "published_at": "2026-05-21T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366eaa0e1df", "title": "Autocorrelation and What It Means for Your Backtest P&L", "url": "https://www.susanpotter.net/quant/autocorrelation-backtest-pnl/", "published_at": "2026-05-20T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366eae5c601", "title": "Stationarity Testing for Strategy Signals: ADF, KPSS, and Why Your Backtest Depends on It", "url": "https://www.susanpotter.net/quant/stationarity-testing-strategy-signals/", "published_at": "2026-05-19T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366eb3b32f6", "title": "Property-Based Testing Meets Financial Data: Turning Market Invariants into Executable Specifications", "url": "https://www.susanpotter.net/quant/property-based-testing-statistical-validation/", "published_at": "2026-05-18T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ebaccb90", "title": "From Hypothesis to Production: A Quant's Productivity Toolkit", "url": "https://www.susanpotter.net/quant/hypothesis-to-production-toolkit/", "published_at": "2026-05-16T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ebbd66bd", "title": "The Testing Pyramid, Sideways: Software Testing Practices Analogues in Quantitative Trading", "url": "https://www.susanpotter.net/quant/testing-pyramid-sideways/", "published_at": "2026-05-16T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ec018df8", "title": "Event Sourcing for Financial Systems", "url": "https://www.susanpotter.net/quant/event-sourcing-financial-systems/", "published_at": "2026-05-13T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ec9bb4c5", "title": "Parsing Market Data: A Practical Guide for Quant Developers", "url": "https://www.susanpotter.net/quant/parsing-market-data-a-practical-guide-for-quant-developers/", "published_at": "2026-05-09T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ed8f1cc8", "title": "Now", "url": "https://www.susanpotter.net/now/", "published_at": "2026-05-03T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ee28cc57", "title": "Contact", "url": "https://www.susanpotter.net/contact/", "published_at": "2026-05-01T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ef11b99f", "title": "Privacy Policy", "url": "https://www.susanpotter.net/privacy/", "published_at": "2026-05-01T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366ef945dc9", "title": "Terms of Use", "url": "https://www.susanpotter.net/terms/", "published_at": "2026-05-01T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f07d0ff7", "title": "What if your language tooling was AI-native?", "url": "https://www.susanpotter.net/software/ai-native-language-tooling/", "published_at": "2025-06-25T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f165e5b0", "title": "The Perfection Paradox in Quantitative Development", "url": "https://www.susanpotter.net/quant/perfection-paradox-quant-development/", "published_at": "2024-11-20T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f1807d34", "title": "Software Optimization Through Property-Based Thinking", "url": "https://www.susanpotter.net/software/optimization-property-based-thinking/", "published_at": "2024-10-31T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f22769bd", "title": "Software Optimization Mental Models for Software Engineers", "url": "https://www.susanpotter.net/software/optimization-mental-models-software-engineering/", "published_at": "2024-10-21T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f28a91a6", "title": "The costs of digital twins and solving the 200% problem", "url": "https://www.susanpotter.net/software/the-costs-of-digital-twins-and-solving-the-200-problem/", "published_at": "2024-09-26T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f2e0b45f", "title": "An Ode To ISO 8601", "url": "https://www.susanpotter.net/software/an-ode-to-iso-8601/", "published_at": "2024-09-04T00:00:00+00:00" }, { "id": "01a087e8-3c67-7365-bb18-f366f353e792", "title": "Flix Part 2: Smart Constructors", "url": "https://www.susanpotter.net/software/flix-part-2-smart-constructors/", "published_at": "2023-10-31T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c205f9b6", "title": "A Haskell view of functional programming (\"effectful\")", "url": "https://www.susanpotter.net/software/a-haskell-tinted-view-of-functional-programming-effectful/", "published_at": "2023-07-18T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c28e1943", "title": "A Haskell view of functional programming (well-typedness)", "url": "https://www.susanpotter.net/software/a-haskell-tinted-view-of-functional-programming-well-typedness/", "published_at": "2023-07-10T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c31a0a3f", "title": "TypeScript's Mapped Types", "url": "https://www.susanpotter.net/software/conjuring-typescripts-magic-with-mapped-types/", "published_at": "2023-06-23T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c388af46", "title": "Cross-runtime TypeScript Library Development: A Deno-Node Workflow", "url": "https://www.susanpotter.net/software/cross-runtime-typescript-library-development-a-deno-node-workflow/", "published_at": "2023-06-21T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c4881cd8", "title": "Rapid Data Exploration with DuckDB: An In-Depth Tutorial", "url": "https://www.susanpotter.net/software/rapid-data-exploration-with-duckdb-an-in-depth-tutorial/", "published_at": "2023-06-19T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c53a4203", "title": "Using Conditional Types in TypeScript", "url": "https://www.susanpotter.net/software/using-conditional-types-in-typescript/", "published_at": "2023-05-31T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c54472a5", "title": "The Pitfalls of Serverless Hosting", "url": "https://www.susanpotter.net/software/the-pitfalls-of-serverless-hosting/", "published_at": "2023-05-19T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c5862e0d", "title": "Extracting Your Twitter Archive into DuckDB", "url": "https://www.susanpotter.net/software/extracting-your-twitter-archive-into-duckdb/", "published_at": "2022-12-18T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c6174541", "title": "Flix Series Part 1: Higher-order functions & infix combinators", "url": "https://www.susanpotter.net/software/flix-series-part-1-higher-order-functions-infix-combinators/", "published_at": "2022-07-04T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c685a0aa", "title": "Flix Series Part 0: Getting Started & Setup", "url": "https://www.susanpotter.net/software/getting-started-with-flix-part-0/", "published_at": "2022-06-05T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c7232e38", "title": "Unikernels: A Strategic Technology Assessment for Engineering Leaders", "url": "https://www.susanpotter.net/software/random-notes-on-unikernels/", "published_at": "2021-12-19T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c81347ec", "title": "reMarkable 2: A Quant Researcher's Paper Tablet", "url": "https://www.susanpotter.net/reviews/remarkable2-eink-tablet/", "published_at": "2021-07-27T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c845d597", "title": "Track diffs by scoping file, range, function, method, class changes", "url": "https://www.susanpotter.net/software/track-diffs-by-scoping-file-range-function-method-class-changes/", "published_at": "2020-12-22T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c92402d9", "title": "TypeScript's keyof operator and possible uses", "url": "https://www.susanpotter.net/software/typescripts-keyof-operator-and-possible-uses/", "published_at": "2020-10-18T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298c9824e49", "title": "How to make seemingly impossible decisions", "url": "https://www.susanpotter.net/software/how-to-make-seemingly-impossible-decisions/", "published_at": "2020-10-17T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ca0f6851", "title": "Profunctors for Practitioners: The API (Part 3)", "url": "https://www.susanpotter.net/software/profunctors-for-practitioners-the-api-part-3/", "published_at": "2020-10-04T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cac42614", "title": "Profunctors for Practitioners: First Intuitions (Part 2)", "url": "https://www.susanpotter.net/software/profunctors-for-practitioners-first-intuitions-part-2/", "published_at": "2020-09-29T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cbb35c23", "title": "JavaScript objects to TypeScript enumerations, const enums, ambient enums", "url": "https://www.susanpotter.net/software/typescript-enum-versus-const-enum/", "published_at": "2020-09-25T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cbd57912", "title": "Using three-way diffing context for merge conflict style in Git", "url": "https://www.susanpotter.net/software/using-three-way-diffing-context-for-merge-conflict-style-in-git/", "published_at": "2020-09-24T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cc5b5a07", "title": "Profunctors for Practitioners: Motivating Examples (Part 1)", "url": "https://www.susanpotter.net/software/profunctors-for-practitioners-motivating-examples-part-1/", "published_at": "2020-09-22T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ccedece9", "title": "Dhall's merge: Pattern Matching for Configuration", "url": "https://www.susanpotter.net/snippets/dhalls-merge-pattern-matching-for-configuration/", "published_at": "2020-09-21T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cd1cfe56", "title": "Reader: Dependency Injection Without the Ceremony", "url": "https://www.susanpotter.net/snippets/reader-dependency-injection-without-the-ceremony/", "published_at": "2020-09-19T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cd1d02aa", "title": "No Subtyping in PureScript: Row Polymorphism Instead", "url": "https://www.susanpotter.net/snippets/no-subtyping-in-purescript-row-polymorphism-instead/", "published_at": "2020-09-11T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cd6521ae", "title": "Algebraic Data Types in TypeScript", "url": "https://www.susanpotter.net/software/algebraic-data-types-in-typescript/", "published_at": "2020-08-11T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cdf21b5a", "title": "Algebraic Data Types: For the math(s) inclined", "url": "https://www.susanpotter.net/software/algebraic-data-types-for-the-maths-inclined/", "published_at": "2020-08-11T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ce24bba8", "title": "Thinking in Properties (and Beyond), Testing edition", "url": "https://www.susanpotter.net/talks/thinking-in-properties-testing/", "published_at": "2020-08-01T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ce82cdcc", "title": "Experience report deploying PureScript to AWS Serverless (Lambda)", "url": "https://www.susanpotter.net/software/experience-report-deploying-purescript-aws-serverless/", "published_at": "2020-06-03T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ce9b32f4", "title": "`any` versus `unknown` in TypeScript: When to use one over the other", "url": "https://www.susanpotter.net/software/any-versus-unknown-in-typescript-when-to-use-one-over-the-other/", "published_at": "2020-01-29T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ced6747c", "title": "DynamoDB: The Basics", "url": "https://www.susanpotter.net/software/dynamodb-the-basics/", "published_at": "2019-10-30T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298cf57dbc6", "title": "From Zero to Haskell: Lessons Learned (ZuriHac)", "url": "https://www.susanpotter.net/talks/from-zero-to-haskell-lessons-learned-zurihac/", "published_at": "2019-06-15T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d01ef24f", "title": "Shorts", "url": "https://www.susanpotter.net/film/2019/05/shorts/", "published_at": "2019-05-12T03:41:25+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d0f6c095", "title": "Dynamically scaling a news and activism hub (5x traffic in 20 mins)", "url": "https://www.susanpotter.net/talks/dynamically-scaling-a-news-and-activism-hub-5x-traffic-in-20-mins/", "published_at": "2019-04-26T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d15ca4c3", "title": "Socket Statistics on Linux with ss", "url": "https://www.susanpotter.net/snippets/socket-statistics-on-linux-with-ss/", "published_at": "2019-04-03T23:44:52+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d200b123", "title": "Profunctors: The Machinery Behind Optics", "url": "https://www.susanpotter.net/snippets/profunctors-the-machinery-behind-optics/", "published_at": "2018-10-30T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d2467e7a", "title": "Decoding lens operators", "url": "https://www.susanpotter.net/snippets/decoding-lens-operators/", "published_at": "2018-04-21T19:15:59+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d24bd5bf", "title": "Functional Operations (Functional Programming at Comcast Labs Connect)", "url": "https://www.susanpotter.net/talks/functional-operations-functional-programming-at-comcast-labs-connect/", "published_at": "2018-03-09T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d2855cf3", "title": "Economic concepts applied in software development and leadership", "url": "https://www.susanpotter.net/software/economic-concepts-applied-in-software-development-reliability-engineering-and-technical-leadership/", "published_at": "2017-06-22T20:42:40+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d350a5ef", "title": "A Mathematician in Scotland", "url": "https://www.susanpotter.net/jokes/a-mathematician-in-scotland/", "published_at": "2017-03-10T20:45:57+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d3eee0ac", "title": "Functional and Reactive Operations", "url": "https://www.susanpotter.net/talks/functional-and-reactive-operations/", "published_at": "2016-10-04T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d48fb6a4", "title": "Put a Type On It: Idris Types as Propositions", "url": "https://www.susanpotter.net/talks/put-a-type-on-it-idris-types-as-propositions/", "published_at": "2016-09-21T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d533985f", "title": "Nix in your home directory", "url": "https://www.susanpotter.net/snippets/nix-in-your-home-directory/", "published_at": "2016-08-30T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d5ece2f2", "title": "To Type or not to Static Type", "url": "https://www.susanpotter.net/software/to-type-or-not-to-static-type/", "published_at": "2016-05-01T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d69e3682", "title": "From Zero To Production (NixOS, Erlang)", "url": "https://www.susanpotter.net/talks/from-zero-to-production-nixos-erlang/", "published_at": "2016-03-08T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d6a91a14", "title": "Parametricity: A Practitioners Guide", "url": "https://www.susanpotter.net/software/parametricity-a-practitioners-guide/", "published_at": "2014-09-25T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d6f8aa3d", "title": "Scalaz By Example (An IO Taster)", "url": "https://www.susanpotter.net/talks/scalaz-by-example-an-io-taster/", "published_at": "2014-01-09T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d7eeb4ca", "title": "Algebraic Data Types", "url": "https://www.susanpotter.net/software/algebraic-data-types/", "published_at": "2012-11-27T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d8459bce", "title": "Functional Algebra: Monoids Applied", "url": "https://www.susanpotter.net/talks/functional-algebra-monoids-applied/", "published_at": "2012-11-10T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d86a0a68", "title": "Why Haskell? Embrace Correctness", "url": "https://www.susanpotter.net/talks/why-haskell/", "published_at": "2012-03-16T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d86dab29", "title": "Erlang OTP Glossary of Terms", "url": "https://www.susanpotter.net/snippets/erlang-otp-glossary/", "published_at": "2012-01-10T05:31:13+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d942e33d", "title": "Dynamo: Not just for datastores", "url": "https://www.susanpotter.net/talks/dynamo-not-just-for-datastores/", "published_at": "2011-09-19T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298d964c41f", "title": "Distributed Developer Workflows using Git", "url": "https://www.susanpotter.net/talks/distributed-developer-workflows-using-git/", "published_at": "2011-08-01T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298da27e074", "title": "Why JSON Pointer falls short (and why XPath for JSON would be great)", "url": "https://www.susanpotter.net/software/why-json-pointer-falls-short-and-why-xpath-for-json-would-be-great/", "published_at": "2011-07-31T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298daf11eea", "title": "Erlang Meck API notes", "url": "https://www.susanpotter.net/snippets/erlang-meck-api-notes/", "published_at": "2011-03-23T06:11:30+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298dbb6df0f", "title": "Deploying Distributed Software to the Cloud (w/o Breaking a Sweat)", "url": "https://www.susanpotter.net/talks/deploying-distributed-software-services-to-the-cloud-without-breaking-a-sweat/", "published_at": "2011-03-05T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298dc4c1eef", "title": "Designing for Concurrency", "url": "https://www.susanpotter.net/talks/designing-for-concurrency/", "published_at": "2010-08-22T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298dccdd5c8", "title": "Erlang's \"let it fail\" philosophy", "url": "https://www.susanpotter.net/software/erlangs-let-it-fail-philosophy/", "published_at": "2010-01-30T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298dcf09f61", "title": "Predicate Algebra in Python", "url": "https://www.susanpotter.net/snippets/predicate-algebra-in-python/", "published_at": "2009-11-09T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298dddeb94d", "title": "Scala versus Erlang for Managers", "url": "https://www.susanpotter.net/software/scala-versus-erlang-for-managers/", "published_at": "2009-04-15T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298ddf304ab", "title": "SCM: The Next Generation", "url": "https://www.susanpotter.net/software/scm-the-next-generation/", "published_at": "2007-01-25T00:00:00+00:00" }, { "id": "01a087e8-3c68-710c-9dd1-6298de6d817d", "title": "Affiliate Disclosure", "url": "https://www.susanpotter.net/affiliate-disclosure/", "published_at": null }, { "id": "01a087e8-3c68-710c-9dd1-6298df41fd7e", "title": "Credits", "url": "https://www.susanpotter.net/credits/", "published_at": null }, { "id": "01a087e8-3c68-710c-9dd1-6298df9c0f6a", "title": "How can I show only the files containing merge conflicts?", "url": "https://www.susanpotter.net/git/how-can-i-show-only-the-files-containing-merge-conflicts/", "published_at": null }, { "id": "01a087e8-3c68-710c-9dd1-6298dffa1f76", "title": "How do I delete a branch in Git locally and globally?", "url": "https://www.susanpotter.net/git/how-do-i-delete-a-branch-in-git-locally-and-globally/", "published_at": null }, { "id": "01a087e8-3c68-710c-9dd1-6298e0b53721", "title": "How to show the current branch name?", "url": "https://www.susanpotter.net/git/how-to-show-the-current-branch-name/", "published_at": null }, { "id": "01a087e8-3c68-710c-9dd1-6298e1534894", "title": "Susan Potter: Quant Developer & Principal Engineer", "url": "https://www.susanpotter.net/about/", "published_at": null }, { "id": "01a087e8-3c68-710c-9dd1-6298e18b83b1", "title": "What is NixOS and why am I excited about what it offers?", "url": "https://www.susanpotter.net/nixos/", "published_at": null } ] posts Claim your blog
Back to susanpotter.net
Blog · corpus.blog/blogs/susanpotter.net/posts

susanpotter.net

susanpotter.net

2026

3 May 2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2014

2012

2011

2010

2009

2007

Undated