Archive for the ‘General’ Category

Eyeo: Post Conference

Friday, July 1st, 2011

I have been home from the fantastic Eyeo Festival for a full day and thought I should write up a few notes that I neglected to mention during my talk. I had intended to say this stuff out loud but as I ran out of time and since I had switched over to showing iPad content, I never went back to my presentation where I had a few extra notes and takeaways ready to go. So here they are.

Iterate

Your first attempt at anything is likely going to suck. Let’s face it, most of us are not phenoms. In fact, I cannot think of a single person I have met in my 38+ years who was able to excel at something shortly after trying it for the first time. We all need practice, and lots of it, for everything we try. From learning to talk and walk, to learning to play an instrument, to learning to drive, to learning how to be a social creature… it all takes practice.

Want to know how to get better at something? Do it over and over. And over and over and over.

However, it cannot just be mindless repetition. There are two additional factors that need to come into play. You need to also do the following.

1) Correct. You should work on fixing the things that didn’t go right with the previous iteration. Make a list of the things you want to address. Tackle the big items when you have a clear head and a nice block of time. Otherwise, pick off the smaller ones. However, don’t get overzealous with your corrections. If you happen to mutate your project into something interesting but unintended, save this mutation so you don’t overwrite it. I have lost some nice bug-made oddities because I was too concerned with fixing errors.

2) Improve. You should research the field to try and learn things to add to future iterations. This means looking at what people have already done and also what people are trying to do. Staying on top of advancements in your field of interest is definitely worth the effort. Unfortunately, this may mean you find yourself looking over SIGGRAPH white papers or University theses that are over your head. This is fine. Don’t get too caught up with not understanding what is written. Just look at the pictures if that is all you can manage. The important thing is to continually expose yourself to information about your interests.

Collaborate

I don’t know how many of you played D&D as a kid (or as an adult… no judgement here) but I will speak now as if all of you have. When you roll up a new character, unless you cheat it is highly unlikely you will create a demigod. You might have a 18 here or a 16 there, but you will never ever roll up a character with an 18 for every attribute. Ideally you will have one high attribute, perhaps an 18 strength. With an 18 strength, you would make a fantastic fighter. So off into battle you go.

But life, fantasy or not, is never easy. Your first run-in with a couple filthy thieves results in a gash across your chest and you drop half your hit points and suddenly you start to suffer the reality of the situation. You need healing abilities. So what do you do? Well, you don’t go running to the library to start a multi-year process to learn how to cast a healing spell. Instead, you find a cleric who has an 18 wisdom but happens to suck at fighting and you join forces. Now, you are much more powerful than the sum of your respective skills.

And the beauty of this setup is that nobody feels like they are being taken for granted. The fighter has an intense appreciation for the healing abilities of his new cleric friend, and the cleric is thrilled to have found someone that can fight off the horrible monsters that lurk out in the wilds. So if you are a fighter, find yourself a cleric friend. If you are a cleric, track down some muscle for hire. Because if you don’t, you will live a limited life and never get to see what is on the other side of the dark forests at the base of Mount Craggyspire. Or whatever.

I have spent much of my coding career learning how to manipulate particles and figuring out how to make OpenGL make things pretty. But I suck at many other aspects of coding. Which is why the projects involving collaboration ended up being the most successful. The visualizers I have made with Andrew Bell, and the Planetary iPad app which I am currently developing with Bloom… those projects have meant the most to me and I am damn certain I would not have been able to make them on my own.

Baby Steps

I went through a talk I gave in 2004 and saw a slide that, though a bit harsh, still represents the best advice I can give to young idealistic coders. It said, in bright red on white, TAKE TINY STEPS OR FAIL!!! and the FAIL!!! bit was flashing on and off for emphasis.

A problem I suffer (and hopefully it isn’t just me) is that I see something awesome someone else made and it gets my mind churning and I start thinking “I can totally do a 3D terrain simulation with physics, CLoD implementation, and realtime weather effects” so I dive right into XCode and start making my Globe class and the Weather class and on and on and before you know it, I feel extremely overwhelmed which usually has me running for the remote so I can watch science documentaries in an attempt to distract my bruised ego. Knowing exactly what you want to make can often be the largest barrier in your creative journey.

