Compiling Golden Cheetah with Twitter+OAuth

August 12th, 2010

Screen shot 2010-08-12 at 22.01.08Justin added a Twitter posting feature to Golden Cheetah a couple weeks ago. However, it used basic authentication, which Twitter has announced is going away in favor of OAuth only. So, after several more days of coding he did a bang up job of rolling in support using liboauth.

Now, getting liboauth and it’s prerequisites configured to play nicely with my Golden Cheetah dev environment has been another struggle. I have been making the OS X releases of Golden Cheetah for a while – and we package them as a universal binary (i386/ppc) with 10.4 support. I’ve had to custom compile Qt, QWT, srmio and all that stuff to enable this.

In brief, liboauth needed to be compiled against the same arch that GC and co. have been, and it really wanted to go native, eg x86_64 on my MacBook Pro. After a night and day of tinkering…here’s what worked. Thanks to Justin for getting this going.

Export config flags (just makes life easier on the command line):

export CFLAGS=-mmacosx-version-min=10.4
export CPPFLAGS=-mmacosx-version-min=10.4

openssl 1.0.0a:

./config -m32

liboauth 0.8.8 / curl 7.21.1:

./configure CC="gcc -arch i386" CXX="g++ -arch i386" -host i386

Golden Cheetah:

After getting linker errors for a while, I realized that I had to directly link to the static version of libcrypto that was installed alongside libssl in /usr/local/ssl.

Undefined symbols:
  "_EVP_MD_size", referenced from:
      _oauth_body_hash_file in liboauth.a(liboauth_la-hash.o)
      _oauth_body_hash_data in liboauth.a(liboauth_la-hash.o)
ld: symbol(s) not found

Here’s the relevant bit of src.pro:

!isEmpty( LIBOAUTH_INSTALL ) {
INCLUDEPATH += $${LIBOAUTH_INSTALL}/include
LIBS += /usr/local/ssl/lib/libcrypto.a
LIBS +=  $${LIBOAUTH_INSTALL}/lib/liboauth.a
LIBS += -lz
LIBS += -lcurl
DEFINES += GC_HAVE_LIBOAUTH
SOURCES += TwitterDialog.cpp
HEADERS += TwitterDialog.h
}

Mobile Logger – GPX extensions

August 10th, 2010

gpx-extRolling the extra logged sensor data into the GPX export took more effort that it should have…but I uncovered and fixed a latent bug in the export feature, so that’s a win right? Regardless, it’s was nice to use the new issue tracker at bugs.robertcarlsen.net for real(z) for the first time. I’m looking to get several other features implemented before the next released update…planning on a few weeks. Otherwise, code is available, as always, on github.

Mobile Logger GPX + GoogleEarth

July 13th, 2010

mobilelogger-myfirstgpxfile

GPX export seems to be working, and imports fine into Google Earth. This is just a basic implementation of the essentials for a route; I’d really like to include other recorded sensors somehow into the track – maybe it could be a layer in Google Earth?

Looking at the ride data here reveals just how bad raw GPS data can be between tall buildings in NYC. Several data points often share the same GPS location. It seems that moving quickly with a clear path to the sky gives the best performance.

The app also quit midway though the ride – I have to look into that.

GPX export is available in the github repository.

Mobile Logger – GPX

July 13th, 2010

Basic GPX export has been added to the github repo. That is all.

http://github.com/rcarlsen/Mobile-Logger/commit/9e1dc73304de562c30e64fa9a9b61840e69963c3

Mobile Logger server down

June 21st, 2010

The mobile logger server seems to be having some trouble at the moment. I’m investigating the issue and will update this space when there’s news.

In the meantime, I’d advice anyone having trouble logging to disable the Upload feature in the settings.

Thanks for patience!

UPDATE: It looks like the server is back online. 12:09 6/22/2010

UPDATE #2: Err, I may have jumped the gun with that good news. Going to sleep on it.

UPDATE #3: everything seems to be working again. 8:00 6/22/2010

Gone global (again)

May 13th, 2010

mobile-logger-gizmodoThanks to a (very flattering) mention of my thesis project on Gizmodo after the ITP Spring Show, the use of Mobile Logger has quadrupled in the past two days. I had been watching the number of unique users rise on the Dashboard page, currently near 800…but then wondered what that would look like animated over time.

Here’s the world map, showing events pop up chronologically. There was the initial spread on April 12th from the public release in the app store…but just wait..wait…wait…for  May 12th. Fun!

Thanks Gizmodo (and Matt)!

Riding Through Mountains (of Data)

May 11th, 2010

(Here is the documentation for my thesis project at NYU’s Interactive Telecommunications Program. PDF version here.)

