ITP Archives

August 17, 2007

Material Connexion

Thanks to everyone who came out tonight to the closing party of the Interactive Youth exhibition at Material Connexion. I'd also like to thank everyone at Material Connexion, who hosted a great event, especially the outstanding Ben Rosenthal, Project Manager for Public Programs.

Also, in from the archives is a link from back in May from the Popular Science How 2.0 Blog about the ORB at Maker Faire.

July 11, 2007

Material Connexion: Interactive Youth

Material Connexion, New York has installed an exhibition entitled Interactive Youth which is an assortment of work from Michael DelGaudio, Anne Hong, Andrew Schneider, and my father and me, including Storyteller, Sasu Bracelets and Ochie's Cube, Solar Bikini, The Alphabet Machine, Mutherboards, City Streets, Northern Lights, and The ORB.

The exhibition was just blogged by the industrial design site Core77, and yesterday I took some photos, a few of which are posted below.

The exhibition will be on display through Aug. 3, 2007. Material Connexion is located at 127 W. 25th St., NYC. Many thanks to Ben Rosenthal @ MC for all of his hard work in making this exhibition a reality.

May 8, 2007

One final ITP all nighter

Just for old times' sake...

May 7, 2007

Full circle

Come to the edge, he said.
They said: We are afraid.
Come to the edge, he said.
They came.
He pushed them and they flew.
-Guillaume Apollinaire

Tisch School of the Arts Dean Mary Schmidt Campbell closes the ITP class of 2007 along with the rest of the TSOA graduates at Madison Square Garden with the same words used by Red to open our ITP class two years earlier. Thanks to everyone for an amazing experience. This is only the beginning, now it's on to "invent the future". See you all tomorrow at the show.

May 6, 2007

ultraORB Thesis Presentation

The presentation of the ultraORB at ITP Thesis week is now online and can be streamed here or downloaded here. I'm working now to improve the programming, moving toward displaying controlled geometric objects Tuesday and Wednesday at the ITP Spring Show.

May 3, 2007

Double spin (1/2).

Moving forward — a quick spin with one of the two boards. Now on to connect the brushes to power up the other half. More later...

May 2, 2007


The initial mockup. Time for bed.

May 1, 2007


LEDs are soldered and testing is underway. There are a few minor bugs to tweak out with the lighting and then it's on to full assembly and programming. The color balance is a bit askew, but that's an issue for another day. 48 hours to go...

April 30, 2007


Here's a view of 1/8th of the final assembly with LEDs in place. 280 LEDs to go.

Resting atop the PCB is the CNC machined aluminum board mount, holding in the foreground one of the four DC-DC stepdown converters from The board mount is topped by the three conductor commutator assembly, handmade from readily available materials and a few custom laser cut plexiglas spacers. The commutator mates with a set of brushes to deliver +15VDC, GND, and a timing signal from one of a pair of hall effect sensors mounted on the assembly rotating about the vertical axis (each quadrant of each PCB also has its own hall effect sensors to sense rotation about the horizontal axis).

April 29, 2007

ultraORB Concept Video

For those of you who haven't been following along with the in-person presentations, here's a little clip of video that was shot about a month and a half ago, showing the ultraORB concept in action. This is a demo and concept test with 4 single-color LEDs — the version due to be presented this coming week will have a total of 320 tri-color LEDs under microprocessor control to create a truly three dimensional persistence of vision display.

The final one hundred hours

Just under 100 hours to go until the first display of the ultraORB at my thesis presentation, Thursday, May 3 at 8:40pm. There is still a lot to do, but things are moving forward. 16 microcontrollers are interfacing with 128MB of onboard flash memory and my laptop through 8 dual-channel USB interfaces. Now it's on to wrapping up a few loose ends and then soldering the 320 RGB LEDs. Then on to the first spin. Stay tuned...

April 15, 2007

The view from the solder station

