41554 blogs · [ { "id": "01a08751-90da-71ab-931f-bc93dc8c09e3", "title": "Things I Made: Fighting words generator", "url": "https://blog.oddbit.com/post/2025-10-11-tim-fightingwords/", "published_at": "2025-10-11T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93dd686cb1", "title": "Things I Made: Slow terminal emulation", "url": "https://blog.oddbit.com/post/2025-10-10-tim-slow-terminal/", "published_at": "2025-10-10T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93ddf16286", "title": "Applying custom configuration to Nginx Gateway Fabric", "url": "https://blog.oddbit.com/post/2023-11-17-nginx-gateway-configuration/", "published_at": "2023-11-17T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93ddfa5c2f", "title": "Processing deeply nested JSON with jq streams", "url": "https://blog.oddbit.com/post/2023-07-27-jq-streams/", "published_at": "2023-07-27T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93dee4f87c", "title": "Managing containers with Pytest fixtures", "url": "https://blog.oddbit.com/post/2023-07-15-pytest-and-containers/", "published_at": "2023-07-15T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93dfc0cfd7", "title": "NAT between identical networks using VRF", "url": "https://blog.oddbit.com/post/2023-02-19-vrf-and-nat/", "published_at": "2023-02-19T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93e07a32f3", "title": "Simple error handling in C", "url": "https://blog.oddbit.com/post/2023-02-17-c-error-handling/", "published_at": "2023-02-17T00:00:00+00:00" }, { "id": "01a08751-90da-71ab-931f-bc93e1495e61", "title": "A review of the Garmin Fenix 6(x)", "url": "https://blog.oddbit.com/post/2023-02-15-garmin-fenix-6/", "published_at": "2023-02-15T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ddeeb708", "title": "Packet, packet, who's got the packet?", "url": "https://blog.oddbit.com/post/2023-02-14-whos-got-the-packet/", "published_at": "2023-02-14T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198de6544d7", "title": "Setting up an IPv6 VLAN", "url": "https://blog.oddbit.com/post/2022-11-16-home-ipv6-vlan/", "published_at": "2022-11-16T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198debaec16", "title": "Using KeyOxide", "url": "https://blog.oddbit.com/post/2022-11-13-using-keyoxide/", "published_at": "2022-11-13T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198df1ce399", "title": "Delete GitHub workflow runs using the gh cli", "url": "https://blog.oddbit.com/post/2022-09-22-delete-workflow-runs/", "published_at": "2022-09-22T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e0159428", "title": "Kubernetes, connection timeouts, and the importance of labels", "url": "https://blog.oddbit.com/post/2022-09-10-kubernetes-labels/", "published_at": "2022-09-10T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e0c4e7b3", "title": "Directing different ports to different containers with Traefik", "url": "https://blog.oddbit.com/post/2022-06-20-traefik-multiple-listeners/", "published_at": "2022-06-20T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e0d5564c", "title": "Udev rules for CH340 serial devices", "url": "https://blog.oddbit.com/post/2022-02-13-wemos-udev-rules/", "published_at": "2022-02-13T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e13323ef", "title": "A pair of userscripts for cleaning up Stack Exchange sites", "url": "https://blog.oddbit.com/post/2021-09-05-sx-question-filters/", "published_at": "2021-09-05T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e184640d", "title": "Kubernetes External Secrets", "url": "https://blog.oddbit.com/post/2021-09-03-kubernetes-external-secrets/", "published_at": "2021-09-03T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e1e0b49f", "title": "Connecting OpenShift to an External Ceph Cluster", "url": "https://blog.oddbit.com/post/2021-08-23-external-ocs/", "published_at": "2021-08-23T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e2407eac", "title": "Creating a VXLAN overlay network with Open vSwitch", "url": "https://blog.oddbit.com/post/2021-04-17-vm-ovs-vxlan/", "published_at": "2021-04-17T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e2e48966", "title": "Getting started with KSOPS", "url": "https://blog.oddbit.com/post/2021-03-09-getting-started-with-ksops/", "published_at": "2021-03-09T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e343530f", "title": "Tools for writing about Git", "url": "https://blog.oddbit.com/post/2021-02-27-git-doc-tools/", "published_at": "2021-02-27T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e3d9c0c0", "title": "File reorganization", "url": "https://blog.oddbit.com/post/2021-02-24-file-reorganization/", "published_at": "2021-02-24T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e40baca2", "title": "Editing a commit message without git rebase", "url": "https://blog.oddbit.com/post/2021-02-18-editing-a-commit-message-witho/", "published_at": "2021-02-18T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e40e6c82", "title": "Object storage with OpenShift Container Storage", "url": "https://blog.oddbit.com/post/2021-02-10-object-storage-with-openshift/", "published_at": "2021-02-10T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e4504b56", "title": "Remediating poor PyPi performance with DevPi", "url": "https://blog.oddbit.com/post/2021-02-08-remediating-poor-pypi-performa/", "published_at": "2021-02-08T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e4d9b690", "title": "symtool: a tool for interacting with your SYM-1", "url": "https://blog.oddbit.com/post/2021-02-06-symtool-a-tool-for-interacting/", "published_at": "2021-02-06T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e4e26ad3", "title": "To sleep or not to sleep?", "url": "https://blog.oddbit.com/post/2020-12-18-to-sleep-or-not-to-sleep/", "published_at": "2020-12-18T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e56fdef6", "title": "Animating a map of Covid in the Northeast US", "url": "https://blog.oddbit.com/post/2020-12-13-animating-a-map-of-covid-in-th/", "published_at": "2020-12-13T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e66d4e7f", "title": "A note about running gpgv", "url": "https://blog.oddbit.com/post/2020-10-05-a-note-about-running-gpgv/", "published_at": "2020-10-05T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e67e2c99", "title": "Installing metallb on OpenShift with Kustomize", "url": "https://blog.oddbit.com/post/2020-09-27-installing-metallb-on-openshif/", "published_at": "2020-09-27T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e6ea6e23", "title": "Vortex Core Keyboard Review", "url": "https://blog.oddbit.com/post/2020-09-26-vortex-core-keyboard-review/", "published_at": "2020-09-26T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e7e3d4c1", "title": "Building multi-architecture images with GitHub Actions", "url": "https://blog.oddbit.com/post/2020-09-25-building-multi-architecture-im/", "published_at": "2020-09-25T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e88787cb", "title": "OpenShift and CNV: MAC address management in CNV 2.4", "url": "https://blog.oddbit.com/post/2020-08-10-mac-address-management-in-cnv/", "published_at": "2020-08-10T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e910849a", "title": "OpenShift and CNV: Exposing virtualized services", "url": "https://blog.oddbit.com/post/2020-07-30-openshift-and-cnv-part-2-expos/", "published_at": "2020-07-30T01:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e9526f1a", "title": "OpenShift and CNV: Installer network requirements", "url": "https://blog.oddbit.com/post/2020-07-30-openshift-and-cnv-part-1-worki/", "published_at": "2020-07-30T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198e9cacca4", "title": "You can't get an N95 mask: Now what?", "url": "https://blog.oddbit.com/post/2020-07-28-you-cant-get-an-n95-mask-now-w/", "published_at": "2020-07-28T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ea096521", "title": "Grove Beginner Kit for Arduino (part 2): First look", "url": "https://blog.oddbit.com/post/2020-06-07-first-look-seed-grove-beginner/", "published_at": "2020-06-07T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ead8db76", "title": "Grove Beginner Kit for Arduino (part 1)", "url": "https://blog.oddbit.com/post/2020-04-15-grove-beginner-kit-for-arduino/", "published_at": "2020-04-15T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198eae641bf", "title": "Some thoughts on Mechanical Keyboards", "url": "https://blog.oddbit.com/post/2020-04-15-some-thoughts-on-mechanical-ke/", "published_at": "2020-04-15T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ebe4f1fa", "title": "I see you have the machine that goes ping...", "url": "https://blog.oddbit.com/post/2020-03-20-i-see-you-have-the-machine-tha/", "published_at": "2020-03-20T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ec4f153d", "title": "A passwordless serial console for your Raspberry Pi", "url": "https://blog.oddbit.com/post/2020-02-24-a-passwordless-serial-console/", "published_at": "2020-02-24T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ec8e1775", "title": "Configuring Open vSwitch with nmcli", "url": "https://blog.oddbit.com/post/2020-02-15-configuring-open-vswitch-with/", "published_at": "2020-02-15T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ed02aa33", "title": "How long is a cold spell in Boston?", "url": "https://blog.oddbit.com/post/2020-01-23-how-long-is-a-cold-spell/", "published_at": "2020-01-23T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198edb1fbc7", "title": "Snarl: A tool for literate blogging", "url": "https://blog.oddbit.com/post/2020-01-15-snarl-a-tool-for-literate-blog/", "published_at": "2020-01-15T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198edbf4428", "title": "OVN and DHCP: A minimal example", "url": "https://blog.oddbit.com/post/2019-12-19-ovn-and-dhcp/", "published_at": "2019-12-19T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198edef64ce", "title": "TM-V71A and Linux, part 1: Programming mode", "url": "https://blog.oddbit.com/post/2019-10-03-tm-v71a-linux-part-1/", "published_at": "2019-10-03T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ee6b0047", "title": "Avoid rebase hell: squashing without rebasing", "url": "https://blog.oddbit.com/post/2019-06-17-avoid-rebase-hell-squashing-wi/", "published_at": "2019-06-17T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198eec89a03", "title": "Git Etiquette: Commit messages and pull requests", "url": "https://blog.oddbit.com/post/2019-06-14-git-etiquette-commit-messages/", "published_at": "2019-06-14T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198ef237ee0", "title": "Running Keystone with Docker Compose", "url": "https://blog.oddbit.com/post/2019-06-07-running-keystone-with-docker-c/", "published_at": "2019-06-07T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198efbbef53", "title": "A DIY CPAP Battery Box", "url": "https://blog.oddbit.com/post/2019-05-14-a-diy-cpap-battery-box/", "published_at": "2019-05-14T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f0b39b05", "title": "Unpacking a Python regular expression", "url": "https://blog.oddbit.com/post/2019-05-07-unpacking-a-python-regular-exp/", "published_at": "2019-05-07T10:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f0dcb9f8", "title": "New comment system", "url": "https://blog.oddbit.com/post/2019-05-07-new-comment-system/", "published_at": "2019-05-07T09:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f147b0e3", "title": "New static site generator", "url": "https://blog.oddbit.com/post/2019-05-06-new-static-site-generator/", "published_at": "2019-05-06T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f21c6eb2", "title": "Adding support for privilege escalation to Ansible's docker connection driver", "url": "https://blog.oddbit.com/post/2019-04-26-adding-support-for-privilege-e/", "published_at": "2019-04-26T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f272a680", "title": "Writing Ansible filter plugins", "url": "https://blog.oddbit.com/post/2019-04-25-writing-ansible-filter-plugins/", "published_at": "2019-04-25T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f287bc9c", "title": "Docker build learns about secrets and ssh agent forwarding", "url": "https://blog.oddbit.com/post/2019-02-24-docker-build-learns-about-secr/", "published_at": "2019-02-24T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f2fd72b5", "title": "In which I PEBKAC so you don't have to", "url": "https://blog.oddbit.com/post/2019-02-11-in-which-i-pebkac-so-you-dont-/", "published_at": "2019-02-11T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f343af74", "title": "ATOMIC_BLOCK magic in avr-libc", "url": "https://blog.oddbit.com/post/2019-02-01-atomicblock-magic-in-avrlibc/", "published_at": "2019-02-01T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f3941006", "title": "AVR micro-optimization: Avr-gcc and --short-enums", "url": "https://blog.oddbit.com/post/2019-01-28-avr-gcc-short-enums/", "published_at": "2019-01-28T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f42d37f5", "title": "AVR micro-optimization: Losing malloc", "url": "https://blog.oddbit.com/post/2019-01-28-losing-malloc/", "published_at": "2019-01-28T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f4b4d2d2", "title": "Debugging attiny85 code, part 1: simavr and gdb", "url": "https://blog.oddbit.com/post/2019-01-22-debugging-attiny-code-pt-1/", "published_at": "2019-01-22T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f4fbb2fa", "title": "Debugging attiny85 code, part 2: Automating GDB with scripts", "url": "https://blog.oddbit.com/post/2019-01-22-debugging-attiny-code-pt-2/", "published_at": "2019-01-22T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f5afc494", "title": "Debugging attiny85 code, part 3: Tracing with simavr", "url": "https://blog.oddbit.com/post/2019-01-22-debugging-attiny-code-pt-3/", "published_at": "2019-01-22T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f6721a2c", "title": "PiPower: A Raspberry Pi UPS", "url": "https://blog.oddbit.com/post/2019-01-19-pipower-a-raspberry-pi-ups/", "published_at": "2019-01-19T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f69b0f05", "title": "Integrating Bitwarden with Ansible", "url": "https://blog.oddbit.com/post/2018-10-19-integrating-bitwarden-with-ans/", "published_at": "2018-10-19T00:00:00+00:00" }, { "id": "01a08751-90db-7019-a219-a198f7779633", "title": "Systemd unit for managing USB gadgets", "url": "https://blog.oddbit.com/post/2018-10-19-systemd-unit-for-managing-usb-/", "published_at": "2018-10-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcc175d83", "title": "Configuring a static address for wlan0 on Raspbian Stretch", "url": "https://blog.oddbit.com/post/2018-06-14-configuring-a-static-address-f/", "published_at": "2018-06-14T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcc8ec9c1", "title": "Using a TM1637 LED module with CircuitPython", "url": "https://blog.oddbit.com/post/2018-05-03-using-a-tm-led-module-with-cir/", "published_at": "2018-05-03T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcd38c075", "title": "Multiple 1-Wire Buses on the Raspberry Pi", "url": "https://blog.oddbit.com/post/2018-03-27-multiple-1-wire-buses-on-the-/", "published_at": "2018-03-27T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcdb7f2ac", "title": "Using Docker macvlan networks", "url": "https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/", "published_at": "2018-03-12T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcea7d34a", "title": "Listening for connections on all ports/any port", "url": "https://blog.oddbit.com/post/2018-02-27-listening-for-connections-on-a/", "published_at": "2018-02-27T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcefdfbed", "title": "Grouping aggregation queries in Gnocchi 4.0.x", "url": "https://blog.oddbit.com/post/2018-02-26-grouping-aggregation-queries-i/", "published_at": "2018-02-26T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcf161d99", "title": "Listing iptables rules with line numbers", "url": "https://blog.oddbit.com/post/2018-02-08-listing-iptables-rules-with-li/", "published_at": "2018-02-08T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcf21081e", "title": "Pelican and theme update", "url": "https://blog.oddbit.com/post/2018-01-26-pelican-theme-update/", "published_at": "2018-01-26T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcf3e3ea3", "title": "Fun with devicemapper snapshots", "url": "https://blog.oddbit.com/post/2018-01-25-fun-with-devicemapper-snapshot/", "published_at": "2018-01-25T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcf62641a", "title": "Safely restarting an OpenStack server with Ansible", "url": "https://blog.oddbit.com/post/2018-01-24-safely-restarting-an-openstack/", "published_at": "2018-01-24T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcfb5360d", "title": "Some notes on PWM on the Raspberry Pi", "url": "https://blog.oddbit.com/post/2017-09-26-some-notes-on-pwm-on-the-raspb/", "published_at": "2017-09-26T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adcfde6d3f", "title": "Ansible for Infrastructure Testing", "url": "https://blog.oddbit.com/post/2017-08-02-ansible-for-infrastructure-tes/", "published_at": "2017-08-02T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add05b8172", "title": "Better bulk filtering for Gmail", "url": "https://blog.oddbit.com/post/2017-07-07-better-bulk-filtering-for-gmai/", "published_at": "2017-07-07T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add0bd4b7c", "title": "OpenStack, Containers, and Logging", "url": "https://blog.oddbit.com/post/2017-06-14-openstack-containers-and-loggi/", "published_at": "2017-06-14T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add13cb440", "title": "FAA Cannot Require Drone Registration", "url": "https://blog.oddbit.com/post/2017-05-25-faa-cannot-require-drone-regis/", "published_at": "2017-05-25T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add1ffe443", "title": "Making sure your Gerrit changes aren't broken", "url": "https://blog.oddbit.com/post/2017-01-22-making-sure-your-gerrit-change/", "published_at": "2017-01-22T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add2d1f662", "title": "Exploring YAQL Expressions", "url": "https://blog.oddbit.com/post/2016-08-11-exploring-yaql-expressions/", "published_at": "2016-08-11T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add32372a5", "title": "Connecting another vm to your tripleo-quickstart deployment", "url": "https://blog.oddbit.com/post/2016-05-19-connecting-another-vm-to-your-/", "published_at": "2016-05-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add3315fb5", "title": "A collection of git tips", "url": "https://blog.oddbit.com/post/2016-02-19-a-collection-of-git-tips/", "published_at": "2016-02-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add37e9b3f", "title": "Deploying an HA OpenStack development environment with tripleo-quickstart", "url": "https://blog.oddbit.com/post/2016-02-19-deploy-an-ha-openstack-develop/", "published_at": "2016-02-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add3bcc8f2", "title": "Gruf gets superpowers", "url": "https://blog.oddbit.com/post/2016-02-19-gruf-gets-superpowers/", "published_at": "2016-02-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add480a689", "title": "Gruf, a Gerrit command line utility", "url": "https://blog.oddbit.com/post/2016-02-16-gruf-a-gerrit-command-line-uti/", "published_at": "2016-02-16T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add4dd4b73", "title": "A systemd-nspawn connection driver for Ansible", "url": "https://blog.oddbit.com/post/2016-02-08-a-systemd-nspawn-connection-dr/", "published_at": "2016-02-08T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add53633a3", "title": "Folding long lines in Ansible inventory files", "url": "https://blog.oddbit.com/post/2016-02-07-folding-long-lines-in-ansible-/", "published_at": "2016-02-07T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add6133210", "title": "Systemd-nspawn for fun and...well, mostly for fun", "url": "https://blog.oddbit.com/post/2016-02-07-systemd-nspawn-for-fun-and-wel/", "published_at": "2016-02-07T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add6cd0161", "title": "Installing pyspatialite on Fedora", "url": "https://blog.oddbit.com/post/2015-11-17-installing-pyspatialite-on-fed/", "published_at": "2015-11-17T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add6ffb609", "title": "Ansible 2.0: New OpenStack modules", "url": "https://blog.oddbit.com/post/2015-10-26-ansible-20-new-openstack-modul/", "published_at": "2015-10-26T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add7998657", "title": "Automatic git cache", "url": "https://blog.oddbit.com/post/2015-10-19-automatic-git-cache/", "published_at": "2015-10-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add84827da", "title": "Stupid Ansible Tricks: Running a role from the command line", "url": "https://blog.oddbit.com/post/2015-10-19-stupid-ansible-tricks-running-/", "published_at": "2015-10-19T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add8cfdc5b", "title": "Bootstrapping Ansible on Fedora 23", "url": "https://blog.oddbit.com/post/2015-10-15-bootstrapping-ansible-on-fedor/", "published_at": "2015-10-15T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95add93accff", "title": "Ansible 2.0: The Docker connection driver", "url": "https://blog.oddbit.com/post/2015-10-13-ansible-20-the-docker-connecti/", "published_at": "2015-10-13T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adda3421a1", "title": "Running NTP in a Container", "url": "https://blog.oddbit.com/post/2015-10-09-running-ntp-in-a-container/", "published_at": "2015-10-09T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95adda646936", "title": "Migrating Cinder volumes between OpenStack environments using shared NFS storage", "url": "https://blog.oddbit.com/post/2015-09-29-migrating-cinder-volumes-betwe/", "published_at": "2015-09-29T00:00:00+00:00" }, { "id": "01a08751-90dc-71b7-bbde-95addac18604", "title": "Provider external networks (in an appropriate amount of detail)", "url": "https://blog.oddbit.com/post/2015-08-13-provider-external-networks-det/", "published_at": "2015-08-13T00:00:00+00:00" } ] posts Claim your blog
Back to blog.oddbit.com
Blog · corpus.blog/blogs/blog.oddbit.com/posts

blog.oddbit.com

blog.oddbit.com

2025

2023

2022

2021

2020

2019

2018

2017

2016

2015