Tuesday, July 17, 2012

Trying Google App Engine

I decided to see what Google App Engine is like.  I know, it's not as fashionable as EC2 instances, but you can't really compare an app to a whole virtual machine.  Which is to say, I really don't feel like administering yet another CentOS 5 box .. I'd like to just play with some Python code.  So far, I've just said hello, world.

Saturday, June 30, 2012

Sekonic Elmatic 8

This is the Sekonic Elmatic 8 motion picture camera.  It was a couple bucks at a swap meet.  The mechanical stuff all seems to run fine, so I've shot a roll of regular 8 mm film on it.  It's tricky to get this format developed, (Yale is widely recommended.) so it'll be a little time before I get to see if the ugly beast is actually functional.

Come to think of it, I'm going to need a projector.  This could be interesting.

Tru-Vue Junior 3-Dimension Viewer

I picked up this Tru-Vue stereo image viewer at a photography swap meet event.  It was dirt cheap.  It's for image pairs laid-out in a rectangular format, where you slide a card up and down to see different images in a sequence.

My thought is that I can print up Sputnik image pairs on transparency paper, in the right layout to work with this viewer.   It might also come in handy for looking at "proofs" of viewmaster shots, somehow.  A quick scan and print, and it'd be much easier to "preview" my shots without having to actually punch 'em out and stuff 'em into a real reel.

Apple's Missing "Insert" Key

The extended Apple keyboard lacks an "insert" key.  If you're running Windows in a virtual machine, there are some apps where that key would be very useful.  Well, it turns out that a Windows virtual machine sees your keyboard a little differently than MacOS does.  Press the "clear" button, and you're actually toggling the "numlock" setting.  Once out of numlock mode, pressing the zero key is actually hitting the "insert" key.

Minting an "I Owe You a Beer" Currency

"I owe you a beer."
A lot of people at work have saved my butt when things got too busy for one person.  I tend to say "I owe you a beer," when this happens.  How do you keep track of all those beers?  To solve that problem, I've decided to mint my own currency, pictured here.

I give 'em to people who I owe a favor to, and they can hand them back at any time and I'll redeem it for a real beer. I'm a central bank, with a private currency tied to "the beer standard."

There are still some details to sort out.  For instance, what's the exchange rate?  Certainly, a beer is about equal to a well drink ... but what about call drinks, or a roy rogers, or fancy wine?  (Is boxed wine the penny?)

It's pretty easy to get custom-made poker chips.  I used American Prom, who have an online design tool.  They shipped quickly and looked just like the on-screen mock-up.  There are jillions of other places tho.

The Storage Admin's DIY SFP Stylus

Check it out, the little rubber end-caps that come on some fibre SFPs are detected by a capacitative display!  It's only some of them.  We went through a pile at work and found that about one in five was able to impersonate a finger.  Dunno why it works, but it opens up some great possibilities for a DIY stylus.  (Maybe the rubber is doped with an EMF-blocking material.)

The discovery was pretty funny.  I was installing SFPs and tossed a bunch of the end-caps on my powered-on iPad for safe keeping.  The tablet went nutz from all the multitouches.

Wednesday, May 2, 2012

Motorcycle Parking in Downtown San Diego

Click here for the map.
I've just published a publicly-editable Google Map of San Diego motorcycle parking spots that I've found.  I was recreating the map in my head each time I went downtown .. with a couple spots committed to memory just because I knew they were near a good restaurant.  So, I made a real map.  Enjoy!

Saturday, March 31, 2012

Toward a Lexicon of Nonsensical Epithets

Playing online competitive video games introduces you to a fascinating array of epithets.  These mostly have to do with sexual orientation, but some folks are creative enough to involve cognitive ability, geographical location, immediate ancestry, and gender stereotypes.

But they're just plain tired.  They perpetuate a mindset of xenophobia, but more importantly they encourage a lazy mediocrity of communication skills.  Kids, you're better than this.

Aargh! Squid-texted again!?
Let's inject a more creative, less antisocial alternative .. a new vocabulary.  This is not just a code that maps "dirty" epithets to "secret" ones.  And it doesn't initially need to indicate in what situations a phrase is most appropriate.  Language evolves .. new phrases will live or die .. the winners will find themselves framed in a consensus-built context.