After a couple of days of intense soldering, the first major task is complete. The 960 0201 LEDs are all in place. It's funny, after two days of work, the boards look almost entirely the same to the naked eye. While I can barely focus on the screen to write this (seriously — now I understand what it's like to need glasses, if thankfully temporarily), the upside is that after soldering almost 1k 0201 parts, the 0402 package parts look like bricks and are easier than ever to handle. In any case, I'm here to say that it is very possible to hand solder 0201 parts. Time to go clear the head and get ready for another day of soldering tomorrow. In the meantime, here's the view from the soldering station:

April 12, 2007

Wuhan Direct

The circuit boards are here, having made the trip from the GoldPhoenix fab in Wuhan, China to Manhattan in about 36 hours. The parts are here, a day early in typical DigiKey fashion. Now it's time to start burning some flux. Before I do, though, here are a couple of quick photos from the unpacking process.

The virgin board. I have a pair of these to solder, with at a guess maybe 3-4k SMD pads each. It looks like I won't be seeing much daylight for the next week or two.

If you've ever wondered what $2k in DigiKey parts looks like, wonder no more. Not all that impressive on the surface, eh?

April 8, 2007

Forward Progress

Finally there is some positive progress to report on the latest ORB. The circuit boards have been designed and ordered (thanks, as usual, to Shane @ GoldPhoenix) and the CNC milled aluminum circuit board supports are completed and in hand. Many thanks to David Gotter (bio) and Rob Klaus of D&R Machine for their excellent work and patience in helping me through my first design for CNC fabrication. Check out David's other project, Further OPTIONS developing "innovative vehicle entry systems for wheelchair-bound individuals". D&R offers extremely capable and affordable machining services and is open for long-distance business via Internet and mail order. Contact them for your next project.

I'm also very excited to say that this piece has become a three-generation project. In addition to my collaborator and father, Ron Sears, my grandfather Jim McCoy is contributing his masterful woodworking and finishing skills to this project. Everything is in line for a beautiful piece.

This week, my biggest test thus far will begin: a massive soldering undertaking centering around 320 surface mount RGB LEDs, and a matching 960 resistors in 0201 packages. That's 0.024" x 0.012" for those of you keeping score at home. In addition, the design utilizes sixteen 80-pin PIC microcontrollers and a slew of other circuitry. If I can still focus my eyes well enough to see the audience at thesis week, I'll call it a victory. Starting later this week, when the parts and boards arrive, I'll be posting photos and possibly video of the assembly process right here on this blog.

For now though, here's a peek at one of the pair of aluminum board mounts fabricated at D&R Machine. There's much, much more to come, culminating in an initial exhibition at the ITP Thesis Week and Spring Show, on May 3 and May 8-9, respectively.

November 12, 2006


The PCBs for the 3D spherical display are in, and here's a sneak preview of the beginning stages of assembly:

As I get farther into the assembly process (the entire system will use four identical copies of this board) I will attempt to get some action photos detailing my surface mount soldering process. This is my first time soldering a .5mm pitch QFP package (the PIC18LF8722) and I was pleased to find that it wasn't bad at all. The only remaining question mark then is the 8CASON package of the 64Mbit Atmel flash memory (shown at left upside-down next to its final home). It fits an SOIC-8 footprint, but with no width to spare, and it is a leadless package, so there is no pad or lead for me to solder with my iron. I'm optimistic about soldering it with ITP's rumored hot air station, so hopefully tomorrow you will be seeing photos of at least one fully completed board and one smiling student, and maybe a hot-air soldering tutorial from a rookie's perspective.

Otherwise, all is proceeding well. Here's a preview shot of the fantastic frame and support mechanism that my father is currently crafting for the project. This photo is a few days old, and the piece is coming along great. We should be starting to put all the pieces together within the next few weeks. Stay tuned...


