Hacker News new | past | comments | ask | show | jobs | submit login
Painting with Code (ideo.com)
126 points by nkurz on June 5, 2014 | hide | past | favorite | 35 comments



Processing, http://www.processing.org/, almost seems a de facto development environment for Generative Art - I'm surprised it wasn't mentioned. It has an easy to grasp syntax (which is translated to plain Java in the background), a simple IDE, a huge collection of examples and a selection of great books to help a novice artist on track. Some books, see http://www.processing.org/books/ for a list, especially target Generative Art.

Personal recommendation: "Processing: A Programming Handbook for Visual Designers and Artists" by the original Processing authors, Casey Reas and Ben Fry.


I was introduced to Processing and MaxMsp [1] in a college course where I was tasked in creating generative art and sound installations. I had no programming experience and I agree it was easy to pick up and definitely drove my interest in programming. I think its a great way for artists to get started in something that can become very complex

[1] http://cycling74.com/products/max/ as an aside there is an open source version of MaxMSP called puredata that was also excellent http://en.wikipedia.org/wiki/Pure_Data


It's amazing the images that can be generated from algorithms. It's an interesting area. I think a lot can be learned from looking at what coders in demoscene[1] have done, easy to lose hours tinkering with them.

[1] http://www.pouet.net/


Indeed, and not only static images, but also animation and audio can be procedurally generated.

No discussion of computer-generated art is complete without a mention of the demoscene. :-)


Interestingly, generative art is 50 years old, maybe more! Check for example the work of Vera Molnar, creating generative art with science computers and tracers back in 1968: http://dam.org/artists/phase-one/vera-molnar/artworks-bodies... The national museum of modern art in Paris actually has 8 piece of a similar later work from 1976 in its collection : http://www.centrepompidou.fr/cpv/ressource.action?param.id=F...


For those new in Generative Art check out http://www.creativeapplications.net/ - a lot of cool stuff is featured there.


This is the first time I've ever downloaded code samples in rtf.


I was confused by this, too. Also there are absolutely no imports. This leaves me really confused, wondering why why why anyone would ever do such a thing.

I have two benevolent, understanding and sympathetic explanations: The author is from yesteryear and hasn't worked with other people in a while.

The other one is: He is a genious hacker and knows how to social engineer most of hn. Since Most links point to the same rtf document it might just be a way to spread a very delicate RTF reader exploit..


Edit: I can't read.


He probably copy pasted the code from within NodeBox, which is what he's using.


opening the .rtf as text indicates the former, unless he's a super, super genius who can hide exploit code in plain sight.


Back in the 90ies there was a version of NeXT's gcc that allowed RTF input. Quite neat, and I pretty sure I "downloaded" some sample code for it (probably via FTP...)


A friend of mine made Uncontext [0] with the goal of having people use it to create content as in this article. Instead, I made a hopping bunny. [1]

[0] - http://www.uncontext.com/

[1] - http://www.uncontext.com/literature/bunny-hop


These are far from the only coding artists using environments like Processing. There are some vibrant communities around pixel art and glitch art in California, Chicago and elsewhere http://sdt.bz/66392.


Here's another generative art tool. http://www.contextfreeart.org/ (cfdg)

Hmm, a quick search reveals that it has been posted here before, with little interest.

I've done `apt-get install cfdg` (context free design grammar) and played with it.

It's pretty trivial to set up an edit/render/view loop using the 'run script' function of your favorite text editor.

You make movies by dumping a single frame, changing the file or parameters, repeating that, and then stitching the frames together with some external program.

This tool is made for unix weenies like myself. It's functional, unless you call random(), but you can specify a seed if you want it to remain functional!


Generative Art will take off when it doesn't require expressing the code through conventional programming language syntax. A visual, interactive programming environment like those advocated by Bret Victor [1] would be ideal for artists without a technical background.

NodeBox, mentioned below, have some characteristics of this, although it doesn't seem to allow the artist to create new abstractions without resorting back to Python.

[1] in Stop Drawing Dead Fish. http://vimeo.com/64895205


I don't think that generative art needs to stop requiring programming skills to be successful. The huge community of www.processing.org artists who code suggests this requirement is not a problem. The whole point of generative are is to use programming language as the tool of visual expression as opposed for example to using UI based tools like Photoshop or Illustrator.

Any art (visual or not) requires creators to use various tools and learning these tools takes a lot of time and afford. And mastering them often takes insane amounts of study and practice. Think of work required to learn to sketch human figure well or chisel it out of wood. Think of years of training required to play a violin concerto. Or to dance a ballet piece. Programming is just a new/differnt tool required for creating generative art.

I would even go as far as stating the opposite. Attempting creation of generative art via interfaces other then conventional programming languages is what would limit it! This is for the same reason that professional programmers haven't adopted (not yet at least) visual programming languages - they are too limited in their expressiveness.

The whole interest in generative art and design is driven by the fact that you can create things that you cannot using Adobe (etc...) tools. All the Photoshop and other image creation and editing applications are very powerful, but still limited by the imagination of the people who made them. Creating images using code lets you escape these limitations. This is what makes it an interesting new visual arts discipline.

