Fire Station 31

St. Louis Fire Station 31 – “my” fire station on Donovan Ave.

This is the station that responded to a couple of emergencies we’ve
had at home. Thankfully we never needed more than a long wait at the
emergency room, and I appreciate the efforts of the guys here.

The station was built in 1952, a year after my camera. It’s a mostly
boring stone and brick box, but the detail of the station number is
attractive so I focused on it.

Made on my Speed Graphic, with my new 90 mm wide angle lens, tilted
back and raised. T-Max 400 film, 1/2 sec exposure.

Advertisement

Photo File Validation

I know I’ve been dragging my feet on posting my photos here, and I have a ton of catching up to do. But I really need to write about ImageVerifier, a program I discovered via the Digital Photography Best Practices and Workflow site, which is one of the most important applications every photographer should have in order to be sure their image files still work. I know that sounds a little over the top, but I feel very strongly about this. I’ll describe the problem, then the reason for this solution.

Your hard drive is the new shoebox-in-the-closet or drawer-in-the-basement full of photos. With that drawer full of photos, you knew that if you kept them out of floods or fires, the pictures were probably ok.

With a hard drive sitting on a shelf, you don’t know if the pictures in it are ok. We joke about bit rot being a real thing even though it doesn’t work that way. But, the effect is real. Files and drives go bad from time to time, due to mishandling of drives, system crashes while editing images, or just Murphy’s Law. The bearings in that drive sitting on the shelf with your backup might be getting just dry enough that if you don’t plug it in this week, it won’t spin up next month when you need it. When you get the click of death you know the drive is toast. But even when the drive mounts fine, there may still be silent errors you don’t know about.

So, here’s the problem. You have thousands and thousands of photos starting years ago on your hard drive, and you copied them to a second hard drive, so you feel safe knowing your pictures are backed up.

But one day when you’re looking for an old vacation photo and it doesn’t open, you plug in that backup drive, and the file is bad there too. You needed a way to make sure all your images were valid before backing them up. You could open each image in your photo viewer, but that would take forever and you’re certainly not going to do that on a regular basis. You might even have stacks of hard drives (or CDs) on a shelf, which makes the problem even more daunting.

This is a problem that I’ve been thinking about for years. While photography is my hobby, my dad is a professional and I help him out with his technology. He has those stacks of drives and discs I mentioned above. I searched high and low for a program that would make sure files haven’t become corrupt over time, but couldn’t find one. I even wrote some shell scripts to store checksums and then compare them later. This might work for my own use, but it wasn’t something I could have other people use.

Then I stumbled across ImageVerifier, which will do exactly what its name says. This $40 program for Mac and Windows is used in three steps: verify images, save hashes, compare hashes.

Media_http3bpblogspot_grahw

First, you verify your files. This step actually looks inside each file and confirms that it is an image file. For example, JPEGs are probed for details that would reveal file corruption. RAW files are opened with the Adobe DNG convertor (a required helper program) to peek at the image data. DNG files have a data checksum in the file when it was created, and these checksums are verified. Other image types are also handled.

This step reports any errors that are found, so you can do something about it (restore a corrupt file from a backup; delete a file deemed safe to delete; etc.)

The second step, storing hashes, is performed after all images are verified. These hashes are checksums of files saved to a database used by ImageVerifier. This step must only be performed on valid files, because the hashes will be used in the next step at a later time.

The last step is to compare hashes. Once hashes are created and stored, you never have to do a full image verification again.

The reason for all this hash business is that comparing hashes is much faster than doing a full image verify. Naturally, if you have all the time in the world, you can skip the hashes and always do a full image verification.

So, every six months or so, you run a compare hashes operation on your drive or disc, and you’ll know that those files haven’t become corrupt and haven’t been altered in any way. The Mac version can even run a verification on a schedule. I set mine to verify hashes on the first day of the month, at least for files on my computer. Cold or offsite storage will obviously have to be run manually.

As a result of using this application, you can rest at night knowing that the multiple copies of your photos are actually usable.

