Skip to main content

Posts

Introducing hushnote

This weekend I decided I wanted to fix my password problem. That is, I wanted my passwords secure and managed in the cloud. Let me introduce hushnote , yet another host-proof , web-based password and secret information manager. I was inspired by the simplicity of Aaron Boodman's halfnote and Brett Cannon's Oplop . Combining the two felt natural. Here is my suggested usage pattern for hushnote: Think up a master password and enter it into the "Oplop password" box. Think up a label (for instance, "hushnote", "foo", or "spam") for hushnote and enter it into the "Oplop label" box (which replaces the password box after entering your password). The Oplop algorithm will generate a new hushnote password for you based on the combination of your master password and hushnote label. Copy the password into the "hushnote password" box and fetch your encrypted note. Now, use the encrypted note to store your Oplop labels for ...
Read more

How to use Manual Focus (the easy way!)

For about as long as I've owned my camera (four or five years now), I've used its automatic focus. I tried manual focus a few times and got poor results. Tonight, I got a new Canon EF 50mm 1.8 II lens for my Digital Rebel XT. It is by far the fastest lens I own (the next fastest is my Canon EF 70-300mm f/4-5.6 IS USM ) and I love the limited depth of field I can get with it. I'm looking forward to trying it out while I'm in Italy next week. I haz no depth in my fieldz! My new lens inspired me to revisit manual focus. I've always found it difficult to use manual focus on my camera because I can't quite tell when the picture is actually in focus. However, I just learned a new trick that makes using manual focus easier. If you hold the shutter button halfway down—like you would if you were using autofocus—while adjusting the focus manually, the AF points will light up as those parts of the picture come into focus.
Read more

Finding Unique Files

I've posted before about finding duplicate MP3 files . The other day, I found myself needing to do the opposite; this time with pictures. Pictures are a little easier to identify (at least in my case) because an MD5 over the entire content of the image is sufficient to identify images (MP3s require only hashing the non-ID3 portion of the file). Here's what happened: After a small mishap with my photos, I needed to do a partial restore from backup (a nightly rsync -a --delete ). I restored some files and then ran fdupes to remove any duplicates. However, since the mishap involved moving photos between folders, renaming some files, and deleting others, I wasn't sure if I had restored all the affected photos. To find out, I used a little shell foo: $ find /pictures/ /backup/pictures/ -type f -exec md5sum {} \; > md5sums $ sort md5sums | uniq --check-chars=32 --unique This results in a list of files that only exist in either the primary or backup location. I expected to fin...
Read more

ASE r13 Released

What's new? Administration: New version scheme. To help preserve my sanity, ASE versions will now increase monotonically with releases, starting with r13. Presently, ASE is still in alpha. Interpreter archives are now versioned separately from ASE. This should make pushing new releases easier (that means releasing more often!) Features: Soft keyboard support in the terminal. Smaller APK. Python install now takes less main memory. Python help() works. New Python test.py script. I now use this for testing ASE. It's included with the scripts archive because it also provides many example uses of the API. Bug fixes: Locale API updated. Fixed several broken RPC methods. Visit the ASE project page to download the latest APK.
Read more

Ich habe Lederhosen

Just in time for Oktoberfest, I bought some Lederhosen. Now I can look Bavarian even if I can't speak it. Pascht scho.
Read more

Pletscher ESGE on my Surly Long Haul Trucker

In addition to my G1 bike mount , I also recently purchased a Pletscher ESGE bipod kickstand. While this kickstand is usually raved about, there can be some difficulty installing it on a Surly Long Haul Trucker (LHT). Possibly the most elegant solutions are this custom bracket and this newer mount from Pletscher. However, I've had success with the standard bracket. First, I wrapped the frame in two layers of innertube (which my local bike shop was gracious enough to give me for free from their collection of used ones) to protect the frame and finish. Then, I used a little blue Loctite on the bolt and slowly tightened it until I was able to torque the stand without the bracket twisting.
Read more

Android G1 Bicycle Mount

