If you need to move your information from Runner’s World into RunKeeper, but like me have run into the problem that RunKeeper doesn’t have an api (yet?) and doesn’t let you import data, then fear not!
If you like living “on the edge”, try running my script by following these steps:
- Download the Ruby script here to any directory
- You’ll have to run a command to get the necessary Ruby libraries:
sudo gem install active_support hpricot json
-
Login to your Training Log at Runner’s World
- Select ‘Tools’
- Select ‘Export’ (in XML format), and click ‘Download’
- Copy the downloaded file into the directory where you saved the Ruby script
- Run this:
ruby run_hacker.rb rwFile.xml (where ‘rwFile.xml’ is the file you downloaded from Runner’s World)
- Finally, you’ll have to enter your RunKeeper email, RunKeeper password, and confirm every event that you would like to import.
CATCHES:
- For some reason the total distance in RunKeeper is recorded as “0.0” for imported Mapped runs (aka GPS runs). You can fix this by visiting RunKeeper, clicking “Edit Activity” for each Mapped run, move one of the points *very slightly* and then click “Save”. That should reset the distance correctly.
- This should work for RunningAHEAD too, but I haven’t yet figured out how to get the maps from a RunningAHEAD account w/out logging in first.
This script has worked for me so far; let me know if you try it and encounter any problems! I’d love to abstract this into a real api wrapper, but I am on the verge of wasting too much time.
Enjoy.
(comments or bugs?)
I found some tonight to return to Similar Stories Different Take and make a few changes:
- renamed to Different Take (thx Cody)
- added support for Bloomberg News!!!
- more polishing of the news-search algorithm
- website is now at http://different-take.com
- added browser extensions (courtesy of Kynetx)… the options for getting your balance of news are:
- Bookmarklet
- Azigo card
- Firefox extension
- Chrome extension
- Internet Explorer extension
(visit the site to install)
And if you happen to be in Utah tomorrow (Apr. 27), check out the Kynetx Impact Conference!

NAME: Similar News Stories
DESCRIPTION
When the user is on a major news site, this app will attempt to provide up to 20 links to similar news stories from other sources.
BACKGROUND:
This is a contest entry for the Kynetx App Contest. Go check out Kynetx if you haven’t yet— it’s a really nice platform for building context-based applications. Sort of like what hoodwink.d was for commenting, but you can do a lot more than just comments.
USE CASE
User reads a news article; User wants to see how other news sources are reporting the same story; User clicks the “Similar News Stories” bookmarklet and they’re given a list of links to matching news stories.
WORKING?
This is mostly working for me, although I have a few kinks to iron out. The current news sources it is targeted for are: CNN, NYtimes, LATimes, WSJ, DailyKos, FOXNews, Yahoo, Reuters, HuffingtonPost, and MSNBC (I’m having issues with a few of these currently).
When I have time I’d like to iron out the search algorithm, try to weed out links that point back to the same article, etc.
HOW TO INSTALL
EXAMPLE ARTICLES
Once you’ve installed, here is a sample NYTimes article, here’s one for WSJ, and here’s one for HuffingtonPost.

When setting your site’s file cache settings, there are 2 common ways to properly save bandwidth with HTTP headers.
First method: compare the browser cache’s current versions
Set an http header such as ETag or Last-Modified that allows a client (browser) to compare its cached version of a file with the one on the server. With ETag, for example, the client checks the ETag of its cached file against the server’s version of the file, and a 304 Not Modified is sent back to the client without the actual file contents.
This method saves bandwidth, but it also requires a GET or HEAD request to the server to find out if the browser needs a new version of the file.
Second method: give the file a lifetime in the cache
To avoid the lightweight GET/HEAD request, we can also set the Expires or Cache-Control: max-age headers. Expires will tell the browser the date that the file expires (so it can make a new request to the server), and max-age will tell the browser how long the file is good for (compared to the Date header returned in the response).
Read More
Here’s a script that takes a filename, parses the file for IP addresses, maps each IP to an RGBA pixel, and creates a PNG (thanks seattle.rb!).
For example, the following would map 192.168.1.1 in reverse (i.e. 1.1.168.192)…
ruby ip_colorsquare.rb production.log 4,3,2,1
Here’s one example I created with a 24-hour chunk of logs from WhereWeDoWhatWeDo (disclaimer: I mixed up the octet order when I created it)

Interesting to see patterns emerge, although the streaks of the same shade are probably just search bots or spammers.
Grab the script here.
I was trying to install JRuby on a new install of OS X Snow Leopard today, but got this error when trying to run stuff like “jruby -S gem”:
Trace/BPT trap
I’m using SoyLatte for Java development on my machine, and was able to fix the JRuby error by switching back to the Java 1.6 with which Snow Leopard ships.
So what’s the quick fix — so we don’t have to debug JRuby/SoyLatte — in order to do Java development with SoyLatte, but use JRuby with OSX’s Java 1.6? Add this to the top of your “bin/jruby” file (wherever it lives):
export JAVA_HOME=/Library/Java/Home
やすい!
Here’s what I came up with during the Hack Day portion of the incredible Open Video Conference 2009 this weekend. It’s a VJ’ing tool written purely in HTML5 and JS.
Bear with me if it’s glitchy! It’s just a prototype.
go to vijo
