57,803 blogs · [ { "id": "01a087c0-154f-71e5-86e9-372606e30770", "title": "Homelab Ingress With Deterministic IPv6", "url": "https://www.petekeen.net/homelab-ingress-with-deterministic-ipv6/", "published_at": "2026-08-11T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d403756f3c1", "title": "Rebuilding My Homelab with Compose, Ruby, IPv6, and No Kubernetes", "url": "https://www.petekeen.net/homelab-resolved/", "published_at": "2026-07-10T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d4038235ba1", "title": "Homelab Failure Domains", "url": "https://www.petekeen.net/homelab-failure-domains/", "published_at": "2025-09-25T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d40385fe135", "title": "Kubernetes at the (homelab) Edge", "url": "https://www.petekeen.net/kubernetes-at-the-homelab-edge/", "published_at": "2025-05-19T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d403925adb9", "title": "Switching to Kubernetes", "url": "https://www.petekeen.net/kubernetes-homelab/", "published_at": "2025-05-09T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d403958ec38", "title": "Using ESPHome Without the Home Assistant Addon", "url": "https://www.petekeen.net/esphome-without-the-addon/", "published_at": "2024-08-12T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d403a53460f", "title": "Automatic Finances", "url": "https://www.petekeen.net/automatic-finances/", "published_at": "2024-07-31T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d403aea1834", "title": "Automatic Cash Management", "url": "https://www.petekeen.net/automatic-cash-management/", "published_at": "2024-07-31T00:00:00+00:00" }, { "id": "01a087c0-1552-70cb-a2c1-7d403be581dc", "title": "Automatic Investing", "url": "https://www.petekeen.net/automatic-investing/", "published_at": "2024-07-31T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae529f93c1", "title": "ESPHome Server in Python", "url": "https://www.petekeen.net/esphome-server-in-python/", "published_at": "2024-06-15T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5311237a", "title": "The Simply Complicated Automatic Sprinkler", "url": "https://www.petekeen.net/simply-complicated-automatic-sprinkler/", "published_at": "2024-05-02T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae53faa489", "title": "Using a Static JSON File in Home Assistant", "url": "https://www.petekeen.net/static-json-in-home-assistant/", "published_at": "2024-01-08T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae540cb8aa", "title": "Using Eufy Permanent Outdoor Lights with WLED", "url": "https://www.petekeen.net/wled-eufy-permanent-outdoor-lights/", "published_at": "2023-11-28T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae546c089b", "title": "Using a Secondary Klipper for Printer Power Control", "url": "https://www.petekeen.net/secondary-klipper-for-power-control/", "published_at": "2023-09-19T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae547b1d47", "title": "Backyard Fiber Update 2", "url": "https://www.petekeen.net/backyard-fiber-update-2/", "published_at": "2023-06-05T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae54b25990", "title": "Backyard Fiber Update 1", "url": "https://www.petekeen.net/backyard-fiber-update-1/", "published_at": "2023-04-19T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae54eae42a", "title": "Backyard Fiber", "url": "https://www.petekeen.net/backyard-fiber/", "published_at": "2023-03-31T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae55975904", "title": "Homeprod Management with Docker Compose", "url": "https://www.petekeen.net/homeprod-management-with-docker/", "published_at": "2022-09-21T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae559886a9", "title": "Setting up an isolated work VLAN with VyOS", "url": "https://www.petekeen.net/isolated-work-vlan-with-vyos/", "published_at": "2022-08-12T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae56938450", "title": "Ruby Service Objects with Sorbet", "url": "https://www.petekeen.net/ruby-service-objects-with-sorbet/", "published_at": "2022-05-27T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae57275c3e", "title": "Z-Wave Controllers using Dell Wyse Thin Clients", "url": "https://www.petekeen.net/zwave-controllers/", "published_at": "2022-03-18T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae576df440", "title": "My Virtualized Router", "url": "https://www.petekeen.net/virtualized-router/", "published_at": "2021-11-24T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae57a21298", "title": "Tiller, Ledger, and Sorbet", "url": "https://www.petekeen.net/tiller-ledger-and-sorbet/", "published_at": "2020-05-21T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae57ea86b9", "title": "Using Que instead of Sidekiq", "url": "https://www.petekeen.net/using-que-instead-of-sidekiq/", "published_at": "2019-03-13T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae582dbd28", "title": "Automatic Insurance", "url": "https://www.petekeen.net/automatic-insurance/", "published_at": "2019-02-19T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae58dbecd1", "title": "Using Let's Encrypt Without certbot", "url": "https://www.petekeen.net/lets-encrypt-without-certbot/", "published_at": "2018-09-13T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5974299f", "title": "What is a CDN and why do I need one?", "url": "https://www.petekeen.net/why-a-cdn-anyway/", "published_at": "2018-08-30T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae59927148", "title": "My Own Private CDN", "url": "https://www.petekeen.net/my-own-private-cdn/", "published_at": "2018-08-20T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5a25b250", "title": "VMSave has made over 10,000 calls", "url": "https://www.petekeen.net/vmsave-ten-thousand-calls/", "published_at": "2018-08-15T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5a662829", "title": "An Open Licensing Organization for Open Source Software", "url": "https://www.petekeen.net/ascap-for-open-source-software/", "published_at": "2018-06-05T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5aa43e80", "title": "Notes on Shutting Down an S-Corp", "url": "https://www.petekeen.net/shutting-down-an-scorp/", "published_at": "2018-06-04T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5b3422cf", "title": "Why your SaaS application should support SAML", "url": "https://www.petekeen.net/why-your-saas-application-should-support-saml/", "published_at": "2018-04-29T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5c1f0a61", "title": "Adventures in Stock Picking", "url": "https://www.petekeen.net/adventures-in-stock-picking/", "published_at": "2017-06-07T00:00:00+00:00" }, { "id": "01a087c0-1553-7207-a807-92ae5c3da9d7", "title": "My Miniature Corporate Empire", "url": "https://www.petekeen.net/miniature-corporate-empire/", "published_at": "2017-05-15T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f1309e88c866", "title": "We (Probably) Have Two Years of ACA Left", "url": "https://www.petekeen.net/we-probably-have-two-years-of-aca-left/", "published_at": "2016-11-10T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f1309f6ab939", "title": "Archiving Websites with Wget", "url": "https://www.petekeen.net/archiving-websites-with-wget/", "published_at": "2016-05-22T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a044f554", "title": "Does an LLC protect me from a personal injury lawsuit?", "url": "https://www.petekeen.net/does-an-llc-protect-me-from-an-injury/", "published_at": "2015-11-23T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a133ffbc", "title": "One Thousand Days", "url": "https://www.petekeen.net/one-thousand-days/", "published_at": "2015-09-22T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a142505a", "title": "New Book: Handle Your Business", "url": "https://www.petekeen.net/handle-your-business-release/", "published_at": "2015-09-17T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a16c235a", "title": "Organizing Your Consulting Business", "url": "https://www.petekeen.net/organizing-your-consulting-business/", "published_at": "2015-08-31T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a2348788", "title": "Program Your Finances: Algorithmic Savings", "url": "https://www.petekeen.net/program-your-finances-algorithmic-savings/", "published_at": "2015-06-17T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a25dc4c2", "title": "Pay Your Taxes!", "url": "https://www.petekeen.net/pay-your-taxes/", "published_at": "2015-05-08T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a31744c9", "title": "Program Your Finances: Envelope Budgeting", "url": "https://www.petekeen.net/program-your-finances-envelope-budgeting/", "published_at": "2015-04-08T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a39ded12", "title": "DKIM Deep Dive", "url": "https://www.petekeen.net/dkim-deep-dive/", "published_at": "2015-01-07T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a3fa6ab2", "title": "SPF: Sunscreen for your Email", "url": "https://www.petekeen.net/spf-sunscreen-for-your-email/", "published_at": "2015-01-05T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a4b9880d", "title": "Email: The Good Parts", "url": "https://www.petekeen.net/email-the-good-parts/", "published_at": "2014-12-31T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a54d40f0", "title": "Your DNS Provider Should Not Be Your Registrar", "url": "https://www.petekeen.net/your-dns-provider-should-not-be-your-registrar/", "published_at": "2014-12-01T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a5c5fd22", "title": "What is the best modern payment provider?", "url": "https://www.petekeen.net/what-is-the-best-modern-payment-provider/", "published_at": "2014-11-25T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a608e650", "title": "Stripe removed SSLv3 support. Here's how to fix the HTTP 401 errors.", "url": "https://www.petekeen.net/stripe-ruby-sslv3-deprecated/", "published_at": "2014-11-20T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a60a43a1", "title": "Payola v1.2: Now with Subscriptions", "url": "https://www.petekeen.net/payola-subscriptions/", "published_at": "2014-11-17T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a6dd9de6", "title": "Building Payola Extensions", "url": "https://www.petekeen.net/building-payola-extensions/", "published_at": "2014-11-11T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a791459b", "title": "Introducing Payola", "url": "https://www.petekeen.net/introducing-payola/", "published_at": "2014-10-20T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a7b33bc7", "title": "Building a Private Backplane Network for your VPSs with ZeroTier", "url": "https://www.petekeen.net/building-a-private-backplane-network-with-zerotier/", "published_at": "2014-09-14T00:00:00+00:00" }, { "id": "01a087c0-1554-72e2-9219-f130a88965bf", "title": "Five business lessons from an idle game", "url": "https://www.petekeen.net/five-business-lessons-from-an-idle-game/", "published_at": "2014-09-08T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca6cf974d", "title": "Let's Begin Again", "url": "https://www.petekeen.net/lets-begin-again/", "published_at": "2014-09-02T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca75027bc", "title": "Fix Your Email Deliverability with DMARC", "url": "https://www.petekeen.net/fix-your-email-deliverability-with-dmarc/", "published_at": "2014-08-21T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca7d05866", "title": "Know How To Roll (Your SSL Certificates)", "url": "https://www.petekeen.net/know-how-to-roll-your-ssl-certificates/", "published_at": "2014-08-13T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca842ff0c", "title": "Command Line Faxing", "url": "https://www.petekeen.net/command-line-faxing/", "published_at": "2014-08-04T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca88c7dee", "title": "Start a VirtualBox VM at Boot on Mac OS X", "url": "https://www.petekeen.net/start-virtualbox-vm-at-boot-os-x/", "published_at": "2014-05-30T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca8e827c1", "title": "Stripe Account Balances for Service Credits", "url": "https://www.petekeen.net/stripe-account-balances-for-service-credits/", "published_at": "2014-05-07T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50ca9692675", "title": "Using Stripe Checkout for Subscriptions", "url": "https://www.petekeen.net/using-stripe-checkout-for-subscriptions/", "published_at": "2014-03-30T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50caa353693", "title": "Self-hosted Git Server", "url": "https://www.petekeen.net/self-hosted-git-server/", "published_at": "2014-03-16T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50cab275944", "title": "Using the Mailchimp API for Sales", "url": "https://www.petekeen.net/use-the-mailchimp-api-to-auto-subscribe-purchasers/", "published_at": "2014-03-06T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50cabaa1ed7", "title": "The Life of a Stripe Charge", "url": "https://www.petekeen.net/life-of-a-stripe-charge/", "published_at": "2014-01-20T00:00:00+00:00" }, { "id": "01a087c0-1555-7268-b1b0-a50cabf7045f", "title": "A Practical Exercise in Web Scraping", "url": "https://www.petekeen.net/a-practical-exercise-in-web-scraping/", "published_at": "2013-12-15T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b62c361e9", "title": "Simple Git-backed Microsites", "url": "https://www.petekeen.net/simple-git-backed-microsites/", "published_at": "2013-12-05T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b634c71bc", "title": "Simulating a Market in Ruby", "url": "https://www.petekeen.net/simulating-a-market-in-ruby/", "published_at": "2013-12-02T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b637d28a0", "title": "Little Data: How do we query personal data?", "url": "https://www.petekeen.net/little-data/", "published_at": "2013-11-12T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b63a7ec95", "title": "Post-mortem of a Dead-on-Arrival SaaS Product", "url": "https://www.petekeen.net/marginalia-postmortem/", "published_at": "2013-10-19T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b64301553", "title": "DRY your Rails CRUD with Simple Form and Inherited Resources", "url": "https://www.petekeen.net/dry-your-rails-crud-with-simple-form-and-inherited-resources/", "published_at": "2013-09-22T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b64bad913", "title": "Essential Tools for Starting a Rails App in 2013", "url": "https://www.petekeen.net/essential-tools-for-starting-a-rails-app-in-2013/", "published_at": "2013-09-15T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b65025728", "title": "Adventures in Self Publishing", "url": "https://www.petekeen.net/adventures-in-self-publishing/", "published_at": "2013-09-03T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b65390a5c", "title": "Mastering Modern Payments Is Out Today!", "url": "https://www.petekeen.net/mastering-modern-payments-launch-day/", "published_at": "2013-08-15T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b657f42f3", "title": "DNS: The Good Parts", "url": "https://www.petekeen.net/dns-the-good-parts/", "published_at": "2013-07-19T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b6644fb6a", "title": "Announcing: Mastering Modern Payments: Using Stripe with Rails", "url": "https://www.petekeen.net/announcing-mastering-modern-payments-using-stripe-with-rails/", "published_at": "2013-07-15T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b66c3a4d3", "title": "Shipping with Stripe and EasyPost", "url": "https://www.petekeen.net/shipping-with-stripe-and-easypost/", "published_at": "2013-07-02T00:00:00+00:00" }, { "id": "01a087c0-1556-7049-8017-0c3b66e28fbb", "title": "Making eBooks with Docverter", "url": "https://www.petekeen.net/making-ebooks-with-docverter/", "published_at": "2013-06-18T12:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d375a593f6", "title": "Page Viewer, a Simple Markdown Viewer", "url": "https://www.petekeen.net/page-viewer-a-simple-markdown-viewer/", "published_at": "2013-06-15T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d375ccd141", "title": "Book Review: The Box", "url": "https://www.petekeen.net/book-review-the-box/", "published_at": "2013-06-09T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d3765b166d", "title": "How and why I'm not running my own DNS", "url": "https://www.petekeen.net/how-and-why-im-not-running-my-own-dns/", "published_at": "2013-06-07T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d37744f783", "title": "Cancer", "url": "https://www.petekeen.net/cancer/", "published_at": "2013-06-06T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d377af36be", "title": "Blog Relocation", "url": "https://www.petekeen.net/blog-relocation/", "published_at": "2013-06-02T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d378ae9d62", "title": "Design for Failure: Processing Payments with a Background Worker", "url": "https://www.petekeen.net/design-for-failure-processing-payments-with-a-background-worker/", "published_at": "2013-05-30T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d379159477", "title": "Book Review: Tubes: a Journey to the Center of the Internet", "url": "https://www.petekeen.net/book-review-tubes-a-journey-to-the-center-of-the-internet/", "published_at": "2013-05-25T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d379c5a509", "title": "New Blog Design", "url": "https://www.petekeen.net/new-blog-design/", "published_at": "2013-05-24T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d37a157350", "title": "Mounting a Magic Trackpad on a Kinesis Advantage Keyboard", "url": "https://www.petekeen.net/mounting-a-magic-trackpad-on-a-kinesis-advantage-keyboard/", "published_at": "2013-05-17T00:00:00+00:00" }, { "id": "01a087c0-1557-726f-b317-a4d37acdf59d", "title": "Distributed Personal Wiki", "url": "https://www.petekeen.net/git-backed-personal-markdown-wiki/", "published_at": "2013-05-10T00:00:00+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8ae87ef95", "title": "Increasing the Encryption Noise Floor", "url": "https://www.petekeen.net/increasing-the-encryption-noise-floor/", "published_at": "2013-01-27T18:06:32+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8aed90365", "title": "Full Text Search with Whistlepig", "url": "https://www.petekeen.net/full-text-search-with-whistlepig/", "published_at": "2013-01-09T07:51:11+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8af4b5b6e", "title": "How I run my own DNS servers", "url": "https://www.petekeen.net/how-i-run-my-own-dns/", "published_at": "2012-12-31T12:15:00+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8af761cb4", "title": "Deploy 12-Factor Apps with Capistrano::Buildpack", "url": "https://www.petekeen.net/deploy-12-factor-apps-with-capistranobuildpack/", "published_at": "2012-12-30T12:04:31+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8b046a091", "title": "Docverter is now Open Source", "url": "https://www.petekeen.net/docverter-is-now-open-source/", "published_at": "2012-11-23T21:35:19+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8b09f968d", "title": "Deploying a 12-Factor App with Capistrano", "url": "https://www.petekeen.net/deploying-a-12-factor-app-with-capistrano/", "published_at": "2012-11-11T13:52:53+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8b18fcfd4", "title": "Run Anything on Heroku with Custom Buildpacks", "url": "https://www.petekeen.net/introduction-to-heroku-buildpacks/", "published_at": "2012-11-05T18:13:41+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8b191c93c", "title": "Private Git Repositories with Gitolite and S3", "url": "https://www.petekeen.net/hosting-private-git-repositories-with-gitolite/", "published_at": "2012-10-27T15:59:41+00:00" }, { "id": "01a087c0-1558-71af-8944-17a8b1c8978e", "title": "On-the-fly Markdown Conversion to PDF and Docx", "url": "https://www.petekeen.net/on-the-fly-markdown-conversion/", "published_at": "2012-10-20T12:21:33+00:00" }, { "id": "01a087c0-1559-713a-978f-e13846c8005b", "title": "Keeping a Programming Journal with Marginalia", "url": "https://www.petekeen.net/keeping-a-programming-journal-with-marginalia/", "published_at": "2012-09-08T08:06:51+00:00" }, { "id": "01a087c0-1559-713a-978f-e13847655cb2", "title": "Marginalia: A web-based journaling and note taking tool", "url": "https://www.petekeen.net/announcing-marginalia/", "published_at": "2012-09-03T17:12:47+00:00" }, { "id": "01a087c0-1559-713a-978f-e1384805cb96", "title": "Task-oriented Dotfiles", "url": "https://www.petekeen.net/task-oriented-dotfiles/", "published_at": "2012-08-11T20:38:36+00:00" }, { "id": "01a087c0-1559-713a-978f-e1384873bee4", "title": "Dokuen 0.0.8, Now with Linux Support", "url": "https://www.petekeen.net/dokuen-0-0-6-now-with-linux-support/", "published_at": "2012-05-29T19:00:02+00:00" } ] posts Claim your blog
Back to zrail
Blog · corpus.blog/blogs/petekeen.net/posts

zrail

petekeen.net

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014

2013

2012