We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Coding pictures with Shoebot

00:00

Formal Metadata

Title
Coding pictures with Shoebot
Title of Series
Part Number
31
Number of Parts
46
Author
License
CC Attribution - ShareAlike 3.0 Unported:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
Shoebot is a graphics robot with which you can create complex images and animations using a very simple syntax on top of the Python programming language. It is specifically aimed at designers and artists who want to incorporate code into their creations, but it also provides for a good educational framework for introducing code-based approaches, with a simple interface and quick image-based results.
Keywords
6
Thumbnail
14:45
42
Thumbnail
11:09
45
Thumbnail
17:06
Point (geometry)LaptopTraffic reportingXML
Medical imagingIntegrated development environmentCodeLecture/Conference
MacOS XInterface (computing)Vector graphicsCartesian coordinate systemDampingType theoryFunctional programmingFront and back endsProjective planeSet (mathematics)Process (computing)Web 2.0Programming languagePhysical systemInstance (computer science)WebsiteScripting languageAxiom of choiceLibrary (computing)Personal digital assistantCuboidLaptopDrop (liquid)Similarity (geometry)Letterpress printingGraph (mathematics)Computer animation
Plug-in (computing)Projective planeScripting languageState of matterRobotFunction (mathematics)Lecture/Conference
Revision controlWindowProjective planeInstance (computer science)Electronic mailing listScripting languageFitness functionMedical imagingPresentation of a groupComputer iconDifferent (Kate Ryan album)Graph coloringRootDemo (music)NeuroinformatikText editorEmailSoftware frameworkCodeCovering spaceFeedbackCartesian coordinate systemQuicksortFront and back endsPRINCE2PixelBitVisualization (computer graphics)Integrated development environmentComputer programmingProgramming languageInternet service providerSoftware developerVideo gameNumberSpline (mathematics)Computer architectureSpiralLibrary (computing)Right angleProcess (computing)CuboidFunction (mathematics)Student's t-testRaster graphicsSimilarity (geometry)Server (computing)Network socketArtistic renderingContent (media)Letterpress printingRandom matrixComputer animation
Sinc functionModule (mathematics)Hacker (term)Scripting languageServer (computing)Network socketComputer programmingComplete metric spaceParametrische ErregungMultiplication signLaptopFunction (mathematics)Integrated development environmentMathematicsDistribution (mathematics)Medical imagingFrequencyWindowVisualization (computer graphics)InformationCartesian coordinate systemParameter (computer programming)Lecture/Conference
SoftwareScripting languageCodeEmailSoftware developerElectronic mailing listFunction (mathematics)Software bugSet (mathematics)Medical imagingWebsiteLibrary (computing)Data conversionLaptopParameter (computer programming)Physical systemComputer animation
Transcript: English(auto-generated)
I'm going to talk about ShoeBot, which is a port of NodeBox, which was talked about in a talk this morning by Frederick, Lucas, and Tom. And I seriously hope you've seen it, because a lot of the points that I'm going to gloss over were talked about there.
It is, for those who haven't seen it, an environment to be able to code images in simplified Python code. I'm going to talk about the more technical aspects of ShoeBot and a little demonstration as well of what it can do. It started as an academic project while I was doing my MA.
I needed a kind of graphics backend for a type of graphic application I was doing. And NodeBox was definitely the application of choice, because I did work with processing before. But processing is not that well suited for print, whereas NodeBox had native support for vector graphics.
However, it was Mac OS X only. And this was three years ago, so there was no NodeBox 2 at the time. And well, it was also, I thought, a nice exercise to try and code an application from scratch in the meantime. I got addicted to it, but that's another thing.
And so the project started in 2007, that is three years ago. And what I wanted was to provide access to the most, the biggest set of NodeBox functionality that I could in GNU Linux systems. And a bonus would be Drawbot,
which I didn't do back then, but it was done last year. Drawbot is a language on which NodeBox was based, and it has some similarities as well. And one really important thing was a command line interface, because NodeBox has one as well, but there was one technical detail, is that since it depended on Cocoa, the Mac OS drawing libraries,
and it had to, it is okay on a Mac, but especially on Linux, you don't want to load the whole interface for a command line script. And if you actually want to do stuff that runs quickly, or that you want to use on a web server, for instance, you wanted to load as few dependencies as possible.
So this was the goal of the project. And this is what it looks like now. You have this simple IDE, which is Gedit, and it runs through bot script through a plugin that we've developed, and there you would see the output. The current state of the project is, we're a small team,
we're a handful of developers, and we code as we go and as we need it. We have quite the anarchic development process, not really disciplined, and that's something that we'd really like to improve. It has been rewritten once to change the architecture. It's being rewritten again. Let's see how that goes. And the idea of ShoeBot as well
is not to stick to the NodeBox language and one graphics backend. So the first rewrite last year makes it possible for anyone to just go into code and provide support for other languages and other graphics backends
without having to change the whole applications. One problem that we have is that we don't have that many, well, we don't have users. And that's the problem. You have a kind of developer-centric approach. It's just the things that are mattering to us. And every once in a while, we get someone in the mailing list that says, hey, this would be cool. And that makes us really, really happy
because then we feel useful and we don't feel such. So egotistical that we're just coding for us. It started as a GNU Linux project, but now there is already a Windows version, which you can Google for because I forgot to include the URL, which is called Sprite, which is a nice, great effort by a teacher who's also using ShoeBot
to introduce his students to code. Inside, and again getting a little technical, but I know some of you like it, it uses Cairo for the rendering. It's a wonderful framework for, for instance, the GNOME, correct me if I'm wrong, but I think the GNOME desktop
is rendered mostly with Cairo. And then that enables us to provide output on SVG, PDF, PostScript, and Bitmap. We also use Gedit as the IDE because it's a good approach to have what this says as a mini IDE. Once you want to, if you want to come to a designer and tell them,
hey, you want to start with code, you don't want to show them Eclipse or similar things. You just want to show what is needed. And you just need a simple text editor to get them started. It's all Python because for introducing people to programming, my personal experience,
and I think quite a few people agree that Python is really great for introducing programming content. And it has access to most of the Notebox great libraries, which allow you to work, import SVG, manipulate it, and then export it. You can use it, Spiros blinds. You can do those wonderful things with colors that were shown this morning and much more.
And you can use ShoeBot for, for instance, live performance. It, besides creating static images, you can create animations. That's something that we're also trying to improve with the last rewrite is actually speed so that it can be used reliably. It's, I'd say my favorite use of it is for print.
You can actually script images and then create SVGs or PDFs or what have you. For, as an example, the cover of the Libre Graphics magazine, this tank illustration, it's done with ShoeBot. If you squint, which I wish it would be more visible, but it's, these are little bits.
Each little pixel actually says Libre Graphics. I wish it was more visible. And this was done with ShoeBot and it's one of the possible uses for it. Icon workflow, this, I was talking to Jacob from the Tango project and after watching Jim Mac's presentation this morning, ShoeBot is a natural fit for those scripting issues that were mentioned with Inkscape
because it can just create a simple Python script, import an SVG and say, I want this path, for instance, to have this color. And then go along and create 300 different icons with different colors here and there. And that's actually really, really simple to do with ShoeBot. And finally, education, like it was mentioned
by the Notebox developers this morning. This is a really good way to teach programming to people who don't come from any programming background, specifically because once you try to introduce to Python and you show them a command line, you're losing a lot there. And if you give them an environment where they get immediate visual feedback,
that really makes a difference for motivating them to look more and how much they can get from their computers. And I have a little demo of one of the lesser known features of ShoeBot, but one that really gets me happy that works there, which is the socket server.
This is actually a pretty hacky thing, but since I'm trying to balance this between introduction and also showing some advanced stuff, what you see here is a window. It's pure data. You might recognize it from Emmerich's talk
about the pure dyn distribution. It's an application, a programming environment, but a visual one where you connect stuff through notes, pretty much like Notebox too, but in a very different way at the same time. And one thing that you can do with ShoeBot is actually run ShoeBot scripts.
I'm running it here from the command line, which by the way, you can also do just as well as with the IDE. It has a complete command line interface that you can integrate into your scripts, and it can be imported as a Python module as well. So it's really easy to create visualizations or any kind of image output from your Python program.
So what I'm doing here is running a really simple, ah, damn it, you can't really see it that well, but what's going on is that you can actually connect through a socket server to the ShoeBot script itself, the animation which is running, and then changing the parameters in pure data or any other application that can send information
through TCP or UDP or what have you, then you can see those changes reflected in the ShoeBot script immediately. Plus, you can do it remotely. You can even do it over the network. Thank you, I'm getting there. Oops, ah, back. What ShoeBot really doesn't do,
of course, this is far from the full list, but of course, Mac support is not really a priority because you have NoteBox for that, and it's pretty much what you need. Even though if you do want to try ShoeBot, you can just get the library, especially Cairo and PyCairo from Macport, even though I got it working a few years ago
and never touched it again, but it does work. And the wonderful thing that Fredrik showed this morning where you have a script running and you can actually change the sliding text parameters, that's not there yet as well. And the movie output, we did a hack with a FFmpeg, basically generating lots of images,
and I'm not sure if that's on the ShoeBot code base. I think it's not, but if you want to make a movie, it's not that hard, FFmpeg just takes you there and combines the set of images that you can output from ShoeBot and then create a movie from that. But that's on the quick-to-do list. And this is the thing, that we really need you
in the sense that we need users. It's mostly just the developers and mostly hacky people that are doing this. We really need people to tell us what they are missing and what's wrong with ShoeBot. And our mailing list is a nice place. I mean, it's really low traffic. We won't bother you with stupid conversations
about performance. And you should really ask us. I mean, I'll be around, please come and bug me if you're curious about anything or if you have anything to ask, because yeah, no question is stupid. There are no stupid questions, but it's a shame if you don't ask them to begin with. And if you do something with it, anything as simple as it, we really, really want to know.
We want to feature it on the website. We want to show it to the world, and we really would love to see what people are doing with this. And I'm actually missing a slide, but then since I'm at the end, well, thank you. That's it. That's you. Thank you. Thank you.