Week 151

Crowded: Episode 1 is finally released! Subscribe to the podcast now!  Episode 2 is currently being edited on MinimumNoise and should be along shortly.  I also started collecting audio for Episode 3, but I have been having so many problems with PubClip (which I am using to gather the audio from the MT workers) that I am thinking that I have to change to a custom solution.  None of the problems are the fault of PubClip – I am just using it in a way that they probably didn’t intend.  The audio quality is horrible.  I have been getting some complaints from the wonderful audio professionals at MinimumNoise (where I am crowdsourcing the editing of the show) saying that they can’t do anything with such low-quality audio.  I looked at Skype as a possible solution and signed up for a voicemail plan, but for various reasons this didn’t work out.  Then, after spending four hours trying to get Red5 – a media server for Flash that would allow me to create a little Flash recording tool – running on my server, I gave up and realizes that I knew the answer all the time.  When in doubt, crowdsource.  Rent-a-coder, I hope you come through on this one.

TV of Tomorrow is finally over.  Overall, the experience was okay.  We didn’t meet anyone who was interested in our project, and the entire festival (our presentation included) was plagued with technical difficulties leading to extremely poor image quality from the projectors.

I was very excited to find out yesterday that I was accepted to the Minneapolis Art On Wheels residency program.  So from May 17th to June 6th, I will be up in The City of Lakes (? – no good nicknames).  Phun Phact:  Minnesota is known on its license plates as the “Land of 10,000 Lakes,” but Minnesota actually has 12,000 lakes.  Unfortunately, class at Bennington doesn’t end until May 24 — not sure how this one got by me, but I will make it work somehow.

Immediately before that, from May 14th-16th, I will be traveling to my home town, Baltimore, to the Megalopolis Audio Festival.  I will be presenting Crowded.

The torch video is kind of crashing and burning at the moment.  We got a few good contributions from some awesome people out there (post one and post two), but unfortunately it just wasn’t enough.  We are thinking about scrapping the whole idea and using clips from famous “running” scenes in movies instead of the crowdsourced videos.  Shame.

Posted in Weeknotes | Leave a comment

More Torch Videos

Some more torch videos from the great Patrick Lichty.
Read More »

Posted in Projects | Leave a comment

Torch Videos

We are still collecting videos for our torch relay for the Mixer Olympiad, but we’ve made it easier to get involved.  You no longer need to print out anything.  Just make a video of yourself carrying something vaguely torch-like and submit it using this form, or email it to me (info on the ‘contact’ page).  It’s going to be awesome, so send in your stuff soon!

Read More »

Posted in Projects | Leave a comment

Jeffish Classics

I realized this morning that I have made 3 “cover” songs recently. Maybe I should go for a whole album?


What a Fool Believes. Space-age Instrumental

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

You are the Sunshine of my Life. Duet by Robot Alan and Robot Mary

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Staying Alive, by Robot Barry Gibb

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Posted in Jeffish | Leave a comment

Week 149

I realized that I never explained the new version of Earthify that uses Google Maps.  In this version, rather than having to install Google Earth and all of that crap, you can just use it right in your browser.  It still scrapes Craigslist and plots the posts for geographical consumption.  It is now also AJAX-ified, meaning that you don’t have to wait until my poor server loads and scrapes every page.  It plots them one at a time so you can look at the results while it is working.  I feel like the Ted Nelson of the Craiglist mashup world.  Will my creation never be fully appreciated like HousingMaps was?

I started what will eventually be a private YouTube at tv.urbart.com using PandaStream.  This site is currently just PHP and JavaScript.  There is now a fully-javascript Panda example where the Rails Pandastream github used to be.  Feel free to upload a video!  And for all 4 of you reading this, if you want to be part of it when I eventually password protect it, please email me and let me know.

This week was the first Web as Platform class at Bennington, where I am the computing faculty.  I realized at some point in planning that I couldn’t do both PHP and JavaScript in one term.  Although I think that JavaScript has more long-term usefulness than PHP, and is a much cooler language in general, after some serious thinking, I decided on going with PHP.  I couldn’t figure out an easy enough way of getting around the database problem.  I looked at a few solutions, like CouchDB, which is seriously cool, but

