Sketching08 talk: Good Hardware APIs et al

The Sketching in Hardware ’08 conference was held at RISD in Providence, Rhode Island this year. Both RISD and Providence were very welcoming and I think we had a lot of fun. Once again, Mike pulls off an awesome conference.

For my talk, since I didn’t have one big thing I’ve been working on this last year, I decided to shotgun blast a bunch of different topics out there, arranged roughly on the topics:
– Good Hardware APIs – about the evolution of BlinkM’s layout,
– USB not on Rails – an update to a previous Sketching talk of mine, and
– From 2D to 3D – experiments in 3D shapes from 2D lasercutter output

The PDF of my talk with notes:
sketching08-talk-todekurt.pdf (5.8MB PDF)

And some screencaps of a few of the slides:

Continue reading “Sketching08 talk: Good Hardware APIs et al”

In Processing, size() matters for Serial ports

Mark Allen of Machine Project is teaching an Arduino course using some of the notes from my Bionic Arduino class. He and his students were seeing in Windows XP & 2000, when trying to getting Processing to talk to Arduino, the cryptic error:

  gnu.io.PortInUseException: Unknown Application
               at
  gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354)

Both his class and Mark and I separately spent a lot of time trying to figure out what the problem was. Eventually we discovered that it’s because the sketch I had written had a setup() like this:

  void setup() {
    port = new Serial(this, portname, 19200);
    size(400,400);
  }

but instead should have been like this:

  void setup() {
    size(400,400);
    port = new Serial(this, portname, 19200);
  }

Yes, size() must come before new Serial() on Windows or it will not work. There is a bug report describing a similar problem and is marked RESOLVED, INVALID because as the reference documentation for size() states, “The size() function must be the first line in setup()”.

I’ve been using Processing for a long time and I found this feature of size() surprising. I always figured size() to be just a dimensioning function, not a critical part of sketch startup. I’ve seen many sketches that apparently function correctly where size() is located outside of setup() or is not the first statement in setup(). Perhaps the Processing sketch parser should check the sketch before running it to make sure not statements come before size().

I apologize to any Windows users attempting to use the Processing sketches I wrote for Bionic Arduino. I’ve updated the sketches appropriately so the above issue doesn’t come up.

Things at ThingM, my Berkeley INFO290-13 talk

On Nov 8th I was a guest lecturer at the “Theory and Practice of Tangible User Interfaces” class at UC Berkeley. It’s a physical computing course, about “a new approach to HCI which focuses on the physical interaction with computational media.” The class has both lecture and lab components. The lab section is hands-on experimenting with novel physical interfaces, using Arduino as the core. So of course I have a great fondness for the course.


things at thingm

The talk itself was a sort of summary of the things we’ve been pondering at ThingM. If you’re already familiar with the stuff Mike and I have been talking about for the last several months, there’s not much new. But for me it was interesting to put it all together into one package and attempt to construct a narrative that threads it all together. The talk covered:

  • Computation as Material
  • Smart Interface Components
  • Reversible Hacking
  • Technology Sketches
  • Informational Objects

Before my talk I got to see the in-progess work of the students’ final projects to create new kinds of musical instruments using a variety of input devices, Arduino, Processing, and so on. It was great. I was invited to be a guest lecturer by fellow Sketcher Kimiko Ryokai, an assistant professor at Berkeley’s School of Information. Thank you, Kimiko, for letting me be a part of your class and to meet your students. The class was 40 strong and it’s obvious there’s a lot of interest in the process of making software interact with the real world. I hope more schools follow in this one’s path.

The PDF of my slides with notes is here:
berkeley_info290-13_todkurt.pdf (8.8MB PDF)

LoveM Memory Chocolates technology sketch

Another technology sketch from my company ThingM. This time it’s Valentine’s Day-themed, with LoveM, a heart-shaped box of “memory chocolates”.


(revver link)

Abstract:

LoveM is a Technology Sketch of an augmented box of chocolates that displays personal memories on an LCD screen as chocolates are removed from the box. It attempts to evoke joy and surprise through the use of available, inexpensive technology embedded into a familiar object. It investigates what happens when we put technology in a non-utilitarian, non-game context and explores the ideas of introducing personal, intimate content into an otherwise mass-produced product.

It’s also our Valentine’s Day present to you. ;-)

WineM, a ThingM technology sketch

At my new company ThingM, Mike and I have completed a technology sketch for WineM, a smart wine rack. Below is a video demonstration and an abstract. A full description can be found on the ThingM site. We periodically create Technology Sketches as a way to explore the ideas we’re thinking about.


(revver link)

Abstract:
WineM is a Technology Sketch of a smart wine rack. It’s designed to locate wines in a wine rack using RFIDs attached to bottles and to display which wines have been located using LED backlights behind the bottles. Collectors (or anyone with a large wine cellar) can use it to search through collections, track the location of specific bottles and manage inventory with a minimum of data entry. Linking bottles to networked databases can provide information that would otherwise be too time consuming or difficult to obtain (for example, the total value of a collection, or all the wine that is ready to drink).

Sketching in Hardware: USB on Rails

I gave a talk at the Sketching in Hardware 1 conference. It was a great conference, full of amazing people and hosted at an astounding location. I’ll write more on the conference later.

My talk was “USB on Rails”. The USB HID standard enables the sending and receiving of arbitrary data-structures (“objects”) between a host PC and a device. All without any additional device drivers, since the HID driver is built in to all OSs. Many sketching tools or demos use USB, but introducing them to the unintiated means lots of reboots for driver installs. The title is a silly, but half-serious, take of applying the philosophy of Rails to hardware-to-computer interfacing: solve the common case simply, but allow deviations. More on this later, for now, here’s my talk’s slides:


usbonrails-intro-small.jpg