loading

Archive for October, 2006

thinking on digital tools

Early love of Mac and Nintendo

Mac System 6 on Nintendo DS



The Macintosh System 6 - remember? The revolution on grafical operationg system now runs on the Nintendo DS. It seems to be a little bit slow, but the author Lazyone says:

“It is running a little slower than normal because it’s being run in a DS emulator but currently it runs between 13-25fps on hardware and theres loads of room for improvement. It’s not exactly speedy emulation due to the lack of optimization at this point, but it’s faster than I thought it would be.”



Daniel

Alien vs. Predator

Alien vs. Predator

This is a quick visualization of data from the netflix prize. A vertical bar is drawn for every customer rating a movie. Ratings go from 1 to 5 stars (represented top to bottom.) Note how “Alien” (on the left) received many ratings of 4 and 5 stars, but “Predator” (on the right) mostly received ratings of 4 stars. This depicts approximately 50,000 customer ratings.

watz

Code: ImageStitcher.pde

I know I mentioned putting together a image tiling Processing library, but so far I haven't had time. To start at the wrong end, here's the image stitching code for putting together the tiles once they've been generated. Hopefully that will be of use to some people.

Note that you might run into memory problems if you use huge tiles. Processing 0119 has a new "Set maximum memory" preference that easily takes care of this problem (see File > Preferences).

See the Processing forums for some sample code creating tiles, posted by user "surelyyoujest".

Source code - ImageStitcher.pde

// ImageStitcher.pde
// Marius Watz - http://workshop.evolutionzone.com
//
// Takes a folder of tile images and puts it together in one
// big image. Just place a folder in the your sketch folder,
// and change the file prefix and suffix in the code below.
 
 
// Change these according to your needs
// The folder should be in the base of your sketch 
// (not the data folder)
String fileFolder="test";
String filePrefix="Kugel_";
String fileSuffix="png";
 
PImage tmp,big;
boolean done=false;
int resx,resy,tiledim,loadcnt=0;
String filename;
 
long start=-1,elapsed,remain;
float fract;
 
void setup() {
  size(300,300);
}
 
public void draw() {
  if(!done) stitch();
}
 
// Does the actual job
public void stitch() {
 
  println("ImageStitcher…"+
  "——————————————");
  filename=filePrefix+" tiled."+fileSuffix;
  fileFolder=savePath(fileFolder);
  println("Folder: "+fileFolder);
  println("Output: "+filename);
 
  // Find all files that match the prefix and suffix
  FilenameFilter filter=
    new TileNameFilter(filePrefix,fileSuffix);
  String [] files=new File(fileFolder).list();
 
  // Assuming an equal number of tiles in X and Y directions,
  // get the square root to get tile dimensions
  tiledim=(int)sqrt(files.length);
 
  filename=filePrefix+nf(loadcnt,2)+"."+fileSuffix;
  load(filename);
  int idx,idy;

  for(int i=0; i<tiledim*tiledim; i++) {
	filename=filePrefix+nf(loadcnt,2)+"."+fileSuffix;
	if(i>0) load(filename);

	idx=(i%tiledim);
	idy=(i/tiledim);
	big.set(idx*resx,idy*resy, tmp);
  }
 
  long savestart=millis();

  filename=filePrefix+" tiled."+fileSuffix;
  print("nSaving "+filename+".");
  big.save(fileFolder+File.separator+filename);
  elapsed=millis()-savestart;
  println(" Done. Elapsed: "+milliStr(elapsed));
 
  elapsed=millis()-start;
  println("100% Done. Time taken: "+milliStr(elapsed)+".");
 
  done=true;
  exit();
}
 
public void load(String _file) {
  if(start==-1) start=millis();

  tmp=loadImage(fileFolder+"/"+filename);

  // If first tile, get resolution and set up big image
  if(loadcnt==0) {
    resx=tmp.width;
    resy=tmp.height;
    println("Tiles: "+tiledim+" x "+tiledim);
    println("Tile image size: "+tmp.width+" x "+tmp.height);
    println();
    big=new PImage(resx*tiledim,resy*tiledim);
  }
 
  loadcnt++;
  fract=(float)loadcnt/(tiledim*tiledim);
  print(nf((int)(fract*100),3)+"% "+filename+"");
 
  elapsed=millis()-start;
  remain=(long) (((float)elapsed/(float)loadcnt)*
    tiledim*tiledim-loadcnt);
  println(" | "+milliStr(elapsed)+" elapsed, "+
    milliStr(remain)+" remaining.");
}
 
