However, as Lacan taught us

Sunday March 29, 13.25.20

Swerve, or invert. Look behind, a common strategy I employ for being more certain of whence I have come. Nothing fancy, other than I get lost easily in new places, and know that returning, hopefully, to where I have come from will present an entirely different landscape and skyline than the one I see when setting forth.

..when we are confronted with an apparently clear choice, sometimes the correct thing to do is choose the worst option, so that the thing may redeem itself, shedding its old skin and emerging in a new unexpected shape.

Why do I blog this? An informal lobby for inversion as a design strategy. Lifted (briefly wordsmithed for local context) from the introduction to the new edition of Zizek’s The Sublime Object of Ideology. The possibility that doing the opposite of what seems the clear choice may lead to deeper, richer, creative insights into a question or problem is a persistent theme here in the Near Future Laboratory’s Bureau of Creative Opposition. It’s a strategy for untactful sideways glances at things. Provocation to make the very normal seem very strange. Often enough, it is the Laboratory that appears strange, which is just fine with us. We’re wearing Swedish workman’s kilts these days, and being confused by the family for janitors with our Dickies work shirts. Etcetera.
Continue reading However, as Lacan taught us

Finding The Way – HMC6352 Digital Compass

Friday March 13, 23:53:41

Since I was asked, and asked again, I’ll toss this technotopia solutions nugget to demonstrate that, despite the evidence demonstrated by recent public appearances and weblog postings, we here at the Laboratory are in fact still fully engaged in connecting wires amongst components. Components take a variety of forms, as do the wires. Sometimes bits of silicon strongly encased in hermetically sealed plastic. Other times, cultural components made of different materials. Observations and their conclusions take a variety of paths and sources of inspiration. We enjoy looking at curious people-practices, inspecting them for insights and stories to be told with a variety of resources: objects, images, words.

And so on. More on this point later.

In the meantime, an eager follower has asked for some simple advice that could have been dispatched in an electronic mailing. Instead, The Near Future Laboratory resources room has decided to fold that information into a weblog “posting.”

Wayfinding, of the digital variety has become exceptionally straightforward for those who are okay with writing a dozen or so lines of code for the handy-dandy Arduino and this HMC6352 digital compass which is available as a breakout board off the rack from our friends at Sparkfun.

The compass will give you a perpetual stream of degrees-heading from magnetic north and has interesting adjustments to let you make offset corrections and that sort of thing. It works simply, as all such things should be. It’s a TWI/I2C device, so you get it on the I2C bus, and send commands to its address (42h). Easy-peasy. If you’re doing anything like setting a RAM or EEPROM register, you send the approrpriate command and address. But, for the most part, you’ll just want to tell it to send heading data, right? That’s simple — send the letter ‘A’ (41h) and back comes the heading data. That’s it. Send an ‘A’, get a heading. Send an ‘A’..get a heading. Over and over, or as often as necessary.


Here’s some Arduino code to get you going!


// On the Arduino board, Analog In 4 is SDA, Analog In 5 is SCL
// These correspond to pin 27 (PC4/ADC4/SDA) and pin 28 (PC5/ADC5/SCL) on the Atmega8
// These correspond to pin 27 (PC4/SDA/PCINT12/Analog Input 4) and pin 28 (PC5/ADC5/SCL/PCINT13/Analog Input 5) on the Atemga168
// The Wire class handles the TWI transactions, abstracting the nitty-gritty to make
// prototyping easy.

int address = 0x42 >> 1;
 int reading;
void setup()
  // this for debugging the data
  // set up
  CLKPR = (1<<clkpce);
  CLKPR = 0;
  // initialize the HMC6352
  Wire.begin(); // join i2c bus (address optional for master)

void loop() {

  Wire.requestFrom(address, 2);

   if(2 <= Wire.available())    // if two bytes were received
    reading = Wire.receive();  // receive high byte (overwrites previous reading)
    reading = reading << 8;    // shift high byte to be high 8 bits
    reading += Wire.receive(); // receive low byte as lower 8 bits
    reading /= 10;
    Serial.println(reading);   // print the reading

//  delay(50);

Continue reading Finding The Way – HMC6352 Digital Compass