56,966 blogs · [ { "id": "01a0d0db-1551-72f8-9277-1668d1d1c805", "title": "Leaflet debug page", "url": "https://www.garillot.net/talkmap/map.html", "published_at": "2026-08-24T20:36:51+00:00" }, { "id": "01a0877b-a833-73f8-a27f-5b620f1f22f4", "title": "Triaging security reports with a workflow that demands proof", "url": "https://www.garillot.net/posts/2026/08/security-review-triage-workflow/", "published_at": "2026-08-24T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668ccb41716", "title": "The role for ZKVMs in Verifiable AI", "url": "https://www.garillot.net/talks/2025-11-19-the-role-for-zkvms-in-verifiable-ai/", "published_at": "2025-11-19T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668cc2ba808", "title": "Modern Multi-proposer consensus implementations", "url": "https://www.garillot.net/talks/2025-06-12-modern-multi-proposer-consensus", "published_at": "2025-06-12T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-066967f72918", "title": "Drilling down on Rust Performance Bottlenecks with tokio-tracing and texray", "url": "https://www.garillot.net/posts/2025/04/drilling-down-texray/", "published_at": "2025-04-28T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-066968169ace", "title": "Byzantine-Consistent Broadcast- A Promising Yet Challenging Frontier in Digital Asset Transfers", "url": "https://www.garillot.net/posts/2025/03/bcb-promises-challenges/", "published_at": "2025-03-31T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c2495ea9", "title": "Subset-Optimized BLS Multi-signature with Key Aggregation", "url": "https://www.garillot.net/publication/2025-01-01-Subset-Optimized-BLS-Multi-signature-with-Key-Aggregation", "published_at": "2025-01-01T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668cbc24d2f", "title": "Front-Running the Aggregate: Proofcoin as a New Paradigm for Security and Flexibility", "url": "https://www.garillot.net/talks/2024-11-10-Front-running-the-aggregate", "published_at": "2024-10-10T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668cbbf1d6d", "title": "Lurk: Lambda, the Ultimate Recursive Knowledge", "url": "https://www.garillot.net/talks/2023-09-07-Lurk-ICFP", "published_at": "2023-09-07T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668cb3edb02", "title": "Nova ZK Proof Verification in the EVM", "url": "https://www.garillot.net/talks/2023-08-26-rust-ethereum-nova-verifier", "published_at": "2023-08-26T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c22765e0", "title": "LURK: Lambda, the Ultimate Recursive Knowledge (Experience Report)", "url": "https://www.garillot.net/publication/2023-08-01-LURK-Lambda-the-Ultimate-Recursive-Knowledge-Experience-Report", "published_at": "2023-08-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668ca71ab74", "title": "Lambda the Ultimate Recursive Knowledge", "url": "https://www.garillot.net/talks/2023-04-04-lambda-the-ultimate-recursive-knowledge", "published_at": "2023-04-04T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c9ab7b4d", "title": "Taming the Many EddSAs", "url": "https://www.garillot.net/talks/2023-03-08-taming-many-eddsas", "published_at": "2023-03-08T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c93ab8c4", "title": "Groth16 still lives: exploring the trade-offs of modern ZKProof systems", "url": "https://www.garillot.net/talks/2022-11-15-groth16-still-lives", "published_at": "2022-11-15T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c84a60df", "title": "Scaling the Celo Blockchain with Narwhal", "url": "https://www.garillot.net/talks/2022-05-04-scaling-celo", "published_at": "2022-05-04T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c21c644e", "title": "Threshold Schnorr with Stateless Deterministic Signing from Standard Assumptions", "url": "https://www.garillot.net/publication/2021-08-01-Threshold-Schnorr-with-Stateless-Deterministic-Signing-from-Standard-Assumptions", "published_at": "2021-08-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c157b21e", "title": "Non-interactive Half-Aggregation of EdDSA and Variants of Schnorr Signatures", "url": "https://www.garillot.net/publication/2021-03-01-Non-interactive-Half-Aggregation-of-EdDSA-and-Variants-of-Schnorr-Signatures", "published_at": "2021-03-01T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c0b807f0", "title": "Taming the Many EdDSAs", "url": "https://www.garillot.net/publication/2020-11-01-Taming-the-Many-EdDSAs", "published_at": "2020-11-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c7f1d66e", "title": "Mechanized Proof for the Libra Blockchain", "url": "https://www.garillot.net/talks/2020-05-27-mechanized-proof-libra", "published_at": "2020-05-27T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c72bf8a3", "title": "Growing Your Types Without Growing Your Workload, or How To Survive Among Productive Colleagues in Rust, or Defense Against the Dark Arts", "url": "https://www.garillot.net/talks/2020-01-20-growing-types-workload", "published_at": "2020-01-20T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bfb93036", "title": "Stream Processing with Apache Spark", "url": "https://www.garillot.net/publication/2019-07-01-Stream-Processing-with-Apache-Spark", "published_at": "2019-07-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bf780a30", "title": "State machine replication in the Libra Blockchain", "url": "https://www.garillot.net/publication/2019-06-01-State-machine-replication-in-the-Libra-Blockchain", "published_at": "2019-06-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bf9a90d0", "title": "The Libra Blockchain", "url": "https://www.garillot.net/publication/2019-06-01-The-Libra-Blockchain", "published_at": "2019-06-01T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-066968747361", "title": "PSA: maven central and sonatype are slow", "url": "https://www.garillot.net/posts/2017/07/psa-mvn-nexus/", "published_at": "2017-07-27T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c662155e", "title": "Deep Learning on a mixed cluster with DeepLearning4J and Spark", "url": "https://www.garillot.net/talks/2016-12-09-deeplearning4j-spark", "published_at": "2016-12-09T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c624389e", "title": "DeepLearning4J and Spark: Success and Challenges", "url": "https://www.garillot.net/talks/2016-10-31-deeplearning4j-spark", "published_at": "2016-10-31T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c587ad6b", "title": "Mobility Insights at Swisscom: Understanding Collective Mobility in Switzerland", "url": "https://www.garillot.net/talks/2016-10-27-spark-summit-eu", "published_at": "2016-10-27T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c4bef244", "title": "Delivering near real time mobility insights at Swisscom", "url": "https://www.garillot.net/talks/2016-09-27-strata-hadoop", "published_at": "2016-09-27T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-06696879cca1", "title": "A June 2016 roundup of distributed Deep Learning projects on Apache Spark", "url": "https://www.garillot.net/posts/2016/06/june-roundup-deep-learning/", "published_at": "2016-06-28T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-066968e5f944", "title": "May 2016 time series storage roundup", "url": "https://www.garillot.net/posts/2016/05/may-roundup-time-series/", "published_at": "2016-05-09T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c41e5e94", "title": "Spark Streaming: Dealing With State", "url": "https://www.garillot.net/talks/2016-04-29-streaming-state", "published_at": "2016-04-29T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c38e682f", "title": "Spark Streaming: Pushing the Throughput Limits, the Reactive Way", "url": "https://www.garillot.net/talks/2015-10-29-spark-streaming-limits", "published_at": "2015-10-29T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c351b184", "title": "A Gentle Introduction to Spark and Locality Sensitive hashing", "url": "https://www.garillot.net/talks/2015-08-18-big-data-bay", "published_at": "2015-08-18T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-066969de1158", "title": "Another update on streaming work", "url": "https://www.garillot.net/posts/2015/07/another-update-streaming", "published_at": "2015-07-15T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-06696ab95272", "title": "A quick update on Spark Streaming work", "url": "https://www.garillot.net/posts/2015/07/update-streaming/", "published_at": "2015-07-10T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668c304ae5e", "title": "Apache Mesos and Spark: Ramping Up your DevOps-Fu for Big Data Developers", "url": "https://www.garillot.net/talks/2015-04-28-mix-it", "published_at": "2015-04-28T07:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-06696b4c11c3", "title": "Diving In The Deep End of The Big Data Pool: Talk Abstract", "url": "https://www.garillot.net/posts/2014/11/diving-deep-end", "published_at": "2014-11-19T08:00:00+00:00" }, { "id": "01a0877b-a834-723b-ac3b-06696be4a87b", "title": "Installing Xen on an Apple iMac", "url": "https://www.garillot.net/posts/2014/11/xen-imac", "published_at": "2014-11-13T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b5d1e246", "title": "A question about the Option Monad Transformer", "url": "https://www.garillot.net/posts/2014/07/option-monad-transformer", "published_at": "2014-07-14T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b5657710", "title": "Look, Ma, no queues!", "url": "https://www.garillot.net/posts/2013/10/look-ma", "published_at": "2013-10-23T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bf33d045", "title": "A machine-checked proof of the odd order theorem", "url": "https://www.garillot.net/publication/2013-07-01-A-machine-checked-proof-of-the-odd-order-theorem", "published_at": "2013-07-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b4c2b9f1", "title": "How a Ramdisk saved my life", "url": "https://www.garillot.net/posts/2013/02/ramdisk-life", "published_at": "2013-02-15T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b48b9353", "title": "Every freshman CS question in ±80 lines of Scala", "url": "https://www.garillot.net/posts/2012/01/freshman-CS-in-Scala", "published_at": "2012-01-12T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668be5a51eb", "title": "Generic Proof Tools and Finite Group Theory", "url": "https://www.garillot.net/publication/2011-12-01-Generic-Proof-Tools-and-Finite-Group-Theory", "published_at": "2011-12-01T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b3924c1e", "title": "Certifying RSA correct for breakfast", "url": "https://www.garillot.net/posts/2011/08/certifying-RSA-correct", "published_at": "2011-08-27T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b312ed13", "title": "How do you make a recursive merge sort more efficient in Python?", "url": "https://www.garillot.net/posts/2011/08/recursive-merge-sort-python", "published_at": "2011-08-17T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668b303aca3", "title": "Ligtweight profiling for your Coq hacks", "url": "https://www.garillot.net/posts/2011/08/lightweight-profiling", "published_at": "2011-08-11T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668be32f75a", "title": "Packaging mathematical structures", "url": "https://www.garillot.net/publication/2009-08-01-Packaging-mathematical-structures", "published_at": "2009-08-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bd36ae32", "title": "Simple types in type theory: Deep and shallow encodings", "url": "https://www.garillot.net/publication/2007-09-01-Simple-types-in-type-theory-Deep-and-shallow-encodings", "published_at": "2007-09-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bc45f563", "title": "A core calculus for Scala type checking", "url": "https://www.garillot.net/publication/2006-09-01-A-core-calculus-for-Scala-type-checking", "published_at": "2006-09-01T07:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668bc331b2b", "title": "Statically Typed Document Transformation: An Xtatic Experience", "url": "https://www.garillot.net/publication/2006-01-01-Statically-Typed-Document-Transformation-An-Xtatic-Experience", "published_at": "2006-01-01T08:00:00+00:00" }, { "id": "01a0d0db-1551-72f8-9277-1668cd9b113b", "title": "About François Garillot", "url": "https://www.garillot.net/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668ce548935", "title": null, "url": "https://www.garillot.net/categories/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668ce798b6d", "title": "Posts by Collection", "url": "https://www.garillot.net/collection-archive/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668cee2b3e7", "title": "Page Archive", "url": "https://www.garillot.net/page-archive/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668cf298bc0", "title": "Publications - François Garillot", "url": "https://www.garillot.net/publications/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668cf9a5488", "title": "Sitemap - François Garillot", "url": "https://www.garillot.net/sitemap/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668cfbadb99", "title": "Posts by Tags", "url": "https://www.garillot.net/tags/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668cfeaeefa", "title": null, "url": "https://www.garillot.net/talkmap.html", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668d06602b4", "title": "Talks and presentations (selected)", "url": "https://www.garillot.net/talks/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668d0b99b36", "title": null, "url": "https://www.garillot.net/teaching/", "published_at": null }, { "id": "01a0d0db-1551-72f8-9277-1668d1a88afe", "title": "Blog posts", "url": "https://www.garillot.net/year-archive/", "published_at": null } ] posts Claim your blog
Back to garillot.net
Blog · corpus.blog/blogs/garillot.net/posts

garillot.net

garillot.net

2026

2025

2024

2023

2022

2021

2020

2019

2017

2016

2015

2014

2013

2012

2011

2009

2007

2006

Undated