41554 blogs · [ { "id": "01a08720-57f5-73fe-aee6-378abb534619", "title": "Run Your Code Generator as a Test", "url": "https://adventures.michaelfbryan.com/posts/run-your-code-generator-as-a-test/", "published_at": "2026-08-23T14:05:47+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abbf20090", "title": "The Accidental Application Runtime", "url": "https://adventures.michaelfbryan.com/posts/accidental-application-runtime/", "published_at": "2026-08-21T10:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abc28e869", "title": "gcode 0.7: one parser core for streaming visitors and a thin AST", "url": "https://adventures.michaelfbryan.com/posts/releasing-gcode-0.7.0/", "published_at": "2026-03-21T13:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abd03e39d", "title": "Obsidian Tricks: Daily Notes", "url": "https://adventures.michaelfbryan.com/posts/obsidian-tricks/daily-notes/", "published_at": "2025-07-28T04:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abd4766c1", "title": "Obsidian Tricks: Entity Notes", "url": "https://adventures.michaelfbryan.com/posts/obsidian-tricks/entity-notes/", "published_at": "2025-07-23T04:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abe42cf2e", "title": "Obsidian Tricks: The Summary Callout", "url": "https://adventures.michaelfbryan.com/posts/obsidian-tricks/summary-callout/", "published_at": "2025-07-19T14:36:07+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abee9ead1", "title": "Writing Technical Content That Actually Helps People", "url": "https://adventures.michaelfbryan.com/posts/writing-technical-content/", "published_at": "2025-07-16T02:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378abf4a2add", "title": "How I Work", "url": "https://adventures.michaelfbryan.com/posts/how-i-work/", "published_at": "2025-07-14T04:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac03dce5b", "title": "Link Time Dependency Injection", "url": "https://adventures.michaelfbryan.com/posts/the-linker-trick/", "published_at": "2025-03-30T04:59:58+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac07a945a", "title": "Reboot Friendly Projects - Building Systems That Let You Disappear (and Come Back)", "url": "https://adventures.michaelfbryan.com/posts/reboot-friendly-projects/", "published_at": "2025-03-29T04:59:58+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac0b7d7d7", "title": "Embracing a New Chapter: My Farewell to Wasmer and the Journey Ahead", "url": "https://adventures.michaelfbryan.com/posts/farewell-wasmer/", "published_at": "2024-01-30T09:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac1723ada", "title": "GitHub Actions can't access private repos? Here's how to fix it", "url": "https://adventures.michaelfbryan.com/posts/configuring-cargo-auth-in-github-actions/", "published_at": "2022-09-13T04:01:45+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac1f105c7", "title": "Announcing Cargo WAPM", "url": "https://adventures.michaelfbryan.com/posts/announcing-cargo-wapm/", "published_at": "2022-08-07T08:14:07+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac29842b4", "title": "Bringing include_dir Into the Modern Era", "url": "https://adventures.michaelfbryan.com/posts/bringing-include_dir-into-the-modern-era/", "published_at": "2022-01-06T01:57:09+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac2b55058", "title": "Common Newbie Mistakes and Bad Practices in Rust: Bad Habits", "url": "https://adventures.michaelfbryan.com/posts/rust-best-practices/bad-habits/", "published_at": "2021-09-27T10:30:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac39e7a99", "title": "Daily Rust: Iterators", "url": "https://adventures.michaelfbryan.com/posts/daily/iterators/", "published_at": "2021-08-23T19:55:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac3b289cb", "title": "Daily Rust: Slice Patterns", "url": "https://adventures.michaelfbryan.com/posts/daily/slice-patterns/", "published_at": "2021-08-14T00:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac43d362d", "title": "Deserializing Binary Data Files in Rust", "url": "https://adventures.michaelfbryan.com/posts/deserializing-binary-data-files/", "published_at": "2021-06-19T16:30:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac4961746", "title": "Parsing PDF Documents in Rust", "url": "https://adventures.michaelfbryan.com/posts/parsing-pdfs-in-rust/", "published_at": "2021-01-31T13:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac4d72108", "title": "FFI-Safe Polymorphism: Thin Trait Objects", "url": "https://adventures.michaelfbryan.com/posts/ffi-safe-polymorphism-in-rust/", "published_at": "2020-12-15T18:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac4ec7cc6", "title": "How I Translate Feature Requests into Code", "url": "https://adventures.michaelfbryan.com/posts/turning-feature-requests-into-code/", "published_at": "2020-12-02T08:10:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac4ee126e", "title": "Geometric Constraint Solvers Part 1: Algebraic Expressions", "url": "https://adventures.michaelfbryan.com/posts/constraints-part-1-expressions/", "published_at": "2020-07-14T16:40:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac5ec53f9", "title": "Writing Non-Trivial Macros in Rust", "url": "https://adventures.michaelfbryan.com/posts/non-trivial-macros/", "published_at": "2020-06-20T17:15:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac63b0314", "title": "Rust Closures in FFI", "url": "https://adventures.michaelfbryan.com/posts/rust-closures-in-ffi/", "published_at": "2020-05-12T14:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac6bc1255", "title": "Creating a Robust, Reusable Link-Checker", "url": "https://adventures.michaelfbryan.com/posts/linkchecker/", "published_at": "2020-05-02T11:20:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac6c6192d", "title": "How I Reverse Engineered the LastPass CLI Tool", "url": "https://adventures.michaelfbryan.com/posts/lastpass/", "published_at": "2020-04-14T14:40:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac71a63cc", "title": "Reflections on What Motivates a Person", "url": "https://adventures.michaelfbryan.com/posts/motivation/", "published_at": "2020-04-05T11:15:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac76985c0", "title": "Line Simplification with Ramer–Douglas–Peucker", "url": "https://adventures.michaelfbryan.com/posts/line-simplification/", "published_at": "2020-02-23T13:56:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac783b227", "title": "A Pragmatic Approach To Global State", "url": "https://adventures.michaelfbryan.com/posts/pragmatic-global-state/", "published_at": "2020-02-17T14:22:47+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac7e3a7f6", "title": "I Made A Thing: Markedit", "url": "https://adventures.michaelfbryan.com/posts/markedit/", "published_at": "2020-02-08T20:40:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac8c49cfa", "title": "Creating Interactive Applications While Maintaining Your Sanity", "url": "https://adventures.michaelfbryan.com/posts/implementing-interactive-applications/", "published_at": "2020-02-06T15:43:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac8dcb566", "title": "Words Are Hard - An Essay on Communicating With Non-Programmers", "url": "https://adventures.michaelfbryan.com/posts/words-are-hard/", "published_at": "2020-01-27T02:20:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ac9c2214f", "title": "A Thought Experiment: Using the ECS Pattern Outside of Game Engines", "url": "https://adventures.michaelfbryan.com/posts/ecs-outside-of-games/", "published_at": "2019-12-27T16:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acab19e96", "title": "WebAssembly as a Platform for Abstraction", "url": "https://adventures.michaelfbryan.com/posts/wasm-as-a-platform-for-abstraction/", "published_at": "2019-12-15T03:55:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acb9b2840", "title": "How to RiiR", "url": "https://adventures.michaelfbryan.com/posts/how-to-riir/", "published_at": "2019-12-01T17:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acbd9079a", "title": "Implementing ArrayVec Using Const Generics", "url": "https://adventures.michaelfbryan.com/posts/const-arrayvec/", "published_at": "2019-11-14T16:57:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acc3b0fc8", "title": "Audio Processing for Dummies", "url": "https://adventures.michaelfbryan.com/posts/audio-processing-for-dummies/", "published_at": "2019-10-27T15:34:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acccd58f7", "title": "How to not RiiR", "url": "https://adventures.michaelfbryan.com/posts/how-not-to-riir/", "published_at": "2019-10-20T11:45:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acd7af169", "title": "Working With G-Code", "url": "https://adventures.michaelfbryan.com/posts/working-with-gcode/", "published_at": "2019-10-17T16:05:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acd86d5a5", "title": "Wiring Up Communication", "url": "https://adventures.michaelfbryan.com/posts/wiring-up-communication/", "published_at": "2019-10-10T14:58:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acdebd9a9", "title": "Plugins in Rust", "url": "https://adventures.michaelfbryan.com/posts/plugins-in-rust/", "published_at": "2019-09-30T14:04:58+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ace10c355", "title": "A Better Frontend", "url": "https://adventures.michaelfbryan.com/posts/a-better-frontend/", "published_at": "2019-09-26T19:47:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acea2b741", "title": "Initial Motion System", "url": "https://adventures.michaelfbryan.com/posts/initial-motion-system/", "published_at": "2019-09-18T12:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acf38e9e9", "title": "Simple Automation Sequences", "url": "https://adventures.michaelfbryan.com/posts/simple-automation-sequences/", "published_at": "2019-09-14T15:55:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378acf4b4ce3", "title": "The Communications System: Part 2", "url": "https://adventures.michaelfbryan.com/posts/comms-part-2/", "published_at": "2019-09-07T17:20:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ad04994a5", "title": "The Communications System: Part 1", "url": "https://adventures.michaelfbryan.com/posts/comms-part-1/", "published_at": "2019-09-06T15:00:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ad06a6f4f", "title": "FPS Counter", "url": "https://adventures.michaelfbryan.com/posts/fps-counter/", "published_at": "2019-09-03T00:50:00+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ad0bea56b", "title": "Top-Level Infrastructure", "url": "https://adventures.michaelfbryan.com/posts/top-level-infrastructure/", "published_at": "2019-09-02T13:22:30+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ad1126112", "title": "Announcing Adventures in Motion Control", "url": "https://adventures.michaelfbryan.com/posts/announcing-adventures-in-motion-control/", "published_at": "2019-09-01T08:27:15+00:00" }, { "id": "01a08720-57f5-73fe-aee6-378ad200c7cc", "title": "About", "url": "https://adventures.michaelfbryan.com/about/", "published_at": null } ] posts Claim your blog
Back to Michael-F-Bryan
Blog · corpus.blog/blogs/adventures.michaelfbryan.com/posts

Michael-F-Bryan

adventures.michaelfbryan.com

2026

2025

2024

2022

2021

2020

2019

Undated