I should also mention that I am trying Kester 331 Water Clean flux and the matching solder for the first time and it is incredible. At the first impression at least, soldering is just as easy as with the standard 44 flux/solder that I have been using for years, but the flux residue comes off the boards with a hot water rinse almost instantly. It's far easier to clean 331 with hot water than it is to clean 44 with acetone and alcohol, and obviously much more appropriate to do so in my apartment. I highly recommend it. Of course it is still leaded solder, so don't forget to wash your hands.

November 5, 2006

PCB Tools Overview

Michael Ang and I are teaching a DriveBy at ITP on Monday the 13th about electronics without breadboards, which is to say PCB design, production, and surface mount soldering. In the meantime, I thought I'd give a quick overview of my toolchain from PCB design to production. More details to come, both at the DriveBy and on this site. But for now...

PCB Design

CadSoft Eagle (Mac version requires X11 from Apple)

The freeware version of this package lets you draw boards up to 4" x 3.2". It's a great package, with solid part libraries, and good functionality to easily add your own custom patterns. It's equally at home with surface mount or through-hole designs, and it's the tool we will focus on at the DriveBy.

There are a few quirks to the interface that take some getting used to. First, in order to act on a group defined by the Group tool, you need to right click. On the Mac, this is substituted with a command-click (Make sure 'Emulate three button mouse' is active in the X11 Preferences). So to move a group of items, group them with the Group tool, then switch to the Move tool, command-click, and you're off.

