41554 blogs · [ { "id": "01a087cb-9a1f-71fa-9a45-aa9e485cb909", "title": "My perspectives on AI/LLMs", "url": "https://purpleidea.com/blog/2026/06/24/perspectives-on-ai-llms/", "published_at": "2026-06-24T08:35:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4863a643", "title": "The switch as an ordinary GNU/Linux server", "url": "https://purpleidea.com/blog/2026/04/09/the-switch-as-an-ordinary-gnulinux-server/", "published_at": "2026-04-09T06:23:52+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e48dc0e10", "title": "10 years of mgmt", "url": "https://purpleidea.com/blog/2025/09/25/10-years-of-mgmt/", "published_at": "2025-09-25T05:07:56+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e491222a8", "title": "Better git status", "url": "https://purpleidea.com/blog/2025/08/04/better-git-status/", "published_at": "2025-08-05T01:10:30+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4955605a", "title": "Running etcd over SSH", "url": "https://purpleidea.com/blog/2025/05/14/running-etcd-over-ssh/", "published_at": "2025-05-14T23:45:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4a4fd231", "title": "Working around an iPXE issue", "url": "https://purpleidea.com/blog/2025/01/23/working-around-an-ipxe-issue/", "published_at": "2025-01-24T02:34:56+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4a7cbcd2", "title": "Modules and imports in mgmt", "url": "https://purpleidea.com/blog/2024/12/03/modules-and-imports-in-mgmt/", "published_at": "2024-12-03T07:56:37+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4acdc4a4", "title": "Mgmt Configuration Language: Functions", "url": "https://purpleidea.com/blog/2024/11/22/functions-in-mgmt/", "published_at": "2024-11-22T23:16:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4b0971a4", "title": "Better dmesg in five minutes", "url": "https://purpleidea.com/blog/2024/11/17/better-dmesg/", "published_at": "2024-11-17T20:52:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4bc75496", "title": "A new provisioning tool built with mgmt", "url": "https://purpleidea.com/blog/2024/03/27/a-new-provisioning-tool/", "published_at": "2024-03-27T20:58:57+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4c97a2da", "title": "Bash $PATH filtering", "url": "https://purpleidea.com/blog/2024/03/02/bash-path-filtering/", "published_at": "2024-03-03T00:54:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4ce73562", "title": "Upcoming Speaking and Events", "url": "https://purpleidea.com/blog/2024/01/31/upcoming-speaking-and-events/", "published_at": "2024-01-31T14:57:30+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4d6db33a", "title": "Git branch filtering", "url": "https://purpleidea.com/blog/2024/01/28/git-branch-filtering/", "published_at": "2024-01-28T22:04:30+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4e50beb2", "title": "Five minute hacks: Swapping left and right headphone audio in wireplumber", "url": "https://purpleidea.com/blog/2023/11/22/swapping-left-and-right-headphone-audio-in-wireplumber/", "published_at": "2023-11-22T22:25:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4e9a5565", "title": "One minute hacks: Saving time inserting images in Libreoffice", "url": "https://purpleidea.com/blog/2023/08/02/one-minute-hacks-saving-time-inserting-images-in-libreoffice/", "published_at": "2023-08-02T17:35:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4f46dafa", "title": "UEFI booting, and with a new kernel module", "url": "https://purpleidea.com/blog/2023/07/24/uefi-booting-and-with-a-new-kernel-module/", "published_at": "2023-07-24T21:22:22+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e4fcfaae9", "title": "Improving git diff output in 5 min", "url": "https://purpleidea.com/blog/2023/06/01/improving-git-diff-output-in-5-min/", "published_at": "2023-06-01T22:20:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e5034794a", "title": "Blocked select logging (deadlock finding) in golang", "url": "https://purpleidea.com/blog/2023/05/26/blocked-select-logging-in-golang/", "published_at": "2023-05-26T05:21:22+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e50fea9ff", "title": "Deadline context test cancellation in golang", "url": "https://purpleidea.com/blog/2023/02/24/deadline-context-test-cancellation-in-golang/", "published_at": "2023-02-25T03:36:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e511f45eb", "title": "Magic typing with shortcuts on Linux", "url": "https://purpleidea.com/blog/2021/06/15/magic-typing-with-shortcuts-on-linux/", "published_at": "2021-06-16T04:40:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e51852340", "title": "USB Audio on a Boombox", "url": "https://purpleidea.com/blog/2021/01/11/usb-audio-on-a-boombox/", "published_at": "2021-01-11T09:00:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e51e053e5", "title": "Working at Amazon", "url": "https://purpleidea.com/blog/2020/12/28/working-at-amazon/", "published_at": "2020-12-28T13:27:35+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e520876e4", "title": "James is available for hire!", "url": "https://purpleidea.com/blog/2020/09/10/james-is-available-for-hire/", "published_at": "2020-09-10T12:00:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e527f5b6e", "title": "Inexpensive Dynamic DNS over IRC", "url": "https://purpleidea.com/blog/2020/09/01/inexpensive-dns-over-irc/", "published_at": "2020-09-01T21:08:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e52c84a5f", "title": "USB Car Audio in a Civic", "url": "https://purpleidea.com/blog/2020/08/11/usb-car-audio-in-a-civic/", "published_at": "2020-08-24T05:30:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e534baba6", "title": "Mgmt Configuration Language: Class and Include", "url": "https://purpleidea.com/blog/2019/07/26/class-and-include-in-mgmt/", "published_at": "2019-07-26T10:35:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e5405963f", "title": "Upcoming Speaking and Events", "url": "https://purpleidea.com/blog/2019/02/02/upcoming-speaking-and-events/", "published_at": "2019-02-02T08:00:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e5453776a", "title": "A guide to fighting with a Cisco access point", "url": "https://purpleidea.com/blog/2018/12/21/a-guide-to-fighting-with-a-cisco-access-point/", "published_at": "2018-12-21T12:45:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e5504a3e9", "title": "The End of a Red Giant", "url": "https://purpleidea.com/blog/2018/10/30/the-end-of-a-red-giant/", "published_at": "2018-10-30T12:39:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e55f6b0cf", "title": "Hyperlinks in GNOME terminal", "url": "https://purpleidea.com/blog/2018/06/29/hyperlinks-in-gnome-terminal/", "published_at": "2018-06-30T01:45:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e5683614e", "title": "Breaking out of the Slack walled garden", "url": "https://purpleidea.com/blog/2018/06/22/breaking-out-of-the-slack-walled-garden/", "published_at": "2018-06-22T17:50:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e56ba478c", "title": "A new sync primitive in golang", "url": "https://purpleidea.com/blog/2018/05/20/a-new-sync-primitive-in-golang/", "published_at": "2018-05-20T22:00:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e56d14549", "title": "Leaving Red Hat", "url": "https://purpleidea.com/blog/2018/04/04/leaving-redhat/", "published_at": "2018-04-04T11:27:35+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e57608f8a", "title": "Running `make` from anywhere", "url": "https://purpleidea.com/blog/2018/03/10/running-make-from-anywhere/", "published_at": "2018-03-10T07:00:00+00:00" }, { "id": "01a087cb-9a1f-71fa-9a45-aa9e57f2d4cf", "title": "Mgmt Configuration Language", "url": "https://purpleidea.com/blog/2018/02/05/mgmt-configuration-language/", "published_at": "2018-02-05T05:00:00+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce921e907203", "title": "Hello World!", "url": "https://purpleidea.com/blog/hello-world/", "published_at": "2017-11-13T14:18:15+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce921edd1859", "title": "Copyleft is Dead. Long live Copyleft!", "url": "https://purpleidea.com/blog/2017/10/17/copyleft-is-dead-long-live-copyleft/", "published_at": "2017-10-17T21:22:05+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce921fb15f64", "title": "Extracting movies from libreoffice", "url": "https://purpleidea.com/blog/2017/07/12/extracting-movies-from-libreoffice/", "published_at": "2017-07-12T10:09:46+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce921fe04b33", "title": "Declarative vs. Imperative paradigms", "url": "https://purpleidea.com/blog/2017/05/05/declarative-vs-imperative-paradigms/", "published_at": "2017-05-05T17:35:17+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9220cfcc2e", "title": "Osmocom femtocell un-boxing", "url": "https://purpleidea.com/blog/2017/04/30/osmocom-femtocell-un-boxing/", "published_at": "2017-04-30T17:56:13+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92212eadbc", "title": "Metaparameters in mgmt", "url": "https://purpleidea.com/blog/2017/03/01/metaparameters-in-mgmt/", "published_at": "2017-03-01T16:11:59+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92222c1314", "title": "Faster golang builds", "url": "https://purpleidea.com/blog/2017/02/26/faster-golang-builds/", "published_at": "2017-02-26T17:02:35+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92232b8e5a", "title": "Ten minute hacks: Process pause & resume", "url": "https://purpleidea.com/blog/2017/01/06/ten-minute-hacks-process-pause-resume/", "published_at": "2017-01-06T05:57:08+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92235b887a", "title": "Send/Recv in mgmt", "url": "https://purpleidea.com/blog/2016/12/07/sendrecv-in-mgmt/", "published_at": "2016-12-07T07:00:20+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9224085c25", "title": "A revisionist history of configuration management", "url": "https://purpleidea.com/blog/2016/11/30/a-revisionist-history-of-configuration-management/", "published_at": "2016-11-30T23:59:49+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9224f311ce", "title": "Remote execution in mgmt", "url": "https://purpleidea.com/blog/2016/10/07/remote-execution-in-mgmt/", "published_at": "2016-10-07T15:33:17+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9225b99a92", "title": "mgmt has a logo", "url": "https://purpleidea.com/blog/2016/09/30/mgmt-has-a-logo/", "published_at": "2016-09-30T08:41:06+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92260ad89b", "title": "Live dmesg following", "url": "https://purpleidea.com/blog/2016/08/29/live-dmesg-following/", "published_at": "2016-08-29T09:00:39+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9226d71760", "title": "Seen in downtown Montreal...", "url": "https://purpleidea.com/blog/2016/08/03/seen-in-downtown-montreal/", "published_at": "2016-08-03T01:59:23+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9227c1c585", "title": "Ten minute hacks: Hacking airplane headphones", "url": "https://purpleidea.com/blog/2016/07/18/ten-minute-hacks-hacking-airplane-headphones/", "published_at": "2016-07-18T16:41:47+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9228ad9b0b", "title": "Automatic clustering in mgmt", "url": "https://purpleidea.com/blog/2016/06/20/automatic-clustering-in-mgmt/", "published_at": "2016-06-20T12:28:51+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922991d8f5", "title": "Upcoming speaking In Hong Kong and South Africa", "url": "https://purpleidea.com/blog/2016/06/20/upcoming-speaking-in-hong-kong-and-south-africa/", "published_at": "2016-06-20T04:08:59+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922996d860", "title": "One hour hacks: Remote LUKS over SSH", "url": "https://purpleidea.com/blog/2016/04/25/one-hour-hacks-remote-luks-over-ssh/", "published_at": "2016-04-25T13:46:53+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922a8aa5fc", "title": "Automatic grouping in mgmt", "url": "https://purpleidea.com/blog/2016/03/30/automatic-grouping-in-mgmt/", "published_at": "2016-03-30T06:03:47+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922ac23a19", "title": "Automatic edges in mgmt", "url": "https://purpleidea.com/blog/2016/03/14/automatic-edges-in-mgmt/", "published_at": "2016-03-14T00:50:48+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922b6cc1c6", "title": "Introducing: git tpush", "url": "https://purpleidea.com/blog/2016/02/16/introducing-git-tpush/", "published_at": "2016-02-16T12:15:06+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922c30cc0b", "title": "Debugging golang programs", "url": "https://purpleidea.com/blog/2016/02/15/debugging-golang-programs/", "published_at": "2016-02-15T16:47:57+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922c5305f8", "title": "Next generation configuration mgmt", "url": "https://purpleidea.com/blog/2016/01/18/next-generation-configuration-mgmt/", "published_at": "2016-01-18T00:52:10+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922c8edae2", "title": "Upcoming speaking", "url": "https://purpleidea.com/blog/2016/01/18/upcoming-speaking/", "published_at": "2016-01-18T00:32:52+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922ceb60b9", "title": "Trying out Ceph with Oh-My-Vagrant", "url": "https://purpleidea.com/blog/2015/12/28/trying-out-ceph-with-oh-my-vagrant/", "published_at": "2015-12-28T14:59:23+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922d4513c3", "title": "Matching arbitrary URL's to custom Firefox profiles", "url": "https://purpleidea.com/blog/2015/11/14/matching-arbitrary-urls-to-custom-firefox-profiles/", "published_at": "2015-11-14T06:50:35+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922dba5e8b", "title": "Thanking Oh-My-Vagrant contributors for version 1.0.0", "url": "https://purpleidea.com/blog/2015/08/18/thanking-oh-my-vagrant-contributors-for-version-1-0-0/", "published_at": "2015-08-18T03:12:26+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922e0159c3", "title": "Vagrant and Oh-My-Vagrant on RHEL7", "url": "https://purpleidea.com/blog/2015/08/11/vagrant-and-oh-my-vagrant-on-rhel7/", "published_at": "2015-08-11T15:09:16+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922e153278", "title": "Making an empty RPM", "url": "https://purpleidea.com/blog/2015/08/11/making-an-empty-rpm/", "published_at": "2015-08-11T13:25:58+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922ef3ba06", "title": "Golang parallelism issues causing “too many open files” error", "url": "https://purpleidea.com/blog/2015/07/27/golang-parallelism-issues-causing-too-many-open-files-error/", "published_at": "2015-07-27T11:39:45+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922efd9a76", "title": "Git archive with submodules and tar magic", "url": "https://purpleidea.com/blog/2015/07/23/git-archive-with-submodules-and-tar-magic/", "published_at": "2015-07-23T20:32:27+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922f3cf1ea", "title": "Oh-My-Vagrant “Mainstream” mode and COPR RPM's", "url": "https://purpleidea.com/blog/2015/07/08/oh-my-vagrant-mainstream-mode-and-copr-rpms/", "published_at": "2015-07-08T01:14:19+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922fa65863", "title": "A super privileged Puppet container", "url": "https://purpleidea.com/blog/2015/06/12/a-super-privileged-puppet-container/", "published_at": "2015-06-12T18:06:55+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce922ff58b88", "title": "Kubernetes clusters with Oh-My-Vagrant", "url": "https://purpleidea.com/blog/2015/05/02/kubernetes-clusters-with-oh-my-vagrant/", "published_at": "2015-05-02T00:07:11+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9230a68753", "title": "Docker containers in Oh-My-Vagrant", "url": "https://purpleidea.com/blog/2015/04/20/docker-containers-in-oh-my-vagrant/", "published_at": "2015-04-20T04:35:43+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92319f4fa2", "title": "Sharing dev environments with Oh-My-Vagrant", "url": "https://purpleidea.com/blog/2015/04/08/sharing-dev-environments-with-oh-my-vagrant/", "published_at": "2015-04-08T03:37:18+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9231dd4993", "title": "Fancy git aliases and git cherryfetch", "url": "https://purpleidea.com/blog/2015/03/16/fancy-git-aliases-and-git-cherryfetch/", "published_at": "2015-03-16T05:36:19+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9231f9a879", "title": "Building RHEL Vagrant Boxes with Vagrant-Builder", "url": "https://purpleidea.com/blog/2015/02/23/building-rhel-vagrant-boxes-with-vagrant-builder/", "published_at": "2015-02-23T22:48:39+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92329a67bd", "title": "Introducing: Silent counter", "url": "https://purpleidea.com/blog/2015/02/09/introducing-silent-counter/", "published_at": "2015-02-09T07:31:58+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92329cf991", "title": "Replying to mailing lists with Evolution", "url": "https://purpleidea.com/blog/2014/11/27/replying-to-mailing-lists-with-evolution/", "published_at": "2014-11-27T20:28:54+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9232a36b88", "title": "Captive web portals are considered harmful", "url": "https://purpleidea.com/blog/2014/11/27/captive-web-portals-are-considered-harmful/", "published_at": "2014-11-27T00:46:06+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce923367a200", "title": "The switch as an ordinary GNU/Linux server", "url": "https://purpleidea.com/blog/2014/11/04/the-switch-as-an-ordinary-gnulinux-server/", "published_at": "2014-11-04T02:23:52+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92338154fa", "title": "Testing Evolution's git master and GNOME continuous", "url": "https://purpleidea.com/blog/2014/10/22/testing-evolutions-git-master-and-gnome-continuous/", "published_at": "2014-10-22T17:22:56+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce923398a10e", "title": "Hacking out an Openshift app", "url": "https://purpleidea.com/blog/2014/10/18/hacking-out-an-openshift-app/", "published_at": "2014-10-18T16:43:00+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9233e3db1b", "title": "Continuous integration for Puppet modules", "url": "https://purpleidea.com/blog/2014/10/10/continuous-integration-for-puppet-modules/", "published_at": "2014-10-10T15:34:53+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9234038fe7", "title": "Fixing dropbox “conflicted copy” problems", "url": "https://purpleidea.com/blog/2014/09/30/fixing-dropbox-conflicted-copy-problems/", "published_at": "2014-09-30T01:05:07+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce92347f2c4b", "title": "Introducing: Oh My Vagrant!", "url": "https://purpleidea.com/blog/2014/09/03/introducing-oh-my-vagrant/", "published_at": "2014-09-03T23:19:19+00:00" }, { "id": "01a087cb-9a20-73df-805e-ce9234f6acd3", "title": "Rough data density calculations", "url": "https://purpleidea.com/blog/2014/08/27/rough-data-density-calculations/", "published_at": "2014-08-27T05:52:47+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5094ba36", "title": "Hybrid management of FreeIPA types with Puppet", "url": "https://purpleidea.com/blog/2014/07/24/hybrid-management-of-freeipa-types-with-puppet/", "published_at": "2014-07-24T00:41:08+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5129eedd", "title": "One minute hacks: the nautilus scripts folder", "url": "https://purpleidea.com/blog/2014/06/26/one-minute-hacks-the-nautilus-scripts-folder/", "published_at": "2014-06-26T00:01:10+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca516ae30f", "title": "Securely managing secrets for FreeIPA with Puppet", "url": "https://purpleidea.com/blog/2014/06/06/securely-managing-secrets-for-freeipa-with-puppet/", "published_at": "2014-06-06T06:12:19+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca516d71ca", "title": "Hiera data in modules and OS independent puppet", "url": "https://purpleidea.com/blog/2014/06/04/hiera-data-in-modules-and-os-independent-puppet/", "published_at": "2014-06-04T03:47:23+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5200cb97", "title": "Restarting GNOME shell via SSH", "url": "https://purpleidea.com/blog/2014/05/29/restarting-gnome-shell-via-ssh/", "published_at": "2014-05-29T02:18:35+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5278be5c", "title": "Vagrant on Fedora with libvirt (reprise)", "url": "https://purpleidea.com/blog/2014/05/13/vagrant-on-fedora-with-libvirt-reprise/", "published_at": "2014-05-13T18:58:06+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca532120da", "title": "Keeping git submodules in sync with your branches", "url": "https://purpleidea.com/blog/2014/05/06/keeping-git-submodules-in-sync-with-your-branches/", "published_at": "2014-05-06T19:34:13+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5356e926", "title": "Working at RedHat", "url": "https://purpleidea.com/blog/2014/04/02/working-at-redhat/", "published_at": "2014-04-02T14:27:35+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca53b89521", "title": "Puppet-Gluster now available as RPM", "url": "https://purpleidea.com/blog/2014/03/27/puppet-gluster-now-available-as-rpm/", "published_at": "2014-03-27T20:32:41+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca54813781", "title": "Introducing Puppet Exec['again']", "url": "https://purpleidea.com/blog/2014/03/24/introducing-puppet-execagain/", "published_at": "2014-03-24T18:37:23+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca54ef1cc2", "title": "Preserving your working directory in gnome-terminal", "url": "https://purpleidea.com/blog/2014/03/20/preserving-your-working-directory-in-gnome-terminal/", "published_at": "2014-03-20T18:01:24+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5545d7ab", "title": "Speaking at SCALE today!", "url": "https://purpleidea.com/blog/2014/02/21/speaking-at-scale-today/", "published_at": "2014-02-21T13:54:47+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca55717a1d", "title": "Building a snow shelter", "url": "https://purpleidea.com/blog/2014/02/17/building-a-snow-shelter/", "published_at": "2014-02-17T18:23:27+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca564e168d", "title": "Scathing review of the Lenovo X240", "url": "https://purpleidea.com/blog/2014/02/02/scathing-review-of-the-lenovo-x240/", "published_at": "2014-02-02T15:15:10+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca568830b3", "title": "Show the exit status in your $PS1", "url": "https://purpleidea.com/blog/2014/01/29/show-the-exit-status-in-your-ps1/", "published_at": "2014-01-29T19:43:44+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca5716d604", "title": "Screencasts of Puppet-Gluster + Vagrant", "url": "https://purpleidea.com/blog/2014/01/27/screencasts-of-puppet-gluster-vagrant/", "published_at": "2014-01-27T16:13:10+00:00" }, { "id": "01a087cb-9a21-7176-adc8-7cca580f7736", "title": "Building base images for Vagrant with a Makefile", "url": "https://purpleidea.com/blog/2014/01/20/building-base-images-for-vagrant-with-a-makefile/", "published_at": "2014-01-20T11:46:31+00:00" } ] posts Claim your blog
Back to purpleidea
Blog · corpus.blog/blogs/purpleidea.com/posts

purpleidea

purpleidea.com

2026

2025

2024

2023

2021

2020

2019

2018

2017

2016

2015

2014