My advice in this situation is to take some time to break the problem up into bite size pieces. Work on little prototypes. Explore each tiny concept and eventually, start to put them together. If you are too focused on the gap between what you envision and what you currently have, you will likely lose faith.

Plus, if you have a bunch of well-understood bite size pieces, it will make it much easier to combine them into bigger projects. But if you start in with building a big project, it is much more difficult to pull out the pieces you want to repurpose later.

Take a walk or a shower

This may not work for everyone but it has been very useful to me. If I am stuck, either creatively or programmatically, I go for a walk. Or if it is late in the evening, I will take a hot shower. Something about those two activities really helps me clear away the mental fog and helps me to focus on the issues at hand. I have cleared many a hurdle just by putting on my headphones, slipping on some shoes, and going for a walk through the neighborhoods of San Francisco. This doesn’t mean walking over to the neighborhood bar for a drink. Walk while mulling over the problem at hand and head home when you have an idea of what to try next.

I realize what I am writing here is nothing new. We have all heard these points made by many. They have reached rockstar cliché status. But this doesn’t mean it isn’t worthwhile to be reminded every now and again.

Ira Glass on creativity: http://www.youtube.com/watch?v=BI23U7U2aUY

Frequently asked Questions

Should I learn Processing, OpenFrameworks, or Cinder?

Depends. On many things. Your skill level, your dedication, and your interests. It is important to say that it is not a matter of which framework you choose. It is much more about how much effort you are willing to put into it. Learning something new can be hard and I sometimes worry that when I am asked this question, what I am really being asked is “Which is easiest?” Unfortunately, coding is difficult. And as I mentioned above, there is no substitute for practice.

That being said, I usually answer Processing. Not because Processing is easy, though it is definitely easier than trying to learn C++. I answer Processing because Ben and Casey have made it part of their mission to create a framework that would make it as easy as possible for those with a less technical background to enter the world of creative coding. The first thing you learn in C++ is usually something like how to write text into the console. The first thing you learn in Processing is how to draw a circle. Coming from a visual arts background, I was far more interested in drawing circles. I still am.

This doesn’t mean learning Processing over a C++ framework will limit your work. This is especially true if you plan on doing a lot of graphics work with OpenGL. Generally speaking, OpenGL is OpenGL regardless of whether you are getting there through Java or C++. And with all the advancements that are happening to Processing (look for Processing 2.0 soon) it is definitely a fantastic tool to become familiar with. So when I started to look for an alternative to using Flash for my code experimentation, the answer was a resounding Processing. But if you are a bit more computer-minded are are willing to put in the long hours reading C++ books and searching Stack Overflow for obscure Xcode error messages and trying to wrap your head around the difference between pointers and references and the reasons to use one over the other, something like OpenFrameworks or Cinder might be right for you.

What is the difference between OF and Cinder?

Honestly, that is not something I can speak to as I have only used OF a couple times. It was shortly after the Mac version came out and it was alpha and unstable. It has come a very long way since those early days. However, I am definitely a Cinder person and would be happy to talk about all the ways in which Cinder is awesome. I just can’t fairly speak to how it compares.

How should I get started?

The first half of the Hello, Cinder tutorial covers the creation of a simple particle engine and shows how to use it to do algorithmic stippling. The second half turns the particle engine into a flocking simulation. It does so using a three-rule system first described by Craig Reynolds here. During my Eyeo talk, I forgot to mention Craig Reynolds seminal contribution to the field of flocking simulation and only referenced Ian Couzin’s work (discussed here at a Radiolab webcast).

Also, take a peek at a post I wrote last year. Much of what is mentioned there is still relevant.

Hope this helps!

Form + Code

Monday, October 4th, 2010

The awesomely talented UCLA duo of Casey Reas (1/2 of Processing and come on, he has a 4 letter .com url. This guy is on the ball!), Chandler McWilliams (of The Barbarian Group and general art/philosophy brilliance), and the design/interactive shop LUST have teamed up to create a beautiful and expansive compendium of computational aesthetics. The book, entitled ‘Form + Code’, published by the Princeton Architectural Press, features an impressive collection of work. It is a must have for anyone finding themselves at the crossroads of art and technology. Not only is the book beautifully designed, but it is equally beautifully curated.

