Antoine Beyeler

Project notes and miscellanea.

Batch processing SVGs with DoIt and vpype

doit (a.k.a. PyDoIt) is a fantastic Python-based tool to automate repetitive workflows. It works particularly well alongside vpype to address mundane plotting-related tasks. This article explains in details how to automate an SVG optimisation and conversion workflow. ...

November 10, 2022
close-up of a small Raspberry Pi screen showing the Textual demo

TIL: running Textual on a framebuffer terminal emulator for Linux

My successful (yet probably vain) attempt at running Textual (a modern TUI framework) on a Raspberry Pi without X11 by using fbpad (a framebuffer terminal emulator for Linux).

October 29, 2022
vpype loves apple silicon

Annotated Release Notes: vpype 1.12

vpype 1.12 is out! 🎉 No ground-breaking features, but an improved “quality-of-life”, especially for Apple-silicon Mac owners, and few other goodies. Let’s dive in. ...

October 25, 2022

TIL: use Plausible.io with a Sphinx documentation hosted on RTD

Although Google Analytics is very easy to setup on a Read the Docs-based documentation website, it requires a cookie banner to be GDPR-compliant and is otherwise questionable from a privacy-preservation point-of-view. As a result, I much prefer to use and support the excellent EU-based Plausible.io for traffic metrics instead. This article explains how to setup a Read the Docs-based documentation with Plausible.io such that metrics are enabled only on “production” builds — e....

October 9, 2022

TIL: using Sphinx substitutions to generate text snippets from code

Often, technical documentations include lists or other snippets of text that are strongly related to some of the project’s code. vpype’s documentation is no exception to this. For instance, the Built-in symbols section lists the units available to expressions: These units are related to the following piece of code: # vpype/utils.py UNITS = { "px": 1.0, "in": 96.0, "inch": 96.0, "ft": 12.0 * 96.0, "yd": 36.0 * 96.0, "mi": 1760.0 * 36....

September 30, 2022
plotting with paint using vpype 1.11

Annotated Release Notes: vpype 1.11

This release further solidifies the block commands which were overhauled in vpype 1.9. It also introduces several changes revolving around the “plotting with paint” use-case, which typically requires the brush to be regularly dipped in a paint well. This can be achieved by inserting “dipping” patterns at regular intervals determined by the cumulative drawing distance. vpype 1.11 makes this process much easier. Thanks a lot to Andee Collard for his useful feedback and providing this article’s banner!...

July 6, 2022
close-up shot of a rotring .35mm pen on a plotted hatch fill test chart

Generating beautiful Python API documentation with Sphinx AutoAPI

Following a recent discussion on Twitter, I decided to take yet another deep dive in my Python projects' documentation and fix once and for all the issues I had with it. I first focused on the automatically-generated API reference section and this article details the results of my finding. Specifically, I’m using vsketch’s API reference, which I recently updated, as an example (documentation source. This article addresses the following objectives:...

May 10, 2022 · Last updated on May 11, 2022
close-up shot of a rotring .35mm pen on a plotted hatch fill test chart

Sketch: fill test pattern generator

Hatch fills or pixel art plotting requires a rather precise estimate of your particular pen/paper combo’s stroke width. For example, this test pixel art plot would benefit from a slightly thinner pitch to avoid the visible overlap between neighbouring lines: There is no way around experience to find the optimal pitch. I’ve created the fill_test sketch to create custom charts with test patterns precisely tuned to the pen of interest. There is indeed no point to testing a rotring isograph ....

April 28, 2022

How to scale a grid on a page for uniform margins?

The problem Several generative art algorithms, such as Truchet tiles, use a regular grid of square cells. For example, check this interactive demo from the Generative Design book or these few pieces of mine. Now, let’s say you want to generate an iteration of your algorithm for printing or plotting such that all margins around the grid are the same for the given paper size. You can of course adjust the number of cell rows and columns, but how should you size the cell such as to achieve uniform margins?...

April 13, 2022
vpype 1.10 screen shot

Annotated Release Notes: vpype 1.10

I originally intended vpype 1.10 to be a ‘quick-and-dirty’, bug-fix-only release but it ended up being quite substantial, so let’s dive in. New features and improvements Improved support for layer pen width and opacity in the viewer (#448) The “Pen Width” and “Pen Opacity” menus are now named “Default Pen Width” and “Default Pen Opacity”. The layer opacity is now used for display by default. It can be overridden by the default pen opacity by checking the “Override” item from the “Default Pen Opacity” menu....

April 7, 2022