Robot Costume Complete

We finished this costume about an hour and a half before we had to leave to go trick or treating at my sister’s house. It was a lot of work, but the results are awesome. I made the electronics, and my wife did the cardboard papercraft as well as the actual design. Of course, I helped with final assembly. There was lots of glue that had to be clamped and held.

 

We initially spent a lot of time searching for other robot costumes people have done, and one thing we noticed was that most people make the costume too wide, so the kid’s arms are held out the whole time, which we didn’t think would lead to the kid wearing it for long. We found a box that was almost exactly armpit width, so that was the foundation.

 

Media_httpfarm3static_kdlox

 

It’s mostly made from cardboard painted with textured spray paint. It’s incredible how good that paint looks. Here the kids are testing out the Candy Input slot. Candy goes into a box inside the costume, and it trips an electric eye on its way in that triggers some sounds and the analog gauge.

 

He actually wore the costume for about a half hour before he wanted to sit down. There isn’t enough room for that so we took it off, and I couldn’t believe how heavy it was with candy! He was a real trooper for wearing it for so long.

 

Media_httpfarm4static_obfbn

 

The sleeves are dryer vent tubing, stitched to the long sleeve shirt he has on under the costume. So when he took off the box, he still looked a little like a robot. Also, notice the copper painted crocs. He loves those, and wants us to paint other stuff in the house copper now. We told him we’ll see

 

Media_httpfarm3static_gehqe

 

Here’s a better view of the back and the Arduino controller. There’s an Adafruit Wave Shield there that drives the sounds, and I soldered up the circuitry you see there as well. The Arduino has no problem looping sounds, reading input, driving the analog gauge with PWM, and chasing the LEDs there around the controller. When I was setting it up, it ran on a fresh battery for over two hours without any degradation.

 

Media_httpfarm3static_iharg

 

Last but not least, here’s a video of the electronics in action. The green LED thing is a Game of Life kit that is independent of the rest of the circuitry, just for fun. I overboosted the speech in Audacity to make it seem like it’s louder.

 

 

More about the initial design can be seen here.

 

 

 

Robot costume first milestone

My wife and I are making a robot Halloween costume and I just finished the electronics design prototype. I wanted to wait until the costume was finished before revealing it but I’m too excited that I finished my circuit and coding.

That’s a video of it, and I want to describe it a little. It uses an Adafruit Wave Shield for the sounds, and an antique analog gauge I found at Gateway Electronics here in St. Louis. There’s an infrared beam pair from Sparkfun, which will be watching the “candy input slot” on the robot’s chest. The gauge displays the count, until too much candy is inserted and it goes crazy. Then after 20 seconds of no more candy, the candy count gets reset, to be ready to do it all over again at the next house.

In the sketch, I used these AlphaBeta libraries: LED, button, TimedAction, and Scheduler. These made coding this sketch very easy. He even updated Scheduler with a clear() for me. Thanks again for that! The hardest part was getting it all to work together. I had been trying to use pin 9 for the gauge, and it crashed the sketch. I did more reading and found out you can’t do PWM on 9 with the Wave libraries because of the timer. Pin 6 works fine though.

The beep sound loop I found on my mac, I think it came from iMovie. The speech is recorded synthesis also from my mac, made like this from a terminal:

say -o outputfile.aiff "thing to say"

This makes an aiff file. Then I used iTunes to convert all the sound files to WAV with the right settings for the Wave Shield.

The chaser LEDs are going to surround the Arduino in a shadow box sort of thing, so people can see the controller, and to punch it up so it isn’t so boring. ??;D

Next I have to install all of this in the costume and solder it all up.

<script src=”http://digg.com/tools/diggthis.js&#8221; type=”text/javascript”></script>

Second picture in the park

Media_httpfarm1static_badie

After I saw how that first picture looked, I moved the tripod closer to the sculpture and Kellee to get a bigger image of her. I saw that the chemicals weren’t spreading all the way across the film, so I composed with them in the right side of the frame and got lucky.