Riding through Mountains of Data:
Visualizations of Cycling

Robert Carlsen
Interactive Telecommunications Program
Tisch School of the Arts
New York University

Abstract

This project attempts to describe the cycling experiences of several riders in New York City through a series of visualizations. Specifically, I am interested to discover if riders similar to myself share a common experience through which a sense of connection could be derived.

Cyclists were encouraged to record their travels using their personal mobile devices running Mobile Logger, a custom iPhone application.
Log data was uploaded by the application to an online database in near real-time during each ride. This data was analyzed and filtered to provide source material for the resulting visualizations and system “dashboard” at http://mobilelogger.robertcarlsen.net.

Keywords

Cycling, New York City, sensors, iPhone, visualization, mapping, tracking, logging, mobile, application, bicycle

Read the rest of this entry »

Playing with matches…and Cinder

May 3rd, 2010

mobile-logger-global-mapLate last week The Barbarian Group released Cinder, their previously in-house C++ framework (codenamed Flint). I’d heard about it through Robert Hodgin’s blog posts / experiments, and again this past winter when Andrew from TBG spoke with me about my ITP Show Project, seismi{c}ycling, which was created in openFrameworks.

It’s been released under a permissive open source license and is well organized. The online reference is a bit technical (compared to Processing or oF’s reference sections), but the framework comes with many well commented example projects.

Since I don’t have enough to do in the waning days of my ITP thesis, I’ve decided to create my cycling data visualizations using Cinder and have been enjoying the experience (as much as one can when under deadlines). Classes seem well thought out and there are many convenience methods and overloaded operators for common tasks when putting together a quick viz. The entire package (at least on OS X) feels unified.

Anyway, that’s my initial impression…only a few more days to go. Here’s an initial (rudimentary) animation of global Mobile Logger users which I’ll be using in my presentation on Friday. The most interesting moment is April 12th, when the app went public in the App Store. Prior to that it was mostly myself and a handful of beta testers.

Mobile Logger has gone global

April 24th, 2010

globalThe Mobile Logger application has been public for a couple of weeks and has (surprisingly, to me) been used in every continent, save Antarctica. I first noticed several events in the database from Australia, then the UK. I was mostly catching these events by coincidence when I was looking over my own data and wondered just where (in the world) these other users were logging from.

For Earth Day, I generated a map of the global users of Mobile Logger and put it on the status page. While the historical data is really neat, and humbling to know that people all over have tried this app, the real-time data is captivating. I added the city of the most recent event and a pulsing marker to the map. Now, the location of the newest log is marked when the status page is updated. Next, I’d like to show it when several events have been logged at the same time.

That’s it for now…working on the next iteration of the visualizations. I’m thinking of some Feltron-inspired summary charts, then a more detailed array of specific data. Who knows?!

Earth Day + Mobile Logger

April 21st, 2010

1260201893_posterThursday, April 22nd is Earth Day. The weather is looking to be sunny and 65 degrees in New York City. Sounds like a perfect day to ride your bike (or walk, run or whatever you like to do outside). Since you’re already going to be out there, why not log the trip, help me with my thesis, and have your data made into some visualizations I’m preparing for the project?

It’s pretty simple…download Mobile Logger from the App Store (iPhone 3G/3GS), open it, then tap Logging switch to begin. Put the phone in your pocket, bag, mounted to handlebars, or wherever is convenient and go. You can double-tap the screen to disable the display, but shouldn’t lock the phone.

When you’ve reached your destination, tap the logging switch again to stop and you’re done! The log data is automatically uploaded to the Mobile Logger server and will be included in my research (this uploading can be disabled if you’d like to use the app without contributing to the project, too).

What I’m really interested in exploring is a sense of connection between us by sharing our experiences. I ride a bike daily through NYC, and encounter many other cyclists, walkers and drivers. We pass each other in a moment, or perhaps share a lane for a bit and then continue on our separate ways. How does my 5 mile, 25 minute ride from Greenpoint to the East Village compare to someone riding from Queens? What does a ride around Prospect Park share with one in Central Park? What’s the loudest part of the city for a cyclist? Where are the most frequently ridden routes?

I’ll be working with the contributed data to create visualizations which attempt to answer these questions. The “dashboard” of the system will be present at mobilelogger.robertcarlsen.net. More info about the app is available on it’s documentation page.

Times UP! is also organizing a ride at 7pm from Union Square if you still need another excuse to get on a bike, skates or a board. It would be neat to see a bunch of riders converge on a location, then ride together in a group. I really want to see what that visualization would look like…

Thanks, and enjoy the ride!