Flamingo
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.