This picture wrapped up my first outing with the Speed Graphic.

Taken on more than 20 year old Polacolor matte 4×5 Polaroid film.

Soldering is complete

Media_http1bpblogspot_bhded

I used a RBBB (an Arduino runtime module, cheap!) mounted on a soldered breadboard. Also, two RJ45 connectors on SparkFun breakout boards. That will make a clean connection for a pair of cat5 wires going up to the ceiling. I had originally planned on using screw terminals, but then I decided to use twisted wire pairs (signal, gnd) and needed twice as many connections. There was enough unused space on the board for every other pin to be a ground with these breakouts.

Next, I have to finish wiring up the LEDs and mount them to the little hot air balloons.

Prototype complete

For my Arduino-powered flickering LED project, I finished the prototype with all the features I wanted:

  1. Light sensor to turn the LEDs off after the room lights are turned off.
  2. Button to set the room darkness threshold, since I don???t want to have to reprogram the chip in the future.
  3. Six LEDs with flickering brightness.
  4. One steady LED for a differently shaped balloon, which will be used for the status display as well (blink to indicate setting the threshold, as well as to indicate that it noticed the lights went out).

Flickering LEDs – proof of concept

My first project is to light a string of papier-m??ch?? hot air balloons. I was just going to light them with some LEDs, but then I heard about the Arduino and wanted to make something more exciting. I got a starter kit from adafruit.com and got to work.

This is the first proof of concept of making the LEDs flicker. Later I???ll add a light sensor to start a sleep timer that will turn the balloons off after a half hour.

Here???s the sketch that runs what you see above:

/** randomly flickering LEDs*/int ledPin[] = {5, 6, 9, 10, 11};              // pwm pins onlyint ledState[5];                 // last state of each ledlong randNumber;void setup() {for (int i=0; i<5; i++){       // set each led pin as an output  pinMode(ledPin[i], OUTPUT);   }randomSeed(analogRead(0));     // seed the rnd generator with noise from unused pinfor (int i=0; i<5; i++){       // init each led with a random value  ledState[i] = random(20, 201);}}void loop(){for (int i=0; i<5; i++){                   // for each led:  analogWrite(ledPin[i], ledState[i]);     // set the pwm value of that pin determined previously  randNumber = random(-35, 41);            // generate new random number and add that to the current value  ledState[i] += randNumber;               // that range can be tweaked to change the intensity of the flickering  if (ledState[i] > 200) {                 // now clamp the limits of the pwm values so it remains within    ledState[i] = 200;                     // a pleasing range as well as the pwm range  }  if (ledState[i] < 10) {    ledState[i] = 10;  }}delay(100);    // the delay between changes}

My First Real Picture

Media_http3bpblogspot_ueetj

For my first time taking the Speed Graphic out to make a real photo, we went to Forest Park to find a good location. There was a traveling sculpture exhibit installed, and they looked neat.

Since I was still learning how to use the camera, I used a tripod and the ground glass to compose the shot. I knew how to do that from watching dad use his view camera when I was a teenager.

You can see Kellee there in those crazy coils, and if you look closely you might be able to see the dachshunds.

This was made on that super-old 4×5 Polaroid film and naturally made a cool look that people pay extra to do with Photoshop.

The First Picture

Media_http1bpblogspot_jbpbk

I found two packs of ancient 4×5 Polaroid film in dad???s studio. Having no idea what it would do, I tried one out. I assumed it was 100 speed, used the sunny 16 rule to set my exposure, and set the focusing scale to infinity. I stepped out the dock door at work and wished for the best.

When I say ancient, I mean my dad thinks he abandoned that pack in the early ???80s, so it???s probably been sitting for 25 years. So I was quite surprised to get an image at all. The chemicals didn???t spread all the way, and the color balance is way off. But the smell! There???s nothing quite like a Polaroid???s smell. And the look is pretty cool too. People pay good money for software to make those edge effects.

With this photo, I knew I had a working camera, and I was looking forward to making more pictures.

Next, using up this old film while researching what to use next.