public String milliStr(long milli) {
  int min=(int)(milli/(1000*60));
  milli-=(1000*60)*min;
  int sec=(int)(milli/1000);
  return ""+nf(min,2)+":"+nf(sec,2);
}
 
// Accepts or rejects filenames
class TileNameFilter implements FilenameFilter {
  String prefix,suffix;
 
  public TileNameFilter(String _pre,String _suff) {
    prefix=_pre;
    suffix=_suff;
  }
 
  public boolean accept(File dir,String name) {
    return (name.startsWith(prefix) &&
      name.endsWith(suffix));
  }
}
Peter Kirn

Open Source Flash for Artists: FlashDevelop Resources

Getting artists to code is always a challenge: many assume programming is a “non-artistic” way of working. But code is often the most effective way to imagine live visuals for interaction or performance, allowing you to quickly try different ideas and finely-tune visual effects. There’s been lots of buzz around Processing as a means of doing this for first-time-coder artists, but there’s a dark horse in the race for open source coding for visualists: Flash.

Building Flash art for free: coding in the FlashDevelop editor on Windows isn’t just a money-saver; it’s easier than coding in the sometimes-klunky Adobe Flash 8 IDE.

Yep, that’s right: Flash as a fully open-source tool, minus the hundreds of dollars you usually spend on the Flash app.

Thanks to open source coding tools, you can develop for Flash as the platform — even using ActionScript 3.0 and Flash 9, which are much better in terms of performance and graphics features — without ever touching the commercial Flash application. This is really terrific news for people like me, who fell in love with Flash not for what it’s known for, the timeline and layers and whatnot, but for its ability to process bitmap data and 2D drawing/animation via code. Processing definitely has the edge in 3D (Flash doesn’t have real 3D support) and mathematics performance, but Flash is still competitive when it comes to ease of drawing and 2D drawing performance, and I find Flash’s bitmap processing is easier and faster than Processing’s. Many of the cutting-edge Flash artists have become bilingual, switching between Flash and Processing. I thought this was nuts until I tried it, and then discovered that my coding in both Flash and Processing was steadily getting better, and that the strengths of each neatly overlapped the other’s weaknesses.

I’ve been working with Flash all year via the traditional Flash IDE, but now I’ve just started playing around with FlashDevelop, a Windows-only app that lets you code SWFs directly. If you’ve spent any time with the Flash app for ActionScript programming, you probably got frustrated fast. Getting rid of all those extra features you don’t need and focusing on coding is a big relief. (For me, as a non-programmer, it’s even more important to be able to focus on fast-and-easy coding without distractions.)

FlashDevelop is about as close as I’ve gotten to Processing for Flash; it’s actually easier and more powerful than the barebones editor in Processing. If you’re interested in joining me, here’s where to start:

FlashDevelop.org [Official site, in the form of a forum]

How to use ActionScript 3.0 with FlashDevelop [via FlashDevelop forums; note that you’ll also need the free Flash 9 Player from Adobe]

FlashDevelop - flashmagazine.com article, an excellent overview of the app and how to use it even for unwashed beginners

BIT-101 FlashDevelop templates

BIT-101 on customizing FlashDevelop’s toolbars (check his pretty icons at right — mmm, lickable!)

FlashDevelop on Open Source Flash

So, that covers Windows — what about other platforms? There are other options, too, including various plug-ins for the wildly-popular Eclipse IDE (Linux/Mac/Windows), which is the IDE that Adobe used as the basis of Flex. If you know of preferred alternatives for Linux and Mac, let us know.

The best place to start looking is Open Source Flash, which has an enormous guide to open source tools for working with Flash. (Warning: you could easily get lost in there for days.) Stay tuned to CDMo, because I’ll be working on some new Flash-based projects using these tools and want to keep an ongoing thread on open source Flash artmaking. , , , , , ,

Processing.org Updates

Processing (BETA) 119 released. Download here

Processing (BETA) 119 released. Download here

blog.blprnt.com - Processing

Geeks, Art & Beer: Vancouver - November 7th

EDIT: Please note the date for this has changed to November 7th.

For a few months now, I have been discussing the idea of starting a monthly meeting for people using technology in creative ways in Vancouver. I figure it's time to get that particular act in gear.

I'm loosely following the example of Dorkbot. There are chapters all around the world, and the idea is pretty much what I'm after:

