Looking for an excuse to try out Google AppEngine, and encouraged by someone on StackOverflow looking for a free web service to convert between currencies at historical dates, I built the Historical currency converter web service. Using a very simple RESTfull API, you can convert between all currencies on the ECB’s list, using exchange rates that date back to January 1999.
My preliminary findings: Google AppEngine is really cool (obviously), and using Python again after almost OD-ing on PHP was very pleasant. I’m still learning to properly use the datastore though, setting a multi-column primary key to guarantee unique (date, currency) records wasn’t very straightforward. Also the import of the historical data was a bit of a hassle with the import script timing out, until I found how the BulkLoader can automatically do this in multiple HTTP requests. Finally, getting this to run on my own domain, currencies.apps.grandtrunk.net, took some time until I found out the right DNS magic to set in DreamHost‘s panel (if you’re interested: I’m now fully hosting apps.grandtrunk.net, which allows me to set the domain validation code using a normal file uploaded to DreamHost; apps.grandtrunk.net is also the domain I told Google Apps to use, while at DreamHost I needed to set a CNAME (alias) record for currencies.apps.grandtrunk.net that points to ghs.google.com). The cron job is also humming along nicely now downloading daily updates, so convert away while I watch the dashboard seeing my quota trickle down…
Wim,
ik vraag me nu al de hele tijd af van waar je dat grandtrunk.net domein vandaan hebt
BTW: mooie blog
Groeten
Peter
Wikipedia knows (if you know where to look): http://en.wikipedia.org/wiki/Going_Postal
Thank you very much I am planning to use this.
Great post. How often do you update the rates? How about the rest of currencies???
The ECB’s rates are updated daily, those I get from the Fed (LKR, TWD and VEF) only get updated every Tuesday with rates from the previous week.
Other rates: sure, if you can suggest a good data source I’ll add it!