41554 blogs · [ { "id": "01a08784-38f6-71ac-9dda-04bc876343da", "title": "Custom fonts in Obsidian", "url": "https://hoverbear.org/blog/custom-fonts-obsidian/", "published_at": "2025-10-10T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc87f4ac97", "title": "Folder Notes in Obsidian Publish", "url": "https://hoverbear.org/blog/folder-notes-in-obsidian-publish/", "published_at": "2025-09-28T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc88a61dbd", "title": "Instrumenting Axum projects", "url": "https://hoverbear.org/blog/instrumenting-axum-projects/", "published_at": "2023-07-19T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc895d603f", "title": "Extending NixOS Configurations", "url": "https://hoverbear.org/blog/extending-nixos-configurations/", "published_at": "2023-03-29T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8a32ba5a", "title": "Nix on the Steam Deck", "url": "https://hoverbear.org/blog/nix-on-the-steam-deck/", "published_at": "2022-12-06T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8aa5c3bd", "title": "Declarative GNOME configuration with NixOS", "url": "https://hoverbear.org/blog/declarative-gnome-configuration-in-nixos/", "published_at": "2022-09-26T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8b5102c3", "title": "Xbox Controllers on Arch Linux", "url": "https://hoverbear.org/blog/xbox-controllers-on-arch/", "published_at": "2022-06-29T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8b67d08f", "title": "Visually debugging PGX extensions", "url": "https://hoverbear.org/blog/debugging-pgx-extensions/", "published_at": "2022-06-23T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8ba438b1", "title": "Getting started with Xous and the Precursor", "url": "https://hoverbear.org/blog/exploring-xous/", "published_at": "2022-06-16T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8c40e637", "title": "PostgreSQL Aggregates with Rust", "url": "https://hoverbear.org/blog/postgresql-aggregates-with-rust/", "published_at": "2022-02-09T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8cecb75f", "title": "Configurable Nix packages", "url": "https://hoverbear.org/blog/configurable-nix-packages/", "published_at": "2022-01-01T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8d0cef85", "title": "Forging SQL from Rust", "url": "https://hoverbear.org/blog/forging-sql-from-rust/", "published_at": "2021-09-20T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8dae125d", "title": "A Flake for your Crate", "url": "https://hoverbear.org/blog/a-flake-for-your-crate/", "published_at": "2021-06-25T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8e4ecc89", "title": "Using rust-bindgen in Nix", "url": "https://hoverbear.org/blog/rust-bindgen-in-nix/", "published_at": "2021-05-04T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8e8c1f15", "title": "Custom live media with Nix flakes", "url": "https://hoverbear.org/blog/nix-flake-live-media/", "published_at": "2021-04-15T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8f40749c", "title": "The Entanglement of Purpose & Success", "url": "https://hoverbear.org/blog/the-entanglement-of-purpose-and-success/", "published_at": "2020-12-31T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc8fe154e8", "title": "Finding direction, defining goals", "url": "https://hoverbear.org/blog/finding-direction-defining-goals/", "published_at": "2020-01-30T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc907e3f98", "title": "Hierarchical Structures in PostgreSQL", "url": "https://hoverbear.org/blog/postgresql-hierarchical-structures/", "published_at": "2020-01-19T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc90b51976", "title": "Getting the most of WSL", "url": "https://hoverbear.org/blog/getting-the-most-out-of-wsl/", "published_at": "2019-12-11T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc914d6aa8", "title": "Common Safety Pitfalls found by Jepsen", "url": "https://hoverbear.org/blog/common-safety-pitfalls-found-by-jepsen/", "published_at": "2019-09-18T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc91aa2ab5", "title": "Why Benchmarking Distributed Databases Is So Hard", "url": "https://hoverbear.org/blog/benchmarking-is-hard/", "published_at": "2019-07-08T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc929e2503", "title": "Optional Arguments in Rust", "url": "https://hoverbear.org/blog/optional-arguments/", "published_at": "2018-11-04T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc935d1208", "title": "Ascend", "url": "https://hoverbear.org/blog/ascend/", "published_at": "2018-10-09T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc93d82c47", "title": "Learning to Tread the Dawn", "url": "https://hoverbear.org/blog/treading-dawn/", "published_at": "2018-08-03T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc94a52e38", "title": "A New Year Dawns", "url": "https://hoverbear.org/blog/a-new-dawn/", "published_at": "2018-01-01T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc95a4ca06", "title": "The Path to Rust on the Web", "url": "https://hoverbear.org/blog/the-path-to-rust-on-the-web/", "published_at": "2017-04-06T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9651e72d", "title": "Setting up a Rust Development Environment", "url": "https://hoverbear.org/blog/setting-up-a-rust-devenv/", "published_at": "2017-03-03T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc96951eec", "title": "The Future with Futures", "url": "https://hoverbear.org/blog/the-future-with-futures/", "published_at": "2017-03-01T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc96f192ef", "title": "Pretty State Machine Patterns in Rust", "url": "https://hoverbear.org/blog/rust-state-machine-pattern/", "published_at": "2016-10-12T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc97da8282", "title": "An HTTPS Terminator Box", "url": "https://hoverbear.org/blog/an-https-terminator-box/", "published_at": "2016-09-29T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc97eb1bd5", "title": "Winds of Change", "url": "https://hoverbear.org/blog/winds-of-change/", "published_at": "2016-07-13T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc97f16895", "title": "New Roots part 5, Erecting Container Infrastructure", "url": "https://hoverbear.org/blog/new-roots-5/", "published_at": "2016-05-10T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc98aebe7c", "title": "New Roots part 4, Making it 127.0.0.1", "url": "https://hoverbear.org/blog/new-roots-4/", "published_at": "2016-05-09T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9909b6a4", "title": "New Roots part 3, Services & Hardening", "url": "https://hoverbear.org/blog/new-roots-3/", "published_at": "2016-05-07T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc993ce5d5", "title": "New Roots part 2, On the Metal", "url": "https://hoverbear.org/blog/new-roots-2/", "published_at": "2016-05-06T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9952ae96", "title": "New Roots part 1, Choosing a Server", "url": "https://hoverbear.org/blog/new-roots-1/", "published_at": "2016-05-05T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc99ff20f2", "title": "The Menagerie of Badssl", "url": "https://hoverbear.org/blog/the-menagerie-of-badssl/", "published_at": "2016-04-22T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9acc1837", "title": "Site Redesign", "url": "https://hoverbear.org/blog/site-redesign/", "published_at": "2016-04-06T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9bc12dcf", "title": "Gathering Our Voices 2016", "url": "https://hoverbear.org/blog/gathering-our-voices-2016/", "published_at": "2016-03-25T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9bc3d576", "title": "Arch Linux on Docker Revisited", "url": "https://hoverbear.org/blog/docker-archlinux/", "published_at": "2016-01-13T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9c89984f", "title": "A Rust Heroku Buildpack", "url": "https://hoverbear.org/blog/heroku-rust-buildpack/", "published_at": "2016-01-04T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9c930965", "title": "The Way Forward", "url": "https://hoverbear.org/blog/the-way-forward/", "published_at": "2015-12-30T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9c9fa0ae", "title": "It's a Let's Encrypt Beta!", "url": "https://hoverbear.org/blog/lets-encrypt/", "published_at": "2015-10-28T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9d99678d", "title": "Understanding Over Guesswork", "url": "https://hoverbear.org/blog/understand-over-guesswork/", "published_at": "2015-09-12T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9e1acf86", "title": "Photos: San Fransisco Trip", "url": "https://hoverbear.org/blog/sf-trip-recap/", "published_at": "2015-08-31T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9ee5129d", "title": "The Raft-rs Rust Meetup", "url": "https://hoverbear.org/blog/meetup/", "published_at": "2015-08-27T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bc9f980832", "title": "Exciting Times", "url": "https://hoverbear.org/blog/exciting-times/", "published_at": "2015-08-23T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca0778b26", "title": "Blog Changeover", "url": "https://hoverbear.org/blog/blog-changeover/", "published_at": "2015-08-11T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca16be1ba", "title": "Trackpad Drivers for Linux on a Mac", "url": "https://hoverbear.org/blog/mtrack/", "published_at": "2015-08-04T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca2622712", "title": "Raft Progress & Examples!", "url": "https://hoverbear.org/blog/raft-examples/", "published_at": "2015-08-01T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca32d1de0", "title": "Raft: Tooling & Infra Update", "url": "https://hoverbear.org/blog/raft-tooling/", "published_at": "2015-07-23T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca41ab2f9", "title": "Raft: New Crates!", "url": "https://hoverbear.org/blog/raft-new-crates/", "published_at": "2015-07-16T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca497b79f", "title": "Reading Rust Function Signatures", "url": "https://hoverbear.org/blog/reading-rust-function-signatures/", "published_at": "2015-07-10T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca4b601fb", "title": "Collecting Results from Collections", "url": "https://hoverbear.org/blog/a-useful-error-pattern/", "published_at": "2015-07-08T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca538073d", "title": "ACM papers in Pandoc", "url": "https://hoverbear.org/blog/acm-papers-in-pandoc/", "published_at": "2015-06-16T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca539b2e3", "title": "Quadcopters: Motors", "url": "https://hoverbear.org/blog/quadcopters-motors/", "published_at": "2015-06-11T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca5d318b0", "title": "Quadcopters: Stabilization", "url": "https://hoverbear.org/blog/quadcopters-stabilization/", "published_at": "2015-06-10T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca682fcc3", "title": "Quadcopters: Sensors", "url": "https://hoverbear.org/blog/quadcopters-sensors/", "published_at": "2015-06-04T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca75da962", "title": "Arduino: Motor Fun!", "url": "https://hoverbear.org/blog/arduino-motor-fun/", "published_at": "2015-06-02T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca810fccb", "title": "Quadcopters: Yaw", "url": "https://hoverbear.org/blog/quadcopters-yaw/", "published_at": "2015-05-27T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca86aee1d", "title": "Quadcopters: The Board", "url": "https://hoverbear.org/blog/quadcopters-board/", "published_at": "2015-05-26T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca940d59b", "title": "Quadcopters: Orientation", "url": "https://hoverbear.org/blog/quadcopters-orientation/", "published_at": "2015-05-19T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bca948dba7", "title": "A Journey into Iterators", "url": "https://hoverbear.org/blog/a-journey-into-iterators/", "published_at": "2015-05-02T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcaa20a0a9", "title": "Reflections on a Quarter Century", "url": "https://hoverbear.org/blog/reflections-on-a-quarter-century/", "published_at": "2015-04-23T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcaa6c1956", "title": "Photography from Last Decade", "url": "https://hoverbear.org/blog/photoghaphy-last-decade/", "published_at": "2015-04-10T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcab68d2b9", "title": "Raft: Status Update", "url": "https://hoverbear.org/blog/raft-the-next-generation-3/", "published_at": "2015-04-08T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcaba4833c", "title": "Gathering Our Voices 2015", "url": "https://hoverbear.org/blog/gathering-our-voices-2015/", "published_at": "2015-03-14T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcabae6446", "title": "Learning Cap'n Proto RPC", "url": "https://hoverbear.org/blog/learning-capn-proto-rpc/", "published_at": "2015-03-09T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcabd68cd6", "title": "Rust, Travis, and Github Pages", "url": "https://hoverbear.org/blog/rust-travis-github-pages/", "published_at": "2015-03-07T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcabfcb249", "title": "Getting Acquainted with MIO", "url": "https://hoverbear.org/blog/getting-acquainted-with-mio/", "published_at": "2015-03-03T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcac276041", "title": "On C-51", "url": "https://hoverbear.org/blog/on-c51/", "published_at": "2015-02-26T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcad0a534f", "title": "Raft: A First Prototype", "url": "https://hoverbear.org/blog/raft-update-3/", "published_at": "2015-02-23T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcadc005a1", "title": "Raft: Progress on the Log", "url": "https://hoverbear.org/blog/raft-update-2/", "published_at": "2015-02-18T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcade7a184", "title": "First look at Cap'n Proto in Rust", "url": "https://hoverbear.org/blog/capn-proto-in-rust/", "published_at": "2015-02-11T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcae2f45f1", "title": "Raft Experiences and Repo Made Public!", "url": "https://hoverbear.org/blog/raft-update-1/", "published_at": "2015-02-05T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcaedcc52a", "title": "Raft So Far", "url": "https://hoverbear.org/blog/raft-so-far/", "published_at": "2015-01-25T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcafd718e5", "title": "Raft in Rust", "url": "https://hoverbear.org/blog/raft/", "published_at": "2015-01-21T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb00e47ff", "title": "OpenWRT QoS", "url": "https://hoverbear.org/blog/openwrt-qos/", "published_at": "2014-12-06T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb0ef64a5", "title": "Vagrant Clients for OpenWRT VMs", "url": "https://hoverbear.org/blog/vagrant-clients-for-openwrt-vms/", "published_at": "2014-12-03T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb193b263", "title": "OpenWRT in Virtualbox", "url": "https://hoverbear.org/blog/openwrt-in-virtualbox/", "published_at": "2014-11-23T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb1f705d1", "title": "A First Look at DACS", "url": "https://hoverbear.org/blog/first-look-at-dacs/", "published_at": "2014-11-17T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb1f92507", "title": "Parsing Arguments in Rust", "url": "https://hoverbear.org/blog/command-line-args-in-rust/", "published_at": "2014-11-15T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb218cbc2", "title": "Longest Common Increasing Sequence", "url": "https://hoverbear.org/blog/lcis/", "published_at": "2014-11-15T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb30f3e2a", "title": "Init - Configuration", "url": "https://hoverbear.org/blog/init-configuration/", "published_at": "2014-11-14T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb3ed71bf", "title": "A Ghost OpenRC Script", "url": "https://hoverbear.org/blog/a-ghost-openrc-script/", "published_at": "2014-11-02T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb44b71ba", "title": "Init - Runlevels and Targets", "url": "https://hoverbear.org/blog/init-runlevels-and-targets/", "published_at": "2014-09-29T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb4cc138e", "title": "Command Execution in Rust", "url": "https://hoverbear.org/blog/command-execution-in-rust/", "published_at": "2014-09-07T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb51923be", "title": "Option Monads in Rust", "url": "https://hoverbear.org/blog/option-monads-in-rust/", "published_at": "2014-08-12T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb61340fe", "title": "Back Channel Keycloak Requests", "url": "https://hoverbear.org/blog/back-channel-keycloak-requests/", "published_at": "2014-08-04T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb6fad251", "title": "Integrating Immutant and Keycloak", "url": "https://hoverbear.org/blog/integrating-immutant-and-keycloak/", "published_at": "2014-07-25T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb7bb57db", "title": "Deploying Immutant to Wildfly", "url": "https://hoverbear.org/blog/deploying-immutant-to-wildfly/", "published_at": "2014-07-22T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb81cb252", "title": "Arch Docker Baseimage", "url": "https://hoverbear.org/blog/arch-docker-baseimage/", "published_at": "2014-07-14T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb9021d9b", "title": "Starting with Immutant", "url": "https://hoverbear.org/blog/starting-with-immutant/", "published_at": "2014-07-14T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcb9aad9df", "title": "Async Auto", "url": "https://hoverbear.org/blog/async-auto/", "published_at": "2014-06-05T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcba3113f7", "title": "Gathering Our Voices 2014", "url": "https://hoverbear.org/blog/gathering-our-voices-2014/", "published_at": "2014-03-21T00:00:00+00:00" }, { "id": "01a08784-38f6-71ac-9dda-04bcba8f4952", "title": "Gathering Our Voices 2013", "url": "https://hoverbear.org/blog/gathering-our-voices-2013/", "published_at": "2013-03-21T00:00:00+00:00" } ] posts Claim your blog
Back to hoverbear.org
Blog · corpus.blog/blogs/hoverbear.org/posts

hoverbear.org

hoverbear.org

2025

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013