I'll get the ball rolling, next round of the game, with these:
  • Snuggle-shoe
  • Orange-pan
  • Flaxen-apostrophe (use sparingly)
  • Pose a mango
  • Pander to trollies
  • Fly the baby carriage
Together, we can change the world into a more harmonious, playful place for anger and conflict.  Si, se piƱa!

Thursday, March 22, 2012

Activating your MacOS Screensaver from the Command Line (and Processing!)

It's a matter of calling osascript with the -e flag, and giving it a statement to evaluate:

  osascript -e 'tell application id "com.apple.ScreenSaver.Engine" to launch'

It's useful at the moment because I'm messing around with a Touchatag RFID reader (drivers are here, btw), using these libraries for Processing.  What I wanna try out first is attaching an RFID tag to the bottom of my coffee mug.  When I leave my desk to get some more tea, I'll tap the mug on the reader and it'll activate my screensaver, which requires a password to unlock.

BTW, here are the two lines (mind the line-wrap, there) in Processing, to kick-off that applescript and activate the screensaver:

  String[] command = { "/usr/bin/osascript","-e","tell application id \"com.apple.ScreenSaver.Engine\" to launch"};

Easy enough!  Next up, if I've tapped more than three pint glasses of beer, disable the Send button in my email client.

Sunday, March 11, 2012

Flipping your Mouse Wheel in Windows 7

I've gotten used to Lion's goofy "natural scrolling" behavior.  When I bootcamp over into Windows, the "normal" scrolling irks me.  I've found two (Volker Voeking and Tom Mason)  perfect posts on how to do this in the registry (without using flakey softwarez) but they weren't entirely obvious for my Mighty Mouse.  If you know the hardware ID might start with a big mess between braces, you should be able to just use either of those.

Here's my quick redux for my own remembery porpoises:
  • Open Control Panel > All Control Panel Items > Mouse.
  • Go to the Hardware tab, take a look at the Location for each device.
  • Get the Properties of the mouse you wanna flip.
  • Go to the Details tab, select Hardware ID from the Property drop-down.
  • The entry containing "VID" somewhere in it is what you want.
And then do the registry pieces:
  • Hit the Windows (command) key, "regedit" and hit return.
  • Expand HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Enum > HID
  • Expand whatever device ID you found previously, expand whatever garbled entry is under that.
  • Select Device Parameters, right-click on FlipFlopWheel, then choose Modify.
  • Change this from 0 to 1.
  • Exit.
The next time your mouse is recognized, it'll inherit the new setting.  To make that happen, you can just power it down, wait a dozen seconds, and power it back up.  That otter do it!  Welcome back to wackyland.

Monday, February 20, 2012

Eastman Kodak Shutter

I picked up an old Kodak shutter the other day.  I don't know what it wants to be when it grows up, but it's got a really nice look to it.  I might try to attach a servo to the aperture adjustment bits and see if it can add some "feeling" to a project somewhere.  Okay, so maybe I'd better finish the Voight-Kampff machine first...

A Few More Ilford Films

Trying out some new film.  I'm kinda stuck on Ilford these days .. you kinda never forget your first love.  It's all 120 format .. dunno which camera I'll put it in.  Maybe the Brownie Hawkeye would like a little field trip.  I'm gonna be especially interested to play with the SFX, which is infrared.  The messed up lens on the Hawkeye might be *just* the thing to complement that.

Film Rescue International

Film Rescue International just finished resurrecting an antique roll of 127 film for me!  It required a developing process that the dinosaurs used before they went extinct.  And I'd totally exposed half of it to indoor sunlight.  They still managed to coax a few shots off the thing.  These people are awesome!

You know, this is one of those awesome things about the modern individual's ability to communicate globally.  Big service bureaus need to do the one-size-fits-most thing, to be financially stable at scale.  But a handful of specialists, when they're the *only* people who can do the job, are able to make a living collecting bunches of small orders from the entire world.

This is very kewl stuff.  I'm curious to see where else the model can be applied to keep "dead" technologies alive.  Throw in some desktop 3D printers, scanned service manuals, a wiki, and now you've got all sorts of possibilities!

Thursday, February 9, 2012

OLED Screen is Operational

