Peter Hoffmann

Home Server Ops with a Read-Only Agent and pyinfra

How I manage my home server with a coding agent: it gets read-only SSH access to explore, and every change goes through pyinfra deploys in a git repo that I review and apply. Read more →

Garmin inReach Mini 2 Leaflet checkin map

Scraping the check-in messages of a Garmin inReach Mini 2 and showing them on a Leaflet map. Read more →

Local macOS Dev Setup: dnsmasq + caddy-snake for python projects

How I run several Python WSGI services side by side on macOS: wildcard local domains with dnsmasq, Caddy as reverse proxy, and automatic startup on boot. Read more →

Georg Bayerle - Der Alpen Appell

Georg Bayerle schildert in seinem Buch der Alpen Appell den Konflikt zwischen der immer weitergehenden Erschließung und dem Versuch den Naturraum Alpen zu bewahren. Read more →

Mistune 3 Wikilink Inline Parser

Extending Mistune 3 to parse inline wikilinks. Read more →

BikeRouter and OnRouteMap

Bikerouter.de and Onroutemap.de are great tools to plan your long-distance, multi-day bikepacking adventures. Read more →

Using SQLite with JSON Data

Using SQLite to store, query and modify JSON data with full flexibility. Using JSON columns works best, if you need to support a flexible datamodel and during prototyping. Read more →

Tenant Isolation in Snowflake for ML - Operational Patterns

Follow-up to Tenant Isolation in Snowflake: how to run multi-tenant ML workloads in practice, from copying tenant data and promoting changes between environments to experimenting with real customer data under strict controls. Read more →

Exploring Mountain Huts with SPARQL and Wikidata

How to query Wikidata with SPARQL for mountain huts and bivouacs around a given latitude and longitude. Read more →

Tenant Isolation in Snowflake

Snowflake offers several ways to isolate tenants: separate accounts, separate databases, separate schemas, or shared tables with a tenant_id column. This post compares them with pros, cons and best practices. Read more →

Blue Yonder at PyCon.DE 2023

It's been now 10 years ago when Blue Yonder started the first sponsoring of a python conference at Europython Florence. Since then we have been either sponsoring and/or organizing at least one python event per year. Read more →

Using Docker multi-stage builds to compile turbodbc with PyArrow support on Debian 11

How to use a Docker multi-stage build to compile turbodbc with pyarrow support on Debian 11. Read more →

Beautiful Leaflet Markers with Folium and Font Awesome

TIL how to use fontawesome markers with folium. Read more →

Scale-Aware Rating of Count Forecasts

Forecasts crave a rating that reflects the forecast's quality in the context of what is possible in theory and what is reasonable to expect in practice. Read more →

Python Support in Snowflake

Snowflake offers different ways to access and call python from within their compute infrastructure. This post will show how to access python in user defined functions, via stored procedures and in snowpark. Read more →

Convert the Himalayan Database to SQLite

Conversion of the Himalayan database of the legendary Elizabeth Hawley from FoxPro to SQLite. Read more →

Azure Synapse SQL On-Demand OPENROWSET Common Table Expression with SQLAlchemy

Using SQLAlchemy to create openrowset common table expressions for Azure Synapse SQL-on-Demand Read more →

DuckDB vs. Azure Synapse SQL on-demand with Parquet

Inspired by Uwe Korns post on DuckDB this post shows how to use Azure Synapse SQL-on-Demand to query parquet files with T-SQL on a serverless cloud infrastructure. Read more →

Using turbodbc to access Azure Synapse SQL-on-demand endpoints

Azure Synapse SQL-on-Demand offers a web client, the desktop version Azure Data studio and odbc access with turbodbc to query parquet files in the Azure Data Lake. Read more →

Azure Data Explorer and Parquet Files in Azure Blob Storage

Last summer Microsoft has rebranded the Azure Kusto Query engine as Azure Data Explorer. While it does not support fully elastic scaling, it at least allows to scale up and out a cluster via an API or the Azure portal to adapt to different workloads. It also offers parquet support out of the box which made me spend some time to look into it. Read more →

Understanding Predicate Pushdown at the Row-Group Level in Parquet with PyArrow and Python

How predicate pushdown works on row group level in Apache Parquet, and how to use the row group statistics with pyarrow to read only the data you need. Read more →