tag:blogger.com,1999:blog-75532258579229126552024-03-12T21:55:02.353-07:00Where the green meets the blueA collection of musings from a beach dwellerBretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.comBlogger33125tag:blogger.com,1999:blog-7553225857922912655.post-62375846768438307822012-12-09T16:13:00.000-08:002012-12-09T16:14:44.325-08:00Master of NoneThis weekend, I<br />
<ul>
<li>- made a delicious quiche from scratch</li>
<li>- replaced the battery in an iPhone</li>
<li>- replaced the screen in an iPhone</li>
<li>- replaced the screen in an HTC Evo</li>
<li>- dismantled, repaired, and remantled(?) the dishwasher</li>
<li>- mocked up a pattern in Illustrator for an argyle patterned crochet hat </li>
</ul>
Can I just be a house-husband or something? <br />
<br />Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com2tag:blogger.com,1999:blog-7553225857922912655.post-69258078705846882792011-11-01T23:06:00.000-07:002011-11-02T15:49:31.666-07:00Black Market iPhone Charger<i><span style="font-size: x-small;">Note: most of this post was written months ago. Since I'm getting more and more into electronics tinkering, I decided to finish it up and publish it.</span></i><br />
<br />
Have you ever tried to charge your iPod or iPhone with something other than the included charging cable? Then you might have seen this dreaded message:<br />
<br />
<a href="http://1.bp.blogspot.com/-ssd-vt-x1pc/TZo01Gg03BI/AAAAAAAAASw/iiuqlR_uLGc/s1600/not_supported.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5591839974219897874" src="http://1.bp.blogspot.com/-ssd-vt-x1pc/TZo01Gg03BI/AAAAAAAAASw/iiuqlR_uLGc/s400/not_supported.png" style="display: block; height: 131px; margin: 0px auto 10px; text-align: center; width: 280px;" /></a><br />
<br />
How does it know? What's special about the Apple USB charger? Doesn't the U in USB mean Universal? Well, yes it does. But for some reason Apple doesn't want just anyone making (or making money from) an iPod/iPhone charger. That's why recent versions of their products don't work with any old charger.<br />
<br />
Well fuck them.<br />
<br />
Actually, I really like Apple and their products, except for the "non user-serviceable" attitude they have. You can't swap your own battery. You can't modify the hardware in any way without voiding the warranty. Well, I never use warranties anyways.<br />
<br />
So here's the deal. I needed a charger for my car. I already have a 5V power supply that is providing in excess of 1A. I just need to be able to put the iPhone into high amperage charging mode and trick it into thinking there is a legit Apple charger doing the charging. The way to do this is kind of sneaky.<br />
<br />
USB has only 4 wires. Two for power (a 5V and a ground) and two for data (D- and D+). With any standard USB device, you should just be able to power it with the two power wires. You can leave the data wires unattached.<br />
<br />
But with a newer Apple device, if there is nothing on the data wires, then nothing happens! It won't charge! The power is there on the power wires, but your stuck up little iPhone scoffs at it. It can tell that you are using a non-Apple charger because Apple chargers sneakily put a small charge on the data wires.<br />
<br />
To fake an Apple-supported wall charger, put 2.0V on D- and 2.8V on D+. To fake an Apple-supported computer charger, put 2.0V on both the D- and D+ wires. The distinction here is that the wall-charger will draw a full amp or more, whereas the computer charger will only draw half an amp, to adhere to the USB spec.<br />
<br />
So I went to Fry's to get some resistors and a female USB port and was in business.<br />
<br />
Materials used<br />
- 24 hour fitness membership card<br />
- 2x 51K Ohm resistors<br />
- 1x 47K Ohm resistor<br />
- 1x 75K Ohm resistor<br />
- solder<br />
- electrical tape<br />
- female port from a usb extender<br />
- wire<br />
<br />
Tools used<br />
- drill<br />
- soldering iron<br />
- wire cutters/strippers<br />
- voltmeter<br />
- The Internet<br />
<br />
<br />
First, I drew out a schematic. It's not very complex, but it was fun flashing back to high school AP physics! <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-Mga4Fkzswzw/TqUSv2YFoHI/AAAAAAAAAV4/YiPaGcAQg5g/s1600/IMG_0520.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://1.bp.blogspot.com/-Mga4Fkzswzw/TqUSv2YFoHI/AAAAAAAAAV4/YiPaGcAQg5g/s320/IMG_0520.JPG" width="240" /></a></div>
<br />
Then I drilled a bunch of holes into my 24 hour fitness card and started soldering and taping. Here's the finished product:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-S79o7ggwWvQ/TqUSitNG9RI/AAAAAAAAAVw/v7iZBw0DRns/s1600/IMG_0522.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="http://4.bp.blogspot.com/-S79o7ggwWvQ/TqUSitNG9RI/AAAAAAAAAVw/v7iZBw0DRns/s400/IMG_0522.JPG" width="400" /></a></div>
<br />
This is now tucked away behind my dashboard, powering my iPhone every time I plug it in, without having to buy a special charging cable.<br />
<br />
References:<br />
<a href="http://pinouts.ws/usb-pinout.html">USB connector pinout</a><br />
<a href="http://pinouts.ru/CellularPhones-A-N/iPhone_connector_pinout.shtml">iPhone dock connector pinout</a><br />
<a href="http://www.sinfuliphone.com/showthread.php?t=31301">Resistors on the D-/D+ USB pins for iPhone</a><br />
<a href="http://www.ladyada.net/make/mintyboost/">MintyBoost! (provided much background information for these types of hacks)</a><br />
<a href="http://vimeo.com/13835359">MintyBoost! video teardown of charger</a><br />
<a href="http://www.logwell.com/tech/components/1resistor_color_code.html">Resistor band color guide</a><br />
<a href="http://support.apple.com/kb/HT4049">Apple's own documentation regarding power through USB</a>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com0tag:blogger.com,1999:blog-7553225857922912655.post-38810804488210727462011-10-24T00:17:00.000-07:002011-10-24T00:17:59.704-07:00Arduino Development Challenges<br />Here is a snippet of code from a sample Arduino sketch I've been toying with:<br /><span style="font-size: x-small;"><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">TCCR2A = (TCCR2A | _BV(COM2A1)) & ~_BV(COM2A0);</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">TCCR2A &= ~(_BV(COM2B1) | _BV(COM2B0));</span></span><br /><br />
What... the... fuck? The only thing I remotely recognize are the operators - and even those are all scary and bit-wise. TCCR2A, _BV(), COM2A1... what are these things? They are certainly not defined anywhere in this sketch. Nor are they it defined in any of the manually linked files or libraries. To me, this exemplifies that the hardest part about learning an entirely new vertical system at once is not knowing <b>at what level</b> constructs live.<br />
<br />Now, I do know what this code is supposed to be doing. It's commented rather well, actually. And looking at it alongside the Arduino datasheet I can tell the <b>what</b>. But I need to know the <b>how</b>. It's like being able to understand pre-made sentences in a foreign language, but not being able to create your own. In order to form my own, I need to know what each part does.<br />
<br />
<br />
<span style="font-size: large;">TCCR2A</span><br />
<br />
Let's start with what it is supposed to be doing. It's supposed to be setting the Compare Output Mode (COM) on Timer 2, by setting the appropriate COM bits in the TCCR2A register. The TCCR2A register, like many on the Arduino, is an 8 bit bitmask. It look like this:<br /><br /><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">TCCR2A</span></span><br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"> </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">bit| name | explanation</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">---+--------+-------------------------</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 7 | COM2A1 | Compare Output Mode A</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 6 | COM2A0 | Compare Output Mode A</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 5 | COM2B1 | Compare Output Mode B</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 4 | COM2B0 | Compare Output Mode B</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 3 | - | reserved</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 2 | - | reserved</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 1 | WGM21 | Waveform Generation Mode</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;"> 0 | WGM20 | Waveform Generation Mode</span></span><br /><br />The first thing to understand is that the names of all the Arduino registers (TCCR2A, TCCR2B, and about 90 others) are global, read-write variables containing the bitmask value in the register. On bootup, when all the bits in TCCR2A are set to 0, the value of TCCR2A is B00000000 (that's Arduino shorthand for binary 0). And at any time in your sketch you can set TCCR2A = B01010101 or whatever you want. TCCR2A is defined as:<br />
<span style="font-size: x-small;"><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">#define TCCR2A _SFR_MEM8(0xB0)</span></span><br /><br />
<br /> <span style="font-size: large;">_BV()</span><br />
<br />
_BV() is defined in sfr_defs.h:<br />
<br /><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">#define _BV(bit) (1 << (bit))</span><br /><br />OK, so bitwise-shift a 1 a certain number of positions to the left. I get it on a technical level, but it doesn't make sense to me yet on a conceptual level. Especially not knowing exactly what types of values are typically passed it (the name of the argument - bit - implies some meaning there...)<br />
<br />
By the way, the accepted mnemonic is "Bit Value".<br />
<br />
<br />
<span style="font-size: large;">COM2A0 and the rest</span><br />
<span style="font-size: large;"> </span><br />
The answer that took me the longest to grok was this: the names of the bits (COM2A1, COM2A0, etc.) are <b>NOT</b> defined variables for the values of those bits. They are instead constants which contain the bit's location relative to the byte in which they reside. In other words:<br /><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">#define COM2B0 4</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">#define COM2B1 5</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">#define COM2A0 6</span><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">#define COM2A1 7</span></span><br />
<div style="font-family: inherit;">
<br /></div>
<br />
<span style="font-size: large;">Putting it all together</span><br />
<br />
Now back to the sample code I'm trying to understand:<br />
<span style="font-size: x-small;"><br style="font-family: "Courier New",Courier,monospace;" />
<span style="font-family: "Courier New",Courier,monospace;">TCCR2A = (TCCR2A | _BV(COM2A1)) & ~_BV(COM2A0);</span><br style="font-family: "Courier New",Courier,monospace;" />
<span style="font-family: "Courier New",Courier,monospace;">TCCR2A &= ~(_BV(COM2B1) | _BV(COM2B0));</span></span> <br />
<br />AHA! To set the COM2A1 bit to ON (what it actually does is unimportant to this post), you shift an 'ON' bit (a one) left by the correct number of positions (7) and then bitwise-or it onto the byte!<br /><br /><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">TCCR2A |= _BV(COM2A1) // turn ON the COM2A1 bit</span></span><br /><br />And to set the COM2A0 bit to OFF, you start the same way (in this case shifting a one 6 bits to the left) but negate it and bitwise-and it onto the byte!<br /><span style="font-size: x-small;"><br style="font-family: "Courier New",Courier,monospace;" /><span style="font-family: "Courier New",Courier,monospace;">TCCR2A &= ~_BV(COM2A0) // turn OFF the COM2A0 bit</span></span><br /><br />What a trip. I'm still trying to think of whether I like this notation or not. Most of the alternatives I can come up with each have their own faults. This method is at least fairly self-documenting <b>once you know it</b>.<br />
<br />
<br />
<span style="font-size: large;">References:</span><br />
<span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace; font-size: x-small;">grep define /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/options/gcc-version/include/avr/iom328p.h | less</span><br /><a href="http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html">http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html</a><br /><a href="http://smacula.blogspot.com/2011/04/creating-variable-frequency-pwm-output.html">http://smacula.blogspot.com/2011/04/creating-variable-frequency-pwm-output.html</a></span><br /><span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;"></span></span>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com3tag:blogger.com,1999:blog-7553225857922912655.post-60157353280903204562011-10-18T20:32:00.001-07:002011-10-18T21:48:15.350-07:00Arduino - Day 1I ordered an <a href="http://www.amazon.com/Arduino-Duemilanove/dp/B001VK18HC">Arduino (Duemilanove)</a> and a starter kit from Amazon. The Arduino came today, but it turns out I never ordered the kit - I just left it in my cart and one-click ordered the Arduino. Anyways the point is I was left with a board but no wires/sensors/actuators/anything to do anything with.<br /><br />All the Arduino came with is the board itself. (It was prebuilt; I didn't need to assemble/solder it together.) Luckily I have a box of electonic odds and ends to pick through.<br /><a href="http://www.liquidware.com/system/0000/1359/Arduino_Duemilanove.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 529px; height: 529px;" src="http://www.liquidware.com/system/0000/1359/Arduino_Duemilanove.jpg" alt="" border="0" /></a>First up, I found a USB A to B cable from who knows what - an old printer maybe. This is essential to powering the Arduino and being able to execute code on it.<br /><br />Then I took apart a cheap headlamp (I think I bought a 3-pack for $10 at Home Depot during the great San Diego blackout of 2011). I was able to salvage 5 white LEDs, a few bits of wire, a momentary switch, and a possibly useful 3xAAA battery harness.<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.ebayimg.com/02/%21B-koSu%21EGk%7E$%28KGrHqJ,%21k8Ey+jCw3Q6BM9B54e3Bg%7E%7E_35.JPG"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 300px; height: 166px;" src="http://i.ebayimg.com/02/%21B-koSu%21EGk%7E$%28KGrHqJ,%21k8Ey+jCw3Q6BM9B54e3Bg%7E%7E_35.JPG" alt="" border="0" /></a><br /><br />Lastly I found an old cell phone - we're talking an LG clamshell design from 2000 or so.<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://sim-unlock.net/foto/14_17_33_LG_PM-225.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 250px; height: 275px;" src="http://sim-unlock.net/foto/14_17_33_LG_PM-225.jpg" alt="" border="0" /></a><br />I've never taken apart this phone before, but I was able to take out the speaker and vibrating motor, identify which was which, and hook them up to an external power source without blowing them up.<br /><br />I also have a handful of resistors, a few spools of wire, wire cutters, soldering iron and solder, and a multimeter. And who knows what else lying around in the closet that I can dissect tomorrow.<br /><br />With these scavenged components, here's what I was able to do so far today:<br />- install Arduino IDE and test the board<br />- blink a single LED<br />- 5 LED array that flashes a static pattern (1-2-3-4-5-4-3-2-1-2-3-4-5-4-3-2-1...)<br />- 5 LED binary counter with button. When you click the button it increments the counter. When you hold the button it resets the counter.<br />- hook up the speaker and play an 8-bit "shave-and-a-haircut"<br />- button and speaker: click the button to hear a square wave, release for silence, hold the button to cycle up and down in frequency<br />- convert an audio file to 8bit 8k PCM unsigned wav, load it on the Arduino, and play it (!!!!)<br />- hook up the vibrating motor to the switch<br /><br /><br />These things feel like magic. I love being able to understand the whole process vertically: both the down and dirty electronics and the software. That I can hook up a bunch of wires, write a bunch of numbers to flash memory, press a button that I wired and have recognizeable sound come out of a speaker.... is invigorating.<br /><br />I already know what big project I want to work towards and that's what is steering my exploration. But at this point, this tinkering process is such a good learning tool. Just today I've learned so much about the Processing language, the Arduino platform, electronics components and theory, and a few mac and unix goodies (ffmpeg conversion, editing and cat'ing a wav header onto a headerless chunk of wav data... ) This is fun :)<br /><br /><a href="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/320285_10150413085843767_510798766_10068888_1055112579_n.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 665px; height: 498px;" src="https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/320285_10150413085843767_510798766_10068888_1055112579_n.jpg" alt="" border="0" /></a>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com1tag:blogger.com,1999:blog-7553225857922912655.post-13031660077465805202011-08-22T11:40:00.000-07:002021-03-22T13:04:38.117-07:00Rocky's Wild Ride<a href="http://4.bp.blogspot.com/-DHgLrMV7Q2Q/TlKuOdK6-HI/AAAAAAAAAVQ/I3JUZ9qCqgs/s1600/photo.JPG" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5643764846420490354" src="http://4.bp.blogspot.com/-DHgLrMV7Q2Q/TlKuOdK6-HI/AAAAAAAAAVQ/I3JUZ9qCqgs/s400/photo.JPG" style="cursor: pointer; float: right; height: 248px; margin: 0pt 0pt 10px 10px; width: 185px;" /></a>Meet Raquelle the Otter, aka "Rocky". She is our frisbee team's mascot and dear friend. This is the story of her dastardly kidnapping and daring rescue; a tale of high-stakes internet detectivery and good old-fashioned breaking and entering; of intrigue, deceit, betrayal and redemption.<div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /><div><br /><div><span style="font-size: 130%; font-weight: bold;">Sunday</span> </div><div><br /></div><div>Someone covertly steals <a href="https://www.facebook.com/pages/Raquelle-Rocky-Otter/221273194584498">Rocky</a>, our team's plush pink otter mascot, from our sideline during the finals. We were on such a high from winning the tournament that I forgot to make sure she got home safe. As I'm driving home, I think "Hmm, I wonder who has Rocky", assuming K-na or Micah or another teammate picked her up to take her home. <div> </div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Monday</span></span></div><div><span style="font-size: 130%;"><span style="font-weight: bold;"><br /></span></span></div><div>
A few <a href="https://www.facebook.com/OTRultimate">OnTheRockstars</a> get emails and facebook messages from <a href="https://www.facebook.com/profile.php?id=100002779489534">"Stolen Otter" on facebook</a>. There is a picture of Rocky bound and blindfolded against an anonymous blue cloth. There are some demands:</div><div><blockquote style="font-style: italic;">Dearest OTR,</blockquote><blockquote style="font-style: italic;">Congratulations on winning your tournament! </blockquote><blockquote style="font-style: italic;">btw I stole your otter. </blockquote><blockquote style="font-style: italic;">
Please know that the last thing I want to do is harm a pretty little pink hair on her body. However, returning Rocky to safety will come at a price.
I have 4 simple demands that will return Rocky to you in good health. Please take a picture of these demands and post them on this page to prove you are serious about her return. They are the following:</blockquote><blockquote style="font-style: italic;">
1) Have everyone on OTR friend request me. </blockquote><blockquote style="font-style: italic;">2) A picture of Pumba wearing a dress. (Heels as well if you can find them in his size.)</blockquote><blockquote style="font-style: italic;">3) Brett wearing the t-shirt that will be provided for him at the DUDE tournament on Saturday for no shorter length than one point. </blockquote><blockquote style="font-style: italic;">4) Have K-Na perform a "K-Nasty rap" and post the Youtube link on this page. (Rocky will be returned faster if she looks ghetto. We're talking bandaid under the eye status.)</blockquote><blockquote style="font-style: italic;">
These are my demands. You have one week to complete.
Once all photos and videos are posted on facebook, I will have Rocky the Otter dropped off at a specified location. I will send you a message of where and when.
Thank you for your cooperation.
Do not contact the authorities or Rocky gets it.
- The Otter Thief
</blockquote>We assume it's someone from our friendly rival San Diego team Milkshake. I immediately suspect Karen and Paul, with possible involvement from Lemos, Bunk, Tracey, Aiza, or Darin. There is an initial flurry of emails to our mailing list as we try to wrap our heads around what has happened, and try to get everyone to friend the proper page on facebook to satisfy the first demand. </div><div><br /></div><div><span style="font-size: 130%; font-weight: bold;">Tuesday</span></div><div><br /></div><div>I whip up an online trap for the culprits. It has two phases: </div><div><br /></div><div>Phase 1) Find a <a href="http://www.google.com/imgres?q=ur+my+otter+half+thumb&um=1&hl=en&biw=1436&bih=751&tbm=isch&tbnid=2Ddkvsv95D2SSM:&imgrefurl=http://www.wellsphere.com/healthy-living-article/going-back-to-baltimore/1432616&docid=Cn3SuGvhvR4POM&w=504&h=379&ei=jKRSTqzjC8SysALuko3dBg&zoom=1&iact=hc&vpx=178&vpy=132&dur=244&hovh=195&hovw=259&tx=143&ty=89&page=1&tbnh=131&tbnw=174&start=0&ndsp=28&ved=1t:429,r:0,s:0">cute otter picture</a> on google image search, post it to an innocuous web server that I control, and send a link to the picture to the Stolen Otter facebook account. Whoever logs into that account will click on that link, accessing my web server, and leaving behind a log of their IP address.</div><div><br /></div><div>Phase 2) Knowing that the thieves are very likely registered on the <a href="http://dudeultimate.com/">DUDE website</a>, alter the site to keep logs of IP addresses in conjunction with DUDE user accounts. In this way I can identify the DUDE user for each IP that connects to that site. </div><div><br /></div><div>After this code is in place, I just have to wait for the otter thieves to 1) click on the link I sent them and 2) check the DUDE site for their team schedule or other info. If they do both of those from the same computer, each will have the same IP address and I can cross reference them and see who they are!
This is not a foolproof scheme, but it's a place to start.</div><div><span style="font-size: 130%;"><span style="font-weight: bold;"><br /></span></span></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Tuesday Night</span></span></div><div><br /></div><div>I get home from DUDE around midnight. I check the online logs from both phases. There are not one, but TWO hits on the cute otter picture I sent to the Stolen Otter account. One of the IP addresses also accessed the DUDE site a little earlier in the day! That means I can track otter thief number 1. It turns out to be.... Bunk.</div><div><br /></div><div>The other IP address that accessed the cute otter picture does NOT access DUDE, so I can't directly find out who it is. I can find out who owns the IP address, but it is just part of a large chunk of IPs owned by Cox. Without access to Cox's servers, there's no way for me to find out which of their customers was using this IP at that time.</div><div><br /></div><div>However there was some other information I was able to glean from the second, unknown IP address. First of all, it was accessed from a normal desktop browser - not one on a mobile phone. And secondly, the unknown IP accessed the cute otter picture around 9pm. I was at DUDE all night, and I know that certain people were there all night and had no way to access a computer at 9. Because of this, Karen and Lemos get crossed off the short list of suspects.</div><div><br /></div><div>Bunk has pictures of his apartment posted on facebook, along with the address. Pictures of the outside, the inside, and the surrounding area. I can tell the whole layout of the apartment based on all of this, and can tell which windows are his and where each room is as easily as if I were standing in his apartment. I decide to swing by the next day and see if I can sneak in a window. At this point I'm pretty sure I know exactly where Rocky is. I'm convinced because of the IP data, and because it "feels" like it could be Bunk's doing. I assume the other unknown IP address is Paul, because he seems like the next likely suspect. I'm psyched. It's 3am and I can barely sleep because I'm so excited to break into Bunk's. </div><div><br /></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Wednesday</span></span></div><div><br /></div><div>I wake up and check the Stolen Otter facebook page. There is a new profile photo, showing Rocky perched precariously over a boiling pot of water. I take special notice of the style of stove and of the surrounding faux-wood countertop. I save a copy of the pictures in case they are later deleted. And in fact, someone does try to hide a little more detail later by changing the picture to the bottom picture below - cutting out the counter out.</div><div>
<a href="http://1.bp.blogspot.com/-3VwU8kzRewY/TlKogyqJWdI/AAAAAAAAAVA/0URiefhXz7Q/s1600/210891_103846396384676_100002779489534_19499_5311292_o.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5643758564356479442" src="http://1.bp.blogspot.com/-3VwU8kzRewY/TlKogyqJWdI/AAAAAAAAAVA/0URiefhXz7Q/s400/210891_103846396384676_100002779489534_19499_5311292_o.jpg" style="cursor: pointer; height: 250px; margin: 0pt 10px 10px 0pt; width: 339px;" /></a>
<a href="http://1.bp.blogspot.com/-nL6s1RqPODU/TlKo7BKgJBI/AAAAAAAAAVI/Jncyw_tazRM/s1600/288770_103846813051301_100002779489534_19503_3660177_o.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5643759014926885906" src="http://1.bp.blogspot.com/-nL6s1RqPODU/TlKo7BKgJBI/AAAAAAAAAVI/Jncyw_tazRM/s400/288770_103846813051301_100002779489534_19503_3660177_o.jpg" style="cursor: pointer; height: 250px; margin: 0pt 10px 10px 0pt; width: 298px;" /></a> </div><div><br /></div><div>I check the images of Bunk's apartment, and compare the stove there with the stove in the profile picture. It's NOT a match. At this point I'm a little deflated. I was so sure it was Bunk, but clearly that was someone else's stove. There was at the very least one more accomplice, and I was no closer to figuring out who that was. I held off on the sting operation I had planned. </div><div><br /></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Wednesday Night</span></span></div><div><br /></div><div>Talking at Porter's with Kief, Becky, Phil, Zeff after DUDE. We start talking about me raiding Paul's place the next day, possibly bringing Suzanne with me to climb through the doggy door. Becky is taking K-na's dog that night and for all of Thursday, and she offers to call Paul/Roberta to see if their dogs are available for a playdate, or more importantly whether Paul and Roberta themselves will be home that day. </div><div><br /></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Thursday</span></span></div><div><br /></div><div>I get notified from Becky that Paul and Roberta are in fact gone for the day, at work. I cruise over to their place to scope it out. I'm walking around their neighborhood for a few minutes before I find their place. I'm pretending to talk on the phone, walking up and down the same street, the same few driveways, for way too long if anyone in the neighborhood is actually paying attention. I'm peeking over fences, creeping through back yards. I'm basically being so sketchy. </div><div><br /></div><div>Finally, I find their place. I freeze for a moment because the front door is actually wide open. Crap, what if they are home? How do I explain my visit? I get to the front door and the heavy duty screen/security door is closed and locked. As soon as I get within a few feet of it, their dogs start barking wildly at me. So I walk over to the side yard, and they come out the doggy door. As soon as I reach out my hand to pet them, they shut up and start licking me. Maybe it was my soothing tones, or familiar smell, who knows. At this point I feel that I've already been around too long - I don't want to climb in the doggy door in case anyone in the neighborhood has already taken notice of me. </div><div><br /></div><div>So I can't get in, but I peer through the front door into the kitchen. I can't see the stove, but the countertop I can see is tile - not faux-wood - and I decide the otter is probably not there anyways. I leave. </div><div><br /></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Friday</span></span> </div><div><br /></div><div>Time is running out. The demands made by the otter thieves are supposed to all come out Saturday at the DUDE tournament. I've all but exhausted my options for how to try to get Rocky back on my own. Up until now I've been doing most of the legwork myself, not knowing who to trust. K-na and Micah, surely. But I had been so paranoid that I thought anyone else - even a teammate - could be in on it, just for the fun of it. </div><div><br /></div><div>I check for more activity on the cute otter picture, and there has been a new hit since Wednesday. This new IP did NOT access the DUDE web page, so I can't tell directly who it is. But the whois on it comes back as being owned by MedImpact. This is more promising than just being an anonymous Cox IP like the last one.</div><div><br /></div><div>I look up MedImpact online. Facebook, LinkedIn, Google. At this point I decide I need help if this thing is going to go down. I bring the rest of the team into the fold via our team's mailing list, asking who we know that works at MedImpact. OnTheRockstars jump to action. Pebbles and Whitey were all over the internet with me, looking for clues, coming up with ideas. I go through the list of 400+ employees that LinkedIn knows at MedImpact, and don't find anyone I recognize. But LinkedIn says Sharon knows someone that works there. I briefly suspect Sharon of being in on the kidnapping (like I said, paranoid) and I text her to get more info or to smoke her out. She tells me the name of her contact at MedImpact. I look him up on Facebook and he and I have two mutual friends: Sharon (expected) and Roberta (unexpected!!) Sharon tells me that the place Roberta works had their servers co-located with MedImpact's recently. Therefore it's entirely likely that Roberta checked the Stolen Otter facebook account from work and it showed up as MedImpact in my server logs. Awesome! We now know with reasonable certainty that both Bunk and Roberta are involved. But the question remains: whose stove is in the picture?!</div><div><span style="font-size: 130%;"><span style="font-weight: bold;"><br /></span></span></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Action</span></span> </div><div><br /></div><div>I spring into action. Kief and I had previously fleshed out a plan for what to do if I found Rocky. I needed to be able to send Milkshake a message. </div><div><br /></div><div><a href="http://2.bp.blogspot.com/-0twtog2EhKQ/TlK0YfrAjRI/AAAAAAAAAVY/9AanVnR2TUE/s1600/image.jpeg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5643771615960403218" src="http://2.bp.blogspot.com/-0twtog2EhKQ/TlK0YfrAjRI/AAAAAAAAAVY/9AanVnR2TUE/s400/image.jpeg" style="cursor: pointer; float: left; height: 215px; margin: 0pt 10px 10px 0pt; width: 162px;" /></a>It's arts and crafts time. I pack a few screwdrivers, an exacto knife, sharpies, and rope with me. I cut out some little Master Shake hands. I go to Von's, buy bendy straws. I go to a cheap-o mexican place and get a big old styrofoam cup (and a bacon burrito, naturally). Then I put it all together into a Master Shake replica that I can swap out with Rocky once I find her, which I WILL do, today. </div><div><br /></div><div>First stop: Back to Paul and Roberta's. Last time I was there I didn't actually see the stove, and Roberta's newly verified involvement via the IP trace means I need to be actually see her stove to be sure. I check with our email list to see if anyone knows if Paul or Roberta are home. Alicia comes back with this gem:
<blockquote></blockquote><div></div><blockquote style="font-style: italic;"><div>I have it on good authority that they are both at work today. and also, that their dogs are easily distracted by ham.
</div></blockquote>
So this time I go back, feed the dogs some ham (c'mon, we've all seen heist movies before), crawl in through the doggy door, and search their apartment. The stove is not a match, and there is no otter to be found.</div><div><br /></div><div>Next: to Bunk's! Maybe he got a new stove since the reference picture I saw on facebook. It's worth a shot. I get there, but there are so many people around, and his place is pretty out in the open, so I can't get in. I can't even see in the windows. I leave, still thinking Rocky could possibly be inside.</div><div><br /></div><div>Then: To the Lemos Pad! His roommates let me in. I'm making conversation with his roommates and making my way casually towards the kitchen. It's past noon and one of his roommates is cooking eggs on the stove. The stove, which is not a match. I excuse myself to leave. On my way out, one of his roommates says "I'll tell Scott you stopped by." I turn around and say "You know what? Don't. This was going to be a surprise." I flash him a disarming grin and walk out.</div><div><br /></div><div>Lastly: To Karen's. Yes, she had an alibi for not being available to check the Stolen Otter facebook account at 9pm on Tuesday, but I still can't rule out her stove until I see it. I email the list to get her address. Alisha responds again:
<blockquote style="font-style: italic;">I have it on good authority that Karen also likes ham</blockquote>
I giggle. Pebbles comes through with Karen's address. I can't get into her house, but I can peek in the windows and see her stove. She's clean.
The whole team has been following my progress on the mailing list, and providing motivation and help. They've been emailing me addresses for these houses, offering to call people's workplace to make sure they are at work (and not at home). Now I have to head home and have to face facts that, again, I'm out of options.</div><div><span style="font-size: 130%;"><span style="font-weight: bold;"><br /></span></span></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Out of Nowhere, Drewbop!</span></span></div><div><br /></div><div>Who even knew Drewbop was still on the OTR mailing list? Not me. With one simple email, Drewbop reinvigorates the search:
<blockquote style="font-style: italic;">Bunk has moved in the past couple months. Facebook pic might be his old one.</blockquote>
I check the uploaded date on Bunk's house pictures. They were uploaded about a year ago. That means that if Bunk moved recently, the pictures I had been using for his place are way out of date. That means that he lives somewhere else now. That means.... that I almost broke into some random person's apartment earlier today. Wow.</div><div><br /></div><div>It also means we need Bunk's new address. Now I'm SURE Rocky is at Bunk's. It all makes sense. I start texting anyone who knows Bunk. Griffin, Molly, Drew, but no one has his new address. Surely people on Milkshake have it, but I can't ask them. We try Facebook and LinkedIn again. I text Sharon to try to get her to tell Bunk she has a job in mind for him and to ask for his resume. She doesn't respond in time so we bail on that idea. Jamie suggests getting a fellow alumni from his school to look it up in their alumni database. I assume that he doesn't keep his alumni association updated, and we don't know another alum anyways, so we bail on that idea.</div><div><br /></div><div>Time to get serious. I text Maddie.
<blockquote><span style="font-style: italic;">I need a big favor ASAP. Do you know Bunk enough to text him and ask for his address so you can send him a postcard?</span>
</blockquote>
Within 10 minutes I have Bunk's current address in PB. It's getting late in the afternoon. There's a party later that night that I know Bunk will be at, so the backup plan is to try to get his keys from him at the party and then go back to his house. But first, I want to try to get in there NOW. </div><div><br /></div><div><span style="font-size: 130%; font-weight: bold;">Calling for backup</span></div><div><br /></div><div><span style="font-size: 130%; font-weight: bold;"></span>I scout out Bunk's place online, but can't come up with much. Google maps doesn't really show it since it's off the street a little bit. I don't know if he's home, and there are just a lot of unknowns at this point. I need help. An accomplice. I call up Philthy. </div><div><br /></div><div><span style="font-weight: bold;">me</span>: "Hey, what are you doing this afternoon"</div><div><span style="font-weight: bold;">phil</span>: "Oh, I'm just about to..."</div><div><span style="font-weight: bold;">me</span>: "Nope. No you're not. You're coming with me to break into Bunk's house to find my otter."</div><div><br /></div><div>And he jumps at the chance. This is why Phil and I are friends. We toss around some slightly off kilter ideas about how to see if he's home without giving ourselves away. Phil suggests throwing tennis balls at his door while hiding across the street. We think about asking a passing stranger to knock for us. We consider simply overpowering Bunk if he answers the door. Or maybe we could have someone make an excuse to come over before the party, and leave the bathroom window unlocked before leaving. I try to get Maddie to find out if he's home, but Bunk is not answering texts. K-na tries to text him about the party and what he is doing until then, but no answer to that either. So Phil and I agree to meet up near Bunk's place, at Von's, and walk over and go from there with very little of a plan in mind.</div><div><br /></div><div>We get to Bunk's, and find his apartment building behind a vacant house with a For Rent sign. On our way back, we stop at his mailbox and find out he has a roommate, and we get his name. We walk into his apartment's courtyard and locate his door, but don't stay long enough to arouse suspicion or let ourselves be seen. We walk away, trying to hatch a plan. We go to Jamba Juice to mull over our options. As I'm ordering a delicious banana berry smoothie, Phil snaps his fingers, clearly with an equally delicious idea: Let's order a pizza. </div><div><br /></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Let's Order a Pizza</span></span></div><div><br /></div><div>I told him I wasn't that hungry, and he told me I was missing the point: we can order a pizza and have it delivered to Bunk. That way we can see if he's home without giving ourselves away. Brilliant! We hammer out the specifics, and put the plan into action. We specifically didn't order a bacon pizza so as not to give my involvement away.</div><div><br /></div><div>So we go back over to his place and wait. Just two sketchy guys waiting in front of someone's house, on the street, in broad daylight. You know, no big deal. After about 10 minutes a neighbor comes out and approaches us. We say we're interested in renting the house in front, the one with the For Rent sign, and ask him all sorts of questions about it. We're so smooth. The only problem is, now this guy has answered all our questions and we have no real excuse to stick around, but we still have to wait somewhere for the pizza. So we loop around to the alley behind Bunk's. </div><div><br /></div><div>Just two sketchy guys waiting behind someone's house, in the alley, in broad daylight. You know, no big deal. People are coming and going, eying us but not approaching us. I'm a little nervous at this point. I think about canceling the pizza order and just trying the backup plan for the party that night. </div><div><br /></div><div>Just then, the pizza delivery pulls up. She's a mid-40's mexican woman in a Papa John's uniform. I ask her if she'll do us a favor. We're trying to play a prank on our friend, but we don't know if he's home or not. I tell her to go up there with the pizza: if no one is home, then great, come back down. But if someone does answer, they'll be confused about not ordering a pizza, so just pretend you have the wrong apartment and come back down. Meanwhile, my friend and I will hide behind this tree so we can watch who comes to the door. Not sketchy at all, right? Well the delivery woman totally goes for it. She goes up, and nobody is home. So we pay her, take the pizza, and send her on her way. With nobody home, it's time to break the fuck in and get Rocky back. </div><div><br /></div><div><span style="font-size: 130%;"><span style="font-weight: bold;">Breaking the Fuck In</span></span> </div><div><br /></div><div><span style="font-size: 100%;">It's an upstairs apartment. We bring the pizza and go up the exterior stairs. I try the door; it's locked with a deadbolt. Phil tries the one window we have access to, above the stairs.</span> The screen pries off with a little effort and the window, unlocked, easily slides open. Phil boosts me into the window. I dodge the large flat screen TV which is just inside the window, and I'm in. Phil closes the window behind me and I go to work inside while he tries to look inconspicuous outside.</div><div><br /></div><div>I run into the kitchen to check out the stove. The image of poor Rocky suspended over a pot of boiling water was burned into my memory at this point. I recognized the stove immediately. THIS WAS THE RIGHT PLACE. I search the kitchen for Rocky. Not there. Around the corner to the bedroom, and I immediately see her on the bed. JACKPOT. Grab Rocky. She's safe. Now the fun part.</div><div><br /></div><div>I put a pot of water on the stove and get out the Master Shake replica I made. I tie it up, shove a knife through its head, and leave it suspended over the pot of water for Bunk to discover. BOOM.
<a href="http://1.bp.blogspot.com/-Wq63SBXkpAw/TlNSJVsCNWI/AAAAAAAAAVg/FU4G44ZOnt4/s1600/milkshake_threat.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5643945078419502434" src="http://1.bp.blogspot.com/-Wq63SBXkpAw/TlNSJVsCNWI/AAAAAAAAAVg/FU4G44ZOnt4/s400/milkshake_threat.jpg" style="cursor: pointer; display: block; height: 400px; margin: 0px auto 10px; text-align: center; width: 300px;" /></a>
And that's how you prank a prankster.
</div></div></div></div>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com2tag:blogger.com,1999:blog-7553225857922912655.post-37859236021549190362010-08-16T01:18:00.000-07:002010-08-16T01:42:05.770-07:00Time Machine backups over network shareThe next time something catastrophic happens to my MacBook Pro and I need to restore from a Time Machine backup, I want to remember <a href="http://www.insanelymac.com/forum/index.php?showtopic=184462&st=0&p=1253495&#">this link</a>.<br /><br />Most pages that come up when google researching tell you to...<br />1) enable unsupported drives with<br />defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1<br />2) create a sparsebundle locally<br />3) copy it to your network share<br /><br />...but forget the last crucial step:<br /><br />In the root of the sparsebundle, create a file com.apple.TimeMachine.MachineID.plist containing:<br /><pre><br /><?xml version="1.0" encoding="UTF-8"?><br /><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><br /><plist version="1.0"><br /><dict><br /> <key>com.apple.backupd.HostUUID</key><br /> <string>YOURUUIDHERE</string><br /></dict><br /></plist><br /></pre><br />where YOURUUIDHERE is a string containing dashes which can be obtained from<br />> system_profiler | grep UUID<br /><br />I could have saved myself a lot of hours of frustration if I could have found this link more easily. The bash script hosted there in particular works wonders. With this knowledge I was able to change an existing Time Machine backup's UUID to match that of my current machine and get into the backup to restore files. I can't explain how happy I am about that.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com0tag:blogger.com,1999:blog-7553225857922912655.post-36032558695839053142010-07-11T10:14:00.000-07:002010-07-11T10:24:04.026-07:00Karma<p>I live in my car. I was robbed of thousands of dollars worth of stuff. I got a speeding ticket. I'm more and more frequently getting woken up at some ungodly hour and told to "move along".<br /><br /><p>A friend of mine said to me "You are so due for a good week".<br /><br /><p>Due? Karma? Nonsense. At least I hope its nonsense because otherwise I'm due for something horrible.<br /><br /><p>I live in San Diego, the city of constant 70 degree weather. I have a job that pays well and challenges me. Twice a week I get to do my two favorite things in the world (play ultimate and karaoke). I travel often. I had an amazing weekend at Potlatch. I have awesome hair. I meet interesting new people all the time. I have two coasts worth of friends who love me and care about me. I'm in great shape.<br /><br /><p>How awesome do I feel? How good do I have it? If I believed in karma, I'd be walking around in a helmet and a full body, flame retardant, protective suit.<br /><br /><p>With a parachute.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com0tag:blogger.com,1999:blog-7553225857922912655.post-63050452510928873792010-04-16T21:39:00.000-07:002010-04-16T21:51:18.761-07:00Relax.We coined a phrase on the AT: "Relax, you're rolling with the Sobohobos now."<br /><br /><a href="http://www.sobohobos.com">Sobohobos</a> was the palindromic website Shian and I created for our trek. It then became our first trail name of sorts. We'd sign it in trail registers we passed a few times a day in probably the most misguided attempt to drive traffic to a website. (SEO's have nothing on writing your web address on a notebook in the middle of the woods!) The phrase we coined was to further the mysticism that only good things happened to the Sobohobos. We might meet a stranger on the trail and within the hour be sitting in their hot tub at their house, full from a home cooked meal, or maybe we get in to the shelter just when the skies open up and drench any non-believers lagging behind.<br /><br />To the uninitiated, it might seem that we had really great luck. Of course, it wasn't luck, and even if it was, there was as much "good" as "bad". Our prosperity boiled down to a few key outlooks on life / the trail: Be friendly and courteous and fun. Have lots of options. Don't require things you don't require.<br /><br />When you adopt this philosophy, good things happen - almost just by redefining the terms. It's like looking at the bright side of everything. If you really accept new opportunities and don't judge too harshly or require too much out of a situation, everything comes up roses. Note that the tradeoff is, for instance, being willing to sleep on the floor of your first San Diego apartment for 8 months because you don't have a bed or a lease. But if you truly don't require much, then don't sweat it.<br /><br /><br /><br /><br /><br />April 1 I quit my job at athena. April 15 I packed up my apartment and put it all in storage in San Diego. I didn't have any solid plans for where I was going to live or work. I had plenty of options: some very nice friends offered couches or spare rooms, plenty of exciting things to consider. Move? Get a job? Hike the PCT? Go back to school? Options options options. <br /><br />I started halfheartedly following some of these options. I got transcripts from UNH and researched what requirements and timelines were for San Diego schools. I cruised craigslist for places to live (with Tank and Alan). I put out a single resume for a position in San Diego. I got literature on the PCT. <br /><br />Some people might have been more nervous or anxious about being homeless and unemployed, even for a short period of time. I'm beginning to recognize that I thrive on it. When my back is to the wall, I can do some pretty cool stuff - I think we all can. But too seldom is my back against the wall. Right now, I feel alive and excited and free.<br /><br /><br /><br /><br /><br /><br />A few days before I moved out, Jenn and I decided that she would fly out here and we'd drive up to Boise together. Without anything chaining me down anywhere, I felt like I should have some adventure. San Diego, Vegas, Zion, Salt Lake, Boise. Keep slowly pursuing options and feeling things out. Open road ahead, wind at my back, song in my heart, free for an adventure whose nature and conclusion were uncertain.<br /><br />And then that Sobohobos luck phoned me in Vegas at 8am (hrough the voice of Julie the HR recruiter). That resume I put out was potent. May 3rd, for a fun company and a good salary, I'll rejoin the workforce - in a self-employed contract position. I still don't know where I'm going to live. And that's awesome.<br /><br />No stress, low effort, high yield. Just relax and let the good things happen as they may.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com0tag:blogger.com,1999:blog-7553225857922912655.post-52840057089100483712009-12-10T16:36:00.000-08:002009-12-16T14:08:18.842-08:00Thomas Hoving, pilot extraordinaireThomas Hoving died today. Before you read his <a href="http://www.nytimes.com/2009/12/11/arts/design/11hoving.html">obit</a>, I would like to tell you a story about him.<br /><br />Thomas Hoving, his wife in the passenger seat, stopped along a winding country road outside of Pawling, NY on a dreary day in 2005 to pick up two hitchhikers.<br /><br />"Where are you two headed," he asked as they got in the car.<br /><br />The two damp travellers looked at each other. "We're not sure. Town I guess. Is there a taxi service in town?"<br /><br />"Where are you trying to go," he asked again.<br /><br />"Well," a pause. They exchanged glances again. A shrug, as if to say <i>it couldn't hurt to ask</i>.<br /><br />"We're hiking the Appalachian Trail. And at the last road crossing, we..." Here, the speaker received a quick glare from his companion. He gulped and continued guiltily, "I... kind of... left our camera on the side of the road. It has all our pictures on it - all the way back from Maine. It was about 10 miles back. It's not exactly an expensive camera, but..."<br /><br />This time it was the sound of the rain against the roof of the car that caused his distraction.<br /><br />Having doled out the proper amount of shame, his companion picked up the story in a brighter tone. "And it is in a ziplock bag. Anyway, best case scenario, we get a ride into town, and then find some way back out to that last road. We can see it on our map, and if we could just get a taxi from town or something, we might be able to get it, get back here, and get back on the trail with enough time to make it a few more miles to a shelter for the night."<br /><br />Now it was Mr. and Mrs. Hoving's turn to exchange glances. Having settled the matter wordlessly as only long-married couples (and apparently some pairs of AT hikers) can, they spoke up.<br /><br />"Nonsense," said the wife.<br />Mr. Hoving added, "We'll drive you wherever you need to go. We're not doing anything anyway. And look at your clothes! You must be drenched."<br />"And hungry, I'll bet," added Mrs. Hoving. "First things first though, where's your map? Show us where that camera is."<br /><br /><hr /><br />That was Shian and I 5 years ago. I have to admit that I was the guilty camera-leaver.<br />Actually it was more complicated than that. We had a custom of taking pictures of ourselves at the state lines. The night before, we knew that we would cross out of New York and into Pennsylvania in the morning. Looking at the map, we could tell it was right at Hoyt Rd. We also knew that the state line was a short few miles into our hike - and we didn't hike together in the mornings.<br /><br />We decided that in order for us to each have a picture of ourselves at the state line, Shian would take the camera with him in the morning, as he left early. He'd take a picture of himself at the NY state line, and leave the camera for me to do the same. We agreed on a spot - knowing nothing about and never having seen the area - defined by these guidelines: it should be on the right side of the trail, just before the road, near the biggest tree around.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6QoRaA6JHK4/SyGazrFB6_I/AAAAAAAAAK4/5whER6JuXo4/s1600-h/hoyt_rd.JPG"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 240px; height: 320px;" src="http://3.bp.blogspot.com/_6QoRaA6JHK4/SyGazrFB6_I/AAAAAAAAAK4/5whER6JuXo4/s320/hoyt_rd.JPG" alt="" id="BLOGGER_PHOTO_ID_5413778439603874802" border="0" /></a><br />When I got to the spot, it was already raining. I didn't think Shian would leave it out in the rain, but I looked anyways. I didn't find it. After not too long, I gave up and hiked on. I caught up with Shian some miles down the trail.<br /><br />"So, did you get the camera?"<br /><br />What ensued was probably pretty amusing, in a cheesy sitcom kind of way. We thought we were joking. With increasing gravity, each of us tried to convince the other that we were serious and that no, YOU must be joking. It turns out I was serious that I actually didn't get the camera, and Shian was serious that he actually left the camera.<br /><br /><br /><br /><hr /><br />Anyways, as we drove along with the Hovings - out of the rain, on our way to our lost camera, things looking up - we got back to our normal conversational selves. That is to say witty, engaging, cheerful, energetic, and synergy-powered. We asked what Mr. Hoving did with his time. He said he was retired - and that he was an amateur pilot. Cool enough but nothing ground breaking. Simple, modest.<br /><br />Later in the conversation, he started a sentence with "Back when I was the director of the MET, I..."<br />Um what? Yea, he was the director of the Metropolitan Museum of Art in the 70s. And yea, that didn't make the cut in an answer to "What do you do with your time?"<br /><br />Later, "Yea, and when I was the NYC Parks Director, I..."<br />Um, ok.<br /><br />Later still, "Yea, when Malcom Gladwell was interviewing me for his book Blink, I..."<br />Yup.<br /><br />Some pilot.<br /><br /><hr /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6QoRaA6JHK4/SyGbKJN2E5I/AAAAAAAAALA/WrQW0ulmy2U/s1600-h/IM000232.JPG"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_6QoRaA6JHK4/SyGbKJN2E5I/AAAAAAAAALA/WrQW0ulmy2U/s320/IM000232.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5413778825651032978" /></a><br />The rest of the story only needs a summary, really. We got the camera. The Hovings took us to their spacious and well decorated house. Mrs. Hoving did our laundry and cooked us a meal. We took showers in a shower that must have had a 10' square footprint. We talked about art and Mr. Hoving's life. They drove us back out to the trail and sent us on our way, richer by one chance experience.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com0tag:blogger.com,1999:blog-7553225857922912655.post-48975862072100010642009-11-12T14:29:00.000-08:002009-11-12T18:59:19.016-08:00Mythical McRibLast night I conjured a McRib out of thin air.<br /><br />Driving Noah home after the PB game, I drove by McDonalds.<br /><br />Had a fantasy in which I drive up to the drive-thru and order a delicious McRib sandwich. Know full well it's not on the menu anymore. Headset wearing cashier tells me they haven't had that in months, years. Am displeased by that answer. Demand they make me a McRib at any cost. Say the magic words. Miracle ensues. McRib arrives - sans pickles and onions, of course. Glorious day!<br /><br />After dropping off Noah I head back towards the Golden Arches, resigned to ordering my second favorite fast food meal: 10 nuggets with sweet and sour sauce. I pull into the drive-thru and spot a sign proudly announcing: McRib is Back!<br /><br />Glorious day!Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com1tag:blogger.com,1999:blog-7553225857922912655.post-78451549004778871672009-08-24T16:22:00.000-07:002009-08-24T16:54:07.348-07:00fetchMMSReceiving MMS on an iPhone sucks. I'm notoriously bad at returning texts, calls, and emails. Any added friction in the process and I'm, in a word, fucked. The process for retrieving MMS on the iPhone is so full of friction that I've all but begged my family not to send me picture mail. <br /><br />I've <a href="http://greenmeetsblue.blogspot.com/2008/06/view-my-message-dot-cooooom.html">written about this before</a>:<blockquote>Here's the workflow: <br /><ul><li>Receive text message<br /><li>Find a scrap of paper and pen<br /><li>Write down two arbitrary 8-10 character sequences (message id and password)<br /><li>Go to viewmymessage.com by clicking the link in the text message<br /><li>Type in both sequences<br /><li>See picture<br /></ul></blockquote><br />I really can't believe that this is the status quo for receiving picture mail. The message IDs I'm supposed to commit to short term memory are things like "u08lr1rdz" and "o1xe34c87". Ludicrous.<br />iPhone OS 3.0 brought with it the ability to receive MMS directly, and in fact this feature is enjoyed by many iPhone users in other countries. But AT&T has yet to enable their iPhone plans for it. There are some unofficial methods for routing your texts through third party systems in order to capture and email you any MMS you may receive. There are also ways to accomplish MMS on a jailbroken iPhone. None of these methods appeals to me, however. They are too complex and hamfisted for my taste.<br />We're told by AT&T that <a href="http://www.theregister.co.uk/2009/06/15/att_free_mms/">MMS is coming soon and it's coming free</a>. But in the meantime, iPhone OS 3.0 also brought with it a way to work around the nuisance of memorizing those godawful message IDs: copy and paste.<br /><br />It didn't dawn on me that copy/paste could be useful for MMS retrieval until one day when one of those dreaded MMS notifications arrived:<br /><blockquote><br />I sent you a multimedia message. You can view my message w/in the next 7 days via the web at www.viewmymessage.com/1 using MSG ID w14xxu4ff Password you5sews<br /></blockquote><br />I sighed heavily. Frustrated, alone, and confused, I stared at the screen, wishing there was a better way. And then, there was: <a href="http://bit.ly/fetchMMS">http://bit.ly/fetchMMS</a>. The instructions are simple:<br /><ol><li>copy an entire MMS text message ("I sent you a multimedia message. You can view my message w/in the next 7 days...")<br /><li>paste<br /><li>fetch<br /></ol><br />See it in action: <a href="http://www.youtube.com/watch?v=op1xxOsOWFw">http://www.youtube.com/watch?v=op1xxOsOWFw</a>.<br /><br />No data is sent to or collected by my server. It's purely client-side - you're redirected to your MMS after a quick javascript parse of the message you paste in. This "No Data Left Behind" policy was partially inspired by David Friedman's <a href="http://ironicsans.com/gv/">Google Voice Speed Dial Bookmarklet Generator</a>, which is similarly simple, functional, and private.<br /><br />I hope others find this as useful and liberating as I did. Let fetchMMS put the "mmm" back in MMS. <br /><br />P.S. Mom, you can send me picture mail again. Love you!Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com2tag:blogger.com,1999:blog-7553225857922912655.post-38443538756048776602008-12-29T19:52:00.000-08:002009-01-05T07:57:21.613-08:00Commentary!: The Musical: The blog postThe best part of the <a href="http://www.amazon.com/Horribles-Sing-Along-Blog-Amazon-com-Exclusive/dp/B001M5UDGS/ref=pd_bbs_sr_1_s9_rk?ie=UTF8&s=dvd&s9r=8a585b431cf5caca011dec218d2416cc&itemPosition=1&qid=1230610783&sr=8-1">DVD release of Dr. Horrible</a>, as expected, is Commentary!: The Musical. It's a lot of humorous banter and <a href="http://en.wikipedia.org/wiki/Fourth_wall">fourth wall</a> (or, as one commentator suggests, ninth wall) breaking.<br /><br />If you haven't seen Dr. Horrible yet, do yourself a favor and set aside 45 minutes to <a href="http://www.hulu.com/watch/28343/dr-horribles-sing-along-blog">watch it, for FREE, over at HULU</a>.<br /><br />I got the DVD for christmas - thanks Stacey - as I had ranked it #1 priority on <a href="http://www.amazon.com/gp/registry/wishlist/1HJW0FBMD8XNK">my Amazon wishlist</a>. I've already watched everything a few times through. Here are just a few things that tickle me about Commentary!: The Musical<br /><br />There is a song devoted to the iPhone game Ninja Ropes that the cast and crew played, and bonded over, on set. The lyrics start with instructions <a href="http://www.google.com/search?q=ninja%20ropes%20extreme">to find the game via google</a>. The song continues with gameplay advice and high score boasts.<br /><br />Nathan Fillion's song about how much better he is at everything than N.P.H. Includes a fakeout on the series' now infamous "The Hammer is my penis" line. Great delivery by Nate: <br /><blockquote>Look at his smallness<br />Compared to my tallness<br />My porcelain doll-ness<br />My port in the squall-ness<br />My Kids In The Hall-ness<br />My Pink Floyd's The Wall-ness<br />My three parts of Gaul-ness [ <del>A reference to this article: <a href='http://www.hiltonpond.org/ThisWeek051001.html'>All Galls Are Divided Into Three Parts (At Least In Goldenrod)</a>? What's up with that?</del> A quote from Julius Caesar's <i><a href="http://en.wikipedia.org/wiki/Commentarii_de_Bello_Gallico">Commentarii de Bello Gallico</i></a>: "<a href="http://en.wikipedia.org/wiki/Gaul#Social_structure_and_tribes">All Gaul is divided into three parts</a>..." (Thanks to Sam K, below) ]<br /><del>My gestalt and all-ness</del> My just all in all-ness<br />My wonderful me-ness<br />My hammer the pe-ople can tell <br />that I'm awfully swell<br />while Neil has a weird smell<br />I'm just saying: Purell</blockquote><br />Zack Whedon's rap about being too cool to be involved in, of all things, a musical :<br /><blockquote>"Dr Horrible"<br />Z: Hey that sounds kinda dark and cool<br />"...'s sing along blog"<br />Z: What the fuck is this preschool?<br /><br />Hey weren't you the prince in The King and I in 7th grade? <br />Z: No, but I was back stage in the dark gettin' laid.<br /><br />Weren't you Pigpen in that Charlie Brown show we did?<br />Z: No, I just wandered on stage during my homeless period.<br /><br />Didn't you sing about the business in Annie Get Your Gun?<br />Z: Is that what that was? I've been tanked up since '91.<br /><br />Weren't you the Tin Man in the Wizard of Oz or something?<br />Z: ...Yea, but I played the fuck out of that part.</blockquote><br />And I think my favorite might just be the lisp-laden Groupie #3's slow, sweet and sonorous song about S's:<br /><blockquote>But now I'm super nervous<br />since I'm standing in the studio<br /><del>I feel calm in</del> like Phil Collins I'm singing Su-Sudio<br /><br />Su-Su-Su-Su-Suuudio</blockquote>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com6tag:blogger.com,1999:blog-7553225857922912655.post-7290175422738139272008-06-29T22:24:00.001-07:002009-01-20T09:49:56.898-08:00Statistical SignificanceI've been watching a lot of <a href='http://www.ted.com/index.php/pages/view/id/5'>TED</a> lately.<br /> <br />The <a href='http://www.ted.com/index.php/pages/view/id/47'>TED (Technology, Entertainment, Design) conference</a> is an annual event in Monterey, CA. Each year, a thousand of the most fascinating and thought provoking people in the world are invited to attend. Fifty are given 18 minutes on stage and challenged to "give the talk of their lives" to this myriad of thinkers and doers. Does one steal the show? <br /><br />For me, the answer is "yes": Hans Rosling.<br /><br />I'm going to suggest something now, and it's going to sound <i>really boring</i>. Please take my word that it is not. Take 20 min and watch Hans Rosling speak, with his potent visualizations, about world health statistics.<br /><br />I know the phrase 'world health statistics' probably conjures up thoughts of dry lectures and columns of colorless text containing vast quantities of cold data. But Rosling brings a storyteller's heart and a sportscaster's zeal to this presentation, with stunning visuals and a sprinkle of humor to spice up his sober sincerity.<br /><br /><object width="334" height="326"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param> <param name="flashvars" value="vu=http://video.ted.com/talks/embed/HansRosling_2006-embed_high.flv&su=http://images.ted.com/images/ted/tedindex/embed-posters/HansRosling-2006.embed_thumbnail.jpg&vw=320&vh=240&ap=0&ti=92" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="334" height="326" allowFullScreen="true" flashvars="vu=http://video.ted.com/talks/embed/HansRosling_2006-embed_high.flv&su=http://images.ted.com/images/ted/tedindex/embed-posters/HansRosling-2006.embed_thumbnail.jpg&vw=320&vh=240&ap=0&ti=92"></embed></object><br /><br />A year later, at the 2007 conference, Rosling reprises his talk with some new insights. If the first presentation left you enamored with this man, as it did me, this one will surely not let you down. At the conclusion, he brings his point home in a truly unexpected manner. <br /><br /><object width="446" height="326"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param> <param name="flashvars" value="vu=http://video.ted.com/talks/embed/HansRosling_2007-embed_high.flv&su=http://images.ted.com/images/ted/tedindex/embed-posters/HansRosling-2007.embed_thumbnail.jpg&vw=432&vh=240&ap=0&ti=140" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" flashvars="vu=http://video.ted.com/talks/embed/HansRosling_2007-embed_high.flv&su=http://images.ted.com/images/ted/tedindex/embed-posters/HansRosling-2007.embed_thumbnail.jpg&vw=432&vh=240&ap=0&ti=140"></embed></object><br /><br />The visualization tools shown in the video are available at <a href='http://www.gapminder.org/'>gapminder.org</a> and are every bit as powerful as the presentations make them out to be. But as <a href='http://freakonomics.blogs.nytimes.com/2008/06/16/gapminder-is-cool/'>Steven Levitt warns</a>:<blockquote>The one danger of great data tools like these, however, is that they create such beautiful graphs that it is easy to forget that what you are looking at are correlations, not necessarily anything causal.</blockquote><br />Apparently Rosling met the Google guys at TED. They bought the software behind gapminder.org, <a href='http://en.wikipedia.org/wiki/Trendalyzer'>Trendalyzer</a>, in 2007 for an undisclosed sum. Interestingly, Marissa Mayer at Google told Rosling "You have to make videos". This offended him. "We want to be modern, we want to make webpages where people lean forward and click," he replied. To which Mayer responded, "No, they don't want to lean forward and click, they want to lean back and watch." <br /><br />I think they are both right. From the <a href='http://www.gapminder.org/about/about/'>about Gapminder page</a> (emphasis mine):<blockquote>Gapminder is a non-profit venture promoting sustainable global development and achievement of the United Nations Millennium Development Goals by increased <b>use and understanding</b> of statistics and other information about social, economic and environmental development at local, national and global levels.</blockquote><br />For some people, understanding comes through use, through "lean forward and click". For others, through demonstration, through "lean back and watch". In another presentation, Rosling shows a picture of musical notes taken from Chopin's "Nocturne". He supposes that looking at raw data is like looking at a musical score. Only a student in the field can recognize the beauty and power of the composition without tools to realize the potential lurking within the notation. <br /><br />Beauty and power, in music as well as statistics, come from giving the right tools to the right people. And as the web has done for independent musicians, it can provide the right tools to almost anyone, and let the right people show their stuff. The right tools are becoming accessible and freely available, thanks to people like Hans Rosling.<br /><br />By the way, he later apologized to Marrisa Mayer after the video of his first TED talk generated over a million views. And at the time of this writing, he has posted <a href='http://www.gapminder.org/video/gap-cast/'>10 short video "GapCasts"</a>, which seem to have taken a presentation cue from network TV weather predictions!Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com0tag:blogger.com,1999:blog-7553225857922912655.post-1006211052744812032008-06-12T23:54:00.000-07:002008-06-13T00:42:33.087-07:00View My Message (dot cooooom)Ever send pictures from your phone? Yea, me too. My cheap, old Samsung phone on Sprint's network supported sending and receiving pictures just fine. My new fancy iPhone a) can't send them, and b) can't receive them. There are two clunky ways around this. Macworld's <a href=http://www.twitter.com/dmoren>Dan Moren</a>, an acquaintance of mine whose name I keep happening upon lately, <a href=http://iphone.macworld.com/2007/08/sending_and_receiving_mms_on_y_1.php>writes</a>:<br /><blockquote>The not-so-secret secret here is that most wireless providers assign their subscribers an email address based on their phone number. If you send an email to that address, it’ll get delivered as a text message—if you attach a photo to that message—say, using the iPhone’s built-in photo emailing—it’ll get delivered as a picture message.</blockquote><br />He's suggesting that anytime I want a friend to send me an MMS, I tell them to send it to me at 6035579073@mms.att.com, and anytime I want to send an MMS, I instead send an email to 6035550000@mms.whoverthehelltheircarrieris.com. As Dan notes, this sucks.<br /><br />The other long way around the lack of native MMS support on the iPhone is viewmymessage.com. It's a good idea in theory: When an MMS message is bound for an iPhone it is instead stopped at AT&T and posted on a website. A text message containing instructions for how to receive this message is then sent to the original recipient. The problem is in the implementation. Let me elaborate with a numbered list of greivances. <br /><ol><li><b>Anybody got a pen?</b><br /><br />Here's the workflow: <br /><ul><li>Receive text message<br /><li>Find a scrap of paper and pen<br /><li>Write down two arbitrary 8-10 character sequences (message id and password)<br /><li>Go to viewmymessage.com by clicking the link in the text message<br /><li>Type in both sequences<br /><li>See picture<br /></ul><br />Compare this to my suggested workflow:<br /><ul><li>Receive text message<br /><li>Click link<br /><li>See picture<br /></ul><br />These sequences of 8-10 characters for messageid are no picnic, by the way. 'o0nssy2jvm' and 'i06kdklv6' are two actual examples of message ids. Quick, look at the tiny text on your phone and tell me if that's an o, O, or 0! The passwords, however, are passably readable. Things like 'silk9aid' and 'guy7robe' are somewhat easily committed to short term memory.<br /><br />The kicker is that the committment to memory or paper that these require is unneccessary. They can be easily encoded in the URL itself, so that the user never has to type them in. I'm pretty sure that's how my Samsung phone 'natively' handled it, and I was barely even aware of the fun I was missing out on. What I'm saying is that instead of the existing link to <a href=http://www.viewmymessage.com>http://www.viewmymessage.com</a>, include a link to <a href=http://www.viewmymessage.com/en/webnonsubscriber/msgidlogin.do?messageId=i06kdklv6&password=silk9aid >http://www.viewmymessage.com/en/webnonsubscriber/msgidlogin.do?messageId=i06kdklv6&password=silk9aid </a>, which works - or would if I hadn't changed a character to prevent you from seeing my message, in the text message. Poof! Fixed!<br /><br /><br /><li><b>Flash as an image viewer</b><br /><br />The messages at viewmymessage.com can be retreived on any multimedia web browser. (I tried using lynx and the site practically scoffed at me.) Using a computer to access your message on that site will likely bring up a small 217x244px embedded flash movie containing the sent picture. I'm sitting here at a computer with 1600x1200 monitor, looking at a tiny picture that i can't even make out. I can choose to 'zoom in' via flash's right-click menu, but since my viewport is limited to 217x244px, I can only ever see a tiny square a time, like looking at a panoramic photo through a pinhole.<br /><br />And <i>there's no way to save the image</i> from a flash, except screenshotting. Hey, guess what? <b>People like photos. People like to <i>save</i> photos. It's what they do.</b> The first MMS I got on the iPhone was a picture of Adam and Jess's newborn son, Cohen. I remember zooming to the native resolution of the image within the flash viewport jailcell, scrolling around and taking 6 different screenshots, and stitching them back together in paint to get a decent image.<br /><br />Not only is there no way to save an image locally on your own computer, but messages are deleted from the server within 7 days. That sucks.<br /><br />If you really want to save a photo from viewmymessage.com, here's what you do: Disable flash. Since the site was meant to be used on an iPhone, which doesn't support flash, it has flash detection built in. If the browser you use doesn't support flash, it instead returns the original JPG. Don't ask me why this isn't the default behavior, cause I sure don't know. Oh, and don't just download the <a href=http://flashblock.mozdev.org/>FlashBlock</a> plugin for FireFox. The browser needs to report up front that it doesn't support flash. All FlashBlock does is prevents flash from displaying on the screen.<br /><br /><br /><li><b>From: +16035579073</b><br /><br />Who the hell's number is that? (It's mine) Unless your name is Mike Williams and you pride yourself on being able to recall every phone number you've ever entered into a phone, you will not appreciate being told who each photo is from in numeric form.<br /><br /><br /><li><b>Long delivery time, Long load time</b><br /><br />The service is unreliable. It can be hours before a message is processed and a notification is sent to you. In addition, I don't know what kind of heavy lifting is going on behind the scenes, but it seeems unreasonable that it should consistently take a full 60 seconds to load the page once I do get a notification. That's on a computer, mind you, not my 2.5G iPhone.<br /><br /><br /><li><b>Password field is not shadowed</b><br /><br />Most password inputs on the web use input type='password'. This has 2 main advantages over input type='text'. Firstly, it masks your password on the screen as you type it. You see ******** instead of P4SSW0RD. (And by the way, if you are using leetspeak to obfuscate a dictionary word to use as a password, you should be shot.) The second advantage is special handling of your password with respect to AutoComplete. And by 'special handling', I of course mean 'no handling'. If you don't know, AutoComplete is Windows' way of storing input text from HTML forms (among other places, like the URL bar) for easy reuse. Any time your email gets filled into a web form after only a few keystrokes, that's AutoComplete. AutoComplete shouldn't, and doesn't, complete passwords. This would be silly. It detects passwords via input type='password', and does not store whatever you enter. <br /><br />The interesting thing here is what happens when I use this particular password field - any password I may have entered in the past into a similarly incorrect password field shows up in the AutoComplete list for this field. Again, since the HTML author didn't use type='password', AutoComplete didn't know to ignore this field. So there, staring me right in the face are a few of my honest-to-goodness passwords. <br /><br />These passwords, in fact every string AutoCompete stores, are in an encrypted file on disk known as the <a href=http://www.crazytrain.com/writing/autocomplete.html>AutoComplete Data Store, or autoDS</a>. But seeing them on screen is just unnerving, as is knowing that there are sites I trust with a password that are irresponsible about handling them. And I have no record of which site stored those passwords in the autoDS.<br /><br /><a href=https://addons.mozilla.org/en-US/firefox/addon/748>Greasemonkey</a> to the rescue! I wrote a tiny GM script to pop up a javascript alert if it detects a password field without the proper type='password' setting. From now on it will lurk in the shadows of every page I visit, waiting to pounce.<br /><br /><pre>// ==UserScript==<br />// @name insecure_password<br />// @namespace http://sobohobos.com<br />// @description Identify forms that have password fields with type=text<br />// @include *<br />// ==/UserScript==<br /><br />// Author: brett.schellenberg@gmail.com<br />//<br />// Alert whenever an input named 'password' is not of type 'password'.<br />// Inputs like this are undesireable because they may be displayed on <br />// the screen as they are typed in, and may also be stored and retrieved<br />// in AutoComplete forms.<br /><br />var badform;<br /><br />badform = document.evaluate(<br /> '//input[@name="password" and not(@type="password")]',<br /> document,<br /> null,<br /> XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,<br /> null);<br />if (badform.snapshotLength > 0) {<br /> alert('Brett says: A password input on this page is not type=\'password\'.');<br />}<br /></pre><br /></ol>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com2tag:blogger.com,1999:blog-7553225857922912655.post-90878023457420486832008-05-15T20:05:00.000-07:002008-05-16T21:40:14.605-07:00iPhone sockSomewhere nearby, I heard a noise like an indoor sprinkler. The alleys around the apartment are narrow, the neighboring buildings are close, and our windows are always open. My first thought was not of my own toilet suddenly and inexplicably spewing water from the intake hookup, but maybe next time it will be. I tried tightening, by hand, the fitting that seemed responsible, but the plastic wingnut-style flaps just snapped off in my hand. <br /><br />Who makes shit like that out of plastic? If this is an intentional feature of the manufacturer to prevent over-tightening, it's also a way for them to make a quick $6. While in line at the hardware store, I picked up a lens cleaning cloth from the 'impulse buy' section, and was out the door $6.65 later.<br /><br />The toilet's fine, and now I have a spiffy cloth to clean my iPhone screen with. It's a nice replacement for the original spiffy iPhone screen cloth I lost, which cost considerably more (let me tell you, I had to sink $500 on a piece of crap in a sleek box just to get it). <br /><br />Now I have two problems:<br />1) I have invested 65¢ in a piece of material that I am bound to lose<br />2) You know how people at the beach complain about getting sand in places they don't want? For me, that place is my iPhone. ("Oh man, I got sand right in the old iPhone")<br /><br />Lately I just wrap the iPhone in a spare bandanna before I go rolling around in the sand, but wouldn't it be cool to have an iPhone covering that was perfectly sized and designed to be used specifically for the iPhone? I swear, someone could actually sell <a href=http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore.woa/wa/RSLID?nnmm=browse&mco=MTI0MjI&node=home/shop_ipod/ipod_accessories/cases>iPhone</a> <a href=http://www.belkin.com/ipod/iphone/>specific</a> <a href=http://www.griffintechnology.com/category/cases>cases</a> and people would probably buy them! But until that day comes, I'll make my own!<br /><br /><a href=http://flickr.com/photos/64158912@N00/2495555317/><img src=http://farm3.static.flickr.com/2209/2495555317_0f4108b7e2.jpg?v=0></a><br /><br /><a href=http://flickr.com/photos/64158912@N00/2495555765/><img src=http://farm3.static.flickr.com/2420/2495555765_1b80d5798b.jpg?v=0></a><br /><br />Inspired slightly by Sadie's ridiculously overpriced $30 <a href=http://store.apple.com/1-800-MY-APPLE/WebObjects/AppleStore?productLearnMore=M9720G/B>iPod sock</a> from back in the day, it's just a sock... for an iPhone. That doesn't cost $30.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com4tag:blogger.com,1999:blog-7553225857922912655.post-72088944858204687592008-05-12T11:40:00.001-07:002008-05-12T11:41:55.589-07:00Bing!(11:08:08 AM) <span style="font-weight:bold;">Mike MacHenry</span>: p.s. I just got a new computer and have no AIM aliases set up... so I have no idea who you are.<br />(11:08:42 AM) <span style="font-weight:bold;">me</span>: awesome.<br />(11:08:56 AM) <span style="font-weight:bold;">Mike MacHenry</span>: :)<br />(11:09:00 AM) <span style="font-weight:bold;">me</span>: I always thought you were ugly.<br />(11:09:12 AM) <span style="font-weight:bold;">Mike MacHenry</span>: I guess this is Brett.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com2tag:blogger.com,1999:blog-7553225857922912655.post-65399826294915522942008-04-26T22:02:00.000-07:002008-04-26T22:33:53.169-07:00On a MissionI needed eye juice - in fact I slept with my contacts in last night because I didn't have any. It's 5 blocks from here to Longs Drugs. The thought of getting in my car for 1/2 mile drive repulses me, and anyways I like rollerblading. The weather was perfect today, and at 10pm, it's 76 degrees. <br /><br />Of course, it's a Saturday night, and my journey would take me through, if not the heart, then at least the liver, of the PB bar scene - Mission and Grand/Garnet.<br /><br />I was greeted by someone with whom I made no eye contact, nor even acknowledged in any way. Experience tells me that this man wanted to buy or sell weed.<br />I had to dodge a stream of urine - not my own.<br />I was inches from being backed over by a large pickup truck.<br />I pushed some guy away from me before I could figure out whether his gestures and slurred speech indicated a desire to hug or fight me.<br /><br />Is it the rollerblades? I feel like it is. The urine and the pickup incidents would probably not have been an issue if I'd been moving more slowly, on foot for instance. Though, the weed guy was probably just keying off my hippie beard and hair, regardless of my mode of transportation. But I have to think I wouldn't have been bothered by that last guy had I been just a... pedestrian pedestrian.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com1tag:blogger.com,1999:blog-7553225857922912655.post-54028442024781204792008-03-31T19:38:00.000-07:002008-03-31T19:58:57.720-07:00Switzerland to Create Army of Human-eating Dragons<a href="http://www.nytimes.com/2008/03/29/science/29collider.html">http://www.nytimes.com/2008/03/29/science/29collider.html</a><br /><br />The Large Hadron Collier is a particle accelerator located near Geneva, Switzerland. Scheduled for completion in June of this year, it may show scientists the universe as it was a trillionth of a second after the Big Bang. Or it may create dragons.<br /><br />Not if killjoys Walter L. Wagner and Luis Sancho get their way. They filed suit in a district court in Hawaii aimed at preventing use of the collider, which they claim may create a universe destroying black hole. It is unclear whether the two men have realized their role as would-be dragon slayers as well.<br /><br />From the article:<br /><blockquote>Dr. Arkani-Hamed said concerning worries about the death of the Earth or universe, “Neither has any merit.” He pointed out that because of the dice-throwing nature of quantum physics, there was some probability of almost anything happening. There is some minuscule probability, he said, “the Large Hadron Collider might make dragons that might eat us up.”</blockquote><br />Godspeed, young knights.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com1tag:blogger.com,1999:blog-7553225857922912655.post-3463093523361872112008-03-25T23:11:00.000-07:002008-03-26T00:14:55.210-07:00His world is my world, tooI went to see <a href="http://www.jose-gonzalez.com/">José González</a> last night with Ruth. <br /><br />There was a mix up with the location, and the guy at the main <a href="http://casbahmusic.com/">Casbah</a> venue didn't know the location of the 'offshoot' venue, even though it happens to be be .6 miles up the road. This 'offshoot' venue was the San Diego Women's Club, though they let me in anyways. Between the opening act (<a href="http://en.wikipedia.org/wiki/Mia_Doi_Todd">Mia Doi Todd</a>) and José, there was a line for the men's room. I'm convinced that they have a lavish women's room with dozens of stalls and only two toilets for the men, which had cloth curtains in lieu of stall doors. On the upside there was a pleasant sitting room in the entryway to the more functional toilet room.<br /><br />There was a mix up with the time, and we showed up at 6:30, though the doors opened at 7, Mia started at 7:30, and José wasn't on until 8:30. So we walked around the Balboa Park area, discussed the color of the man on the lighted pedestrian crossing sign (is he green, or do we just assume he is 'cause we know he's supposed to be?), and stopped in at <a href="http://www.extraordinarydesserts.com/desserts.htm">Extraordinary Desserts</a>. Unfortunately we had just had some strawberry shortcake, so we didn't partake in the "sublime pastries [that] should be as luscious to look at as they are to taste", according to their Paris-trained creator, Karen Krasne. They certainly looked sublime.<br /><br />José was great. He came out and did a few solo songs, which I really dug. Then he brought out a guy and a girl who each played some auxiliary percussion and sang background vocals. Those songs were good, but I found myself trying to just concentrate on the guitar and José himself. Sometimes I forget that the people who are really good at certain things, and who have any degree of fame, are real people inhabiting the same world as me. José was a real guy. He joked around on stage a little bit and seemed to genuinely enjoy himself and get along with his two bandmates. He's also a really good guitarist. That he lives in my world inspires me.<br /><br />I really like <a href="http://youtube.com/watch?v=GmdYoplFN24">his Teardrop cover.</a><br /><br />By the way, José does vocals for <a href="http://en.wikipedia.org/wiki/Zero_7">Zero 7</a> on their album The Garden, which I haven't heard but will definitely acquire.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com1tag:blogger.com,1999:blog-7553225857922912655.post-67482585109086642822008-01-13T17:13:00.000-08:002008-01-13T17:23:44.808-08:00Ultimate and SurfingI've hit the Ultimate groove in San Diego. There's a game on the beach Wednesday night under the lights at the Capri Hotel, a Saturday game at Balboa Park, and a Sunday game at Mission Park. The Wednesday and Sunday games are within rollerblading distance, up and down the boardwalk along the beach, respectively. The Saturday game is a drive away, but still well worth it. <br /><br />I met a guy, Matt, at the Saturday game this week. He's also new to the area, coming from Florida most recently. He's a Pats fan, so we got together to watch the game last night at a bar downtown. Today, after the Sunday game fell through because the Chargers were playing (Go Chargers!), we decided to go surfing. He has a board and a suit, and I have access to a board that the previous roommate here left behind. I just needed to get a wetsuit. So we went to a nearby shop and I got myself an El Cheapo wetsuit, and we went surfing on the waves right outside my apartment.<br /><br />It was the first time I've ever surfed, and it was insanely fun. What a rush! I wasn't even on the big, real waves yet, just the swill, white water in the shallows. It was a blast, we stayed out all afternoon, and I can't wait to go again.<br /><br />Also, Chargers - Pats next Sunday!Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com1tag:blogger.com,1999:blog-7553225857922912655.post-61569889567288293092008-01-03T13:58:00.000-08:002008-01-03T17:11:45.275-08:00Landed712C Santa Rita Pl<br />San Diego, CA 92109<br /><a href="http://maps.google.com/maps?q=712+Santa+Rita+Pl,+San+Diego,+CA+92109,+USA&sa=X&oi=map&ct=title">[map]</a><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6QoRaA6JHK4/R31b6iLOogI/AAAAAAAAACo/HNyAU_7lU38/s1600-h/P1000244.JPG"><img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_6QoRaA6JHK4/R31b6iLOogI/AAAAAAAAACo/HNyAU_7lU38/s200/P1000244.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5151374609946157570" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6QoRaA6JHK4/R31wsSLOohI/AAAAAAAAACw/8qcSeKpuXmY/s1600-h/P1000259.JPG"><img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_6QoRaA6JHK4/R31wsSLOohI/AAAAAAAAACw/8qcSeKpuXmY/s200/P1000259.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5151397454877205010" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6QoRaA6JHK4/R31wsyLOoiI/AAAAAAAAAC4/D9P0bpp84q8/s1600-h/P1000260.JPG"><img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_6QoRaA6JHK4/R31wsyLOoiI/AAAAAAAAAC4/D9P0bpp84q8/s200/P1000260.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5151397463467139618" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6QoRaA6JHK4/R31wtiLOojI/AAAAAAAAADA/JcWdgcFImX4/s1600-h/P1000261.JPG"><img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_6QoRaA6JHK4/R31wtiLOojI/AAAAAAAAADA/JcWdgcFImX4/s200/P1000261.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5151397476352041522" /></a>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com5tag:blogger.com,1999:blog-7553225857922912655.post-17829028847839460782008-01-02T20:58:00.000-08:002008-01-03T06:37:27.719-08:00Stats<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=d&hl=en&geocode=13499885351504384445,38.969230,-77.381630%3B17882156504521679129,38.575208,-89.909019%3B4038870692900050849,39.483195,-106.070876%3B3713386642112397944,37.682220,-113.079870%3B6425113367283681739,36.046370,-112.085420&time=&date=&ttype=&saddr=364+Highland+Ave,+Somerville,+MA+02144&daddr=Elden+St%2FVA-606+%4038.969230,+-77.381630+to:37.730539,-81.199951+to:I-64+W+%4038.575208,+-89.909019+to:Unknown+road+%4039.483195,+-106.070876+to:I-15+S+%4037.682220,+-113.079870+to:AZ-64+%4036.046370,+-112.085420+to:Hotel+Circle+Pl+San+Diego,+CA&mra=dpe&mrcr=0&mrsp=2&sz=10&via=1,2,3,4,5,6&sll=37.868349,-80.998077&sspn=0.469415,0.942078&ie=UTF8&om=1&s=AARTsJryxfJD3eO4pD9ju7EhH6iS7gStGg&ll=40.178873,-94.21875&spn=46.554548,74.707031&z=3&output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=d&hl=en&geocode=13499885351504384445,38.969230,-77.381630%3B17882156504521679129,38.575208,-89.909019%3B4038870692900050849,39.483195,-106.070876%3B3713386642112397944,37.682220,-113.079870%3B6425113367283681739,36.046370,-112.085420&time=&date=&ttype=&saddr=364+Highland+Ave,+Somerville,+MA+02144&daddr=Elden+St%2FVA-606+%4038.969230,+-77.381630+to:37.730539,-81.199951+to:I-64+W+%4038.575208,+-89.909019+to:Unknown+road+%4039.483195,+-106.070876+to:I-15+S+%4037.682220,+-113.079870+to:AZ-64+%4036.046370,+-112.085420+to:Hotel+Circle+Pl+San+Diego,+CA&mra=dpe&mrcr=0&mrsp=2&sz=10&via=1,2,3,4,5,6&sll=37.868349,-80.998077&sspn=0.469415,0.942078&ie=UTF8&om=1&ll=40.178873,-94.21875&spn=46.554548,74.707031&z=3&source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small><br /><br />61 hours 12 min of driving<br />3,704.9 miles<br />25.6 miles per gallon<br />144.72 gallons of gas<br /><br />I'm here in SD now. I was sick as a dog last night, and most of today. I think I'm on the mend, and I have a place to live tomorrow ON THE BEACH! Sweet.Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com3tag:blogger.com,1999:blog-7553225857922912655.post-91634645687012203102008-01-01T09:37:00.001-08:002008-01-01T20:07:34.376-08:00Day 6<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6QoRaA6JHK4/R3p74CLOocI/AAAAAAAAACI/MYCoLzOfj1c/s1600-h/P1000227.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_6QoRaA6JHK4/R3p74CLOocI/AAAAAAAAACI/MYCoLzOfj1c/s200/P1000227.JPG" alt="" id="BLOGGER_PHOTO_ID_5150565326438441410" border="0"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6QoRaA6JHK4/R3rZvCLOodI/AAAAAAAAACQ/g_12XS3rSv8/s1600-h/P1000202.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_6QoRaA6JHK4/R3rZvCLOodI/AAAAAAAAACQ/g_12XS3rSv8/s200/P1000202.JPG" alt="" id="BLOGGER_PHOTO_ID_5150668525912629714" border="0"></a><br /><br /><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dz8U5dsfDVBuMXSj-lXcKhP_Tm0vFpW_p1ipSc14_Dyb307MW-Yent405K1Wge-3La7w2YEEkLZ0eipN5vI' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br /><p><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6QoRaA6JHK4/R3rZviLOoeI/AAAAAAAAACY/FHoSkzyjp6c/s1600-h/P1000233.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_6QoRaA6JHK4/R3rZviLOoeI/AAAAAAAAACY/FHoSkzyjp6c/s200/P1000233.JPG" alt="" id="BLOGGER_PHOTO_ID_5150668534502564322" border="0"></a><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6QoRaA6JHK4/R3rZwSLOofI/AAAAAAAAACg/qKhzo3fCqzc/s1600-h/P1000239.JPG"><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_6QoRaA6JHK4/R3rZwSLOofI/AAAAAAAAACg/qKhzo3fCqzc/s200/P1000239.JPG" alt="" id="BLOGGER_PHOTO_ID_5150668547387466226" border="0"></a><br /><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dz4YVnQo7zJUJdXd5ug6QS8prhDBjh0pXUHxNAPpoQ_1d4BLafFka19731iUaoEP34-XlIx4tbHJGrmby424g' class='b-hbp-video b-uploaded' frameborder='0'></iframe></p>Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com2tag:blogger.com,1999:blog-7553225857922912655.post-37370030808149096782007-12-31T18:57:00.000-08:002007-12-31T21:01:17.897-08:00Day 5 - Still AliveThis morning started off with me balancing on the side of the bathtub, with one hand propping myself up from the sink, and the other hand reaching around the overflowing toilet to shut off the water valve. I did, and stayed dry, but then I was stranded on the bathtub, in the dark, without my glasses. It smelled vaguely of urine.<br /><br />I tell you this so that you may appreciate the magnitude of meaning behind the following statement: <b>Today has been amazing.</b><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6QoRaA6JHK4/R3mybCLOoZI/AAAAAAAAABw/KfqJTX4YAGY/s1600-h/P1000168.JPG"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_6QoRaA6JHK4/R3mybCLOoZI/AAAAAAAAABw/KfqJTX4YAGY/s200/P1000168.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150343826385052050" /></a>It was a sunny day and I took some scenic byways. I-70 had been good to me, but we parted ways around lunchtime. I shot down I-15 until Cedar City - that's when things really got interesting. You know you're in for a good time with signs like "Not Recommended For Semi Trucks" and "Snow Tires or Chains Required Nov. 1 - Mar. 1". I had to focus on driving so as not to die. I listened to some pretty crappy music on the radio because I faced certain death if I took my hand off the steering wheel for a second. Feel free to zoom in on the google map below southeast of Cedar City to see some of the crazy roads I drove.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6QoRaA6JHK4/R3mzkCLOoaI/AAAAAAAAAB4/dibLsy2fmFs/s1600-h/P1000150.JPG"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_6QoRaA6JHK4/R3mzkCLOoaI/AAAAAAAAAB4/dibLsy2fmFs/s200/P1000150.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150345080515502498" /></a>After clearing route 14 I was rewarded with awesome views. Not that I needed much of a reward besides being alive at that point, but sometimes you get a little extra. I stopped every 5 feet to take a picture. <br />I'd snap a few shots, content that I had just seen an awesome view. But every time, I'd start back down that road again and round the next corner to find another, every bit as picture-worthy. <br />And oh, the road is speckled with little towns along the way with names like Cliff Dwellers. People live out there, out in the vast expanses of beautiful countryside with a sheer face of red rock as a backdrop. <br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6QoRaA6JHK4/R3nGkiLOobI/AAAAAAAAACA/5kpU3QPf7b4/s1600-h/P1000173.JPG"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_6QoRaA6JHK4/R3nGkiLOobI/AAAAAAAAACA/5kpU3QPf7b4/s200/P1000173.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150365979826364850" /></a>Everywhere I drove, through treacherous roads, there were people living. There was a "Free Wifi Hotspot" sign in the middle of fucking nowhere. I wish I had a picture of it. I love that thought - just knowing that there are people living like that.<br /><br />Eventually the sun set, and I drove through the Grand Canyon National Forest in the dark. I even managed to get lost once. I'm excited to see the canyon in the light tomorrow morning!<br /><br /><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=d&hl=en&geocode=7793096076906105247,36.748110,-112.251860&time=&date=&ttype=&saddr=400+Jurassic+Ave,+Fruita,+CO+81521&daddr=37.640335,-112.977905+to:US-89-ALT+%4036.748110,+-112.251860+to:grand+canyon,+az&mra=dpe&mrcr=0&mrsp=1&sz=8&via=1,2&sll=37.809784,-111.681519&sspn=2.017942,4.246216&ie=UTF8&om=1&s=AARTsJpft9JrPRz4lBgIVwbHoszCJr3gPA&ll=37.944198,-110.654297&spn=6.063638,9.338379&z=6&output=embed"></iframe><br /><small><a href="http://maps.google.com/maps?f=d&hl=en&geocode=7793096076906105247,36.748110,-112.251860&time=&date=&ttype=&saddr=400+Jurassic+Ave,+Fruita,+CO+81521&daddr=37.640335,-112.977905+to:US-89-ALT+%4036.748110,+-112.251860+to:grand+canyon,+az&mra=dpe&mrcr=0&mrsp=1&sz=8&via=1,2&sll=37.809784,-111.681519&sspn=2.017942,4.246216&ie=UTF8&om=1&ll=37.944198,-110.654297&spn=6.063638,9.338379&z=6&source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small><br /><br />And oh yea, Happy New Year!Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com4tag:blogger.com,1999:blog-7553225857922912655.post-34415677323696516272007-12-31T10:54:00.001-08:002007-12-31T11:21:01.119-08:00Day 5Arby's. Richfield, UT. Lunchtime.<br /><br />I'm the only customer here. The parking lot outside has a capacity of 45 cars. Mine is the only one. As I was using the single seater restroom, an employee tried to open the locked door. I heard him walk away and say "Hey, the bathroom door is locked agin'!" It never occurred to him that there might be a customer inside.<br /><br />After ordering, the girl tells me "Your order number is 87." Sure, right, I'll try to keep that straight from everyone else's orders. I should just sit here silently as they call "Number 87. 87? Your order is ready." and see what they do.<br /><br />Here's what I've been driving through:<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6QoRaA6JHK4/R3lAUSLOoYI/AAAAAAAAABo/UvJkl3fpP8Q/s1600-h/P1000121.JPG"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_6QoRaA6JHK4/R3lAUSLOoYI/AAAAAAAAABo/UvJkl3fpP8Q/s200/P1000121.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5150218366095368578" /></a><br /><br />If I could take a picture of myself with my foot in my mouth, I would. I just beat the lunchtime rush. The parking lot and seating areas are at capacity. Will wonders never cease?Bretthttp://www.blogger.com/profile/13131308972421165289noreply@blogger.com4