Alongside audio, 2D graphics has been the second constant in my work — from the Graphics32 team years and AggPasMod to today. The modern chapter of that thread is written in Go: agg_go and matplotlib-go.
agg_go
agg_go is a port of Anti-Grain Geometry to Go. If that sounds familiar: I did this once before, fifteen years ago, when I turned AggPas into AggPasMod for modern Delphi. AGG’s approach — high-quality software rasterization with sub-pixel accuracy, built from small composable pipeline stages — has aged remarkably well, and porting it a second time was like meeting an old friend who has not changed while you have. This time the assembler optimizations of the Pascal era give way to Go’s tooling, tests and portability.
matplotlib-go
On top of the rendering layer sits matplotlib-go, a plotting library for Go inspired by Matplotlib: renderer-agnostic at the core, with high-quality raster backends today and vector/GPU backends planned. It scratches an itch I have had since the measurement era — the VST Plugin Analyser exported stacked plots to PNG and SVG back in 2008, and I have wanted a proper, general plotting foundation ever since. Supporting geometry work like Go-Clipper2, a port of the Clipper2 polygon clipping library, rounds out the toolbox.
Why ports?
A fair question — three of my larger projects are ports (AggPasMod, agg_go, go-dws). My answer: a good port is an act of preservation and a masterclass at once. You inherit two decades of edge cases already solved, and you understand every line because you had to retype it with intent. The originals were excellent; keeping them usable on modern stacks feels like honest work.