41554 blogs · [ { "id": "01a087be-6603-7318-bab7-94d153cb622d", "title": "Unary Functions in an E-graph", "url": "https://pavpanchekha.com/blog/unary-functions.html", "published_at": "2026-04-24T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1544c3f15", "title": "LLM vs Kepler", "url": "https://pavpanchekha.com/blog/llk.html", "published_at": "2026-04-08T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d154fbc40e", "title": "The Token Production System", "url": "https://pavpanchekha.com/blog/tps.html", "published_at": "2026-02-19T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1551e35f7", "title": "Agent Harnesses are Just Shells", "url": "https://pavpanchekha.com/blog/agents-are-shells.html", "published_at": "2025-12-05T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d155777765", "title": "How to Start AI Coding", "url": "https://pavpanchekha.com/blog/coding-with-ai.html", "published_at": "2025-12-04T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d155f86cf4", "title": "Should CSS be Constraints?", "url": "https://pavpanchekha.com/blog/why-css-bad.html", "published_at": "2025-12-03T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d156a48a30", "title": "We'd be Better Off with 9-bit Bytes", "url": "https://pavpanchekha.com/blog/9bit.html", "published_at": "2025-08-06T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1570f7fd9", "title": "Distinguished (for me) Papers of PLDI'25", "url": "https://pavpanchekha.com/blog/pldi25.html", "published_at": "2025-06-23T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d157235e64", "title": "Testing My M1 Simulator", "url": "https://pavpanchekha.com/blog/more-simulator.html", "published_at": "2025-05-31T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d158201907", "title": "Simulating Double-Double Addition Algorithms", "url": "https://pavpanchekha.com/blog/ddadd-simulate.html", "published_at": "2025-05-30T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15849f02d", "title": "Some Surprising Quantifier Elimination Operators", "url": "https://pavpanchekha.com/blog/quantifier-elimination.html", "published_at": "2025-05-26T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d158637681", "title": "LIN-graphs, an Egraph modulo T", "url": "https://pavpanchekha.com/blog/lin-graphs.html", "published_at": "2025-05-23T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1592b2b20", "title": "Deciding Equality for Trigonometric Expressions", "url": "https://pavpanchekha.com/blog/trig-decision.html", "published_at": "2025-05-21T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d159756061", "title": "Egraphs Modulo T (Attempt 1)", "url": "https://pavpanchekha.com/blog/egraph-t.html", "published_at": "2025-05-21T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15a595f5f", "title": "How Operator Fusion Affects Error", "url": "https://pavpanchekha.com/blog/op-fusion-error.html", "published_at": "2025-05-20T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15b0f00c3", "title": "The Promise of P-Graphs", "url": "https://pavpanchekha.com/blog/p-graphs.html", "published_at": "2025-05-19T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15b646a86", "title": "Absorption in Double-Double Arithmetic", "url": "https://pavpanchekha.com/blog/double-double-absorption.html", "published_at": "2025-05-14T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15b80413b", "title": "The Fastest TwoSum on an Apple M1", "url": "https://pavpanchekha.com/blog/more-fast-two-sum.html", "published_at": "2025-05-12T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15c075e42", "title": "FastTwoSum is Faster Than TwoSum", "url": "https://pavpanchekha.com/blog/fast-two-sum.html", "published_at": "2025-05-05T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15cf953e4", "title": "ChatGPT o3 is the Real Deal", "url": "https://pavpanchekha.com/blog/o3-is-different.html", "published_at": "2025-04-24T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15d1ccce5", "title": "Binary Search is Very Fast", "url": "https://pavpanchekha.com/blog/fast-bsearch.html", "published_at": "2025-03-13T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15ec0b369", "title": "How Stylo Matches CSS Selectors", "url": "https://pavpanchekha.com/blog/how-stylo-matches.html", "published_at": "2025-03-07T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15fb7fd9f", "title": "Does O3 beat a specalized numeric compiler?", "url": "https://pavpanchekha.com/blog/o3-herbie.html", "published_at": "2025-01-31T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d160643a81", "title": "Herbie Without Iterations", "url": "https://pavpanchekha.com/blog/e-herbie.html", "published_at": "2025-01-14T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d16096aaf6", "title": "A Plan for Herbie Plaforms", "url": "https://pavpanchekha.com/blog/herbie-platforms.html", "published_at": "2024-12-28T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1615998da", "title": "A Tricky Herbie Bug", "url": "https://pavpanchekha.com/blog/an-ffi-bug.html", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d15de0ab52", "title": "Not all Arithmetic Operations are Created Equal", "url": "https://pavpanchekha.com/blog/arith-ops.html", "published_at": "2024-10-08T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d162519b6d", "title": "Batches as Virtual Mu Types", "url": "https://pavpanchekha.com/blog/batch-mu.html", "published_at": "2024-09-15T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d162775bd1", "title": "OpenAI o1 vs. Herbie", "url": "https://pavpanchekha.com/blog/o1-herbie.html", "published_at": "2024-09-13T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1635232f2", "title": "Scheduling Batch Computations", "url": "https://pavpanchekha.com/blog/batch-schedules.html", "published_at": "2024-09-03T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1643449d1", "title": "Batches for Recursive Data Structures", "url": "https://pavpanchekha.com/blog/batches.html", "published_at": "2024-08-29T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d164d2b971", "title": "Herbie Performance in 2024", "url": "https://pavpanchekha.com/blog/herbie-perf-2024.html", "published_at": "2024-04-23T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d164f3bc0a", "title": "Selector Matching is Quadratic", "url": "https://pavpanchekha.com/blog/selectors-quadratic.html", "published_at": "2024-03-31T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d16525aa3c", "title": "Why Herbie uses Rival, not Arb", "url": "https://pavpanchekha.com/blog/herbie-arb.html", "published_at": "2024-02-29T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d165cc0d9c", "title": "Optimal Heap Limits for Generational GCs", "url": "https://pavpanchekha.com/blog/membalancer-generational.html", "published_at": "2023-11-05T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d16646861d", "title": "Rounding Bits over Rounding Modes", "url": "https://pavpanchekha.com/blog/rounding-bit.html", "published_at": "2023-05-17T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d167031f1f", "title": "ChatGPT vs Herbie", "url": "https://pavpanchekha.com/blog/chatgpt-herbie.html", "published_at": "2023-04-02T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1670ceafd", "title": "How I Think About Research Projects", "url": "https://pavpanchekha.com/blog/research-process-2023.html", "published_at": "2023-03-09T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1673482a4", "title": "Top-down LR parsing", "url": "https://pavpanchekha.com/blog/top-down-lr.html", "published_at": "2023-03-04T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d167d31104", "title": "MegaLibm: a Math Library Workbench", "url": "https://pavpanchekha.com/blog/megalibm.html", "published_at": "2023-02-10T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d1688c31ae", "title": "Improving Rust with Herbie", "url": "https://pavpanchekha.com/blog/herbie-rust.html", "published_at": "2022-11-28T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d169891103", "title": "Affine Arithmetic and Error Taylor Series", "url": "https://pavpanchekha.com/blog/affine-taylor.html", "published_at": "2022-08-25T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d16a3874ae", "title": "A new era for Herbie", "url": "https://pavpanchekha.com/blog/pherbie-default.html", "published_at": "2022-08-03T00:00:00+00:00" }, { "id": "01a087be-6603-7318-bab7-94d16ac3e925", "title": "Optimizing Pruning in Herbie", "url": "https://pavpanchekha.com/blog/optimizing-alt-minimize.html", "published_at": "2022-07-19T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d75a1d9c5", "title": "Speeding up Skia using E-graphs", "url": "https://pavpanchekha.com/blog/skia-egraph.html", "published_at": "2022-01-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d75df7f35", "title": "What is the Complexity of Selector Matching?", "url": "https://pavpanchekha.com/blog/selector-complexity.html", "published_at": "2021-12-23T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7672122c", "title": "Epsilon and Delta in Error Models", "url": "https://pavpanchekha.com/blog/epsilon-delta.html", "published_at": "2021-11-01T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d76f5f5c8", "title": "Binding in E-graphs", "url": "https://pavpanchekha.com/blog/egg-bindings.html", "published_at": "2021-10-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d771d69d7", "title": "Synthesizing Range Reductions", "url": "https://pavpanchekha.com/blog/synthesize-range-reductions.html", "published_at": "2021-10-21T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d78138104", "title": "An Accurate Quadratic Formula", "url": "https://pavpanchekha.com/blog/accurate-quadratic.html", "published_at": "2021-10-11T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d78d844e2", "title": "User Trust in Herbie", "url": "https://pavpanchekha.com/blog/herbie-hypot-issue.html", "published_at": "2021-09-22T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d797813ca", "title": "Fuzzing for Layout Invalidation Bugs", "url": "https://pavpanchekha.com/blog/lqc.html", "published_at": "2021-04-30T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d79f881a2", "title": "Understanding Error Taylor Series", "url": "https://pavpanchekha.com/blog/understanding-fptaylor.html", "published_at": "2021-03-09T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7ac5c60c", "title": "A DSL for Math Library Implementation", "url": "https://pavpanchekha.com/blog/lambda-num.html", "published_at": "2021-01-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7c3d7eaa", "title": "Detecting Symmetric Expressions", "url": "https://pavpanchekha.com/blog/symmetric-expressions.html", "published_at": "2020-12-10T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7b463725", "title": "Balancing Multiple Garbage Collectors", "url": "https://pavpanchekha.com/blog/multi-gc-derivation.html", "published_at": "2020-12-03T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7ce00ccf", "title": "A Software Verification Project", "url": "https://pavpanchekha.com/blog/verification-assignment.html", "published_at": "2020-04-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7d9c38d4", "title": "Using Egg in Herbie", "url": "https://pavpanchekha.com/blog/herbie-egg.html", "published_at": "2020-03-16T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7da9264d", "title": "A Feb 2020 look at Herbie", "url": "https://pavpanchekha.com/blog/herbie-update-2020-02.html", "published_at": "2020-02-21T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7e050cae", "title": "Verification Beyond Functions", "url": "https://pavpanchekha.com/blog/beyond-functions.html", "published_at": "2020-02-12T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7ed53803", "title": "Why are Shell Scripts Bad?", "url": "https://pavpanchekha.com/blog/why-scripts-bad.html", "published_at": "2019-12-12T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d7fc6b189", "title": "Parallel Line Breaking", "url": "https://pavpanchekha.com/blog/line-breaking.html", "published_at": "2019-12-01T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d806707b9", "title": "Proof Systems are Operating Systems", "url": "https://pavpanchekha.com/blog/proof-system-os.html", "published_at": "2019-11-17T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d807493d9", "title": "A Survey of PL Blogging (Part 2)", "url": "https://pavpanchekha.com/blog/pl-technical-blogging.html", "published_at": "2019-06-21T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8135438f", "title": "Intrinsic and Extrinsic Data", "url": "https://pavpanchekha.com/blog/intrinsic-extrinsic.html", "published_at": "2019-04-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d81a1d795", "title": "Architecture Patterns", "url": "https://pavpanchekha.com/blog/architecture-patterns.html", "published_at": "2019-04-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8293e74b", "title": "Long-term Goals for Herbie", "url": "https://pavpanchekha.com/blog/herbie-goals.html", "published_at": "2019-04-07T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d836fe166", "title": "Sub-specifications", "url": "https://pavpanchekha.com/blog/spec-tree.html", "published_at": "2019-03-03T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d842d7e70", "title": "Was Lower Case Designed for Reading Speed", "url": "https://pavpanchekha.com/blog/lowercase.html", "published_at": "2019-02-21T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d852c0a60", "title": "Designing Libraries Like Languages", "url": "https://pavpanchekha.com/blog/library-design.html", "published_at": "2019-01-20T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8496d91e", "title": "Learning Shame", "url": "https://pavpanchekha.com/blog/learning-moral.html", "published_at": "2018-12-29T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8580571e", "title": "What's Wrong with CSS?", "url": "https://pavpanchekha.com/blog/css-problems.html", "published_at": "2018-11-29T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d86ede38e", "title": "Dedicated Crossword Practice", "url": "https://pavpanchekha.com/blog/crossbot-joe.html", "published_at": "2018-11-29T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d860f4f41", "title": "Categories for Reactive Programming", "url": "https://pavpanchekha.com/blog/frp-categories.html", "published_at": "2018-11-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d86b199e5", "title": "Selective Crossword Submissions", "url": "https://pavpanchekha.com/blog/crossbot-selsub.html", "published_at": "2018-11-01T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d87a226d1", "title": "You Start Off Bad at Crosswords", "url": "https://pavpanchekha.com/blog/crossbot-improvement.html", "published_at": "2018-10-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d87b30b93", "title": "Crossword Science with Stan", "url": "https://pavpanchekha.com/blog/crossbot-stan.html", "published_at": "2018-10-28T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d883b8b9d", "title": "How I Track TODOs", "url": "https://pavpanchekha.com/blog/todo.html", "published_at": "2018-10-25T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d88c0c2ea", "title": "Remembering the Herbie Visualizer", "url": "https://pavpanchekha.com/blog/herbie-viz.html", "published_at": "2018-10-18T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d892c6e8b", "title": "Social Processes in Package Managers", "url": "https://pavpanchekha.com/blog/social-packages.html", "published_at": "2018-10-11T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d89c01bbe", "title": "First Impressions with Typed Racket", "url": "https://pavpanchekha.com/blog/typed-racket-1.html", "published_at": "2018-10-03T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d89396b21", "title": "Programs as Patchwork", "url": "https://pavpanchekha.com/blog/programs-patchwork.html", "published_at": "2018-09-14T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8a2086d0", "title": "Solving Resistance", "url": "https://pavpanchekha.com/blog/resistance-1.html", "published_at": "2018-09-06T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8ab019f9", "title": "Programming with Pushouts", "url": "https://pavpanchekha.com/blog/functor-pushouts.html", "published_at": "2018-08-22T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8aa95e35", "title": "Not Quite Pushouts", "url": "https://pavpanchekha.com/blog/beyond-pushouts.html", "published_at": "2018-08-18T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8ac2238e", "title": "Cryptic Mastermind with Z3", "url": "https://pavpanchekha.com/blog/cryptomind.html", "published_at": "2018-08-18T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8bba9d1c", "title": "A Survey of PL Blogging (Part 1)", "url": "https://pavpanchekha.com/blog/pl-blogging.html", "published_at": "2018-07-25T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8bc787d1", "title": "A Game Theory of Primaries", "url": "https://pavpanchekha.com/blog/primary-game.html", "published_at": "2018-05-24T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8c868356", "title": "WIP: Programming by Voice", "url": "https://pavpanchekha.com/blog/programming-voice.html", "published_at": "2018-05-04T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8cac3100", "title": "Assigning Meaning to open terms", "url": "https://pavpanchekha.com/blog/open-terms.html", "published_at": "2018-04-17T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8cb37d99", "title": "Floating Point Error in Polynomials", "url": "https://pavpanchekha.com/blog/float-point-polynomial.html", "published_at": "2018-04-12T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8d0452ce", "title": "Floating Point Error in the Small", "url": "https://pavpanchekha.com/blog/sqrt-sqr.html", "published_at": "2018-03-24T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8d6d1d39", "title": "Functions and Relations in First Order Logic", "url": "https://pavpanchekha.com/blog/functions-relations.html", "published_at": "2018-03-24T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8e0d3893", "title": "How Cassius Works", "url": "https://pavpanchekha.com/blog/toy-cassius.html", "published_at": "2018-02-04T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8edca6fb", "title": "Variary Functions in Coq", "url": "https://pavpanchekha.com/blog/variary-coq.html", "published_at": "2018-01-24T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d8fa45a0c", "title": "Local Error and Blame Analysis", "url": "https://pavpanchekha.com/blog/blame-analysis-local-error.html", "published_at": "2018-01-07T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d94f869df", "title": "A Fine Language", "url": "https://pavpanchekha.com/blog/fine-intro.html", "published_at": "2017-12-29T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d91d53f91", "title": "Unpublished blog posts in Magit", "url": "https://pavpanchekha.com/blog/magit-unpublished.html", "published_at": "2017-12-10T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d9130af09", "title": "Exact Geometric Operations", "url": "https://pavpanchekha.com/blog/exact-geometry.html", "published_at": "2017-12-03T00:00:00+00:00" }, { "id": "01a087be-6604-7346-957a-906d921d01d9", "title": "Why Equality?", "url": "https://pavpanchekha.com/blog/why-equality.html", "published_at": "2017-11-27T00:00:00+00:00" } ] posts Claim your blog
Back to pavpanchekha.com
Blog · corpus.blog/blogs/pavpanchekha.com/posts

pavpanchekha.com

pavpanchekha.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017