Fixing the Ability to edit iPhone Images Imported to Windows

If you’ve been plagued by the following errors ever since upgrading to iOS5:

This photo can't be saved because of a problem with the photo's file properties.
This photo can’t be saved because of a problem with the photo’s file properties.
Photo Gallery couldn't update this file: Error code: (0x80070057)
Photo Gallery couldn’t update this file: Error code: (0x80070057)

Fret no more, relief is here!

After much investigation the root cause is erroneous white-space characters in the XMP block of the image files. 

The first step to fixing this problem is to

Stop taking pictures with the volume button!

No, this is not a solution but the problem seems to happen more frequently for images taken with the volume up button than images take win the shutter release on-screen button. Therefor, avoiding the volume button seems like a good idea. Next,

Fix the Images which already have the issue!

Lots of work-arounds have been posted for when you discover the problem when editing a particular image, however; the issue may surface down the road on images you have not previously edited. For me, fixing the issue only on the images I attempted to edit was not a good solution. I wanted an all-or-nothing fix.

I’ve written a small Java utility which will scan over an entire directory (or a directory of directories, or a directory of directories of directories, etc) and fix the issue on any images which have it.  The full source code is available on Google Code (yes I still live in 2009, but at least it’s using mercurial). It will not touch images which do not have the issue.

Download jpegxmpxmltrimmer

As of this post the current version is 0.01 which essentially means:

It’s pre-production, pre-release, pre-beta, pre-alpha, pre-warranty, you-get-what-you-pay-for. /disclaimer

Run jpegxmpxmltrimmer

Assuming you already have a Java JRE installed, bring up a command prompt and enter the following command:

NOTE: This command will not edit existing files.  This is the safe mechanism to fixing your images.  Rather than fixing the originals, it makes copies and fixes the copies (named appropriately).

java -jar <path-to-downloaded-jpegxmpxmltrimmer.jar> <path-to-root-directory-of-images>

If you would like to fix the error by editing the existing files simply add a true at the end of the commandline.

That’s it.  You’ve now fixed the issue!  Yay! <insert-mini-celebration-here/>

The Catch

You’ve fixed the images with the pre-existing issue, but the bug still exists in the latest release of iOS (5.1 as of this post).

For now, you’ll have to run the utility over any files you import.  I’ve still found the issue on a few photos I’ve imported even since I stopped using the volume button.

I’ve reported the issue to Apple but haven’t yet heard back.  If you want this issue fixed permanently I suggest you do the same:

Crescent Trail Through Hike

I found a few other maps of the Crescent trail the other day.

It got me thinking…

My current Saturday in the Park project has an end date. I don’t know what it is yet, but it’s there… looming. There are only so many parks despite my desire for them to be endless.

My next big project might be to coordinate a through hike of the Crescent Trail. It’s not that long, only 35 miles but I’ve never managed to complete a through hike/paddle yet. This might be a good starter!  It’s not going to be an easy one though.  There’s no camping available along the trail that I’m aware of just yet.  My first challenge: finding camping sites.

Who knows, maybe this year: The Crescent Trail, next year: The Appalachian trail!

WebCam Tracker v0.9.0

For whatever reason I wanted to spend a little more time on my WebCam Tracker program by throwing a UI on top of it.  I did and it turned out reasonably well for my first foray into SWT.

3 things I would still like to do:

  1. Thread the image retrieval process.  It’s done but something happens with the output streams on the new thread which causes it to hang when System.out is called.  If I figure that out it’ll be easy to re-implement.
  2. Implement the progress bar at the bottom of the window.  It should be able to track the progress based upon the provided duration easily enough.
  3. Come up with a better widget for picking the duration and delay times.

Since I took a little bit of extra time to glossy it up a bit, there’s no sense in making it go to waste.  I threw the code & the distribution up on Google Code.  You can see it at WebCam Tracker.

Another time-lapse I did using WebCam Tracker.  Kinda neat.

Sunset over Lake McDonald

Let me know what you think, and of course I welcome any comments/feedback about the app.  Not that I’ll necessarily do anything about them… I don’t plan on spending much time on it… but I’d like to know.

Hawaiian Tsunami Timelapse

I heard about the possible Tsunami hitting Hawaii on Saturday about an hour before the predicted time.  As any photographically inclined programmer would do I went searching for some WebCams.  Once I found some that were returning images (most were timing out or saying too many users) I decided it would be neat if I could capture the images over time and throw them together into a video later.

About 15 minutes later and  WebCamTracker was born.  It’s nothing fancy, just a small Java class that’ll pull down a single image or multiple from the specified URL. To run it just use:

java WebCamTracker <webcam URL> <output directory> <?Max Duration?> <?Delay?>

Fortunately (but unfortunately for the video) the Tsunami didn’t really amount to much in Hawaii.  The video does however show the surges so it’s still pretty neat.  I ran WebCamTracker on 3 WebCams: Kanaha, Sprecks, & Hilo Bay. They turned out pretty sweet even if they don’t show much wave action.  Pretty good for my first time-lapse, even if I didn’t actually take the pictures myself.  Something I might play with soon though…

Anyway, Check it out:

side note: Music by JukeBox the Ghost, one of my favorite bands.

WebCamTracker.java

The Toy Shed

shed-6Rachel and I were gone on an awesome vacation for 3 weeks this summer.  By the time we got back, my father was full-swing into building his new shed for camp.  The rest of my summer was spent at camp (oh no), helping him put it up.  It felt like every weekend but was probably only every other.  Some days we made progress, other days we just relaxed in the mountains.  Either way you look at it though, we were within the blue line so did it really matter?