I recently purchased this bike mount for my Android G1. Out of the box, it didn't fit and, while holding on to my G1 fairly well, didn't withstand all my attempts to shake the phone from the cradle. So, it required a few modifications: The bracket is not big enough to fit the stem. I had to extend it with some paracord and a couple zip ties: The zip tie above keeps the paracord from slipping off the bracket (which is where the metal bar would normally lock into place). I used figure eight knots to tie the paracord to the bar. After attaching the bracket, I reinforced the spring loaded phone clip with the metal clip from a pen. There's no gluing involved, I just slid the clip in under the pivot and used another small zip tie to hold it in place: The final addition is a strip of velcro (it's green) that slides in between the display and the keyboard and attaches to itself behind the phone clip. After my modifications, this system is quite rugged. I was not able to shake,...
Read more

ASE 0.11 Alpha Released

This release of ASE adds support for Perl and JRuby in addition to the usual round of bug fixes. Added process management API via getRunningPackages() and forceClosePackage() . Added support for installing part or all of interpreters to the SD card. BeanShell, JRuby, and part of Perl are installed to the SD card now. Added BeanShell example script. Added SQLite and GData to Python support. Fixed Lua include path to allow importing user scripts. Fixed Shell support to execute scripts. Fixed sensor monitoring. Fixed barcode scanning. Vist the ASE project page to download the latest APK. Notes JRuby is very slow, especially on the initial run. It can take up to a minute for JRuby to start up for the first run and about ten seconds every time after that. Python is a bit larger now with SQLite and GData support. I should be able to cut the size in half soon by installing many of the modules to the SD card. Building Perl is still a little buggy and has many manual, undocumented steps. I...
Read more

Is your Wii power supply broken?

I just got a brand new 40" LCD TV (which, by the way, is awesome) this morning and started testing it out. First the PC, then the Xbox 360, then the PlayStation, and finally I tried turning on my Wii and nothing happened. No lights, no sounds, nothing. So, I started troubleshooting: Check the connections to the Wii; looks good. Change the surge protector socket it's plugged into; no change. Reset the surge protector; still nothing. Measured the voltage in the socket (any excuse to use my fancy new volt meter ); a solid 110V. Measured the voltage from the power supply; a solid 0V. Bingo. At this point I was releived to find that my Wii was most likely not dead. This evening I started looking into repairing power supplies. I found a couple sites that gave me hope, so I decided to crack it open and see what I could find. That's when I discovered that my BX-100 bit set was missing the appropriate bit for the screws Nintendo used. Flabergasted, I found Chris Meyer's sit...
Read more

ASE 0.10 Alpha Released

This release of ASE has many enhancements and bug fixes. Streamlined iterative script development with Save & Run in the script editor and Exit & Edit in the terminal. Interpreter installation has been improved to provide better feedback (errors are now reported to the user) and better error detection. It is now possible to get help for RPC methods via the help() RPC. Currently, this is best supported in Python which will nicely format the output. Shell was added as an included scripting language. Scripts can be embedded into and directly imported from QR codes. Use the Zxing QR Code Generator to start sharing your scripts directly from your blog. Create a plain-text code with the name of the script on the first line and the script on the following lines. You can embed scripts up to approximately 4kb in size. Added geocoder API. See the weather.py example script. Added phone state monitoring to detect incoming calls. Added event API. Instead of always polling for the latest va...
Read more

Make Eclipse Ignore .svn Directories

I've struggled with this for a while now. But, I think I've found all the appropriate settings now. Project > Properties > Java Build Path For each source folder, edit Excluded to include the pattern "**/.svn*" Project > Properties > Java Compiler > Building > Enable project specific settings Check the box. Project > Properties > Java Compiler > Building > Output folder > Filtered resources Add ".svn/" so that it reads "*.launch, .svn/" YMMV :)
Read more

ASE 0.9 Alpha Released

Interpreters installation is now handled entirely within ASE (no more downloading in the browser). Besides streamlining the interpreter installation process, this release is mostly about bug fixes: Changing orientation in the terminal no longer restarts the running script. Terminal preferences are now applied properly. Added aTrackDog support to the manifest. Saving scripts now works as expected without workarounds. Visit the ASE project page to download the new APK.
Read more