The book begins with a brief history of code and then showcases specific examples through the categories of repetition, transformation, parameterization, visualization and stimulation. You will likely see many examples that you recognize and hopefully, just as many which are new to you. I was happy to see ‘The Visual Thesaurus’ because it was the first website which made me see the artistic potential of code despite it being more of a reference site than an art site.

The Form + Code website is a good place to start. You can see some spreads from the book, list of contributors, and a bunch of code examples (written in Processing)… pretty much everything you need to get inspired. Also, check out the more thorough review by Rhizome.org.

The book is available from Amazon.com.

Juxtapoz Magazine

Friday, June 25th, 2010

A few weeks ago, I sat down with Alexander Tarrant and Colin Sebestyen at GAFFTA. We talked about art, scandal, nudity, succulents, magnets, clouds and Snoop Dogg. We finished up our conversation a few days later, joined by Justin Metros, over a bottle of Napa red and some beers at Hotel Bîron in Hayes Valley.

And somehow, through the alcohol haze, they managed to put together a really nice interview for Juxtapoz Magazine that spans 12 glossy pages. So to them, I say Thank You.

Check it out at your local purveyor of the magazine arts. Issue 114, the July issue, featuring a cover by Os Gêmeos.

A Single Step

Wednesday, December 30th, 2009

As I mentioned in the previous post, I have a hard time getting started. Much like I have a hard time committing to doing laundry. Or cooking dinner. I think about all the steps needed to successfully wash clothes or cook a 3-course meal and I get all flustered and the lazy gene kicks in. But if I stop thinking about all the necessary steps and just focus on the next logical step, the chore seems to finish itself.

I suffer in the same way with coding. I’ll think, “I really want to make a robust environment complete with weather systems and night-day cycles and wind and trees and grass and clouds and bugs and birds and valleys and…” and before I even have a chance to get started, I overwhelm myself with all that needs to be done.

(note: Any code you see will likely be pseudocode based on bits from Cinder, Processing, OpenGL, GLSL, and whatever else might strike my fancy. These posts aren’t meant to be source-code repositories. I want to talk more about my process and not my actual code. There are much smarter people out there that can explain how to code. I’d rather talk about why I code).

Vec3f point = Vec3f( 0.0f, 0.0f, 0.0f );

What could be simpler than a single point? It is a location in space. A single x, y, and z position. It helps to ground me in the void. It is something to look at. By creating a point, I am giving myself an anchor. It becomes the focus of my attention. Something infinitely small in a space that is infinitely large.

There is definitely something compelling about the single point in a void. It is a perfect representation of duality. The void represents the infinite, an expanse which has no end. The point represents the finite, a location which has no dimension. What better place to start?

I have been referring to the void as black and the point as white. I do this because of the obvious correlation to outer space. We know the universe to be mostly empty space which to our eyes comes across as black. It is generally devoid of any light. In programming, we show this by setting the red, green, and blue components to zero. I think of a point as being like a star in space. To our eyes, it is a pinpoint of white which is represented with red, green and blue values of one.

Next up: Giving this point some personality.

In the beginning…

Tuesday, December 29th, 2009

Void

This is how all my projects begin.

There is no red, green or blue. A complete absence of content or meaning. Anything can exist there. Any form. All possible worlds. But for now, it is the computational equivalent of nothingness.

Darkness within darkness. The gate to all mystery.

When I decided to attend art school, I was going to major in painting. I had a decent technique. I knew what paints to buy. I knew which brushes would last the longest. I would buy a large canvas, prep it with gesso, and then just sit and stare. Making that first mark was hard for me. I envied those that were able to just dive right in, seeming to know exactly where they wanted to end up. I was not like them. I wanted to plan it all out in my head before starting. As a result, I wasn’t a very good painter.

It is like the eternal void: filled with infinite possibilities.

My hesitance stems from not knowing what I want to create. When I start a new project, I occasionally have an idea in mind but far more often I simply want to create something new. I want to start down a path. I do not know where I want to go but I know that I want to go somewhere.

A good traveler has no fixed plans
and is not intent upon arriving.
A good artist lets his intuition
lead him wherever it wants.

All I need to do is place brush to canvas. The simple act of starting is enough. I need not know where I want to go. By simply going, regardless of which direction I choose, I will be well on my way. Even if I do not yet know where that destination lies.

A journey of a thousand li begins with a single step.

Next up: Taking that first step.

The quotes in this post are from the Tao Te Ching, as interpreted by either Stephen Mitchell or Jane English and Gia-fu Feng.

