More selected projects

Just Another Portrait Printer

Just Another Portrait Printer is an early development of a tool that expands my research into automated fashion production for African makers or freelance makers in generals. It is an exploration of the relationship between portraiture, sketch and real-life whilst attempting to expand the definition of handcrafted in a digitally-driven era.  

produced by: Omolara Aneke


A suit made using a sewing machine is considered hand-crafted despite the machine-made interventions. In comparison, a portrait made using a stylus and device is considered a digital drawing. Intrigued by this sentiment, I thought back to my first day of undergrad. We were told to go out to the world and quickly sketch what we saw. The idea here was to gather as much information to later be called upon when looking for interesting shapes, lines and directions for women's clothing. I tried to emulate this process as much a possible from quickly drawing what it sees in the world down to the blind contour style line drawings. The idea was to automate the sometimes-taxing prototyping process in a very specific way the doesn't dismiss all human intervention.  

Concept and background research

Digital Handmade  

Lucy Johnston, author of Digital Handmade argues that the industrial revolution played its part in lowering the importance of craftsmanship in the manufacturing process but with the new digital revolution, a new way of working has risen (2018). Hand crafted refers to things made by hand. In 2020, there are small whispers of debate arguing to expand the definition of ‘hand crafted’ to make way for the digital revolution and the new way of thinking birthed (Johnston,2018). There is specific emphasis on new technologies that are guided by tradition, sensitivity to materials and manual techniques (TNW, 2020). Plotters, 3D printers, and sewing machines are examples of digital tools that aid in the hand making process but two of them are instantly relegated to the digital side. Johnston believes "The digital world isn't replacing humans; it's enhancing what humans can make... The two can work together to create objects that couldn't have been made purely by hand or purely by machine" (YCN,2020).   

Of course, Hand crafted solely is a stretch, but the conversation has started and I am interested in the discourse to appear. 

Rapid prototyping 

Futurism magazine cities Andrew Conru, artist and engineer who founded RobotArt, who likens the emergence of artwork created by machines to the creation of the camera (World Economic Forum,2020). Further explaining why robotic art can't replace human creativity, Conru says ‘Photography became an entirely new branch of art that captures different types of images and works than painters do’ each with different skills to offer creativity. (World Economic Forum,2020). Just another portrait printer plays on the fact that robots can be programmed to do exactly what you want. Photorealistic drawings from pen plotters especially can be achieved quite easily but what would be the point. The focus was on programming spontaneity to result in interesting lines and shapes to help create new print designs. Finding new motifs and imagery from the perspective of the humans via computers to allow for finding shapes that wouldn’t be possible otherwise with Parameters that’s are easily tweaked and tracked allowing for faster manipulation.  


The invention of photography, like computers, are revered for their accuracy. A photograph is usually interpreted as being a representation of that specific object (Hertzmann, 2020).  James Whistler, Artist, wrote “If the man who paints only the tree, or the flower, or other surface he sees before him were an artist, the king of artists would be the photographer (Hertzmann, 2020). It is for the artist to do something beyond this.” in other words, realism should be left to photography whilst art and artists are tasked with going beyond realism to where photography can go(Hertzmann, 2020). Insert the slit scan photography effect which creates strange-looking images that look like they’ve been stretched and distorted (Holmes,2012). Put through an array of algorithms the Interesting distortions works to find lines and shapes that couldn't possibly be otherwise be seen.  


Currently, the process to take an image from pixels to plotted on paper is quite an involved process that uses a pleather of programs. Typically, an image is uploaded to Inkscape, the vector information is found, saved via a plugin extension, Arduino is loaded with GRBL uploaded, then processing is used to stream the file to the Arduino. I initially had ambitious plans to create a fully functional web-based application that prints the input without the added extra programs. This wasn't quite actualised. 

I took the opportunity to begin learning JavaScript so I make use of Vanilla js, OpenCV.js and P5.js. Together they allow me to make an application that takes in a picture or webcam still and produces a gcode file that is manually uploaded to the Source Rabbit gcode Sender software. The sender connects and streams the gcode to the Arduino setup moving the motors accordingly.  

My starting point was figuring out how to turn images into gcode without Inkscape. Initial testing involved finding and converting svg information into gcode but I couldn't figure out how to turn stills into svg files information. I then came across a thread that explained I should first find the edges, then turn the edges into gcode. As vague as it seemed at the time, it was great information. 


