How Windows ate my EXIF data (and how I mostly fixed it)

The background

As we’ve already estab­lished, I love to take pho­tos, and I have a strong bias toward dig­i­tal. While I received my first dig­i­tal cam­era (the afore­men­tioned Game Boy Cam­era) on my birth­day in 2000, it was­n’t until the fol­low­ing sum­mer that I got my first “real” digi­cam, a Nikon Coolpix 775.

From there, the flood of dig­i­tal pho­tos began. Ini­tial­ly, I just dumped every pho­to into a sin­gle fold­er on my shiny, new, gonna-help-me-do-well-in-college-this-fall lap­top, and let their sequen­tial file­names (DSCN0001.JPG, 0002, etc.) do the “sort­ing.”

This worked for a while, until it became clear that hav­ing all of my pho­tos in one fold­er was poor for both orga­ni­za­tion and per­for­mance, so I start­ed orga­niz­ing my pho­tos using dat­ed sub­fold­ers (e.g. photos/2001/2001 – 08-12/). This was all the orga­ni­za­tion I did for my pho­tos, and was also how  I viewed them, up until I began using pho­to man­ag­ing soft­ware (first Picasa on Win­dows, lat­er F‑Spot under Ubuntu).

The problem

While these apps excel at tak­ing pho­tos and turn­ing them into a well-organized stream based on date tak­en, I noticed that a small hand­ful of pho­tos were out-of-place in the time­line.1

After spend­ing some time puz­zled by this, it occurred to me that:

  1. none of these pho­tos had EXIF data
  2. all of these were tak­en in 2001
  3. all of these had been tak­en in “por­trait” mode (when you turn the cam­era side­ways), as opposed to “land­scape”

In an exam­ple of clear­ly mis­guid­ed, youth­ful indis­cre­tion, I had man­u­al­ly rotat­ed these pho­tos — remem­ber, cam­eras did­n’t have ori­en­ta­tion sen­sors back then — using Win­dows Pic­ture & Fax View­er (Win­dows ME/XP’s default), and it ate my pho­tos’ EXIF data! From then on, I start­ed using the cam­er­a’s built-in rotate functionality.

But, ugh, I still had a bunch of old, messed up pho­tos. For­tu­nate­ly, I was­n’t total­ly in the dark about these pho­tos’ chronol­o­gy, as I knew the cor­rect dates that these pho­tos were tak­en, thanks to the sur­round­ing sequen­tial pho­tos still hav­ing their EXIF data.

The solution

For the last few years, I let these few pho­tos just be, annoyed that they would always show up in the wrong places. So today, I final­ly did some­thing about this: I gave them new EXIF data using the best infor­ma­tion I had at my disposal.

While I did­n’t know the pre­cise time tak­en, I did have dates for these pho­tos, so I fig­ured giv­ing them EXIF with the right date and wrong time was bet­ter than no date at all. I accom­plished this using a pair of Lin­ux pro­grams: jhead and touch. Here’s how:

First, I cre­at­ed an EXIF tag for a giv­en pho­to using jhead:

$ jhead -mkexif DSCN1282.JPG

Then, I touched the file (in Unix‑y par­lance, change the file’s “mod­i­fied” time­stamp) to mid­night (00:00:00) on the appro­pri­ate date (e.g. August 122001):

$ touch -t 200108120000.00 DSCN1228.JPG

Final­ly, I used jhead to change the file’s EXIF time­stamp to the newly-fixed mod­i­fied date:

$ jhead -dsft DSCN1282.JPG

Hav­ing re-added the prob­lem images to my F‑Spot library, the pho­tos now appear more-or-less in the place they should. They’re now good enough that I’ll nev­er again have to see those pho­tos mixed in with the wrong year!


  1. I know what you’re think­ing: that there were times when I for­got to set the date on my cam­era. Nope. No way. I nev­er for­get to set the date on my cam­era, because mak­ing sure my pho­tos have the cor­rect date and time is some­thing that I’m a bit obses­sive about, and the first thing I do after charg­ing my cam­er­a’s bat­tery is always check the date.[]

The plugins behind the blog

I appre­ci­ate the slick pub­lish­ing plat­form that Word­Press pro­vides for my writ­ing. Per­haps even bet­ter is its plu­g­in sys­tem, which lets me make it do just about any­thing I like.

Since you wont find me churn­ing out PHP code of my own any­time soon (I’ve actu­al­ly been mean­ing to take anoth­er stab at to wrap­ping my brain around Python now that ver­sion 3 is out), I rely on the Word­Press com­mu­ni­ty to do so for me. For­tu­nate­ly, with near­ly 10,000 plu­g­ins avail­able, they seem up to the task!