…generally, the main goals of dorkbot are: to create an informal, friendly environment in which people can talk about the work they're doing and to foster discussion about that work; to help bring together people from different backgrounds who are interested in similar things; to give us all an opportunity to see the strange things our neighbors are doing with electricity. dorkbot isn't really a forum for formal artist talks or lectures, but rather a chance for diverse people to have friendly conversations about interesting ideas.

So, without further ado:

Geeks, Art & Beer

Thursday, November 7th, 7-10pm Back room, Irish Heather 

We'll get together, drink a few beers, and talk about projects that we are working on and ideas that we have. Please leave any and all corporate bullsh*&t at the door. If you'd like to join us, please e-mail me so that I can get a rough idea about numbers.

Ultimately I'd like to hold these meetings somewhere with space for informal presentations, but the first meeting will be more of a chance to get some folks together. Feel free to invite anyone who you think might be interested - particularly those who come from outside of the web world.

blog.blprnt.com - Processing

Geeks, Art & Beer: Vancouver - October 26th

For a few months now, I have been discussing the idea of starting a monthly meeting for people using technology in creative ways in Vancouver. I figure it's time to get that particular act in gear.

I'm loosely following the example of Dorkbot. There are chapters all around the world, and the idea is pretty much what I'm after:

…generally, the main goals of dorkbot are: to create an informal, friendly environment in which people can talk about the work they're doing and to foster discussion about that work; to help bring together people from different backgrounds who are interested in similar things; to give us all an opportunity to see the strange things our neighbors are doing with electricity. dorkbot isn't really a forum for formal artist talks or lectures, but rather a chance for diverse people to have friendly conversations about interesting ideas.

So, without further ado:

Geeks, Art & Beer

Thursday, October 26th, 7-10pm Back room, Irish Heather 

We'll get together, drink a few beers, and talk about projects that we are working on and ideas that we have. Please leave any and all corporate bullsh*&t at the door. If you'd like to join us, please e-mail me so that I can get a rough idea about numbers.

Ultimately I'd like to hold these meetings somewhere with space for informal presentations, but the first meeting will be more of a chance to get some folks together. Feel free to invite anyone who you think might be interested - particularly those who come from outside of the web world.

blog.blprnt.com - Processing

Dorkbot: Vancouver - October 26th

For a few months now, I have been discussing the idea of starting a monthly meeting for people using technology in creative ways in Vancouver. I figure it's time to get that particular act in gear.

I'm loosely following the example of Dorkbot. There are chapters all around the world, and the idea is pretty much what I'm after:

…generally, the main goals of dorkbot are: to create an informal, friendly environment in which people can talk about the work they're doing and to foster discussion about that work; to help bring together people from different backgrounds who are interested in similar things; to give us all an opportunity to see the strange things our neighbors are doing with electricity. dorkbot isn't really a forum for formal artist talks or lectures, but rather a chance for diverse people to have friendly conversations about interesting ideas.

So, without further ado:

Dorkbot: Vancouver Inaugural Meeting
Thursday, October 26th, 7-10pm Back room, Irish Heather 

We'll get together, drink a few beers, and talk about projects that we are working on and ideas that we have. Please leave any and all corporate bullsh*&t at the door. If you'd like to join us, please e-mail me so that I can get a rough idea about numbers.

Ultimately I'd like to hold these meetings somewhere with space for informal presentations, but the first meeting will be more of a chance to get some folks together. Feel free to invite anyone who you think might be interested - particularly those who come from outside of the web world.

Douglas Edric Stanley

Lexique de l’interactivité

Lexique de l’interactivité

Apparently, there are still fans of the Lexique de l’interactivité I wrote a little under ten years ago. Yikes! I was at the Arborescence festival when I was introduced to an interresting artist (more on her work later) who could recite my own texts back to me. The emotional effect was at once charming and creepy. It is also funny how each fan seems to attach himself or herself to a very different quote, and how it talks to each of them in very different ways — in fact in ways that have little to do with the way I currently view interactivity. Over the years I have occasionally met fans of this old text, but I had thought them long since gone. Apparently not. I also met some enthusiastic readers back in June after the 8=8 concert, so it looks indeed like my old cat just keeps coming back, no matter what I do to misplace it.

So under request, I’ve reactivated the lexique in all its embarassing glory, up on the main abstractmachine_menubar. Just look for the red cursor up on top of any abstractmachine page. I also updated the diagrams with a more appropriate icon to keep the confusion to a minimum.

