{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "Karl Ostendorf",
  "home_page_url": "https://ostendorf.com/",
  "feed_url": "https://ostendorf.com/feed.json",
  "authors": [
    {
      "name": "Karl Ostendorf",
      "url": "https://ostendorf.com/"
    }
  ],
  "items": [
    {
      "id": "tag:ostendorf.com,2023:94gjq0x4",
      "url": "https://ostendorf.com/blog/2023/09/dayone2md",
      "date_published": "2023-09-09T14:00:00+02:00",
      "date_modified": "2023-09-09T14:00:00+02:00",
      "tags": [
        "dayone"
      ],
      "title": "dayone2md",
      "content_text": "I recently started journaling with Dayone but wanted a way to backup and view my entries outside of the app. So I created dayone2md, a CLI app to export Dayone to markdown."
    },
    {
      "id": "tag:ostendorf.com,2022:6ocza8o5",
      "url": "https://ostendorf.com/blog/2022/12/hurl",
      "date_published": "2022-12-15T14:48:00+01:00",
      "date_modified": "2022-12-15T14:48:00+01:00",
      "tags": [
        "httptest"
      ],
      "title": "hurl HTTP tester",
      "content_text": "Hurl is an HTTP testing tool written in Rust which can test http responses for status code, headers, and even content. Requests can be chained together to test multiple endpoints."
    },
    {
      "id": "tag:ostendorf.com,2022:sm6larf8",
      "url": "https://ostendorf.com/blog/2022/12/goflags",
      "date_published": "2022-12-13T15:44:00+01:00",
      "date_modified": "2022-12-13T15:44:00+01:00",
      "tags": [
        "golang",
        "til"
      ],
      "title": "go-flags",
      "content_text": "TIL that go-flags supports reading flags from environment variables and supports the same option multiple times. I had long been a user of urfave/cli but was not enamoured with the number of..."
    },
    {
      "id": "tag:ostendorf.com,2022:wtr8n9vg",
      "url": "https://ostendorf.com/blog/2022/12/drill",
      "date_published": "2022-12-11T14:52:00+01:00",
      "date_modified": "2022-12-11T14:52:00+01:00",
      "tags": [
        "benchmarking",
        "httptest"
      ],
      "title": "Drill Load Testing Tool",
      "content_text": "Drill is a load testing tool written in Rust which can also test response codes and headers."
    },
    {
      "id": "tag:ostendorf.com,2022:ph2k3k2r",
      "url": "https://ostendorf.com/blog/2022/12/reboot",
      "date_published": "2022-12-11T14:42:00+01:00",
      "date_modified": "2022-12-11T14:42:00+01:00",
      "title": "Reboot",
      "content_text": "At some point, I stopped blogging and started writing notes and collecting links in Bear or Odsidian. They're both great apps but I thought I'd rather share publicly. So here goes!"
    },
    {
      "id": "tag:ostendorf.com,2019:01ddax94x26k1jc2xgm0cwsgwb",
      "url": "https://ostendorf.com/blog/2019/06/geziyor",
      "date_published": "2019-06-14T13:52:00+02:00",
      "date_modified": "2019-06-14T13:52:00+02:00",
      "tags": [
        "webcrawling",
        "chirps"
      ],
      "title": "Geziyor Web Crawler",
      "content_text": "Geziyor, another web craweler written in Go."
    },
    {
      "id": "tag:ostendorf.com,2019:01d9j5yqpmy5zwkmzr2kncw2fb",
      "url": "https://ostendorf.com/blog/2019/04/delta-v",
      "date_published": "2019-04-28T16:35:00+02:00",
      "date_modified": "2019-04-28T16:35:00+02:00",
      "tags": [
        "books",
        "chirps"
      ],
      "title": "Delta-V",
      "content_text": "Currently reading Delta-V by Daniel Suarez."
    },
    {
      "id": "tag:ostendorf.com,2019:01d95y4x4p0ja1x0b4rhvzc020",
      "url": "https://ostendorf.com/blog/2019/04/tchap",
      "date_published": "2019-04-23T22:28:00+02:00",
      "date_modified": "2019-04-23T22:28:00+02:00",
      "tags": [
        "im",
        "chirps"
      ],
      "title": "tchap",
      "content_text": "The French government has adopted Riot for official instant messaging. It's federated (like email), offers end-to-end encryption, has what appear to be mature mobile clients and is open source...."
    },
    {
      "id": "tag:ostendorf.com,2019:01d93e28fh6kswcztbef91mcb9",
      "url": "https://ostendorf.com/blog/2019/04/mozilla-sync-server",
      "date_published": "2019-04-22T23:08:00+02:00",
      "date_modified": "2019-04-22T23:08:00+02:00",
      "tags": [
        "chirps"
      ],
      "title": "Mozilla Sync Server",
      "content_text": "Run your own Firefox Sync Server."
    },
    {
      "id": "tag:ostendorf.com,2019:01d8vk364e46zkwk85dch7bjpn",
      "url": "https://ostendorf.com/blog/2019/04/apple-b389",
      "date_published": "2019-04-19T22:02:00+02:00",
      "date_modified": "2019-04-19T22:02:00+02:00",
      "tags": [
        "iot",
        "chirps"
      ],
      "title": "Apple Item Tracker",
      "content_text": "Apple rumored to be developing an item tracker like Tile. The tags will contain a user's contact information which any Apple device will be able to read if the device has been placed in \"lost\" mode."
    },
    {
      "id": "tag:ostendorf.com,2019:01d8vgy6ve17as0mtmayr44vtj",
      "url": "https://ostendorf.com/blog/2019/04/mozilla-webthings",
      "date_published": "2019-04-19T21:24:00+02:00",
      "date_modified": "2019-04-19T21:24:00+02:00",
      "tags": [
        "iot",
        "chirps"
      ],
      "title": "Mozilla WebThings",
      "content_text": "Mozilla WebThings has now been officially released. It consists of a gateway for connecting IOT devices to the Internet and comes with a nice UI. There is also a software framework for building..."
    },
    {
      "id": "tag:ostendorf.com,2019:01d8vf51zvt7mppm8gmgztzx99",
      "url": "https://ostendorf.com/blog/2019/04/iota-podcast",
      "date_published": "2019-04-19T20:53:00+02:00",
      "date_modified": "2019-04-19T20:53:00+02:00",
      "tags": [
        "iot",
        "chirps"
      ],
      "title": "Iota Distributed Ledger",
      "content_text": "Great podcast on the Iota distributed ledger technology and how it differs from blockchain."
    },
    {
      "id": "tag:ostendorf.com,2019:01d8ve9qvavgzvzxm7wteyydqs",
      "url": "https://ostendorf.com/blog/2019/04/gladys-owntracks",
      "date_published": "2019-04-19T20:38:00+02:00",
      "date_modified": "2019-04-19T20:38:00+02:00",
      "tags": [
        "iot",
        "chirps"
      ],
      "title": "OwnTracks with Gladys",
      "content_text": "Apparently it's possible to use Gladys as an OwnTracks server."
    },
    {
      "id": "tag:ostendorf.com,2018:01cagz0r3catez7pdpaxgf5z41",
      "url": "https://ostendorf.com/blog/2018/04/headless-chrome-crawler",
      "date_published": "2018-04-07T23:08:00+02:00",
      "date_modified": "2018-04-07T23:08:00+02:00",
      "tags": [
        "webcrawling",
        "chirps"
      ],
      "title": "Headless Chrome Crawler",
      "content_text": "headless chrome crawler, a Javascript crawler using headless Chrome. Use JQuery to scrape content."
    },
    {
      "id": "tag:ostendorf.com,2018:01cacsb86gt3h9yp2xw9vp86fb",
      "url": "https://ostendorf.com/blog/2018/04/k8s-install-service",
      "date_published": "2018-04-06T08:12:00+02:00",
      "date_modified": "2018-04-06T08:12:00+02:00",
      "tags": [
        "kubernetes"
      ],
      "title": "Kubernetes Install Unit File",
      "content_text": "After reading how to install Kubernetes on bare metal I was dismayed to find out that after provisioning all nodes, I would have to SSH into each to install Kubernetes to bootstrap the cluster...."
    },
    {
      "id": "tag:ostendorf.com,2018:01caaszvpp9vy9vqy1pw7s7fqs",
      "url": "https://ostendorf.com/blog/2018/04/colly-web-crawler",
      "date_published": "2018-04-05T13:45:00+02:00",
      "date_modified": "2018-04-05T13:45:00+02:00",
      "tags": [
        "webcrawling",
        "chirps"
      ],
      "title": "Colly Web Crawler",
      "content_text": "Here's another article about how to write a web crawler in Go with Colly. Cool tool to make feeds for sites lacking their own."
    },
    {
      "id": "tag:ostendorf.com,2018:01c9v5nnmyq1gayvvs7dhmjvah",
      "url": "https://ostendorf.com/blog/2018/03/anaskhan96-soup",
      "date_published": "2018-03-30T12:01:00+02:00",
      "date_modified": "2018-03-30T12:01:00+02:00",
      "tags": [
        "webcrawling",
        "chirps"
      ],
      "title": "Web Scraper in Go",
      "content_text": "anaskhan96/soup web scraper in Go, similar to BeautifulSoup."
    },
    {
      "id": "tag:ostendorf.com,2018:01c9rx34cca66yzj42mk38vxmz",
      "url": "https://ostendorf.com/blog/2018/03/test-kubernetes-cluster",
      "date_published": "2018-03-29T14:53:00+02:00",
      "date_modified": "2018-03-29T14:53:00+02:00",
      "tags": [
        "kubernetes"
      ],
      "title": "Building a Test Kubernetes Cluster",
      "content_text": "I'm evaluating the best way to build a test Kubernetes cluster. Currently I'm still using minikube but I'd like a more realistic test. So with an eye to clean up some saved bookmarks, here's a short..."
    },
    {
      "id": "tag:ostendorf.com,2018:01c9pwdr85r6hg29qazccabr8s",
      "url": "https://ostendorf.com/blog/2018/03/kubernetes-cli-sso",
      "date_published": "2018-03-28T20:02:00+02:00",
      "date_modified": "2018-03-28T20:02:00+02:00",
      "tags": [
        "kubernetes",
        "chirps"
      ],
      "title": "Single Sign-On for Kubernetes",
      "content_text": "Use Dex to set up single sign on for Kubernetes CLI clients like kubectl: Single Sign-On for Kubernetes: The Command Line Experience."
    },
    {
      "id": "tag:ostendorf.com,2017:01c22147ynzpymh0ptedaf16eh",
      "url": "https://ostendorf.com/blog/2017/12/carlopress",
      "date_published": "2017-12-23T16:51:00+01:00",
      "date_modified": "2017-12-23T16:51:00+01:00",
      "tags": [
        "chirps"
      ],
      "title": "Carlopress",
      "content_text": "Now generating this website with Carlopress, a small program I wrote after getting fed-up with Hugo's second-class support for \"ugly URLs\"."
    },
    {
      "id": "tag:ostendorf.com,2017:01b6a7cn50kehpxe9my2gmfyr7",
      "url": "https://ostendorf.com/blog/2017/01/prettier",
      "date_published": "2017-01-12T20:55:00+01:00",
      "date_modified": "2017-01-12T20:55:00+01:00",
      "tags": [
        "chirps"
      ],
      "title": "Prettier Javascript Formatter",
      "content_text": "Prettier: finally a formatter for Javascript like gofmt."
    },
    {
      "id": "tag:ostendorf.com,2017:01b67mfet0c488k4ryggt6rybn",
      "url": "https://ostendorf.com/blog/2017/01/facebookmail",
      "date_published": "2017-01-11T20:46:00+01:00",
      "date_modified": "2017-01-11T20:46:00+01:00",
      "tags": [
        "chirps"
      ],
      "title": "Facebook Mail Servers",
      "content_text": "facebookmail.com server IPs lack PTR records. No wonder the mail isn't getting through. See Postfix rejectunknownclient_hostname."
    },
    {
      "id": "tag:ostendorf.com,2012:017et45r502wwmprm58977yb5t",
      "url": "https://ostendorf.com/blog/2012/12/textonly-mode-kvm",
      "date_published": "2012-12-19T17:43:00+01:00",
      "date_modified": "2012-12-19T17:43:00+01:00",
      "tags": [
        "linux"
      ],
      "title": "KVM text-only mode",
      "content_text": "Just some notes on how to run Ubuntu (or any Linux distro that uses grub) as a KVM virtual machine in text-only mode."
    },
    {
      "id": "tag:ostendorf.com,2012:017dga0pq0k3ppysz5c6s08e9a",
      "url": "https://ostendorf.com/blog/2012/12/bootable-usb",
      "date_published": "2012-12-03T11:57:00+01:00",
      "date_modified": "2012-12-03T11:57:00+01:00",
      "tags": [
        "macosx"
      ],
      "title": "Creating a bootable USB stick on Mac OSX",
      "content_text": "Just for future reference:"
    },
    {
      "id": "tag:ostendorf.com,2012:017b8kk2h08q2737323y379a86",
      "url": "https://ostendorf.com/blog/2012/11/java-native",
      "date_published": "2012-11-05T15:39:00+01:00",
      "date_modified": "2012-11-05T15:39:00+01:00",
      "tags": [
        "java"
      ],
      "title": "JNI, JNA and JNR - Java access to native libraries",
      "content_text": "Last week I tried to find a Java library to let me access native functions to let me change the current user running a program. The native function, setuid, is part of the standard C library on..."
    },
    {
      "id": "tag:ostendorf.com,2012:0178casan0m8021qfzkwntkv3g",
      "url": "https://ostendorf.com/blog/2012/09/raspberry-pi",
      "date_published": "2012-09-30T20:35:00+02:00",
      "date_modified": "2012-09-30T20:35:00+02:00",
      "tags": [
        "linux"
      ],
      "title": "Raspberry Pi with Arch Linux",
      "content_text": "Here are some notes on how I configured my Raspberry Pi to run Arch Linux."
    },
    {
      "id": "tag:ostendorf.com,2010:0159f1xvz0h3k09xjhq6psjfp7",
      "url": "https://ostendorf.com/blog/2010/08/atmel-rzraven",
      "date_published": "2010-08-10T22:29:00+02:00",
      "date_modified": "2010-08-10T22:29:00+02:00",
      "tags": [
        "iot"
      ],
      "title": "Programming the Atmel RZRaven",
      "content_text": "The Atmel RZRaven AVR boards as well as the USB stick both contain 10-pin, 50-mil JTAG interfaces. The pins must be soldered on by the user but are included in the evaluation kit. An 50-mil to..."
    }
  ]
}