When I set up my Word­Press instal­la­tion ear­li­er this year, I promised myself that I would­n’t go over­board the way I usu­al­ly end up cus­tomiz­ing and extend­ing most of the oth­er tech tools/toys in my life. Even while show­ing restraint, I’ve man­aged to accu­mu­late just over 20 plu­g­ins at this point… whoops! 1 That said, every plu­g­in I’m using has helped make this blog what it is today… from one that mir­rors com­ments that peo­ple post on Google Buzz, to one that gives me a per-post space to brain­storm as I compose.

Thus, I’ve cre­at­ed an ‘About Plu­g­ins’ page that prop­er­ly rec­og­nizes each one.


  1. The plu­g­ins actu­al­ly seem to be impact­ing the blog’s per­for­mance; I need to take a clos­er look into just where the inef­fi­cien­cies lie.[]

What’s all the PubSubHubBub hubbub?

Gen­er­al­ly speak­ing, I’m a fan of emerg­ing tech­nolo­gies and stuff like that. I just don’t always get it right off the bat.

I first heard of RSS/Atom in 2002 or 2003,  when­ev­er Live­Jour­nal start­ed active­ly push­ing syn­di­ca­tion, mak­ing feeds on jour­nals dis­cov­er­able. I looked upon these alien terms with inter­est, but some con­fu­sion. Wait, I can sub­scribe to a blog? Why would I want to do that?

I know what I prob­a­bly sound­ed like back then. Per­haps in a cou­ple of years, I’ll be laugh­ing at myself, won­der­ing what I’d do with­out Pub­Sub­Hub­Bub. Just perhaps.

For now, though, I’m not quite sure I get it. Since Google Read­er now sup­ports the for­mat, I went ahead and found a Word­Press plu­g­in to enable it here on writegeek. I under­stand that to an RSS sub­scriber, it means faster or near-instantaneous updates. And to a pub­lish­er, it mean not only faster updates for one’s read­ers, but less load on the serv­er, since mil­lions of desk­top feed-readers won’t be reg­u­lar­ly request­ing one’s RSS file. (Not that that applies to me… yet.)

Yeah, I’m a bit intrigued at the instant pub­lish­ing, but have a bunch of unan­swered ques­tions. Which servers should I be ping­ing? What moti­vates one to run a serv­er? What are their busi­ness mod­els? A cou­ple of years down the road, when they real­ize that they’re run­ning the most pop­u­lar servers but still aren’t mak­ing mon­ey, will they be putting ads in my feed? And I think I read some­thing about servers talk­ing to each oth­er; how does that work?

There seems to be noth­ing to lose, no lock-in or sin­gle bas­kets in which to place all of my prover­bial eggs,  so I’ll try it out. (That was basi­cal­ly the point of this post.)

Time to click Pub­lish and start jab­bing my F5 key…

The case of the disappearing, reappearing dictionary

I was a vora­cious read­er from a rather ear­ly age. I recall hav­ing had my read­ing lev­el, in first or sec­ond grade, assessed at that of an eighth-grader.

My read­ing prowess could be attrib­uted to a few things, like my par­ents read­ing to me from a young age, and often encour­ag­ing me to read to them. More impor­tant­ly, if I came across a word I did­n’t know and asked them what it meant, they almost always made me go look it up in the dic­tio­nary. I had a chil­dren’s dic­tio­nary that I adored, but for words that did­n’t appear in there, I’d use their musty col­le­giate dic­tio­nary. This fos­tered an envi­ron­ment where lit­er­al­ly no word was beyond my com­pre­hen­sion, an empow­er­ing feel­ing for a pre-geek with a single-digit age!

As I grew up, I did­n’t always man­age to keep read­ing with such vol­ume and tenac­i­ty, and today, while I read tons of bits and blogs from the Web, long-form con­tent isn’t some­thing I take in a lot of. When I do, it tends to be an e‑book. (I read these, in epub for­mat, on my Android phone using the excel­lent open-source FBRead­er. Yes, read­ing off of a small back­lit screen sucks, but this is mit­i­gat­ed by a nice serif font and the knowl­edge that, as I’m often read­ing in the dark, I would­n’t real­ly be able to read any oth­er way.)

As I read, still I come across the occa­sion­al word I don’t know. These days, my main dic­tio­nary (either Free Dic­tio­nary Org or Lex­i­con Lite) also lives inside of my phone. FBRead­er does­n’t have its own built-in, and to switch to anoth­er app is kind of a pain, so I’ve late­ly been find­ing myself shrug­ging off unknown terms. I have become the sort of per­son who stopped learn­ing new words.

This both­ered me, so I decid­ed that, damn the incon­ve­nience, I would start look­ing up words again. Once I tried, I learned that it actu­al­ly was­n’t so hard, after all.

The secret (if you could call it that) was to long-hold my phone’s Home but­ton. This is the equiv­a­lent to the Alt+Tab key com­bi­na­tion in Lin­ux and Win­dows, which allows you to flip through open apps (only, in Android, it’s a list of the six most recent­ly used apps, open or oth­er­wise). As long as the dic­tio­nary is among the last six, it’ll appear in that list… as does FBRead­er, when it’s time to switch back. This is much more enjoy­able than going back to the home screen, flip­ping open the apps draw­er, etc.