We call it the shed, but It should probably be called a barn.  It’s not built like the typical plywood thrown-together mess you can buy almost anywhere.  It’s built to last, Adirondack style.  Amish raw cut real 2×4’s and all.  In a lot of ways, it might be over-engineered and over-thought, but it’s good to do things that way sometimes.  My dad did most of the work himself. I helped a bit with the roof, siding and hanging the doors.  My Uncle and my cousin helped a bit with the roof and the siding, and a friend at camp dug out the hillside and leveled out some of our lot with his equipment.  All that’s left is some tin in a few places and some paint!

My dad likes to call it the “Toy Shed” or the “Toy Barn” or the “Toy House,” whichever name fits his fancy at the moment.  We even had a sign made for it.  That’s because it’s intended to house our snowmobiles, 4-wheelers and whatever else we come up with.  Oh, it’s also intended to house the tools and equipment we’ll need for next years project, the camp addition.

We’re gonna need help though.  So if you’re up for some hard work next spring/summer at a beautiful location, let me know.  Remember, the more you help out the more likely we’ll be to invite you up to relax!

A bit of the construction process:

Raymonds Pectoral Plaster and other Goodies

We live in an old duplex built before the turn of the LAST century.  As a result, we find some interesting things sometimes.  A recent construction project which involved tearing out our kitchen ceiling resulted in some very cool finds.

What we found:

  • ceiling stuffA sheet of paper describing Raymond’s Pectoral Plaster and its’ uses
  • A Postcard from Meriden Connecticut postmarked 1909
  • A bible lesson copyrighted 1896
  • A piece of glass with a label from Monroe Pharmacal co in Rochester NY
  • Bits and pieces of glass, some labeled some not, one which had ‘Buffalo NY’ etched in it
  • 3 ceramic white tubes with knobs at the end
  • a clothespin
  • some very short lengths of copper piping
  • A metal mesh ball with a hole at the bottom and a spike at the top

I have no idea what most of this stuff is but I find it fascinating that it was all piled up together in our ceiling.  If you have any thoughts let us know!  More Detailed Pictures Below:

A Very Memory Christmas for Grandma

If you’re part of the Masten/Kerber family you’ve probably already seen this note from Rachel but duplicating it here just means more people might see it.

We have something special planned for Grandma this Christmas and we need your help. We are looking for memories that you have of Grandma. It can be a funny memory, a special way she has touched your life, copies of old pictures, reasons why you love and appreciate her or anything you think she will enjoy and cherish. In order for us to complete this project we need to have 10 or more memories from each person in your family. This is much easier than it sounds.  Once we started thinking the memories just kept coming and coming.

While this task definitely deserves some attention, some people might be stressing about it. Don’t over think this task as it can be as easy as reminiscing on the old days. We thought we’d throw up some ideas to get you started.

  • I remember when you 
  • I remember how you used to make us 
  • I’m so thankful for you teaching me
  • I remember the old days when
  • I appreciate the way you helped me
  • I love the way you always
  • It always makes me smile when
  • I like how   always makes you
  • When we were kids I loved when you would take us

As a more specific example:

  • I remember how we would feed the chickens at Grandpa Frankies and …

Obviously your memories don’t have to be limited to this list, but hopefully it’ll get you thinking and give you some ideas.

Remember, Christmas is just around the corner and we can’t finish this little project without your help!

Subscribe to Feeds using TwittFeeder

RSSTwitter is a great update and notification system. You can send it messages with a variety of tools including Instant Messaging, Text Messages and the Twitter website itself. Twitter’s mission statement reads:

Twitter is a service for friends, family, and co–workers to communicate and stay connected through the exchange of quick, frequent answers to one simple question: What are you doing?

One of the most useful features about ‘new web’ is feeds. Getting updated whenever the sites you check change is probably the best enhancement to come out of the internet. No more wasting time checking sites that haven’t updated yet.

TwittFeeder asks the question: What are your favorite websites doing? It allows you to easily subscribe to feeds using twitter. Once subscribed you’ll get updates via Direct Message.

To use it first start following TwittFeeder. Once you are it will automatically start following you. When it does you can start subscribing to feeds. To do so simply send ‘subscribe http://feedurl&#8217; to twittFeeder as a direct message. If you’re using one of the standard Twitter tools this is accomplished by sending the following message to twitter:

D twittFeeder subscribe http://feedurl

That’s it! once you’re subscribed twittFeeder will start sending you direct messages using any notification system you’ve already setup in Twitter. The great thing about this service is if twitter ever adds another notification type you automatically get your feed subscriptions sent there for free.

The notification system twittFeeder uses is whatever your notifications are currently sent to by Twitter since it simply sends you the updates via a Twitter Direct Message. If you’re not a user yet you should be but the notifications currently supported are:

  • Text Message
  • E-mail
  • Instant Messages
  • Twitter website
  • Lots and Lots of 3rd party applications

To unsubscribe to a particular feed simply send ‘unsubscribe http://feedurl&#8217; as a Direct Message to twittFeeder.

Disclaimer: at the moment twittFeeder is scheduled to run every 10 minutes so updates won’t necessarily be immediate. That number might go up or down depending upon usage and several other factors.

Dynamic Categories

I determined a while ago that I wanted to reduce the clutter on my blog and eliminate most of what’s normally displayed on the front page of any blogs. However I didn’t want to lose any functionality and wanted to always have the ability to add links and categories and have lists of them that were generated dynamically somewhere. I figured that adding a page for each makes a lot of sense so I wrote a dynamic content wordpress plugin. At the moment it has 3 hard coded keyword tokens that it replaces with corresponding content. However the next release will allow you to specify a keyword token and what widget to insert in its place.