And if you study lives of many artists you realize that they can be pretty obsessed and determined to work hard to learn tools and techniques in the process of their practice, so I am not worried - there will be many who will become excellent programmers!

What stops fast adoption of this type of art is the educational institutions insistence on separating artists from engineers. If computer science departments offered and occasional art course and fine art departments intro to programming, the generative arts would possibly become one of the most popular art forms in the new century. It would also help more of multidisciplinary creative thinking on both sides. I certainly agree with the article that the possibilities are immense...


Respectfully disagree. I think it's easy for people who have by now built an intuitive grasp of code to appreciate how challenging tools like Processing can be for a beginner.

I have a design background and learned front end code (and eventually ruby on rails) by getting progressively more interested in how the things I was designing were built. I feel like I achieved a pretty respectable level of knowledge in what I had been exposed to.

And yet, many aspects of Processing were a huge leap for me. I spent days looking at code examples just to try and grok how 3D works in processing. I get it now (mostly), but it still feels unintuitive. I can certainly imagine a language that would describe 3D behavior, and a whole host of other things, in a way that a visual artist would describe them.

I definitely believe that there is value in artists learning to think with the rigor that code encourages. It's a fascinating cross-pollination. Creativity often springs from encountering the limits of a medium (and one's mastery of the medium).

But look at the excitement this week among people like me about Swift. It's not about whether it was possible before for me to learn Objective C and build a game. It was. But goddamnit, it's such a pain, and I would certainly understand that someone who is starting from zero in terms of CS knowledge would find it impossibly intimidating.

Design is remarkably accessible. If you can pick up a pen and paper, you can do it. Code is getting way closer to that, but let's not have collective Stockholm syndrome. Our tools are a long way away from where they could be.

Honestly, I wish I had the skills to write a language or build the tools like the ones I can imagine myself. But I have confidence that someone will. It's going to be an exciting time for art, and I think it's coming very soon.


It's a fascinating discussion. Maybe we can meet half way?

> I definitely believe that there is value in artists learning to think with the rigor that code encourages. It's a fascinating cross-pollination...

I agree!

> Design is remarkably accessible...

But this... Well it depends on the point of view. Design can be as intimidating for geeks as programming is for artists.

I have nothing against making programming tools more user or artist friendly. In a sense Photoshop is such a step - it allows many creators make sophisticated images without learning to draw and without learning to program. And certainly many many amazing works were created with it and similar tools.

The point I am trying to make here is that the visual/artistic power or possibilities of generative art and design are very much driven and dependent on the artist's fluency to program. There were many attempts to create programming tools [1] that let you avoid having to slog through typing the code, but seems like none of them would match the expressive possibilities of 'raw' coding and gain any wider adoption. In other words all of them have significant limitations and this would be a step back from the point of view generative artist.

And just to make it clear, I don't think that using any of these higher level tools is wrong or produces works of lesser value. It's just that these works are outside of unique possibilities of generative art driven by traditional coding.

[1] http://blog.interfacevision.com/design/design-visual-progarm...


Have you seen the "Stop drawing dead fish" and other Bret Victor talks? Those are not high level tools, they allow you to build generative animation and graphs from scratch.

Photoshop-like visual tools are indeed limited to pre-built concepts, but Victor has found a way to make coding possible without textual syntax; that's a powerful idea that may be the basis for a tool allowing artists to program without requiring the programmer's skill to keep the parse-tree-plus-AST in your head while building automations.

Take a look at the topic of End User Development and Programming by Example[1], it's a quite comprehensive research field dealing with ways that programming-like activities can be done without any traditional "raw coding".

[1] http://web.media.mit.edu/~lieber/Your-Wish/


Same here. Do you have a place were you have compiled your ideas for your imagined language? We could cross-pollinate with each other :-)


I do! I have some sketches that I drew up a while back. It's sort of a loose collection of thoughts, though this is inspiring me to think about it with more rigor :)

I imagine it as a combination of an abstraction layer on top of processing and a light IDE. Something like a palette of shapes and objects similar to what's available in photoshop and illustrator. Instead of drawing shapes, though, it would create code snippets for the various objects.

Those objects would be available to modify in an event loop similar to Processing (or Arduino, for that matter). With a strong autocomplete for both object names and the available manipulations for those objects, I feel like you could learn just by playing around.

Live preview like Swift /light table etc would be really powerful. Out of the box support for common things like collision detection would be great too. Color pickers that spit out rgba values? Maybe. Basically a tool palette oriented around building code for visuals.

In terms of the language itself, it probably veers more into personal taste. I'd love to see names of things be less arcane /abbreviated. Dropping some of the brackets and parens would be nice for non programmers too. (Again, taste.) Ruby-like syntax for new objects instead of objective-C-like constructors would be more readable. Basically, the more it could just resemble an English description of what you want to happen, the better.

