Peter Hoffmann

#PYTHON

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 →

Mistune 3 Wikilink Inline Parser

Extending Mistune 3 to parse inline wikilinks. 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 →

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 →

Azure Data Lake Storage Gen2 with Python

Microsoft has released a beta version of the python client azure-storage-file-datalake for the Azure Data Lake Storage Gen 2 service with support for hierarchical namespaces. Read more →

Karlsruhe Python Meetup at Blue Yonder

Python Meetup with two talks about python usage in a data science environment and the different stages of a python package in this environment. Read more →

JDA ICON — Enabler of AI: Overview of an AI Architecture

JDA ICON 2019 was all about technology, APIs, AI (Artificial Intelligence) and ML (Machine Learning). Read more →

PyCon.DE 2018

PyCon.DE 2018 is over. Second time in a row we organized it in ZKM Karlsruhe. Next year PyCon.DE will move to Berlin. Read more →

EuroSciPy 2018 - Apache Parquet as a Columnar Storage for Large Datasets

My talk at EuroSciPy 2018 on Apache Parquet as columnar storage for large datasets, and how to use it for fast data I/O with pandas and Dask. Read more →

EuroPython 2018 - Using pandas and Dask to work with large columnar datasets in Apache Parquet

My talk at EuroPython 2018 on working with large columnar datasets in Apache Parquet using pandas and Dask. Read more →

Swiss Python Summit 2018 - 12-Factor Apps for Data Science with Python

Heroku distilled their principles to build modern cloud applications. These principles have influenced many of our design decisions at Blue Yonder to build a data science platform. Read more →

How to Organize a PyCon.DE

Some notes on how to organize a conference like PyCon.DE Read more →

PyCon.DE 2017 and PyData Karlsruhe

The venue setup @zkmkarlsruhe for #PyCon.DE 2017 and PyData Karlsruhe is done. We are ready for liftoff tomorrow. Read more →

EuroPython 2017 - Infrastructure as Python Code - Run Your Services on Microsoft Azure

My talk at EuroPython 2017 on running Python services on Microsoft Azure with infrastructure as code: ARM templates, the Azure SDK for Python and the Azure Ansible modules. Read more →

PyConWeb 2017 Munich - Deploying Your Web Services on Microsoft Azure

My talk at PyConWeb 2017 on deploying web services on Azure with ARM templates, the Azure SDK for Python and Ansible, with lessons from moving a company into the Azure Cloud. Read more →

PyCon.DE — 25–27 October 2017, Karlsruhe

The next PyCon.DE will be from 25-27th October 2017 at the ZKM - center for art and media in Karlsruhe/Germany. Read more →

Getting Started with the Cloudera Kudu Storage Engine in Python

Cloudera Kudu is a distributed storage engine for fast data analytics. The python api is in alpha stage but already usable. Read more →

PyScaffold - Easy setup of a Python project with a bliss

PyScaffold helps you to easily setup a new Python project. Read more →

EuroPython 2015 PySpark - Data Processing in Python on top of Apache Spark

Recording of my EuroPython 2015 talk on PySpark: data processing in Python on top of Apache Spark with RDDs and the DataFrame API. Read more →

PyData 2015 Berlin - Introduction to the PySpark DataFrame API

My talk at PyData 2015 Berlin with an overview of the PySpark DataFrame API. Read more →

Structured Logging with Python and CEE Syslog Handler

cee_syslog_handler is an extension to the python syslog logging handler with support for structured json messages. Read more →

Python SQLAlchemy Exasol 0.9.1 With Distribute By Support

sqlalchemy_exasol 0.9.1 introduces support for Exasol's data distribution across cluster nodes using the DISTRIBUTE BY statement. Read more →

Exasol Dialect 0.9.0 for Python SQLAlchemy Released

SQLAlchemy dialect for the EXASOL database. Read more →

EuroPython 2014 - Log Everything with Logstash and Elasticsearch

When your application grows beyond one machine you need a central place to log, monitor and analyze what is going on. Logstash and Elasticsearch store your logs in a structured way, and Kibana is a web frontend to search and aggregate them. Read more →

Code Just in Time, Not Just in Case

In Recovering from Enterprise Jamis Buck argues that pulling patterns straight from one language (for example Java) into another (for example Ruby) is a mistake. You should instead learn and apply the concrete idioms of the language you are using. Read more →

PyCon Russia - Redis Talk

Amir Salihefendic talks about Redis, scaling plurk.com and some python libraries on top of redis like bitmapist. Read more →

Simple Twitter Streaming API Access With Python and OAuth

Python example to access the twitter API on your behalf, without going through three legged authorization. Read more →

Argscript — a port of Werkzeug's script to argparse

argscript is a port of werkzeug.script to argparse: it builds a command line interface from the functions in your script. Read more →

Simple Python Queue With Redis

How to build a simple multi-producer, multi-consumer Queue backed by Redis lists with an interface similar to the Python standard library queue Read more →

Python Markdown with GitHub-flavored code blocks

How to support GitHub-style fenced code blocks in Python-Markdown. Read more →

Adding a dict-based interface to the Python LevelDB API

A dict-like wrapper around the py-leveldb API using UserDict.DictMixin. Read more →

Atom Feed for Google Reader Liked Items

How to get an Atom feed of your liked items in Google Reader with a few lines of Python. Read more →

Python Live Templates for PyCharm

A set of Python live templates for PyCharm and how to install them. Read more →

Quick and Dirty Literate Programming

Docco and its Python port Pycco generate literate-programming-style documentation with the comments next to the code. Example: gnome sort in Python. Read more →

Extrinsic Visitor Pattern in Python with Support for Inheritance

Python's extrinsic visitor pattern dispatches to visit_* methods by introspection, but the common implementation ignores class inheritance. Here is a version that respects it. Read more →

XML Data Binding with Python Descriptors

Using Python descriptors to bind XPath queries on lxml elements to class attributes. Read more →

Retry Decorator in Python

A small Python decorator that retries a function when certain exceptions occur, with a configurable number of tries and delay. Read more →

Using a namedtuple factory with Python SQLite

Using collections.namedtuple as row factory for the Python sqlite3 module. Read more →

Python SocialGraph 0.2.3

Release 0.2.3 of python-socialgraph, a Python wrapper for the Google Social Graph API. Read more →