41554 blogs · [ { "id": "01a0875e-f833-7069-af2d-c75396b5b222", "title": "ZIP codes are a bad spatial abstraction", "url": "https://chollinger.com/blog/2026/07/zip-codes-are-a-bad-spatial-abstraction/", "published_at": "2026-07-14T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75395c7254f", "title": "Building confidence in geospatial data", "url": "https://chollinger.com/blog/2026/06/building-confidence-in-geospatial-data/", "published_at": "2026-06-09T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75395b72f66", "title": "I used my homelab to start an LLC: Meet SkaldMaps", "url": "https://chollinger.com/blog/2026/05/skaldmaps-zip-code-research-tool/", "published_at": "2026-05-25T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75394e3955c", "title": "How I run and deploy docker services in my homelab with Komodo and a custom CLI", "url": "https://chollinger.com/blog/2025/12/how-i-run-docker-services-and-deployments-with-komodo/", "published_at": "2025-12-09T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753943b4f48", "title": "More random home lab things I've recently learned", "url": "https://chollinger.com/blog/2025/10/more-homelab-things-ive-recently-learned/", "published_at": "2025-10-04T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75393f46591", "title": "New Website & Scala Days 2025 Announcement", "url": "https://chollinger.com/blog/2025/06/new-website-scala-days-2025-announcement/", "published_at": "2025-06-05T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75393565497", "title": "A Distributed System from scratch, with Scala 3 - Part 3: Job submission, worker scaling, and leader election & consensus with Raft", "url": "https://chollinger.com/blog/2025/05/a-distributed-system-from-scratch-with-scala-3-part-3-job-submission-worker-scaling-and-leader-election-consensus-with-raft/", "published_at": "2025-05-18T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7539269e524", "title": "My 2025 Homelab Updates: Quadrupling Capacity", "url": "https://chollinger.com/blog/2025/01/my-2025-homelab-updates-quadrupling-capacity/", "published_at": "2025-01-01T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753923df51c", "title": "Why I still self host my servers (and what I've recently learned)", "url": "https://chollinger.com/blog/2024/08/why-i-still-self-host-my-servers-and-what-ive-recently-learned/", "published_at": "2024-08-25T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753914dc77e", "title": "Improving my Distributed System with Scala 3: Consistency Guarantees & Background Tasks (Part 2)", "url": "https://chollinger.com/blog/2024/02/improving-my-distributed-system-with-scala-3-consistency-guarantees-background-tasks-part-2/", "published_at": "2024-02-19T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7539059fdf7", "title": "Moving a Proxmox host with a SAS HBA as PCI passthrough for zfs + TrueNAS", "url": "https://chollinger.com/blog/2023/10/moving-a-proxmox-host-with-a-sas-hba-as-pci-passthrough-for-zfs--truenas/", "published_at": "2023-10-26T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753903adcc3", "title": "Building a functional, effectful Distributed System from scratch in Scala 3, just to avoid Leetcode (Part 1)", "url": "https://chollinger.com/blog/2023/06/building-a-functional-effectful-distributed-system-from-scratch-in-scala-3-just-to-avoid-leetcode-part-1/", "published_at": "2023-06-19T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538f72e340", "title": "Migrating a Home Server to Proxmox, TrueNas, and zfs, or: How to make your home network really complicated for no good reason", "url": "https://chollinger.com/blog/2023/04/migrating-a-home-server-to-proxmox-truenas-and-zfs-or-how-to-make-your-home-network-really-complicated-for-no-good-reason/", "published_at": "2023-04-08T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538ebd50fc", "title": "QGIS is the mapping software you didn't know you needed", "url": "https://chollinger.com/blog/2023/01/qgis-is-the-mapping-software-you-didnt-know-you-needed/", "published_at": "2023-01-24T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538ea72aa1", "title": "Tiny Telematics: Tracking my truck's location offline with a Raspberry Pi, redis, Kafka, and Flink (Part 2)", "url": "https://chollinger.com/blog/2022/09/tiny-telematics-tracking-my-trucks-location-offline-with-a-raspberry-pi-redis-kafka-and-flink-part-2/", "published_at": "2022-09-08T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538e249e77", "title": "Tiny Telematics: Tracking my truck's location offline with a Raspberry Pi, redis, Kafka, and Flink (Part 1)", "url": "https://chollinger.com/blog/2022/08/tiny-telematics-tracking-my-trucks-location-offline-with-a-raspberry-pi-redis-kafka-and-flink-part-1/", "published_at": "2022-08-29T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538d9a444d", "title": "Functional Programming concepts I actually like: A bit of praise for Scala (for once)", "url": "https://chollinger.com/blog/2022/06/functional-programming-concepts-i-actually-like-a-bit-of-praise-for-scala-for-once/", "published_at": "2022-06-01T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538cb828d6", "title": "Scala, Spark, Books, and Functional Programming: An Essay", "url": "https://chollinger.com/blog/2022/02/scala-spark-books-and-functional-programming-an-essay/", "published_at": "2022-02-27T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538c201d69", "title": "Building a Data Lake with Spark and Iceberg at Home to over-complicate shopping for a House", "url": "https://chollinger.com/blog/2021/12/building-a-data-lake-with-spark-and-iceberg-at-home-to-over-complicate-shopping-for-a-house/", "published_at": "2021-12-03T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538bd6ca67", "title": "Writing a Telegram Bot to control a Raspberry Pi from afar (to observe Guinea Pigs)", "url": "https://chollinger.com/blog/2021/08/writing-a-telegram-bot-to-control-a-raspberry-pi-from-afar-to-observe-guinea-pigs/", "published_at": "2021-08-12T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538af646f7", "title": "Raspberry Pi Gardening: Monitoring a Vegetable Garden using a Raspberry Pi - Part 2: 3D Printing", "url": "https://chollinger.com/blog/2021/07/raspberry-pi-gardening-monitoring-a-vegetable-garden-using-a-raspberry-pi-part-2-3d-printing/", "published_at": "2021-07-03T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538a176548", "title": "Raspberry Pi Gardening: Monitoring a Vegetable Garden using a Raspberry Pi - Part 1", "url": "https://chollinger.com/blog/2021/04/raspberry-pi-gardening-monitoring-a-vegetable-garden-using-a-raspberry-pi-part-1/", "published_at": "2021-04-25T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75389248aa0", "title": "Bad Data and Data Engineering: Dissecting Google Play Music Takeout Data using Beam, go, Python, and SQL", "url": "https://chollinger.com/blog/2021/02/bad-data-and-data-engineering-dissecting-google-play-music-takeout-data-using-beam-go-python-and-sql/", "published_at": "2021-02-28T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538886c50f", "title": "Why I use Linux", "url": "https://chollinger.com/blog/2020/12/why-i-use-linux/", "published_at": "2020-12-21T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753878a2932", "title": "RE: Throw Away Code? Use go, not Python or Rust!", "url": "https://chollinger.com/blog/2020/09/re-throw-away-code-use-go-not-python-or-rust/", "published_at": "2020-09-26T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75386abf990", "title": "A Data Engineering Perspective on Go vs. Python (Part 2 - Dataflow)", "url": "https://chollinger.com/blog/2020/07/a-data-engineering-perspective-on-go-vs.-python-part-2-dataflow/", "published_at": "2020-07-06T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538606b13b", "title": "A Data Engineering Perspective on Go vs. Python (Part 1)", "url": "https://chollinger.com/blog/2020/06/a-data-engineering-perspective-on-go-vs.-python-part-1/", "published_at": "2020-06-11T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753855d3e92", "title": "Goodbye, WordPress - Hello, Hugo & nginx", "url": "https://chollinger.com/blog/2020/05/goodbye-wordpress-hello-hugo-nginx/", "published_at": "2020-05-21T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753852c99f8", "title": "How a broken memory module hid in plain sight", "url": "https://chollinger.com/blog/2020/02/how-a-broken-memory-module-hid-in-plain-sight/", "published_at": "2020-02-25T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75384374f65", "title": "Tensorflow on edge, or – Building a “smart” security camera with a Raspberry Pi", "url": "https://chollinger.com/blog/2019/12/tensorflow-on-edge-or-building-a-smart-security-camera-with-a-raspberry-pi/", "published_at": "2019-12-09T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75383e447e3", "title": "How I built a (tiny) real-time Telematics application on AWS", "url": "https://chollinger.com/blog/2019/08/how-i-built-a-tiny-real-time-telematics-application-on-aws/", "published_at": "2019-08-07T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753837f4713", "title": "A look at Apache Hadoop in 2019", "url": "https://chollinger.com/blog/2019/07/a-look-at-apache-hadoop-in-2019/", "published_at": "2019-07-01T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75382ea4f40", "title": "Building a Home Server", "url": "https://chollinger.com/blog/2019/04/building-a-home-server/", "published_at": "2019-04-11T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538251c488", "title": "Analyzing Reddit’s Top Posts & Images With Google Cloud (Part 2 - AutoML)", "url": "https://chollinger.com/blog/2018/10/analyzing-reddits-top-posts-images-with-google-cloud-part-2-automl/", "published_at": "2018-10-27T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538186c63f", "title": "Analyzing Reddit’s Top Posts & Images With Google Cloud (Part 1)", "url": "https://chollinger.com/blog/2018/06/analyzing-reddits-top-posts-images-with-google-cloud-part-1/", "published_at": "2018-06-12T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538180fe5f", "title": "Analyzing Twitter Location Data with Heron, Machine Learning, Google's NLP, and BigQuery", "url": "https://chollinger.com/blog/2018/03/analyzing-twitter-location-data-with-heron-machine-learning-googles-nlp-and-bigquery/", "published_at": "2018-03-18T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c753815e7416", "title": "Data Lakes: Some thoughts on Hadoop, Hive, HBase, and Spark", "url": "https://chollinger.com/blog/2017/11/data-lakes-some-thoughts-on-hadoop-hive-hbase-and-spark/", "published_at": "2017-11-04T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538114928d", "title": "(Tiny) Telematics with Spark and Zeppelin", "url": "https://chollinger.com/blog/2017/03/tiny-telematics-with-spark-and-zeppelin/", "published_at": "2017-03-06T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c75380f1949d", "title": "Storm vs. Heron – Part 2 – Why Heron? A developer’s view", "url": "https://chollinger.com/blog/2016/12/storm-vs.-heron-part-2-why-heron-a-developers-view/", "published_at": "2016-12-02T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7538079df61", "title": "Storm vs. Heron, Part 1: Reusing a Storm topology for Heron", "url": "https://chollinger.com/blog/2016/10/storm-vs.-heron-part-1-reusing-a-storm-topology-for-heron/", "published_at": "2016-10-15T00:00:00+00:00" }, { "id": "01a0875e-f833-7069-af2d-c7537f840c72", "title": "Update an HBase table with Hive... or sed", "url": "https://chollinger.com/blog/2016/09/update-an-hbase-table-with-hive...-or-sed/", "published_at": "2016-09-04T00:00:00+00:00" } ] posts Claim your blog
Back to Christian Hollinger
Blog · corpus.blog/blogs/chollinger.com/posts

Christian Hollinger

chollinger.com

2026

2025

2024

2023

2022

2021

2020

2019

2018

2017

2016