I got my new OLED screen to run the example code.  To draw my own bitmaps, I'll need an app that can convert a monochrome bmp into a character array.  So far, there's only a windows app to do the conversion ... though I wonder if ImageMagick can do it.

This display is for my robotics class.  Since my robot needs to be autonomous, printing debug information to the USB port isn't gonna work.  (At least, not for more than a couple meters, when the cable slack runs out.)  I'll attach this guy to the robot and print debug messages to it.

Saturday, February 4, 2012

First Roll on the Superheadz Blackbird-fly

Click for the Flickr set
I shot a roll of Fuji Velvia 100 on the new Blackbird-fly dual-lens reflex.  (Actually, a couple of the photos were taken by my friends.)  Here's what came out.

It looks like I need to give it a little more time in the low-light situations.  I usually add about 50% on top of whatever my light meter tells me .. but I think I need to multiply by two (at least) for this one.  Full sunlight looks okay, but I think that also needs more light.

Next roll, I think I'll try either setting it to the "overcast" setting in full sunlight, or multiplying by two when I do low-light shots.  Actually, I'm thinking I'll multiply by three.  This'll be a neat one to mess with.

Saturday, January 28, 2012

Kodak Vest Pocket with Kodak Portra 160

Click for Flickr Set
Here's another roll on the Kodak Vest Pocket camera -- this time with Kodak Portra 160 print film in it.  I think we might have a winner.  Despite all the shots being totally light-leaked upon, this film really seems to suit the li'l guy.  The true winners are the indoor shots, where I had to make multi-second exposures.  The color is just fantastic, and the leaked light only adds character.

This roll was a single-variable experiment.  I'd taped over the window that shows the frame I'm on.  It looks more like the light is leaking in along the panel that opens to let you load and unload film rolls.  I'm gonna keep the frame window taped up, and I'll also tape around the panel for the next roll.  I just ordered more Kodak Portra 160 .. so it'll take a couple weeks to get the next batch of experiment data back.

Wednesday, January 25, 2012

Setting up FTDI (for XBee) on Mac OS X

My awesome brother and I have been playing with XBee radios for the past few days.  Darned near all of the programming interfaces -- and fancier breakout boards -- use a USB-to-FTDI serial translator.  I've got a new Air here that doesn't have the drivers installed yet.  So, since it took a minute or two to determine what I needed, here's my quick outline for the next time:
  • You want the Virtual Comm Port (VCP) version of the driver.
  • Plug in.  See if Terminal.app shows the new cu and tty devices, with `ls -l /dev/*usbserial*`
  • CoolTerm seems to be a nice terminal emulator.  (ZTerm still works, for the old-skoolers!)
  • Plug in USB .. to FTDI translator .. to breakout board .. to XBee radio.
  • XBees ship with 8N1 serial at 9600 baud.  Set your terminal emulator accordingly.
    • XBees don't echo your input, so turn on Local Echo in your terminal emulator.
  • In the terminal emulator, type "+++" to get into command mode.  XBee will reply "OK."
  • Continue building your robot army.