Processing isn't that far away from this description, but the combination of having to refer to the documentation constantly, no sensible defaults, almost limitless customizability, and having to actually compile the sketch to run means that the initial barrier is really high. It's very difficult to get into flow until you reach a high level of familiarity with the language.

I would love to chat about this further and share ideas with you or anyone who's interested!


It seems there's no way to send private messages here at Y Combinator. Send me a mean of contact to twaway00 at gmail if you wish to continue conversation.


You realize that to build such a tool you would really need to develop high level of programming skills, right? ;-)


The main problem is that programming skill requires a very different skill set than the one usually required to build successful art (insight, a sense of composition and proportions, good taste in colors, all that right-brainy stuff). Although a person may have both, it's rare that someone will be proficient in all those.

People with good visual skills may devote intense learning to the tools of their work, but see how the tools you mention (chisels, violin, proprioception for dancing) don't require strong abstract skills like programming does. Some renaissance men were capable of dominating both forms, but science was way simpler then - and they still gravitated toward graphical representations of structure and theory.

If all generative tools are based on "linguistic" programming based on strong syntax requirements, not allowing a more "intuitive" way to build abstractions, it will remain a highly conceptual form of art. This is still valid art, but quite different from the most popular forms of artistry that people associate with the idea of "art".


Watching Mr. Victor, he tells us about how we're doing old media with new tools (painting, film.) Then he moves on to ... a puppet show using his new tools. I feel like he started with what was going to be an intriguing thesis ("make something new, not just old media with new tools") and changed to building those new tools.

That criticism aside, he's absolutely correct about needing new tools to prevent the creator from needing to learn a programming language. I'd suggest that this is the case in many fields. I'd go so far as to suggest that some day most of us software creators might be able to create software with little to no code, just dragging together concepts. (I'm aware that such tools have existed and do exist. One could argue that they haven't quite nailed it and thus are not very widespread in use.)


(I'm aware that such tools have existed and do exist. One could argue that they haven't quite nailed it and thus are not very widespread in use.)

I believe that day may be closer than you expect. I've seen all, and I mean all the components required to build such a practical programming system. They just were scattered around systems for widely different purposes, or buried in decades-old research projects that were too experimental and heavyweight for the machines available back then. (Victor's is certainly the closer to that vision, although it still misses several key components to make it practical and widespread; a close second is the Wolfram Language).

I have in mind a pet project to combine those partial tools in a way that I think would make a practical mostly-general-purpose programming language. Having some background in human-computer interaction, I think I'd be able to identify the most obvious roadblocks.

Unfortunately, I'm afraid my limited skills and time wouldn't allow my to expand the system beyond a simple proof of concept. If you're interested, I think I could compile a small recollection of my ruminations and put it in a presentable form, if only to inspire others and get some feedback on my approach. I don't know though if that would make for a good Hacker News submission, does this site accept links to personal blogs discussing pet projects?


I am interested in your article.

And yes, HN absolutely accepts links to personal blogs discussing pet projects.


Ok, I'll try to put something in writing. Yesterday's link to the Leo editor has inspired me to organize an idea-dump of all my dispersed notes. :-)


I've been playing a bit with generative art in scheme. The author talks about finding a way to code visual ideas. It can work the other way around, too, i.e. the algorithms we use in our programming work can themselves be a rich source of visual ideas. Inhabiting this space of translation between the visual and 'algorithmic' minds can be quite fun.


Nodebox seems awesome! http://nodebox.net/



The painting analogy isn't really warranted, and this article is a metaphor at best. You could replace painting with poetry, music, or building furniture. There are a few definitions of painting, and there's lots of art being made that plays at pushing those definitions, so I can't claim to have the definitive one. However, essential things, such as the interface (which is in no small part responsible for the content of a painting), and the actual final product as object, are very, very different. A medium is also defined by its constraints, and from code to screen or printout the constraints of image-making are unlike anything you have in painting.

Generative art is beautiful, but not because it has anything to do with painting.

Edit: If this seems harsh, it's because I care about code just as much as I do about painting. Using any one of them as a catch-all for stereotypes is intellectually lazy (and often irritating).


This seems unnecessarily harsh. That this generative art and painting are both visual arts in (mostly) two dimensions seems a pretty strong similarity. Why would you compare it to genres of art less similar? Also, some paintings strongly resemble this kind of generative art. E.g, I assume code could be used to generate something quite similar to "drip painting" in general, and Jasper Johns work in particular. You can make a comparison without trying to equate the two.


Who is the target audience for this article? Lines like

  I leverage the power of my computer to generate the
  artwork. Where a classical fine artist would pull out
  his oils and brushes to express colors and shapes,
  I do the same with parameters.
make it seem like it's written for people who have never seen code before, but then there are extensive code samples. But (!) as people have mentioned, there is almost no context given for the samples and the code file is an RTF.

What?

Edit: I also meant to say that 86 points for this article at time of writing this comment must mean HN is the audience. I'm not sure I like that.

Edit 2: Which is not to say I don't like his work. It's pretty cool.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: