Slitscans

One of the cool things about digitized information is that it can be processed in ways that generate a perspective that would have remained unachievable otherwise.

In panoramic photography,  an artist can generate a composite image with a field of view wider than a traditional camera lens can capture by taking multiple pictures from a single point of view and stitching them together into a continuous image. This image can then be displayed using different types of mapping that create different kinds of distortion effects. With photogrammetry, a computer can calculate the shape of an object based of a set of images taken from different perspectives, like this.

In the pursuit of my interest in exploring ways to show something from a variety of perspectives, I created a digital slit scanner. It works by taking a movie file as an input and by lining up the middle scan line of each frame on one continuous canvas.

Here are a few images generated by this process.

I programmed this in openFrameworks and will eventually get to loading the code on github when I get a minute…

 

test of lightbox

Video triptych update

The first iteration of this project was a prototype. I went back and developed a second version in c++ using openFrameworks. The resulting setup is much more easy to use, robust, and precise.

Changes:

  • No longer limited to 3 displays.
  • Uses an XML config file instead of hard coded host and file names.
  • Uses a keyboard for starting, rebooting and turning off the machines.
  • Uses a keyboard for pause and rewind.
  • Movies can be played from ram or from the SD card.

The code and machine setup instructions can be found at https://github.com/thomashollier/triptych

Binary Clock, Part 2

The long awaited part 2 of this blog post has finally arrived! But first, a video, in case the whole “reading” thing isn’t your bag…

Though I’ve been tinkering on this project for the past two years, I decided to write it up to coincide with the outrageous arrest of 14 year old tinkerer Ahmed Mohamed who was hand cuffed because his teacher thought his electronic clock project looked like a bomb. This binary clock project of mine ended up being a personal electronic circuit design introduction course. You can download all the relevant files here if you want to make your own.
I forgot what the original inspiration was but what I’m ending up with is a working binary clock on a custom printed circuit board. Ultimately, this project will involve fiber optics inside polished cement for a unique time piece but we’re not there yet… Here’s what I learned so far:

Bit shifters

A binary clock needs 20 individual blinky things and the arduino has less than that, so I needed to figure out a way to create more individually addressable outputs. The solution I found is a the 74HC595N chip that can turn two inputs into 8. In fact, you can wire them in series and they can provide you with any number of outputs in multiples of 8. I decided to use one to drive the hours display, one for the minutes, and one for the seconds.

There are tons of tutorials for them so it was fairly straight forward to get it working.

Keeping time

While you can make a timer with just an arduino, it is not very accurate and it has no way to keep the clock going if you unplug the power. I used a rtc1307 chip which is designed for just this purpose. It keeps time accurately and uses a small battery to continue keeping time when the power is disconnected.

Again, there is an arduino library available and a good amount of tutorials out there so it wasn’t too hard to test it and incorporate it in the build.

Removing the arduino

Eventually, since I wanted to end up with a single circuit board, I didn’t want to have to plug anyting into an arduino. Once again, the internet is a wonderful resource which allowed me to figure out how put only the arduino components I needed onto a bread board. I can upload the code onto the chip by putting it on an arduino, and then pull it off of there to mount it directly onto the breadboard.

Code

The clock can be set to one of 4 modes: display time, set hours, set minutes or set seconds. There are two buttons. One button toggles between all the different modes, while the other increments the count of the hours, minutes, and seconds when they are in their respective mode.

Schematic and board

Once the breadboard was working, I set out to sketch the circuit in Fritzing. While it’s not quite as intimidating as EAGLE cad, I ended up using the latter after running into some limitations with the former (I don’t remember what they were). There was a lot for me to learn there but, in the end, it’s conceptually pretty simple: all the pieces have to be connected together correctly. It’s just another way to represent the circuit. Once that was done, I started with the board. I laid out all the components and let the software automatically figure out how to create the correct traces.
One cool thing is that if you choose the correct electronic components in the software, all the size and shapes are properly represented when you are designing the board. It’s a huge pain in the ass to sort through all the libraries of components, though, specially when you don’t know what all the specs mean.

The eagle cad files are included in the download file at the top of this page.

Manufacturing the board

Super simple: just go online and find a service that will manufacture them. For this project, I used oshpark.com and dirtypcbs.com, which allow you to upload your designs right out of EAGLE cad. After a few weeks, you get your board in the mail, ready for you to solder the components on. I order my components from mouser.com, which allows you to save a collection of various components into a project specific list. Again, finding the right components amongst the tens of thousands they have available is really time consuming and annoying. But now, I have my parts list so I never have to go through that again if I want to solder up new versions of the board. The list of parts in included in the download file at the top of this page.

The ugly truth

If you were paying attention, you no doubt noticed in the preceding paragraph that I used two board manufacturers. That is because the first board layouts I had printed actually had shorts. I suppose it’s probably not that uncommon, but it’s really frustrating to upload your designs, order the boards, wait for them to be delivered, spend all this time soldering the board to find out it doesn’t work, and then it can be challenging to figure out where the wires are getting crossed. In the end, I spent about $150 on boards and parts that ended up not working. I guess that’s the cost of learning… My first two board designs were ordered through Oshpark, and the minimum order was 3, for about $50. The third order was done on dirtypcbs and was $25 for 10 boards. They feel cheaper and took forever to get delivered but you sure can’t beat the price.

Flashing Arduino bootloader with Teensy 2.0

What

If, like me, you want to flash the arduino bootloader onto some blank ATMEGA328 chips on a breadboard and only have a teensy 2.0 on hand (because you’ve short circuited all the working ATMEGA chips you had and so can’t use your arduino), and, unlike me, you don’t have hours to spare trying all freaking possible software/hardware/wiring combination to get it working, here’s what worked for me. Also, since I didn’t want to bother with the crystal, capacitors and resistor, I went for the minimal setup.

Why

Because a chip with the bootloader already loaded costs $5 and a chip without costs $2. And also, really, just because…

How

  • I used arduino 1.0.6 on a macbook running osX 10.6 (For those running Yosemite, there are documented issues recognizing the USB port)
  • I downloaded Breadboard1-0-x.zip and installed the contained breadboard directory in the “hardware” folder of my sketches.
  • In arduino, load the ArduinoISP sketch from the examples, change the LED pin to 11 (#define LED_HB 11), select Teensy 2.0 as you board and upload the sketch
  • Wire up the ATMEGA as follows.
  • Relaunch arduino and for your board, select Tools > Boards > “ATmega328 on a breadboard (8 MHz internal clock)” and Tools > Programmer > “Arduino as ISP”
  • Select Tools > Burn Bootloader
  • Done!
  • This is basically the steps outlined in the official Arduino website, except for changing the LED pin to 11 in the ArduinoISP sketch and wiring the ATMEGA to the proper pins on the Teensy 2.0. (Note that you don’t even have to change the code to reflect the different pin numbers since they are referred to by their function rather than their number).

There

Here’s a picture and a schematic…

June’s pot harvest

This month, I am deciding to make bigger and heavier pots, but still keeping with the monolithic shapes. I was spurred into creative action by a cardboard tube I saw in a trash pile at work. I noticed it and a lightbulb flashed in my head; I immediately grabbed it, knowing exactly what I was going to do with it. The world is full of gifts indeed and I love the process of finding sudden and unexpected inspiration at random time. All you have to do is remain open, hone your discernment skills, and channel whatever comes your way. Also, I’m experimenting with black cement coloring and black river rocks on my old 6 inch round model.

I’m a pot dealer in Venice Beach

These pots, or ones that look like it, are available for sale, ranging from $30 to $100. I hand polish them myself to a nice smooth finish with a cement grinder that reveals the pattern of the aggregate, and for the amount of labor I put in them, I really can’t afford to have you buy them, but hey: my house can only accommodate so many of them so I have to somehow get rid of them. I do not have a store set up but leave a message or email me and I’m sure we can figure out something.

Three raspberry pies talking to each other

My current project involves three raspberry pies playing video in sync. For this to work, they need to communicate with each other so any one of them can trigger the two others. Using pyosc, they can do so over ethernet in a python script.

Hey! What happened to the giant camera?

Good question. Yeah, yeah… I know: I said I was building a big 20×24 camera but I have written nothing about it in the last 4 months. Was I just a tease? Was I showing off before actually delivering the goods?
In a word: yes. I got to a place where “Things Got Complicated” and I wasn’t sure what the next smart step was. Solving the building challenges started to feel like work. So I did what sane people do when faced with challenges: I walked away… I’m sure it is an affront to some notion of puritanical work ethic dictating that one doggedly apply oneself to a problem until finally overcoming it. Cue in the inspirational music celebrating triumph over adversity, drink the cool-aid, master your id, pay your taxes.
Except we’re talking about Relentless Play, not Relentless Work. It’s about engaging in what feels good rather than bowing to some flawed abstract concept of what should be.

I am still very determined to see the project through; I just don’t feel it right now. I need to let it sit for a while and let the correct path forward bubble up into my consciousness on its own, specially since it will end up costing a a fair amount of time and money to make. Basically, my problem is I don’t know what the hell I’m doing. I bought some 80/20 extrusion to serve as a base and some linear bearing carriages for the lens mount and the film back to slide on but they are pretty heavy and I need to figure out a way to keep them steady. Also, I need to figure out what we are going to do about bellows. Whatever it is, it needs to be built well enough to not bleed a bunch of light in the camera and onto the plate.
Some people like to have a project fully planned out before they go into action. Me, I typically like to figure it out as I go along. In fact, once I’ve done something and have a clear idea on how to go from A to Z, I’m not really that interested anymore.
Anyway, I have a lot of other similarly on hold projects and I picked a few back up in the meantime so it’s not like I’m giving up.

Binary Clock, Part 1



Binary clocks are a family of ubiquitous geek toys which display each digit of the time using binary notation. If you do a search for "binary clock" in Google, you will see a nearly infinite number of implementations. The reason I like the whole genre is that a binary clock is an electronic system that claims to exist for the purpose of conveying information when in fact it's all about finding an obtuse excuse to make something blink. The delight of it is that it's completely impractical to read but the geeks don't care: the coolness of the blinky lights joyfully trumps any need to be practical.

Speaking of geeks, I've been wanting to look into this whole Angular.js framework thingy all those overly bearded tech-hipsters are talking about (when they are not crafting their own cheese or riding fixed wheeled bikes), and so I'm using this blog post as an excuse to program simple apps that illustrate the process I am talking about using Angular.

Displaying numbers in binary

You can see below how to calculate the value a binary number. It's pretty straight forward: a particular place can only be 0 or 1 and once you increment above that, you loop back to 0, add one onto the digit to the left, and if THAT one is already 1, it also loops back to 0 and the behavior ripples leftward.

binary number {{get8()}} {{get4()}} {{get2()}} {{get1()}}
x x x x
place 8 4 2 1
= = = =
total {{8*get8()}} + {{4*get4()}} + {{2*get2()}} + {{1*get1()}} = {{count}}

Notice that the highest number we can represent a maximum of 16 values with 4 b(inary dig)its. 8 bits can represent 256, 10 bits, 1024, and so on...

Displaying the time in binary

The following table shows how to display the time in binary format, with each digit represented by a four bit binary representation arranged in a column. The current time is {{getTheTime() | date:'mediumTime'}}, which you can see displayed in 24 hour format in the bottom row.

{{d}}

From math to art

Not comfortable with numbers? Replace the 1's with teale and the 0's with burn sienna, on a background of deep emerald. Bam! Suddenly, you've become an artist, conjuring a playful visual dance of colors on an abstract rhythmic canvas. You're a fucking genius!

{{d}}

(Note that since the highest number for the hours is 23, the first column never has to go above 2 and we really only need the bottom two places to represent that number. Similarly, the value of minutes and seconds only goes to 59 so the third and fifth columns only to represent the value 5, which can be done with only 3 bits.)

What's next?

Stay tuned... Part 2 describes how to build your very own binary clock, using LED's, chips, electricity, obsession, and patience.

Mangled Metaphors Medley Mayhem, Maybe?

There is nothing that warms my heart more than someone mangling a metaphor during a boring work meeting. It’s the verbal equivalent of slapstick comedy. It’s a sudden and unexpected fail, usually involving a very serious and maybe slightly pompous speaker getting tangled up in fancy rhetorical footwork they clearly were not ready to take on.

The List

We’ll burn that bridge when we get to it.
It’s not rocket surgery.
Does the pope shit in the woods?
It will be a walk in the cake.
For all intensive purposes,…
If you can’t take the heat, spoil the soup.
We will jump off that bridge when we get to it.
You’ve got the tiger by the horns.
Up shit creek without a paddle.
Time wounds all heals.
The cows are coming home to roost.
Does a bear wear a funny hat?
You gotta take the balls by the horn.
Cut me some slacks!
That train has sailed.
The ship has left the station.
That’s a slippery door to open.
Flying by the seat of their tail.
Six of tom-ay-to, half a dozen of tom-ah-to.
You have to just roll with the flow.
Squeeze the lemon till the milk runs dry.
Catch two tigers with one toe.
I’m going to milk that lemon for all its worth.
Half of one, six dozen of another.
You don’t miss your water till hell freezes over.
Don’t count your horses before they hatch.
You’re counting your chickens before the cart.
Straight from the horse’s ass.
It’s more fun than shooting monkeys in a barrel.
You nailed it out of the park.
You gotta reap just what you saw.
You really pulled a rabbit out of your ass.