You have been warned

Monday, December 28th, 2009

I have been maintaining this blog since July 2005. Sometimes I post frequently, as often as once per day. Usually the frequency is closer to once per month. However, in that month there are usually several posts that were partially written and abandoned because I felt I wasn’t offering anything new. At some point I inevitably start to think, “Everyone knows this stuff so why bother writing it out.” It’s like I’m writing to tell you all that bacon tastes really good. Everyone knows that bacon tastes really good so what is the use in telling you.

Many of you have a stronger grasp on coding because you studied it in school or have just been doing it a lot longer than I. Many of you have a weaker grasp on coding because you are coming at it from a different discipline and just haven’t been doing it for very long. Some of you are only interested in source code. Some of you are only interested in viewing the outcome. Some want to know my inspirations. Some want to know about the tech. Some of you want music videos and send me links to your myspace page. To appeal equally to all of you is an impossible task.

I have decided that I will start publishing more of the abandoned posts. Hopefully, you will learn a bit more about why I do what I do, instead of just reading about what I have done. What’s the harm, right? It’s not like you can leave me mean comments. I turned those off long ago.


Moving forward

Tuesday, September 15th, 2009

I wouldn’t be surprised if many of you had no idea I was a Sculpture major. Well, originally, I was a Painting major, then Illustration, then Industrial Design, before finally settling on Sculpture in the second semester of my sophomore year. I spent the next two and a half years learning how to cut wood, bend metal, blow glass, weld steel, shave plaster, cast wax. It was all very exciting to me and I loved every minute of it. Well, not EVERY minute. The sound an oxy-acetylene torch makes when it backfires is comparable to a gunshot. Oh, and did you know if someone cuts themselves on a bandsaw, you are not supposed to clean up their blood? I ended up sprinkling saw dust on the small puddle next to me because, frankly, it was off-putting.

By the time I reached my senior year in 1997, my experience with the internet was limited to poking around on AOL while I was home for Christmas. I was told by my thesis instructor that it would be a good idea for me to make a simple website so I could upload photos of my work which might make it easier to get employment or eventually, maybe even a gallery showing. I picked up a web design book, downloaded a trial copy of Flash 3, and stumbled backwards into a life making websites.

Seven and a half years ago, Benjamin Palmer (CEO of The Barbarian Group) approached me and asked if I would be interested in starting a company with him. I told him I would think about it. Benjamin was a new friend at that time. We had worked on one project together for Arnold Worldwide earlier that year and met up for coffee every now and again. Our friendship solidified on the afternoon of September 11th, 2001. At that time, I pretty much lived in the shadow of the John Hancock tower in Boston. When it was reported that a couple planes were still unaccounted for, worries began to spread that the Hancock tower might be on the list. Benjamin called me and told me to come over to his place where a few people were gathered to watch the story unfold on the news. We have been close ever since.

The next day, another close friend, Keith Butters (ECD of The Barbarian Group), mentioned that he was thinking about Benjamin’s proposal to start a company. Keith and I worked together at Circle Interactive a couple years earlier. I slaved away over squeezing 100k worth of content into a 12k animated GIF banner ad, and Keith was at the next desk slavishly cropping the shadows out of hundreds of photos of watches and pens. We certainly paid our dues and through the drudgery, we became close friends. I trust his judgement so when he said he was going to accept, I called up Benjamin and said I would accept too.

We met up in Benjamin’s apartment in Roxbury and began to formulate a plan. It was there that I formally met Rick Webb (COO of The Barbarian Group). I had known Rick but only in passing. We both worked at Arnold at the same time, but didn’t have any direct interaction with each other. He impressed me right away. Im still amazed that someone with so many friends and social obligations can find the time to be so very well read. Rick can speak intelligently about almost any subject under the sun.

And so it began. Our first job was for Nike (through Wieden + Kennedy). Our second, Volkswagen (through Arnold Worldwide). Not too shabby for a start-up working out of Benjamin’s apartment. Ever since then, its been success after success. We received a ton of press, a ton of awards, and never had to go searching for clients.

