yup, i still use aim

who says AOL Instant Messenger is dead (other than AOL themselves) ! A bot just im’d me for the first time in years; here’s our exchange:

12:34:09 AM andiepgrl: heya.
12:35:38 AM me: salutations
12:35:42 AM me: oh you are a bot
12:35:46 AM andiepgrl: hi there. asl?
12:35:49 AM me: hahahaha
12:35:53 AM me: 12/f/FL
12:36:03 AM me: u?
12:36:05 AM andiepgrl: oh cool. im 18/f/cali. do u have any pixs?
12:36:16 AM me: you want pix of a TWELVE year old
12:36:30 AM andiepgrl: i have some on my profiIe on this dating website. wanna see?
12:37:15 AM me: you’d think your creator would have taken the time to parse out a/s/l and have you react accordingly.
12:37:25 AM me: he’s clearly not very good, or a pedo
12:37:31 AM andiepgrl: ok but you wiII have to sign up to get to them cause i have some R rated pixs on there lol.
12:37:39 AM me: lol.
12:37:41 AM andiepgrl: its free and fast to sign up. is that ok?
12:37:52 AM me: i’m 12.
12:38:01 AM andiepgrl: ok well just go here http://bit.ly/OrLqe8
12:38:16 AM andiepgrl: and when u get Iogged in just search for my profile its looking4fun ok?
12:38:27 AM me: nothing about this is ok
12:38:36 AM andiepgrl: k let me know what u think. iII brb
12:38:49 AM me: ttyl

posted in commentary | comments (0)

i’ve been working on eyeWriter with zach and team the past couple months, and one thing we are implementing is mouse control. so I started writing a class that can control your mouse using obj-c and quartz events.

After I got everything working, i went ahead and made an application that will not only quit itself, it will shut down your machine by autonomously moving and clicking the mouse.

download the iHateMe App here. Note: OSX, tested on 1440×900 resolution.
GitHub repo here: https://github.com/jmsaavedra/mouseControl

The quartz event reference can be found here.

posted in development, projects, software | tagged , , | comments (0)

mouseControl v01

i’ve been working on the eyeWriter project with zach for the past couple months, and one thing we are implementing is mouse control. so I started writing a class that can control your mouse using obj-c and quartz events.

Here’s a simulation demo, where i use the keyboard to move the mouse (you can tell it’s only moving 10px at a time, up, down, left or right), then clicking (’1′ and ’2′ for left and right click) and dragging. Then I enter a simulation mode where the mouse autonomously navigates to and clicks on each rectangle, then clicks outside of the app, clicks on the os x menu, then “about this mac”, then closes that window.

code on github: http://github.com/jmsaavedra/mouseControl

quartz event dev reference can be found here.


posted in development, software | comments (0)


Upverter is my new favorite thing. GitHub-like version control for hardware. You can create circuit schematics in browser. You can create your own parts. You can see a bill of materials of all the components used in your circuit with a click (including useful links like datasheet, manufacturer, part number, etc). You can embed your schematics easily… like at the bottom of this post. Most importantly you can SHARE super easily.

My biggest issue at the moment is the fact that they have not completed the import and export functionality. What good is a schematic if I can’t create a board file to send off to be made. Ok yeah it’s still useful. But they are working on that, and once I am able to upload my .sch and .brd files from Eagle CAD, I will be very happy.

Below is the schematic for the Weather Tunnel unit circuit. It’s missing the Ethernet Shield, but all the pins you are connecting to are Mega2560 pins. Check it!

posted in development, hardware, projects | comments (0)

lil’ monome jam

I have (finally) been getting to spend some time with my favorite objects in the world… going to use this monome for some testing of the Electromechanical Solenoid Orchestra project that’s part of Weather Tunnel (it will be using real-time weather data instead of MIDI notes, however).

Anyway, check it out.  I hacked stretta’s Polygomé max patch so I could change the loop size in the control row. I’ll post it when it’s robust. Sample is a marimba in Ableton Live, receiving MIDI from MaxMSP who’s talking to the monome over OSC.

posted in development | tagged , , , , | comments (0)

Arduino Reset Hack

Something I’ve been meaning to share with the world is this nifty hack I discovered while prototyping the Weather Tunnel sensor modules.

If you’ve ever needed to, you’ve discovered that there is in fact no way to RESET an Arduino board through code. If you truly want your Arduino to RESET entirely you have two options: pull the RESET to LOW using a physical connection, or remove the power supply and then connect it again (turn it on and off).

For the Weather Tunnel modules, I used the Arduino Ethernet Shield. It’s very well designed, and has worked perfectly for our needs. However, when it’s on and connecting perfectly to the internet, it tends to timeout after 2 or 3 days. Our sensor modules need to be plugged in and connecting for months on end (they were deployed in April, will be running through August minimum).  When this timeout occurs, there is no cure other than to reset the board.  I couldn’t ask our partner institutions to constantly monitor the module and disconnect/reconnect the box every 3 days, so I needed to find a way to RESET the board through code (ie one of the digital pins).