Secondly, the Copy tool oddly only works with single items. To copy a whole group, you first use the Group tool to select them, then switch to the Cut tool. Command-click (note that this doesn't cut in the sense that Windows users are used to, but actually is more like copy), and then switch to the Paste tool to lay down the copy.

The next stumbling block is getting your files exported in the right format to get PCBs manufactured. Virtually always this means Gerber files. Here is a good tutorial from SparkFun about this. For my recent project, a 3D dimensional spherical surface display (PCB shown at left), I actually used the .cam file from the tutorial to do my export. The job is still processing, so we'll see how it goes.

Panelizing Jobs

For my last few projects, I have used Gold Phoenix PCB for production, and have been very satisfied with the service. They can go down to 4 mil trace/space (for an extra fee), and also have cool extras like colored soldermask (also for an extra fee), and a good expedited service (also for an extra fee - surprise?).

The special at Gold Phoenix typically is for one board of around 1 square foot. This means that, since the free version of Eagle can't handle designs over about 3"x4", we need a way to combine multiple designs after the fact into one panel.

GerbMerge to the rescue. This is a Python app that takes the Gerber files exported from Eagle and combines them into a single design using random placement to find a near-optimal layout.

It requires mxBase 2.0.4 and SimpleParse to install. Once installed, you control it using a configuration text file, which you have to customize to the specifics of your project (filenames, number of copies of each board, etc.). There is a sample configuration file in the documentation that will help you get started. Here is mine from this last project, if it might help.

Viewing Gerbers

Finally, once your boards are designed and panelized, you will want to take one last look at your files to make sure that all is correct before sending them (and your money) off to have the PCBs fabricated. There are a number of ways to accomplish this, but my favorite of the moment is gerbv, an open source package created specifically for this task.

There is a Windows port linked from the SourceForge page, but for Mac, the easiest way to get it is through DarwinPorts. It grabbed a whole list of dependencies for me completely seamlessly. You will have to add /opt/local/bin to your path if it isn't already included, though.

When it is all installed you can run it with the files you want to see as command-line parameters, giving you a view of your output files like the one shown here.


This skips about 99% of the process of designing a board, but hopefully will be helpful in getting some tools setup and being able to start playing. Again, the DriveBy on Monday the 13th will cover this and more in more detail, so come with your questions or feel free to post them in the comments to this entry.

October 12, 2006

Censor This Post

I saw a talk this week by Ethan Zuckerman of, an organization dedicated to amplifying news feeds from the developing world into the eyes of our mainstream media.

Ethan's talk was motivational and thought provoking throughout, but I think the highlight for me was a quick story about a proxy server and a line of Javascript donated by the blogging community of Pakistan to help bloggers in India circumvent a goverment ban on URLs. From

In light of the recent blogspot ban in India, the blogging community in Pakistan would like to present as a gift to the Indian blogging community a small script that can be inserted into their websites which converts all Blogspot links into a URL utilizing the proxy servers of

Credit goes out to Adnan Siddiqui for creating this nifty javascript utility which quite simply needs to be installed on your file server and one line of code inserted into the header file of your website. Once installed all your surfers will automatically use pkblogs for all outgoing blogspot links

Download the ZIP file Pkblogs

Please consider this as a gift from Pakistan to all Indians in hope of building friends across the border

God bless the hackers.

Another highlight of the talk was the conclusion when Red asked Ethan what we might do to help the world, what issues we might take on, and he responded:

You've got to find something you're passionate about, but passionate in a way that scares you. If it doesn't scare you, you haven't found the right thing.

October 11, 2006

Read Modify Write Errors (Why the **** aren't my LED's blinking right?)

This is an issue that I have encountered on virtually every PIC-based project that I have ever worked on. Trying to do something possibly as simple as turn a series of LEDs on at a time becomes a frustrating exercise in futility. Why?

It has to do directly with how the PIC modifies an I/O port when you set a pin individually. (NOTE: this may not apply to all models of PIC hardware, but I have encountered the effect in a wide variety of PIC devices).

When the PIC sees a command such as HIGH PORTB.0 it actually must read the entire PORTB from the pins into an internal register. This happens regardless of whether or not the pin is configured as an input by the TRISB register. Then it modifies bit 0 in the register and finally writes the entire byte from the register out to the I/O port.

Doesn't sound so bad, right? Well usually it's not, unless you do something like:

In this case with an LED connected directly from the PIC pin to ground, when the PIC reads PORTB from the pins, it reads the voltage across the LED, because that is what is connected directly to the pin. Unfortunately, depending on the color and exact makeup of the LED, this voltage will be anywhere from 2-4V, because the current through the LED is limited by the PIC to around 20mA (which is a good thing unless you like the smell of burning silicon).

In the worst case, with a typical red LED connected, the pin voltage will be in the neighborhood of 2V, which is low enough to be read by the PIC as a zero at least part of the time. This leads to a situation where if you were to execute a block of code like
it's quite possible you will end up with only the LED on PORTB.2 turned on, since when the second HIGH statement is executed, pin B0 might be read as low and then get re-set to low, even though that clearly is not the intent of the code.

So what can you do? The simplest (and probably most correct) thing to do in this case is to simply add a resistor to limit the current through the LED external to the PIC. This means that the full 5V from the power supply shows up on the PIC pin, ensuring that the PIC will keep high the pins that are supposed to be high

This effect can also occur if there is a capacitive load on the pin, which can in some cases mean just excessively long wires, or a capacitor of course. The likelihood of this increases as the frequency of the signals gets higher.

This leads to another potential approach that I have used with good results (actually it's how the PIC running at 40MHz is operating with 32 channels of firmware PWM in City Streets, Northern Lights). This alternate approach is to leave all of the port pins set high (PORTB = %11111111), but to use the TRIS registers to turn the outputs on and off. In many cases, making a pin an input is effectively the same as driving it low, and this certainly works in the case of LEDs.

This means the above sequence of turning three LEDs on consecutively would look like this:
LOW TRISB.0 ' note that making TRIS low makes the pin an output,
' driving it high -- don't forget to invert your logic

The situation/solution is the same if you are coding in PICC or even PICASM. My understanding however, is that the AVR that is the core of the Arduino uses an internal shadow register that eliminates this problem, although I haven't checked it firsthand. You can also perform this function manually in the PIC by declaring a variable that acts as a stand-in for the PORT register. You then modify this and write the entire byte to the port manually, like this:
shadowB var byte
shadowB = %00000000

PORTB = shadowB
HIGH shadowB,0
PORTB = shadowB
HIGH shadowB,1
PORTB = shadowB
HIGH shadowB,2
PORTB = shadowB

Being the most complex, this is the solution I use least often. Typically I make sure my outputs are isolated with resistors and then use the TRIS method if I am doing something high speed, like PWM or capacitively loaded.

Hopefully this makes a little sense of some of those random problems that plague your breadboard from time to time.

October 4, 2006

Back to the Archives, pt. 1

This is an image I created last year in my first semester @ ITP. It started with a discussion with a friend around the question: If you could go back in time and remove one person from history, who would change things more than anyone else? He said Isaac Newton, which is a pretty difficult choice to argue against. While creating this image, however, I decided to pay tribute to one of the more unsung heroes of modern technology, the recently passed Jack Kilby, front and center holding a few examples of the early products of his work.

Kilby, who received his B.S. in Electrical Engineering from my alma mater, the University of Illinois, invented the concept and first example of the integrated circuit, that magical idea of forming many electrical devices in one block of substrate that has led to almost 50 years of unimaginable innovation. (Jack St. Clair Kilby Bio from Texas Instruments)


Marie Curie

Albert Einstein

Robert Goddard

Jack Kilby

Isaac Newton

August 26, 2006

City Streets, Northern Lights

We just launched a new website for my father and his artwork at Our work was very well received during exhibition at ITP's Spring Show and Summer Gallery and we are now seeking opportunities for sale or further exhibition of the piece. For more information, contact

April 11, 2006

Northern Lights Demo Applet

For Living Art and Nature of Code, I am working on a simulation of the Northern Lights with Anne Hong for an art piece (introduced in this post) by my father, Ron Sears. I have mocked up software using Java and the Processing libraries to start experimenting with algorithms to control the light. The applet is based upon a simulation of 32 fixed color high-output LEDs arranged on 4 PCBs that will be mounted behind a large plexiglass lens inside a frosted streetlight globe (simulated with a gaussian blur in the applet), and uses a combination of trig functions with varying relative phase to approximate the dancing effect of the Northern Lights.
The code has been developed with portability to PIC C in mind, using lookups into a 1024 point quarter-wave 8-bit rectified sine table instead of real-time trig computation in order to save processor time with the intention that the simulation can run along with interleaved 32 channel PWM control on a single PIC18F4520 running at 40MHz.

View the applet.

NIME - Performance Plan

For my Chua performance I intend to use my analog chua circuit, with an X-Y interface made of slide potentiometers along with the variable inductor I have constructed previously. On the display will be the analog oscilloscope output, possibly processed with Max/Jitter.

Sonically, I envision the performance to start out very slowly, with solo Chua starting with quiet, simple, near-sinusoidal oscillations (near-circles on the display). Gradually the sound will get slightly more chaotic but still dry, and a simple electronic beat will enter. The Chua will stay dry for awhile, but as a bit of synth is added into the beat, effects will start to be added, opening up the stereo effect and adding a bit of delay. This will gradually build to a climax, which will be full on chaotic Chua with a bass enhancer shifting material down to the lower octaves and getting a very intense rumble in addition to the chaotic top end. At an appropriate moment, this will give way to dry simple near sinusoidal Chua with beats. The beat will stop, and then the Chua wave fades away.

April 1, 2006

Google Image Writer

Spells out a phrase using the most relevant images on the web (according to Google Images). You might be amused or you might learn a little something about the culture of the web.
Try it here or
View previous queries
Digg it.

March 28, 2006

Processing in Eclipse

Processing is great as a library but the development environment leaves a bit to be desired. Features like auto-complete, real-time error detection as you type, a fully featured debugger and the like can save immense amounts of time and frustration. For this, the free, open-source Eclipse can come to the rescue. With a bit of setup, you can be on your way to the best of both worlds in no time.



  • Auto-complete
  • Error detection
  • Error correction


  • Debug Perspective
  • Breakpoint
  • Step Into/Over


  • FatJar
  • HTML Example
  • Java Version Settings


  • Repository Info
  • Share Project
  • Download Project
  • Commit (Save) / Update (Load)

March 14, 2006

Chaos -- Distributed Computing

I just released my new distributed application for chaos research for my NIME musical instrument at

Even a low res scan of suspected areas of initial interest of the 6-dimensional parameter space involves some 546875000000000 data points, so download the app and start contributing to the future of chaos in music today.

Click here for more information on the Chua project as a whole.

February 25, 2006

Music is...

Music is a number made audible.

Thanks to Gideon and Jamie for these project references for NIME.

February 22, 2006


3D life sim applet using rule based particle system to model carnivorous behavior. View the applet.

February 15, 2006

NIME - Concept Presentation

Controller for Chaotic Synthesizer and Effects

When/Why Chaos?

Original Project

Sound Design for Marisol

Simulation Applet

What's the Problem?

Portfolio Work

Chua Parameter Space (2D View)

Chua Parameter Space (3D View)


Time and/or Pitch Based

What's the Solution?

Analog or Digital?

Analog - Physical and/or Electronic Interfaces

Digital - Max, Java, Processing, C++ (VST), etc.?


Many dimensional

High expressivity, at least in a few channels

Interface Approaches

Video Sensing

Hand Recognition

2 Hands * 3 Dimensions = 6D Control

Color Recognition

Use printed patterns and/or lights to control

Sensor-based Gesture Recognition

3D, Flight-sim like interface

Existing interfaces

Any ideas?

February 7, 2006


Expanded last weeks Attraction applet into 3D. (view applet)

Finite State Machine

Pattern Generation
with Anne Hong
Double Helix based on two previous states, implemented in PIC with 5x5 LED Matrix. (simulation)

January 30, 2006

Living Art Instructions

Roll one die (if you roll a 6, then roll again)
- Take the corresponding word off the board.

Roll the other die (if you roll a 6 or the same number as you rolled before, then roll again)
- Take the corresponding word off the board. Then either put the two words back as they were, or exchange their positions.

Pass the action to the person sitting next to you.
Declare the phrase completed.

Simulating the Auroras - UCalgary Research

This work from the University of Calgary outlines a scientific approach for simulating the visuals of the Aurora Borealis. It is too computationally intense to run on PIC hardware, but the procedure can probably be simplified somewhat or else possibly it can run on an embedded PC system that talks to a PIC which controls the LED drivers. In any case the site, and particularly this Technical Report, is a good starting point and source of info about the simulation.

Simulated Aurora
Simultated images of Aurora Borealis

Recommended Reading - Chaos: Making a New Science

This book
was the beginning of my fascination with chaos theory and related topics. Not overly technical, it focuses more on history of the field and why it is relevant for the future. Definitely a recommended read.


For this week's Nature of Code assignment I am working on an applet called Attraction, a simple simulation of forces of attraction. Each type of object is attracted to objects of the other type and repelled from its own type. By clicking the mouse in the applet, you can reseed the world with a new random population.

I am considering the idea of expanding and adapting the simulation to be a visualization of genetic algorithms in action. Each being's size and attractive force would then become proportional to its fitness ratio so the user can see the evolution taking place, possibly clicking or mousing over to see details of the available solution. The forces would likely be manipulated somewhat to encourage more diversity in the breeding process. More to come...(maybe).

January 25, 2006

Living Art, Week 2

In this session (my first in the class) we discussed the definition of "generative art" and saw examples brought in from other students in the class of what they believed to be generative artists, discussing whether or not we agreed with their assessment. It was a very useful session, as I left with a much broader view of the field, encompassing many projects beyond the traditional fractals, cellular automata, and the like. As such, I decided to forego my presentation of Wolfram and Mandelbrot in favor of a quick demo of my previous work with Chua's oscillator as art form.

For the class, I hope to execute a simulation of the northern lights (Aurora Borealis) for my father's streetlamp art piece.

Aurora Borealis

Aurora Borealis

The lamp globe from my father's piece

January 24, 2006

Research a Generative Artist -- Benoit B. Mandelbrot and Stephen Wolfram

For this initial assignment I have chosen a couple of researchers who would potentially be called scientists rather than artists by many people. However, like Leonardo DaVinci or Albert Einstein, I disagree that these two categories are separate and distinct entities, but rather two ways of approaching the same goal, a deeper understanding of life and Nature. Mandelbrot in fact directly addresses this fact in his book, saying that "clearly, competing with artists is not at all a purpose of this essay," but much as in the case of Daniel Rozin, who also has said that he did not set out in the beginning with the goal of being an artist, I think Mandelbrot is an artist of the best kind, an accidental artist.

In reading about development of the generative mathematical theories upon which much of generative art is based upon, the accident seems to be the most important aspect. Dr. Edward Norton Lorenz, one of the founders of chaos theory as we know it, stumbled upon his initial discovery in the field completely by accident, noticing that rounding errors in a punch-card based computer weather simulation were causing drastically different results, countering common rationale of the day. Upon further research he realized that he had discovered the notion of the strange attractor and coined the term butterfly effect, which says that tiny, immeasurable effects in the atmosphere (such as the flap of a butterfly's wings) have the ability to cause huge changes in the future, due to the chaotic nature of the environment.
Many scientists study these systems for practical gain, attempting to predict the weather or the trends of the financial markets, but both Mandelbrot and Wolfram are fascinated, if not obsessed, with the idea of using new types of mathematics to better describe Nature for what seem to be more fundamental, purely scientific and artistic reasons. This science is science for art's sake.

What does this mean for us? Well first of all, that complex and beautiful behavior can be modeled by comparatively simple rules and programs. Wolfram posits that most of traditional mathematics is aimed at shortcutting the computational needs of simulating relatively simple behavior. Need to predict the trajectory of a ball in space, neglecting air resistance. Then you can use simple formulas or perhaps derive your own with some simple integration. As soon as things start to get interesting, however, these techniques break down and other techniques are required, usually involving more brute-force computer simulation. The interesting thing though is that often the mathematical requirements aren't that steep, but what is needed is simply more CPU time to run the same code over and over again.

Take for instance Chua's oscillator. The complex behavior shown in the pictures and in the applet is the result of the simple code below, run over and over on its own result, in a sort of feedback arrangement:

public void iterate() {
lastX = x;
lastY = y;
lastZ = z;
x = lastX + dt * (k * alpha * (lastY - lastX - f()));
y = lastY + dt * (k * lastX - lastY + lastZ);
z = lastZ + dt * (k * (-beta * lastY - gamma * lastZ));
if(x > maxX) {
maxX = x;
if(x < maxNegX) {
maxNegX = x;

public float f() {
float retval = 0f;
retval = (b * x) + (.5f * (a - b) * (abs(x+1) - abs(x-1)));
return retval;

How does the behavior arise from simple arithmetic applied over and over again to its own result? I don't know, and to my knowledge, neither does anyone else, save God or whatever name you like to call him who must have invented this whole mess. Or perhaps if you don't believe that, maybe the notion is equivalent to some simple equation running up in the sky. Who knows? As Wolfram puts it:

It seems so easy for nature to produce forms of great beauty. Yet in the past art has mostly just had to be content to imitate such forms. But now, with the discovery that simple programs can capture the essential mechanisms for all sorts of complex behavior in nature, one can imagine just sampling such programs to explore generalizations of the forms we see in nature. Traditional scientific intuition--and early computer art--might lead one to assume that simple programs would always produce pictures to simple and rigid to be of artistic interest. But looking through this book it becomes clear that even a program that may have extremely simple rules will often be able to generate picture that have striking aesthetic qualities--sometimes reminiscent of nature, but often unlike anything ever seen before.

In any case, this New Kind of Science is a fascinating artistic resource that is still mostly untapped, and the next great mistake lies waiting around each corner. Working on these types of problems from any perspective certainly feels more like an exploration of an unknown land than studying or working through mathematical proofs. I am looking forward to experimenting further with these systems both for art and understanding.

A New Kind of Science
, by Stephen Wolfram

    The Fractal Geometry of Nature
    , by Benoit B. Mandelbrot

    January 23, 2006

    Modeling Chaos with Iterative Simulation

    Chua Oscillator Applet (requires the JSyn browser plugin)
    Previous Chua Work (includes video, photos of circuit, etc.)

    Analog Chua Attractor X-Y plot of one of the Chua Attractors, created with analog circuitry

    Perhaps the first tenet of chaos theory is that complex behavior need not arise from a complex source. More specifically, systems of relatively simple differential equations, impossible to solve classically, can be iterated in software or hardware to bring to life their nuanced behavior.

    In my previous work, I used an analog circuit to solve Chua's equations, using the output as audio to act as a synthesizer for music and sound design work. I am currently investigating new interfaces for this system to make it more playable. My first vision is to track both of the users hands in three dimensions and to use each hand-dimension as a control input, allowing six parameters to be controlled simultaneously. In order to simplify the design, I intend to first realize the actual chaotic synthesis system in software, using iterative solutions, because achieving the finely-grained control of circuit parameters under microcontroller control necessary in the analog circuit will be a quite difficult problem in and of itself.

    I am currently experimenting in Java and Processing with software realizations of Chua's equations and also intend to investigate the usability of other similar systems of equations. The screenshot below is from a first generation Processing applet, available here (requires the JSyn browser plugin). Move the mouse around to change parameters and control the system. If it runs out of bounds or stops, click the mouse button to reset it.

    Digital Chua Attractor
    X-Y plot of one of the Chua Attractors, created with Processing (applet) (code)

    December 24, 2005

    Vibrato - Touch Sensitive Musical Instrument

    Vibrato is the final project Anne Hong and I did for Physical Computing last semester. The photo at left shows the layout, seven tubular illuminated keys, with linear proximity sensors that detect the position of a finger touch anywhere along each tube. By touching the key anywhere along its length, the user plays a corresponding note of the music scale, with the octave depending upon which third of its length is pressed. Subsequently, the user can slide the finger on the key to perform pitch bend or vibrato effects.

    The sensors used were Quantum QT401 linear touch sliders on custom designed PCBs embedded within each key, with 3M Photographic tape used as the required resistive element. A 12" piece of the 3/4" wide tape has a resistance around 75k-Ohms, perfect for this application. More details are available on the project site.

    Upon further refinement, the project has been requested for display in ITP's Spring 2006 Show.

    About Me

    Me at ITP Winter Show 2005

    Welcome. I have started this site for myself and others as a memoir of my trip through life and, for now, the Interactive Telecommunications Program experience and as a place to log the ideas and thoughts that otherwise seem to slip away. I look forward to comments and criticisms, helping and being helped, and whatever else comes my way. Life is good.

    Contact me.

    View my resume.

    GSPS: GumSpots Positioning System

    GSPS: GumSpots Positioning System

    GSPS: GumSpots Positioning System is a project I worked on last semester with Jason Kaufman, also of the Interactive Telecommunications Program. Utilizing image recognition and pattern matching techniques, we use patterns of gumspots to determine the position and orientation of a user, who submits an image from a camera-enabled mobile phone.In addition to being exhibited in ITP's 2005 Winter Show, the project was featured in Engadget as well as a number of other technology sources.

    Developed in Java using Eclipse.


    Where am I?

    Recent Photos

    Powered by
    Movable Type 3.35