I should also point out that all the interactive illustrations run in Shockwave which makes things a little complicated if you’re on a MacIntel like me. There are work-arounds explained on the opening page. The annoying thing is that you have to choose between the newer Processing-based diagrams or these older Director-based ones, requiring a brower restart to switch over from one to the other (I actually just keep two browsers open). Although this is rediculous, I find it almost poetically indicative of the state of Director as a development platform, especially when an open-source equivalent has been available for MacIntels for several months, indeed almost from the moment the machines were available.

watz

Code: saveStringsGZIP

This is a simple variant to the built-in saveStrings() method in Processing. It allows you to write strings to a GZIP compressed file instead of a plain text file. Very useful when writing text-based data files that add up to a few megabytes.

Source code - saveStringsGZIP.pde

// saveStringsGZIP.pde
// Marius Watz - http://workshop.evolutionzone.com
//
// Code for saving an array of strings to a GZIP compressed file.
// Based on Processing's built-in saveStrings() method.
 
// Java classes needed for file I/O.
import java.io.*;
import java.util.zip.GZIPOutputStream;
 
void setup() {
  String [] s=new String[2000];
  for(int i=0; i<s.length; i++) s[i]=nf(i,50);
  saveStringsGZIP("test.txt",s);
}
 
// Based on code from processing.core.PApplet, by the Processing team.
public void saveStringsGZIP(String filename, String strings[]) {
  try {
    String location = savePath(filename+".gz");
    GZIPOutputStream fos =
      new GZIPOutputStream(new FileOutputStream(location));
    PrintWriter writer =
      new PrintWriter(new OutputStreamWriter(fos));
    for (int i = 0; i < strings.length; i++)
      if(strings[i]!=null) writer.println(strings[i]);
    writer.flush();
    fos.close();
  } catch (IOException e) {
    e.printStackTrace();
    throw new RuntimeException("saveStringsGZIP() failed: "
      + e.getMessage());
  }
}
Jaymis

New Processing Libraries Added: Vector3D, xmlrpclib, 2 GUIs and ID3

Some more Processing updates for the faithful. Five new libraries have been added.

Vector3D, which is part of Daniel Shiffman’s “The Nature Of Code” course.

public class Vector3D extends java.lang.Object: A class to describe a two or three dimensional vector.

To animate an object in a virtual space, we need a way of storing information about the object’s location, movement, etc. In a two dimensional space (such as our computer screen), a location is expressed as an x and y coordinate. This pairing of two pieces of information is the essential building block for the systems we will create. We will have both “Points” and “Vectors”. A point represents a location and a vector represents the displacement between two points.

More details and examples in the Nature of Code.

XMLRPCLib, for hooking into web service APIs.

Currently many web services have application programming interfaces (API) that work through the XML-RPC protocol. By using the XmlrpcClient in Processing, you can incorporate the available data and processes of these web services in your program. By using the XmlrpcServer in Processing, you can open up the methods of your program as an interface to other programs over the Internet.

Wordpress uses XML-RPC… Mister Editor Sir? If I write a postbot does that mean I can take another holiday?

Interfascia is a GUI library:

Interfascia is a graphical user interface library for the Processing graphics programming environment. It provides a toolkit of standard interface widgets like text fields, buttons, checkboxes, sliders, etc. Interfascia automatically handles interactions within the collection of widgets and sends event messages to your project.

SpringGUI is another GUI library:

SpringGUI is a GUI manager that allows you to create user interface elements in your Processing applications and respond to events that they send to your programs whenever your user does his user-things. In terms of Java, SpringGUI wraps around the java.awt Components, and it comes in two flavours: a beginner mode that gives your program the information it needs about events, and an advanced mode that provides access to the underlying awt classes if you find that you need it.

ID3 allows you to read ID3v1.1 tags from MP3 files. So now I can finally make the plotter write out a realtime list of the music I’m listening to and kick the shackles of Audioscrobbler.

Alongside all of this exciting new code, the Processing Exhibition has a new addition in the form of Blinks and Buttons, which appeared on Pixelsumo recently.

The object itself is made of laser-cut acrylic. The button was deliberately chosen and taken from a Agfamatic 901 and is combined with an electronic button underneath. This in turn is connected to a SonyEricsson K750i which is running a custom software written in Mobile Processing. For retrieving others photos, the device connects to the internet and contacts the same server as Blinks. This server’s custom PHP-script will continously search Flickr for the indicated moment while Buttons regularily asks for results. As soon as a photo of the moment has been shared on the web, it is transmitted and displayed on the device’s screen.