You don't actually need CoolTerm or ZTerm, if you don't mind that `screen` won't do a local echo.  If you're okay with typing blind, a `screen /dev/cu.usbserial*` command should work just fine (as long there's only one usbserial device connected at a time).  Crafting a one-liner that fakes local echo is left as an exercise for our new robotic overlords.

Saturday, January 14, 2012

DS18B20 Temperature Sensor on Arduino

I just got a DS18B20 temperature sensor from adafruit, and it took a little sleuthing to get it working.  There are a few sources of sample code, but none of them tell you how to wire the silly thing in the first place.  I eventually got it.

I downloaded and installed the Dallas Temperature Control Library, then I used tushev's wiring diagram to hook it up to an Arduino Uno.  The "Tester" example that's included with the library confirmed that everything was in one piece.  Hopefully that helps, if you're in the same boat..

Two Rolls on the Kodak Vest Pocket

Click for Flickr Set
I got back the two rolls we shot on the Kodak Vest Pocket Autographic camera.  One's Efke R 100 black and white.  The other is Rollei Crossbird 200 color slide film.  I think I like the character of the color roll, which is a new brand to me.  I'll need to try some in another camera to see how much is the film and how much is the camera.  It looks like it's the film.

As you may have noticed, there's a bit of a light issue going on.  The baffles on the thing seem to be in one piece.  The shutter also looks pretty good.  The design of the Autographic model includes a nice wide door on the back .. so I might be taping over that for the next roll.  And the window for looking at the frame number is generous.  Plus, it was a very bright couple of days.  It's also really hard to get the film in the camera in the first place.  (Now I'm just making excuses.)

Click for Flickr Set
With the handful of variables, this is gonna be a really interesting experiment.  Testing one of the easier theories first, I'll use a changing bag for the load and unload of the film.

Updating AD DNS from Mac OS X or Linux

I've got a Mac in an AD environment with DHCP.  All the Windows machines end up with the right DNS in the domain.  Mine doesn't, so my command prompt always has someone else's PTR.  The AD admins set me up so the DC will honor my DNS updates without auth.  (Thanks guys!)  In this example, my machine is tron.sub.domain.com at  Here's how I use nsupdate interactively, one command at a time, in a terminal, to restore reality:
  > update delete tron.sub.domain.com A
  > send
  > update delete PTR
  > send
  > update add tron.sub.domain.com 86400 IN A
  > send
  > update add 86400 IN PTR tron.sub.domain.com.
  > send
  > quit
nsupdate will take commands from a file or stdin, so one-liners and scripts are easy.  If you need to use auth, look at the -y or -k flag.  If your domain's SOA isn't quite aiming your client at the right server, the "server" command lets you specify where to send updates.  If your AD admins aren't as accommodating as mine, try buying them a beer.

Wednesday, January 11, 2012

Baby-Max Throws a Curveball

Okay, this one's gonna get interesting.  The Baby Max camera there, front and center, might take eight millimeter, or sixteen millimeter .. or something.  (17.5 mm?)  So I've started to create a foam insert for the old Holga to see if I can slice some 120 film *whey* down to whatever size the little guy wants.  And then there'll be a bunch of blind wrestling in a changing bag, too.

And who's going to process it?  I *think* the automatic machines can do just about any width, and I'm gonna use C-41 film to make it easier, but it's gonna be as much an adventure for my developer as it is for me.  Here we go!

Flipping Vertical Scrolling Behavior in X Windows

I've grown used to Mac OS "natural scrolling" on my trackpad.  So when I recently set up a few ubuntu netbooks, for a quick lab experiment, I wanted to have their trackpads behave the same.  It's actually pretty simple to tell X windows to flip 'em.

Short story, on a completely stock ubuntu, (and should work for anything) this will flip your scrolling:
  • open a terminal
  • run `echo "pointer =  1 2 3 5 4 6 7 8 9 10 11 12" >> ~/.Xmodmap`
  • logout of your X windows session.
  • log back in.
  • ta-da.
Long story, since the days of the dinosaurs, X Windows has been really nice about letting you remap your mouse keys .. southpaws would frequently swap their left and right buttons.  The `xmodmap` command provides an interface for this stuff.  Try `man xmodmap` and `xmodmap -help` for more details.  The above instructions just append a custom button setting to the rc file that xmodmap evaluates at log in.

Up and down scroll are considered physical buttons 4 and 5, respectively.  The "pointer = " statement above has 4 and 5 swapped.  Simple as that.

Use `xmodmap -pp` to display your current button mappings, and `xmodmap -e "pointer = default"` to reset to normal.  If you want to suss out where all of your buttons are, launch `xev` to see what events X is handling .. look for the ButtonPress event and note the "button" attribute.

Sunday, January 8, 2012

More Shots on the Viewmaster Mark II

I shot another roll of slide film on the Viewmaster Mark II.  With the last roll, I hand-crafted some reels and chopped up the film in the process.  Briefly, what I did was scan an existing viewmaster reel, then print that on card stock.  I cut out frames on the cardstock reel with an exacto, then sliced up my film and taped it to the card.  This actually works surprisingly well.  Just slip it into a normal viewer carefully.

Click here for the Flickr set.
For this roll, I'm going to keep the film intact.  I'm pretty sure I can craft a viewer of my own that will let me slide the whole strip through it, with a mask that'll only show one pair at a time.  So instead of advancing the usual round disc to see frames, I'll slide the film one frame's width through the contraption.  It'll likely be totally hand-done, but if I get excited and try to 3D print it, I'll post the files for everyone to join in.

First Roll on the Coronet Three-D

Click here for the Flickr Set.
I just got back the first roll from my Coronet Three-D camera.  I'm kinda "meh" about it, but it could be my own fault .. I'm not subtracting the film's mask color correctly.  Also, it looks like this one prefers to be closer to the subject than my Sputnik does.

As you can tell from one or two pairs of frames, it likes to spontaneously fall apart.  Poof!  Playful little thing, that way..

Thursday, January 5, 2012

Kodak Vest Pocket Autographic

Check out the new arrival, a Kodak "Vest Pocket" camera.  This is the "Autographic" style, which means there's a small door on the back, that you can flip open and write directly on the film backing (possibly score, instead, not sure yet).  It takes 127 film, and I've loaded a roll of the Efke R 100, black and white.

It's totally adorable .. the whole thing collapses down flat, so it can fit in your vest pocket.  For a time, it was sold as the "soldier's camera," because it was so portable.  Also, one of these seems to've gone to the top of Mt. Everest.

They were probably manufactured between 1915 and 1926.  Mine has all sorts of lists of the patents that it's covered under, and one of them is from Nov 8, 1921.  So I'm squarely between world wars.  (i.e. not much market for soldiers.)

Exposure is going to be interesting.  The pre-set shutter speeds are a twenty-fifth or fiftieth of a second.  There's a B setting.  The aperture isn't listed in f-stops tho .. a dial sets it between "portrait" and "clouds" sizes.  I'm shooting this first roll using the smallest aperture (clouds) and the fiftieth of a second shutter .. in bright sunlight.  I'll try some B shots, as well.  I love science (physics?) experiments!

Sunday, January 1, 2012

Using RGB LEDs on an Arduino

Click to embiggen.
For some reason, it wasn't easy to find sample code or pinouts for using a common-cathode RGB LED with Arduino.  I think I'm missing something obvious, but oh well.  So, I messed around and got it to work.

  • The longest pin takes 5v in.
  • Grounding the other three illuminate red, blue and green.
  • You can use digital PWM outputs to ground those pins.
  • Setting a pin to 0 illuminates that color.  1023, off.
  • Setting a pin to an intermediate value adjusts its brightness.
I've done a super simple diagram, at right.  And copypasted some bare-bones code that runs through each pin, in turn, grounding it for a half second.  These links go directly to the sketch, and the fritzing diagram.

// RGB LED figure-er-out-er by gabe.                 gms@causalloop.com
//    an Arduino & Beer (tm) Production.                blog.fnaard.com
// Run your RGB LED's longest pin to 5v.  Run the other pins to digital
// pins 9, 10 and 11.  I've put a 330 ohm resistor, in series, between
// each of those three pins and its corresponding digital pin.
// This sketch runs through pins 9, 10, 11 grounding each one in turn ..
// for sussing out which pin illuminates which color inside the thing.
// You gotta set all the pins to OUTPUT, so that you can write values
// to them.  They won't actually output any voltage .. in fact, they'll
// act as ground.  Setting a value for the pin will adjust its PWM rate
// and that adjusts how much electricity can flow through that color LED.
// Put simply, it's what you do with single-color LEDs, but in reverse.

void setup () {
  pinMode ( 11, OUTPUT );
  pinMode ( 10, OUTPUT );
  pinMode (  9, OUTPUT );

// Now just run through the pins, setting each one to full brightness (0)
// for a half second, while setting the other two to off (255).

void loop () {
  analogWrite ( 11, 255 );
  analogWrite ( 10, 255 );
  analogWrite (  9, 0    );        // Red, on mine.
  analogWrite ( 11, 255 );
  analogWrite ( 10, 0    );
  analogWrite (  9, 255 );     // Green on mine.
  analogWrite ( 11, 0    );
  analogWrite ( 10, 255 );
  analogWrite (  9, 255 );     // Blue on mine.
  analogWrite ( 11, 255 );
  analogWrite ( 10, 255 );     // Everyone off.
  analogWrite (  9, 255 );
  delay(1000);                   // Pause longer.  For dramatic effect.