I also signed up for Dropbox, which seems very cool, but I haven’t really used it yet.

I’ve decided that I am going to make an openFrameworks addon for the Echonest API for my Laborers of Love project. What is Echonest?

  1. An API that powers great recommendations for your users by understanding every song, review and news article on your music site.
  2. Upload any song and receive an XML ‘musical score’ detailing tempo, beats, time signature, song sections, timbre, key, and other musical attributes.
  3. Your users want more than a static artist page. Connect them to everything on the web and become their first source for all things music.

It’s feature #2 that is particularly interesting to me and I think it will make a nice little OF addon.  Unless someone has already done it…  I haven’t looked into it yet.

At the end of the month, I will be going to Troy to give some talks at RPI as part of a collaboration with the Experimental Media and Performing Arts Center (EMPAC) that sits on RPI’s campus.  The talks are 2 hours long!  One at an animation class, and one at a web design class, I think.  I will be talking about mostly my installations, and getting into some of the technical stuff behind what makes them work.

As I type, I am sitting in JFK, waiting for my delayed flight to San Francisco for the TV of Tomorrow conference.  This week, Aaron and I have been working on our presentation for the conference, but with all of the other stuff going on, we didn’t get very far, and we are going to have to do the bulk of the work in SF.

I am pretty much done gathering material for Episode 2 of Crowded, and Episode 1 is also dangerously close to being released.  It’s about fucking time!

As part of the Mixer:Olympiad, we have been collecting videos of people carrying the “torch”.  From the site:

Eyebeam is running a torch relay as part of opening ceremony for MIXER: OLYMPIAD, and we want you to carry the torch for a leg of it!

To be exact, we want you to download the PDF file attached below and print it out with a color printer, attach it to something torch-like (a stick, handle, pole), and make a video of yourself running with it. If you don’t have a color printer, try to get something close to the same color. Your video should be no longer than 1 minute. The video should start with you entering the frame from the left, and end with you handing off the torch to an unseen person out of the frame to the right. This is important because we will edit the videos together so that the relay (handing off the torch) looks more or less continuous. But beyond that, it’s pretty much up to you what you do.

If you want to be part of the video, you can either submit it using this form, or find the task at Mechanical Turk and get paid for it!

I applied for MAW residency with a new idea that I am pretty excited about, and started on Harvestworks New Works application. The pressure is on to find something to do after Eyebeam, so wish me luck!

Finally, I started playing with MIDI in Ableton Live, which is tons of fun.  Look forward to some Hall & Oates remixes soon.

This will make you LOL.

In non-geeky news, I also made it back to Topman this week to buy some clothes for my SF trip, and it is really a great store.  The clothes there just fit so much better than any other comparably priced stuff in other stores.  Highly recommended.

Posted in Weeknotes | Leave a comment

Web as Platform

Syllabus: http://prof.crouse.cc/web_as_platform

Spring 2010: http://prof.crouse.cc/web_as_platform/spring_2010

Google’s announcement of the Chrome OS provided a definite time line for what has been on the horizon for some time: web-based personal computing. With this radical change in the way we think about personal computing, languages once thought of as too rudimentary for “serious” application programming (namely JavaScript) are becoming more important. This class will look at the nuts and bolts of Web Application Development, including HTML, CSS, JavaScript, and PHP, as well as the implications of viewing the web as a platform. We will look at the current landscape of web apps and services, including Mechanical Turk, Amazon S3, Facebook, and Google Maps, and learn to use these services in our own work. We will cover many popular libraries, such as JQuery, Blueprint CSS, and the Google Web Toolkit and App Engine. This class is for students who wish to learn the basics of how to make functional web applications. The class will start with a 2 week HTML/CSS intensive review, so students with no HTML/CSS experience should expect some extra work.

Posted in Classes | Tagged , , , , , | 1 Comment

openCV planar object detection