And as we grew, those memories of art school and outside interests began to feature more heavily during my day dreams. I was becoming less and less interested in the work I was helping to create for clients. A pivotal moment came in 2006 when The Barbarian Group was asked to work on an installation projection for NextFest (with Goodby Silverstein & Partners for their client, Saturn). To date, this has been the most rewarding work experience I have been a part of. Sure, the deadline was short and the pay wasn’t exactly commensurate, but the final piece was exceptional.

I was hooked. This is what I want to do. I want to work on installation projects that require human interaction and feature millions of tri-color LEDS and proximity sensors and mirrors and robots… yeah! Then the reality of the situation started to sink in. Those jobs go to either 1) companies like UVA or rAndom international or Second Story who have a ton of experience in this field (which The Barbarian Group has been trying to become, but it’s hard to expand your capabilities in a down economy), or to 2) freelance specialists who can help out the previously mentioned companies.

And this brings me to my decision to leave The Barbarian Group. Over the last couple years, we have received numerous requests to work on installation oriented projects. Sadly, these clients were not interested in hiring a whole company. Rick Webb phrased the problem very eloquently:

The work that Robert does holds vast potential. And we’ve spent a lot of time and effort trying to sell it and turn it into some profitable work. We’ve had some success through the years, but it’s also been a frustrating process. The clients that want what Robert offers often want just that – Robert. And many of these clients are agencies that aren’t super psyched to hire the whole of The Barbarian Group. Many other of these potential clients are arts collectives, experimental endeavors, collaboration and low-budget, high art affairs that Robert would love to pursue, but often is unable to, due to the fact that he is working to contribute to the company as a whole, and these people cannot afford The Barbarian Group.

So what now? That is an exciting question. The amount of interest I have gotten in the two weeks since my departure has been quite heartening. However, I won’t be leaping right into freelance projects. I have a couple gallery pieces that I will be working on to be elaborated upon in my next post. Also, Bill Lindmeier and I are putting the finishing touches on an iPhone app that we hope to submit in the next two weeks.

In the end, I am extremely grateful to all the Barbarians for their support and friendship over the years. Especially the Barbarian partners who graciously extended me the freedom to pursue less traditional (and often less profitable) work. I cannot imagine a better way to have spent the last seven years of my professional life. Thank you.

It almost feels like I am a teenager again about to leave home to attend RISD. Im nervous, anxious, and extremely hopeful. Lets just hope there are fewer bandsaws out there.

Wine Notes and Box Clock

Tuesday, September 1st, 2009

Friend and cohort, Bill Lindmeier, has gotten approval from Apple for his AppStore debut. Called Wine Notes, this app will help keep tabs on the wines you try or want to try. Its a very well made app with some beautifully implemented features. Check out the demo videos.

Oh, and not to be overlooked, check out BoxClock by David Wicks. It is an implementation of Box2D but it also functions as a clock if you so desire. Read about it here and play with the Flash version.

Congratulations to them both!

Augmented a webcam

Friday, March 13th, 2009

No, not that ARToolKit stuff. You wont be manhandling fiducial markers with this one. Read all about it on the Barbarian Group blog.

Here is a sample video.


Augmented webcam study from flight404 on Vimeo.

iPhoning

Monday, January 19th, 2009

Been a while since I last posted. I decided to shift gears a bit thanks to Keith Peters and his iPhone tutorial. I have always wanted to get into iPhone development but the weirdness of Objective C scared me away twice before. Luckily, Keith’s easy to follow 5 step blog post helped me to get my foot in the door and Objective C for the Mac helped me to push the rest of my body through.

It is still a mess of a language to come to from Java but I am starting to like some of the nuances. Hopefully in a few days I can have something to show but for now, its all just a basic sketch. I have ported over the Particle Source I posted a while ago. The framerate suffers a lot, for sure, but OpenGLES is robust enough for me to do most of what I need to do. Once I get a better idea of how to offload the heavy lifting to straight C, I think I can squeeze a few extra FPS out of the application.

Not sure where I am going with it in the long run. The only goal I had up front is to get more familiar with the iPhone development process. In a perfect world, I would be able to make a nice audio visualizer for songs being played in iPhone but as far as I can tell, it is not possible for me to analyze music coming out of the iTunes application. All I have right now is particle emitters that correspond with the multitouch screen. They are loaded pngs. I am using blending modes to get the glow. I have also connected the particles to the emitters with stroke tethers.

I will post screengrabs and video once I get to a place that makes me happy. And in a small handful of weeks, App Store here I come!