I guess that’s a pass­able not-so-new-anymore year’s res­o­lu­tion: to leave no word un-lexicized.

More introduction (this time, the geek side)

I under­stand that self-identifying as a geek in 2010 makes me nei­ther cool nor spe­cial, now that geeks are con­sid­ered… you know… cool and spe­cial. But hav­ing laid out my blog­ging cred, I’d still like to make the case for the geek side of the equa­tion (equa­tions being some­thing I actu­al­ly know very lit­tle about).

Yep, a dis­taste for math­e­mat­ics cur­tailed dreams of study­ing com­put­er sci­ence, or some­thing along those lines, in col­lege. Back in mid­dle school, how­ev­er, I was hap­pi­ly hack­ing BASIC in my school’s Apple //e lab. I had sort of a knack for it; in com­put­er class, I raced through the pack­et of pro­grams we were required to tran­scribe faster than any­one else, and began spend­ing my time writ­ing my own pro­grams, which would do things like tell my friend that his favorite foot­ball team sucked, repeat­ed­ly, through the mag­ic of 20 GOTO 10.

I did­n’t real­ly apply this knowl­edge very well at the time; it would still be a cou­ple of years before I had a com­put­er at home. And even when I final­ly did, a com­plete­ly awe­some Pen­tium 166 MHz IBM Apti­va1 run­ning Win­dows 95, I did­n’t quite know how to get start­ed pro­gram­ming on it.2

Anoth­er device appeared in my life a few years after the com­put­er; I received a TI-83 graph­ing cal­cu­la­tor for use in Alge­bra II. I ini­tial­ly found that it made a great mobile Tetris machine, but it was­n’t until read­ing Bill Gates’ The Road Ahead, in which he recount­ed his ear­ly days pro­gram­ming prim­i­tive com­put­ers, that I found myself inspired to do more with it.3

The cal­cu­la­tor seemed like a good place to start pro­gram­ming, espe­cial­ly because the user man­u­al con­tained an entire chap­ter devot­ed to teach­ing the TI-BASIC lan­guage! I picked this up pret­ty quick­ly, since I still remem­bered a lot of con­cepts from Apple BASIC. In my junior year of high school, I was soon writ­ing pro­grams to help me take short­cuts to solv­ing math and sci­ence prob­lems. But most impor­tant­ly, I want­ed to make games.

So I made a game. How I did so could be its own entry, and very well may be in the future.

This inspired me to sign up for the Com­put­er Pro­gram­ming I elec­tive in my senior year. They taught us Visu­al Basic, and the class was nei­ther inter­est­ing nor fun. This, paired with the real­iza­tion that study­ing com­put­er sci­ence in col­lege meant tak­ing lots of math (some­thing I’d always heard, but col­lege course cat­a­logs assured), made it clear that I should focus on the oth­er thing I liked doing: writing.

I majored in com­mu­ni­ca­tions, and the rest is his­to­ry. Except for a fruit­less for­ay into Python a cou­ple of years ago, I haven’t pro­grammed much lately.

But I still embody, I think, the hack­er ethos. For me, 2005 could also have been called the myth­i­cal Year of Lin­ux on the Desk­top, thanks to the then-nascent, but still quite amaz­ing, Ubun­tu dis­tri­b­u­tion. While it was alien to me, and did­n’t quite ‘just work’ on my lap­top, I per­se­vered (smug Windows-using friends would say I “suf­fered”) and use it to this day. I love Ubun­tu, and it still… almost just works.

Along the same geek lines, doing more with the devices I own seems to be a recur­ring theme in my life. These days. I car­ry in my pock­et a root­ed Android phone (run­ning Cyanogen­Mod), and at home have a homebrew-enabled Nin­ten­do Wii and DS, a Canon Pow­er­Shot sport­ing CHDK, and Linksys routers run­ning the dd-wrt and Toma­to firmwares. My (lack of) skill-set means that you won’t find me help­ing the cause of hack­ing open a new device, but I’m glad to file the occa­sion­al bug. In short, I like to get as much as pos­si­ble out of my devices, includ­ing, quite lit­er­al­ly, my data. Back­up is a top­ic I’ll be com­ing back to, for sure.

I think that about sums up my geek side (and unin­ten­tion­al­ly makes a pret­ty good case for my navel-gazing side).


  1. Mine looked exact­ly like the tow­er pic­tured there![]
  2. Let’s remem­ber this when we talk about the iPad.[]
  3. My 2010-self is a lit­tle embar­rassed by hav­ing drawn geek­spi­ra­tion from Bill Gates, but you’re read­ing a truth­ful blog.[]