Tonight I was playing around with some code that I found in this thread about natural marker AR made with SURF. It’s pretty neat stuff. This is building on some other stuff that I wrote just to do tempalte matching using a class I made: cvSURFImage. (cvSURFImage.h cvSURFImage.cpp)

Most of this stuff comes from the find_obj.cpp file that comes as an example with OpenCV.  But now I am digging into the locatePlanarObject() stuff that yaya from the openFrameworks forum wrote that uses cvFindHomography().  The idea is that the red square represents the plane that the identified object lies on.  But I can’t seem to stabilize the red square.

Posted in Ideas | Leave a comment

Gary Is Coming

Gary is Coming

Posted in News | Leave a comment

request for videos

We are running a torch relay as part of opening ceremony for Eyebeam’s MIXER: OLYMPIAD, and we want you to carry the torch for a leg of it!

To be exact, we want you to print out the attached PDF with a color printer, attach it to something torch-like (a stick, handle, pole), and make a video of yourself running with it. If you don’t have a color printer, try to get something close to the same color. Your video should be no longer than 1 minute. The video should start with you entering the frame from the left, and end with you handing off the torch to an unseen person out of the frame to the right. This is important because we will edit the videos together so that the relay (handing off the torch) looks more or less continuous. But beyond that, it’s pretty much up to you what you do. The crazier the better.

Oh, and we also need your location (latitude and longitude). We will connect all of the videos together, superimpose animated GIFs of fire onto your torch, and animate the torch route onto a map of the world (think Indiana Jones). The video will culminate in a torch lighting ceremony at MIXER: OLYMPIAD on March 12.

The goal is to have some geographic diversity here, so the further you are from NY, the better. If you have any friends in far-off places that might be interested, please pass this along to them. Right now we are just looking for a head count if people who might be interested. We can provide a very small materials budget if you need it (I’m talking like $10-$20).

Of course, everyone who makes a video will be an honored guest at the MIXER: OLYMPIAD, you will receive credit on the Eyebeam website, and you will earn our gratitude. So please, pass this along. Post it on your FaceTweeter. And if you are interested in making a video, please contact me ASAP.

Posted in Events | Tagged | 1 Comment

Chipmunk and openFrameworks

Chipmunk is a great physics engine for use with openFrameworks because it isn’t weighed down with any graphics support.  The documentation is pretty sparse, but I am starting on a little wrapper working and incorporated the ofxDelaunay addon by plong0.  There are still a lot of things missing, like springs and joints and stuff.  But I wanted to post this in case anyone else is interested in the code.  Here is what the wrapper class, ofxCPBody looks like.

#ifndef _OFX_CP_BODY
#define _OFX_CP_BODY

#include "chipmunk.h"
#include "ofxDelaunay.h"
#include "ofxVectorMath.h"

class ofxCpBody {
public:
	cpBody *body;
	vector<cpShape*> shapes;
	cpSpace *space; // Holds our Space object

	ofxCpBody(cpSpace* _space, bool inSpace=true, double mass=INFINITY, double inertia=INFINITY);
	~ofxCpBody();

	void removeFromSpace();
	int addCircle(int radius, int xoffset, int yoffset, int collision_type=1, bool isStatic=false, double friction=0.5, double elacticity=0.5);
	int addPoly(int nverts, ofPoint* points, int xoffset, int yoffset, int collision_type=1, bool isStatic=false, double friction=0.5, double elacticity=0.5);
	int* addTriangulatedPoly(vector<ofPoint> points, int xoffset, int yoffset, int collision_type=1, bool isStatic=false, double friction=0.5, double elacticity=0.5);
	double flipy(double y);
	int addShape(cpShape* shape);
	void setPosition(double x, double y);
	ofPoint getPosition();
	int getx();
	int gety();
	float getRotation();

	//void cpBodyApplyImpulse(cpBody *body, cpVect j, cpVect r)
	void applyImpulse(ofxVec2f j, ofxVec2f r);

	//void cpBodyApplyForce(cpBody *body, cpVect f, cpVect r)
	void applyForce(ofxVec2f f, ofxVec2f r);
	virtual void draw();
};

#endif
Posted in Ideas | 1 Comment