Vanilla js is used to encapsulate the various programs. It is here that I make the calls to OpenCv.js and P5js and draw the outcome to the canvas. OpenCv.js is used to process the still, it goes through various stages of manipulation from making grayscale, finding the edges then using the edges to find the contours. A delicate balance is needed to contrast the image just enough to pick up the important details without picking up the excess noise. Where I was hell-bent on using blurring and thresholding just because I can, I was over-processing the images resulting in a different line being found. The contours found are then used as the basis for coordinates sent through an algorithm that produces a file with the .gcode extension. P5js is used to easily use and manipulate the webcam stream. I enjoyed the look of the lines created when slit scan style images were fed through the system, so this was the starting point for the webcam manipulation. Traditionally, digital slit scans use a thin slice of pixel data recorded at different times to compose a distorted image. This didn’t work for me as the image processing algorithms couldn't find strong enough lines to produce line drawing. Instead, I played with taking bigger slice widths of pixels data later figuring out that split into three produces enough details for a line drawing whilst retaining the interesting slit scan distorted effect.  

Physical Computation  

The mechanical parts of the system include 2 motors, 2 stepper drivers and a cnc shield hooked up to an Arduino. This wasn't without its setbacks as I overloaded the system a few times at horribly crucial times. Initially, I overloaded the system breaking the stepper drivers, the small chips are unreliable and vref on the chips need to be programmed specially to prevent the overheating. Then I overloaded the system breaking the cnc shield, not as unreliable but all my testing and mishandling didn't board well with the shield. On top of that, the day before the show I unsuspectingly broke the Arduino board which caused a massive panic before later procuring one.  

3D Parts.  

I used standard 3d parts I found on the web and my initial idea was to get the machine working then revise the parts and design to suit my specific needs. It took way longer than I would have liked to get the system up and running to the point where I could focus on refracturing the 3d parts so this didn’t happen. Instead, I used super glue and a lighter to attempt to reengineer the parts and offcuts I had available into more stable and appropriate parts. 

  • gallery-image
  • gallery-image
  • gallery-image
Future development

Developments focus on refracturing the software and build to be more robust and stand-alone. So far, a large portion of the outcome combinations need at least 2 programs to run successfully, an image/gcode creator and a sender. I found that not all senders are made the same or work the same way. For my set up Source Rabbit was the easiest to plug in and print and worked better than the Universal Gcode Sender, Processing’s Gctrl and Chilli Peppr’s sender.  It will be in the interest of bettering the user experience to figure out how to successfully send the file.  

More software developments include being able to take input from individual phones rather than the webcam on the laptop. Whilst at-home testing and developing, using the webcam seemed natural, I didn't even question the usage.  but displayed as part of an exhibition, using the laptop webcam felt quite outdated and not as intuitive.  

Design developments include adding limit switches to properly home the machine. This will eliminate the need for user guesswork in figuring out where home is in order for the machine to run properly.   

Self evaluation

I loosely achieved what I set out to create, a printing tool that can be used for rapid prototyping onto fabric for print development. This was achieved. I set also set out to familiarise myself with JavaScript and various libraries to aid in the development of the system. This was also achieved. My downfall was the smaller, finer details that enhance the user experience. With the knowledge I know now, I would focus on figuring out ways to prevent or minimise all of the little structural and machinal damages that effected my budget and machine outcome. With the machine not being robust enough to withstand user wear and tear the pen holder broke with 1 hour until the start of the exhibition. 


262588213843476 (2020) stupid easy line based svg to gcode converter, Gist. Available at: (Accessed: 17 September 2020). 

alo0994Follow (2020) How to Program Arcs and Linear Movement in G-Code Manually, Instructables. Available at: (Accessed: 17 September 2020). 

DIY Machines (2020) Part 2 - Super Easy 3D Printed Arduino CNC Drawing Machine - The Software | GRBL | Inkscape Plotter. Available at: (Accessed: 18 September 2020). 

Giachino, A. (2017) ‘Learn to code: Make G-code with Processing (Part 1)’, CodePlastic, 5 June. Available at: (Accessed: 17 September 2020). 

Hertzmann, A. (2019) How Photography Became an Art Form, Medium. Available at: (Accessed: 18 September 2020). 

inkscape (no date) gcode file. Available at: (Accessed: 17 September 2020). 

Johnston, L. (2018) Digital Handmade, digital handmade. Available at: (Accessed: 18 September 2020). (no date) IS71014B (19-20): slit scanner. Available at: (Accessed: 17 September 2020). 

Lee, T. (2017) The ‘digital handmade’: how 3D printing became a new craft technology, The Next Web. Available at: (Accessed: 18 September 2020). 

YCN | News | New to the Library: Digital Handmade, YCN. Available at: (Accessed: 18 September 2020). 

Mcguire, Marty (2020) martymcguire/inkscape-unicorn, GitHub. Available at: (Accessed: 17 September 2020). 

Misan Follow (2020) 4xiDraw, Instructables. Available at: (Accessed: 17 September 2020). 

StackOverflow (2020) javascript - How can I get Coordinates of Points of Contour corners in OpenCV.js?, Stack Overflow. Available at: (Accessed: 18 September 2020). 

Vanegas, R. (2020) code-warrior/tracing-an-image-using-p5js. Available at: (Accessed: 17 September 2020).