Nerdy Tech Talk

PlotterFlamingo is written in Python 3.14, C/C++, and some Tcl/Tk.  Python is by far the most prevalent and most new work is done in Python.  The display and editing portions of the program utilizes X-Windows.  While working in X-Windows is pretty archaic, it's fast and does the job and it's already written.  No need to change at the moment.  There are five main portions of the program (GUI, preprocessor, drawing, display, and testing suite) as well as 70 to 80-some-odd utilities that are applied after the main drawing functions are run.  The Python and C/C++ portions utilize PyQt and the Tcl/Tk portions utilize the native Tk GUI libraries.  The total codebase is about 130k lines

The drawings you see here are eventually drawn on a pen plotter using light fast acrylic inks and 100% cotton rag, acid free paper.  It's all museum and archival quality materials.  A pen plotter is not a regular printer, such as an inkjet or laser printer.  The plotter actually draws the pictures by moving a technical pen around the page.  The technical pens have tungsten carbide points that from .13mm to 1.0mm.  Mylar, a frosted plastic 'paper' is also used for some applications.

Pen plotters are much more labor intensive than a more modern inkjet plotter but when it comes to work like Flamingo, which is line oriented, the pen plotter is second-to-none when it comes to anything approaching an affordable plotter.  The pen plotter can take between a few minutes to a few hours for a drawing.  In the case of the biggun drawing, 9-12 hours were required to render the work each of the four pieces.  The plotter I use is a Houston Instruments DMP-162R, which has the capability of plots up to 3 feet wide by 20 feet long (.9 by 6 meters). 

The plotter pictured to the right is not the 162R, but is quite similar.  One feeds the paper into the front of the plotter and rolls in the bed of the plotter move the paper back and forth.  The pens are held in a small arm and they move from side-to-side.  To draw a diagonal line, both the rollers and pen move at the same time.  Any linear drawing that a person can draw, a plotter can draw  The 'thing' above the paper in the picture is a pen holder.  The plotter can hold up to eight pens of differening widths and colors at one time and the arm will swap the pens as needed.  If more than eight pens are needed, the plotter can pause and send a message asking for a new pen.

A laser cutter is also used for many types of work.  The mobiles, sea shells, huevos, and lamps are all created using a laser cutter.  I have access to two laser cutters at a maker space that I belong to.  I don't have my own laser cutter...yet.

Flamingo runs under Fedora 42 with a Linux 6.16 on an AMD 5900X (12 cores) with 128 GB of memory.  The graphics card in an Asus 5070.  It has been tested under several Unix and non-Unix systems alike, but I very, very much prefer to stay in the Linux environment.  I sometimes use an Intuos graphics tablet which is 12 by 8 inches (30 * 20 cm) in size. 

The 12 cores are utilized with multiprocessing, so when testing several thousand drawings before a code checkin, it does the testing 12x as fast as using a single processor.  Additionally, GPU programming is used.  So, instead of calculating a distorted line one point at a time, thousands of points can be calcuated at the same time.

There is a pretty sophisticated testing suite that's been written to ensure that no older drawings are broken with new code.  With Python multiprocessing, four hours to 24 minutes.