I’m sure you’re thinking to yourself — well fine, let’s use a little transistor and have a digital pin toggle GND to the RESET pin when we want. Yes, this definitely works, and is absolutely a better solution than my hack. However, this board is already crowded as it is, and I wanted to use minimal wiring. So i found a way to do it with a single wire connected to the RESET pin.

Check it out.  By connecting any digital pin directly to the RESET pin on the Arduino will not work because upon start up, the Arduino automatically pulls those pins low when they are declared OUTPUT in the setup() loop. The hack here is extremely simple: Pull that digitalPin HIGH before ANYTHING ELSE.

//digitalPin 7 is connected to the RESET pin on Arduino
//NOTE: you CANNOT program the board while they are connected
//by default digitalPin 13 will blink upon reset, so stick an LED in there

int interval = 5000;
long int time = 0;

void setup(){
  digitalWrite(7, HIGH); //We need to set it HIGH immediately on boot
  pinMode(7,OUTPUT);     //We can declare it an output ONLY AFTER it's HIGH
                         // (( HACKHACKHACKHACK ))
  Serial.begin(9600);    //So you can watch the time printed

void loop(){

  time = millis();
  if(time > interval){
    digitalWrite(7, LOW); //Pulling the RESET pin LOW triggers the reset.

And that’s it. Tested on ArduinoMega2560 and Uno. Hopefully this is useful for someone out there.

There is a caveat, however. When programming your board, you must remove this connection, because upon programming digitalPins are pulled low. Your board will just try to reset itself while programming and you’ll taste failure. hmm delicious.

posted in development, hardware | tagged , , , | comments (0)

Weather Tunnel

I never said I would start chronologically.

So, Citizen Sensor has received tons of press, and even continues to get some as recently as this month. I can’t tell you how humbling it is to have worked so hard on a single project and have that work be appreciated by so many different people. It’s also afforded me awesome opportunities to talk about my work including some great travel and even an award.

The Weather Tunnel Project has been the bulk of my focus for the past ~4 months, in terms of personal projects go (my time is mostly spent on freelance and teaching these days).  The project is being funded mostly by Parsons, and is part of the TransLife 2011 exhibition at the National Art Museum of China. In a nutshell, the project involves several different institutions across the globe creating installations that use real-time weather and environmental data. Each institution is hosting their own sensor module that is sending this data to a database, from which the installations can grab.  The show will run from July 26 – August 23, in Beijing China. I’m extremely excited to be involved in both the sensor design and development, as well as participating as an artist in the exhibition.

I’ve written a lot about how the Weather Tunnel modules evolved from Citizen Sensor in a CS blog post, so I won’t go too in depth here. What I’ll talk about here is my involvement in the project.

In January, when Zhang Ga (faculty at Parsons, visiting scientist at MIT, TransLife curator) approached me with the concept, I was super excited because I knew I’d be able to apply a lot of my CS work into the sensors. Myself (with some help from students in a Parsons grad course this past spring semester, as well as class TA Leif Percifield), fabricated about 10 sensor modules that record environmental data (including light, temperature, ambient noise, humidity, carbon monoxide, carbon dioxide, and general air quality) and post up the data in real-time to Pachube.  We have deployed sensor units to all institutions participating in the Weather Tunnel project — Germany, Finland, Australia, Japan, China, NYC, Arizona, and more are all currently posting data to our repository.

Here’s a few images of the sensor units I designed and fabricated.  In depth information about the units can be found on the weather tunnel dev blog.

As I mentioned, each participating institution is hosting a unit — but they are also all creating an interactive installation piece for the exhibition in Beijing that use the data in real-time. This, obviously, is the most exciting part of the project, and I will post up about my personal installation in the next blog post. So look out.  I’m leaving for Beijing Wednesday AM, so give me like 72 hours to write more.

posted in development, projects | tagged , , , , | comments (0)

Hello world!

I love the default title of the first WordPress post of a fresh install, and it seems exceptionally relevant right now.

I have completely ignored my webpresence for the last ~6 months, updating only the Citizen Sensor Dev Blog here and there… some sort of internet vacation.  However, it’s gone on way too long and will stop immediately. My return to the internet is now.

I’m retiring Technological Reconnaissance, my previous blog which pretty thoroughly documented my entire graduate school progress, although it does not mention too much about my thesis, Citizen Sensor, which has it’s own separate development blog. That will always be live at thesis.jmsaavedra.com, and I’ll continue to update it separately.

Just because I haven’t been posting or updating doesn’t mean I haven’t been up to tons of stuff. I will take the next couple weeks and begin to recursively write and publish work on here and on my portfolio site.

If you’re reading this, then thanks for stopping by, I promise I’ll be posting really exciting things in the very near future.  I’ll be posting all about any projects, teaching, work, and travel that comes my way. There’s a lot to catch up, so i’ll start now.

In the meantime, please excuse the design of the blog as I’m trying to unify my sites aesthetically. Web is not my forte, so things will be constantly changing until i find something i like / at least works.

Thanks again –


posted in news | tagged | comments (0)