Postcards From The Upside Down, 2020

2D Pixel Arrays

Slide Slide Slide Slide Slide Slide Slide Slide Slide Slide Slide Slide
Art, Collection
The Land Is Screaming, 2020

Video Datagraphs. Sony RX 100VI, opencv, ffmpeg.

Slide mole Slide venules Slide bruise Slide rosaecia Slide jaundice Slide constriction Slide marks Slide fibrillation Slide gauze Slide scrape Slide incomplete
Art, Collection
Sketchz, 2014-2020

Processing Sketches, Custom Linux, PyQT, Teensy, wood, glass.

Displaying algorithmic art

The design for this custom display device started around 2014. At that time, I was working on developing algorithmic art and growing dissatisfied with the lack of means to show it outside the usual computing context. Seeing a mouse and keyboard open up this kind of imagery in a window over a familiar desktop OS on the usual computer hardware dilutes the nature of the experience.

These pieces typically involve coming up with a set of rules that describe how the image is drawn and how it animates. Random variations are introduced in the input parameters and end up generating different versions, each unique but all clearly belonging to the same family. After studying them for a while, you get an intuitive feel for the underlying process shaping them and you automatically start to anticipate how they will continue to develop. A tension develops back and forth between the expectation of the viewer and the validation (or not) of those expectations in the visuals, like watching crashing waves on the shore.

Each iteration of these recipes becomes a mini story all its own, with a beginning, a middle and an end. It’s not a coincidence that coders usually use variable names reflecting events in the natural world: birth, death, child, branch, root, etc… The random occurrence of these events gives each of these visual stories its unique character.

In the best of cases, the growing intuition that underlying laws have the potential for infinite manifestations invites contemplation in ways found in classical Islamic art.

The intent of this display is to create a space where, even if you don’t see God, at least you won’t have to run into Clippy.

Art, Collection, Electrons
Pixel Sculpted Masks, 1989

Scanned Negatives. Amiga Monitor Photos, Digi-Paint.

Slide Slide Slide Slide Slide Slide Slide Slide
Collection, Electrons, Photons

Video Datagraphy

Art, Collection, Photons, Thoughts

The word “slitscan” is originally the name given to a specific type of photographic lens that uses a thin and tall rectangular aperture that is moved horizontally to create an exposure. Instead of exposing the whole film surface at once through an iris, these lenses capture the light over time and across the length of the negative, like a scanner or a rotary printing press. They have typically been used for capturing very wide horizontal perspectives in landscape photography or group photos, as well as to create optical visual effects. With the advent of digital video, this process can be expanded on quite a bit to generate surprising visuals which end up in a place between abstraction and representation where they can feel both familiar and strange at the same time.

Digital video can be thought of as a cube of data. Each image is a two dimensional plane of pixels with X and Y coordinates, and these image planes are stacked on top of each other like the floors of a skyscraper. In this cube, a frame in the original video is the ‘XY’ plane at height ‘t’.  In our building analogy, this would be the floor plan at a specific floor. What we usually think of as a slitscan is the Yt plane for coordinate X, or to continue the skyscraper analogy, a cross sectional slice of the whole height of the building. Ultimately, this cube of data can be processed, dissected, or remixed in arbitrary ways to the point where the name “slitscan” no longer even makes sense. Video datagraphy is a more appropriate description of the process: making images from video data.


When we navigate the physical world, we use a constantly changing and always singular perspective to build a mental structure representing what is around us beyond what we can directly experience at that moment. Though these models persist through time in our consciousness, we can never experience them holistically. We are bound by the laws of physics and can not ACTUALLY wrap ourselves around them. As a substitute, we look for patterns that can give us some reference as to where we are on that continuum: a heart beat, light patterns, seasons, music, speech… Tracking these linear signals informs our conception of space beyond our current perspective and anchors our experience on the mysterious expanse of time,

Storytelling similarly spans time and space. It paints narrative arcs that connect specific events lost inside an infinity of places and moments, and provide a scaffolding on which our understanding of the world is conveyed. Even though stories conjure up a god-like perspective above the physical constraints of our human experience, they are typically linear in nature. Like the 3 dimensional shadows of a 4 dimensional hypercube we can never actually experience directly, or like the chained humanity in Plato’s cave watching shadows on the wall, they only hint at the existence of a greater context. There is an unfolding that happens and reveals a new dimension. The Tapestry of Bayeux is a wonderful example of this linear visual rhythm that unfolds on a timeline, and its horizontal shape is unsurprisingly similar to video datagraphs which represent samples of time and place on a two dimensional surface.

The physical principles of traditional photography are similar to the way vision works in that it is limited to a moment in space and time, and they actually do so 24 times a second in film. These space time video samples do not share these limitations. They feel alien because the process that reveals their hidden structures is not physically achievable for humans but they feel familiar because we have intuited them mentally from how we have experienced what they are representing.


Pisa to Firenze, 2018

Video Datagraphs. iPhone 6, Nuke, Kronos, ffmpeg.

Slide Slide Slide Slide Slide Slide
Collection, Electrons, Photons

Casting a freeway interchange

Art, Atoms

If you live in LA, you probably are familiar with huge freeway interchanges. It’s an impressive network of forming a big knot that somehow channels various streams in all the possible ways. It has huge curves sweeping above and below the main wide arteries. Anyway, they are cool. My favorite is where the 110 and 105 interchange and I’ve been mulling over making a cement casting of it for a while now. It starts with grabbing 3D data from the interwebs and turning it into a functional model.

Once the data is prepped, I prepare it for 3D printing. I want the final piece to be 26 inches wide which is wider than any printer I could get my hands on so I break it up in tiles and run some tests.

Next step is to figure out the process of making the mold. There two options but the first step for each is the same: glue the tiles back together (there will be 16 of them) and use bondo, sand paper to smooth out all the irregularities, and spray paint some urethane to smooth over the result. The question is: should I make the urethane mold directly from the positive 3D prints, or should I create a positive plaster intermediate I can tweak and further polish, and make a mold out of that? If I go with the plaster, I worry that the brittle nature of the plaster and the rigidity of PLA filament will cause the small details to break as I release the plaster image from the 3D print. If I pour the mold directly on the 3D print, I worry that the tell tale 3D print lines will be captured by the mold and that I will not have had the chance to polish it with the control a plaster intermediate would give.

So, next step is to test both approaches on my two test prints, and also test printing a tile with PETG filament which I hear is more flexible. If you have any recommendations, I’m all ears…

Binary Clock, Part 2

Atoms, Electrons, Photons

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.


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 and, 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, 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



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.


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


  • 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 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).


Here’s a picture and a schematic…

June’s pot harvest

Art, Atoms

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.