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.
Tuesday, July 17, 2012
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.
Labels:
8 mm,
film,
motion picture,
sekonic
Location:
Hillcrest, San Diego, CA, USA
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.
Labels:
3d,
film,
sputnik,
tru-view,
viewmaster,
weekend project
Location:
Hillcrest, San Diego, CA, USA
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.
Labels:
MacOS,
sysadmin,
undocumented,
windows
Location:
Hillcrest, San Diego, CA, USA
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.
Location:
Hillcrest, San Diego, CA, USA
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.
Labels:
ipad,
make,
sysadmin,
undocumented
Location:
Hillcrest, San Diego, CA, USA
Wednesday, May 2, 2012
Motorcycle Parking in Downtown San Diego
Click here for the map. |
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.
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:
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!? |
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
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"};
exec(command);
Easy enough! Next up, if I've tapped more than three pint glasses of beer, disable the Send button in my email client.
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.
String[] command = { "/usr/bin/osascript","-e","tell application id \"com.apple.ScreenSaver.Engine\" to launch"};
exec(command);
Easy enough! Next up, if I've tapped more than three pint glasses of beer, disable the Send button in my email client.
Labels:
MacOS,
processing,
rfid
Location:
Hillcrest, San Diego, CA, USA
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.
- 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.
Labels:
undocumented,
windows
Location:
Hillcrest, San Diego, CA, USA
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...
Location:
Gaslamp, San Diego, CA 92101, USA
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!
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!
Location:
Gaslamp, San Diego, CA 92101, USA
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.
Location:
Hillcrest, San Diego, CA 92103, USA
Saturday, February 4, 2012
First Roll on the Superheadz Blackbird-fly
Click for the Flickr set |
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.
Labels:
blackbird-fly,
film
Location:
Hillcrest, San Diego, CA, USA
Saturday, January 28, 2012
Kodak Vest Pocket with Kodak Portra 160
Click for Flickr Set |
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.
Labels:
film,
kodak vest pocket
Location:
Hillcrest, San Diego, CA, USA
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!)
- (Thanks to Building Wireless Sensor Networks for suggesting CoolTerm.)
- 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.
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 |
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 |
Labels:
film,
kodak vest pocket
Location:
Hillcrest, San Diego, CA, USA
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 192.168.0.42. Here's how I use nsupdate interactively, one command at a time, in a terminal, to restore reality:
nsupdate
> update delete tron.sub.domain.com A
> send
> update delete 42.0.168.192.in-addr.arpa PTR
> send
> update add tron.sub.domain.com 86400 IN A 192.168.0.42
> send
> update add 42.0.168.192.in-addr.arpa. 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.
nsupdate
> update delete tron.sub.domain.com A
> send
> update delete 42.0.168.192.in-addr.arpa PTR
> send
> update add tron.sub.domain.com 86400 IN A 192.168.0.42
> send
> update add 42.0.168.192.in-addr.arpa. 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.
Location:
Hillcrest, San Diego, CA, USA
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!
Location:
Hillcrest, San Diego, CA, USA
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:
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.
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.
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.
Labels:
linux,
sysadmin,
ubuntu,
undocumented
Location:
Sorrento Valley, San Diego, CA, USA
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.
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.
Click here for the Flickr set. |
First Roll on the Coronet Three-D
Click here for the Flickr Set. |
As you can tell from one or two pairs of frames, it likes to spontaneously fall apart. Poof! Playful little thing, that way..
Location:
Sorrento Valley, San Diego, CA, USA
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!
Labels:
film,
kodak vest pocket
Location:
Sorrento Valley, San Diego, CA, USA
Sunday, January 1, 2012
Using RGB LEDs on an Arduino
Click to embiggen. |
- 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.
//
// 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.
delay(500);
analogWrite ( 11, 255 );
analogWrite ( 10, 0 );
analogWrite ( 9, 255 ); // Green on mine.
delay(500);
analogWrite ( 11, 0 );
analogWrite ( 10, 255 );
analogWrite ( 9, 255 ); // Blue on mine.
delay(500);
analogWrite ( 11, 255 );
analogWrite ( 10, 255 ); // Everyone off.
analogWrite ( 9, 255 );
delay(1000); // Pause longer. For dramatic effect.
}
Location:
Hillcrest, San Diego, CA, USA
Subscribe to:
Posts (Atom)