, , , , , , ,

RobotAcid

TLDR…

…which is shorthand I hear for Too Long Didn’t Read. Which just about describes my AStar first attempts and my attitude to the tutorials. I actually managed to put together some nice Best First Search routines though. So I combined my stuff with Tom Carden’s and got a new library.

AStar

Unfortuanately my Snake Charmer project didn’t work out in hyper space like I was planning. It’s a nice rehash of the old one though.

Like a new tv channel thru one’s browser.
A nice illustration magazine.
Toast art.
Mr City Men.
Some nice fine art.

Douglas Edric Stanley

Image-oriented objects

Busy day in Aix today. I started my new class integrating Processing, Arduino, and Wiring, while all around us rigs were going up for Arborescence. But by far the most interresting was the concert Servovalve gave this afternoon. Amazing, as always. I’m not sure what the students thought of it, although several seemed quite pleased. Whatever the case, starting this year Gregory Pignot (the instigator of the Servovalve brand) will be teaching part time at the school, working with the Atelier Photographie on finally integrating new media into the photography curriculum. I know some of his previous art-direction work which is quite subtle, very « efficace » as they say here. An excellent choice for mixing up photography, computation, interactivity, etc, if you ask me.

So now we have Servovalve, France Cadet, Peter Sinclair, Jérôme Joy, Louis-Philippe Demers teaching here, amongst others, along with all the invited artists for workshops. Um… er… uh… why don’t we have more new media students beating down the doors? Has anyone noticed the tuition fees cost almost nothing (~300 euros!) ? Did I mention the weather?

I also went to go hang out with the very first Atelier Hypermedia student, in fact the one who helped me put it all together, Guillaume Stagnaro. He was preparing his installation for Arborescence with Julien Hô Kim (already mentioned in yeasterday’s post) — their collaboration looks great. Typical geek moment when the two of us get together, Guillaume showed off his Arduino circuitboards — apparently he’s a total Arduino freak with a dozen of them already at work in several installations, including his first non-computer installation (yeah!) at the state museum exhibit that just finished in Pernambuc, Brazil. I’m totally thrilled about this change of direction in his work. And I’m glad to have a local expert for Arduino tips.

Update: I forgot to mention that Guillaume recently built an FTP library for Processing. We decided to put it up on the Hypermedia Processing Libraries page once he cleans it up. On t’attend Guillaume!

For the students that missed this morning’s presentation, here are a few of the links we looked at for inspiration — not all of it Processing based, although most was: Shadow Monsters (guilty pleasure — I love it), Wooden Mirror, Buttons, We Feel Fine (cf. Benjamin Walker’s Theory of Everything show on « We Feel Fine »), The Manual Input Sessions, Messa di voci, Natalie Jeremijenko, Generator.x, Code & Form, Daniel Shiffman’s blog, Makezine, Beatriz da Costa (Preemptive Media, Pigeon Blog, etc). There were others, but I’ll stop there.

We also looked at a Processing<>Wiring system I quickly put together with the Wiring board. I should also suggest their excellent tutorials, that explain even the simplest of designs such as how to correctly connect a switch : Learning Wiring.

We also debated John Maeda’s Nature exhibit at the Fondation Cartier, which many of the students saw, most hated, and even mentioned gived digital arts a bad name (« ça donne pas envie »). To their suprise, I couldn’t have agreed more. That from such a brilliant artist (come on, accept it, he’s shifted everything for coding|artists) we could have such an amateur presentation (next time he should do it himself) in such an important, high-profile exhibition … I’ll just stop here because I’ll probably get hate-mail. But for the students who didn’t believe me that Maeda can do some interresting exhibits, might I suggest they check out the list of works from his Post Digital exhibit for example, or read through his books which are all at the Centre de documentation, by the way. That should give you all some reading materials until class next Thursday where we’ll start by throwing messy lines around the screen with the mouse.

Processing.org Updates

Five new libraries posted! Introducing Vector3D from Dan Shiffman, xmlrpclib from Burak Arikan, Interfascia from Brendan Berg, SpringGUI from Philipp Seifried, and ID3 from Jorge Cardoso. This brings the total number of community contributed libraries up t

Five new libraries posted! Introducing Vector3D from Dan Shiffman, xmlrpclib from Burak Arikan, Interfascia from Brendan Berg, SpringGUI from Philipp Seifried, and ID3 from Jorge Cardoso. This brings the total number of community contributed libraries up to forty for a total of forty-seven Processing libraries.