Fitbit Improvements

I have an idea for how Fitbit can improve their web site… and, well, their product. I think it will make some of their customers very happy.


Here we see the current Fitbit web site. See the part where it says “Sync Fitbit with your PC”? I know you think that means “Sync Fitbit’s data with my PC” but it doesn’t… what it means is “Use your PC to sync Fitbit’s data with Fitbit’s servers” and that isn’t quite the same thing.


Here is my improvement, where you can see that they have added the ability to sync your own data with your own PC. This hasn’t happened yet, and may not happen.

I heard about the Fitbit back in June, and it sounded really cool. I then did some research and found out that it sends the data to the Fitbit servers, but doesn’t save it on your own computer… but don’t worry, they have an API coming out Real Soon Now. (See RSN.)

Sure, you can hack away at a Perl or Ruby version created by other people who are still waiting, but that’s not really a good solution.

From the Fitbit FAQ:

How do I get data from the Fitbit to the website?

The Fitbit is wireless and ships with its own base station. In order for the wireless functionality to work you will need to install a tiny piece of syncing software. This software will run on Mac OS X and Windows XP/Vista/7.

Do I have to use the website? Is there a way to dump data to my PC?

Yes, you must use the website. We do not provide any way to dump data to your PC, but the website will have an extensive XML and JSON API. You will be able to access most of your data through the API.

Now, that part that says “Yes, you must use the website.” worries me. It worries me because it makes me think these guys have You must use the website as part of the business plan. I know the Fitbit is a cheap device, so maybe they have something else planned to make money… Quickly, back to the FAQ!

Do I have to pay anything for the website?

No, the website is free. Once you buy the Fitbit Tracker, you will not have to pay anything additional in order to use the website.

Wow… OK, maybe not… I mean, the web site is free to use. It’s not like there is some Premium Membership… Oh wait, there is!

We’ve also launched a new premium membership with additional features to help analyze your activity, food and sleep to see results more quickly.

The Premium Membership is $49.99 per year. (Right now anyway…)

So how is that API coming? At least a few people have been waiting since late 2009.

I really do think the Fitbit is a neat device, and would consider getting one, but based on all the information I’ve gathered so far, I’m not convinced it’s a good idea based on the facts that:

  • I can’t get my own data directly from the device to my own computer
  • I can’t (easily) get my data from their servers to my own computer
  • It’s been at least 9 months and no API
  • They may have “upsell the user premium services” as part of their business model

I know the premium services cost money to develop and cost money to provide, and that’s fine… charge for it, but also keep in mind that having an API could open up the development of other applications and innovative new web services that could help you build some buzz, expand your brand, and ultimately sell more units.

And if there were a way to get the data directly on your own computer, you’d also open up the product for our friends who don’t use “Mac OS X or Windows XP/Vista/7” as well as other neat things. I know the new future is all about sharing, but maybe I don’t want my data sent out to the cloud, and right now, that’s not an option.

If you’re willing settle for the limitations of the Fitbit, and the nature of the device, then it definitely looks neat. If you’re concerned about how your data bypasses your own computer to go into the cloud where you may be able to access it (possibly for a fee) then, well… I’d think about it a bit more…

Update 2010-07-27: Here’s a nice post by someone who owns a Fibit.


Twitter Kiosk Hacking

The year was 2007. Twitter was still fairly young, and was used by mostly the techie crowd. For BarCampMilwaukee2 I put together a bit of code using Perl, cron, HTML/CSS and ended up with this kiosk-sort of thing that we projected on the wall during the event.


Here’s a mock-up of what it looked like. I had just started testing it around August 2007 using the @web414 account on Twitter. Oh, keep in mind that there were some apps do to this sort of thing back then, but most were written in Flash, or AIR or something else that required specific hardware/software that I couldn’t use for whatever reason. Oh, and just a bit of history, I’ve been building kiosks out of old machines since 2002 or so. These are machines that would find no other use, so I do my best to put them to good use.

So for this particular modern-day kiosk experiment, I wanted to use the Eee PC 701 I got in 2007. It’s not my main portable since I got a MacBook, but I still find uses for it. The idea was to have it sit on my desk with a constant stream of Tweets rolling by…


I’m (currently) running EasyPeasy on the Eee PC, and it can run Adobe AIR apps, so I figured I’d give TweetDeck a try. Sure it’s in beta, but what isn’t, eh? Anyway, while TweetDeck is a nice app, it’s infuriating that it can’t display one really wide column. I know it’s infuriating because it’s a feature people seem to ask for in the support forums. TweetDeck wasn’t doing it for me.


Next up was Spaz. I really like all the ideas behind Spaz, it’s a nice little application. You can even edit the CSS to tweak the interface. That’s a handy feature!


I didn’t do much with the CSS tweaking, as I just wasn’t feeling it with Spaz. There was a lot of application UI to deal with, and I didn’t feel like tweaking an AIR app that much. Still, Spaz is nice for what it does. The developer’s blog has some Twitter gripes, but then, who doesn’t!?


Next up was Buzzbird, an XULRunner-based application. If you’ve never hear of XULRunner, it’s basically a method of building applications the same way Firefox and Thunderbird are built, using XUL to create the interface. This is a technology I really wish we would have seen take off a bit more, as it’s great to work with.


Giving the CSS a tweak in Buzzbird was simple. Inside the Buzzbird folder (under Linux) is a chrome folder, and in there is a skin folder, and in there is a classic folder. CSS and images live there.


If you’re using a Mac, you just do the right-click ‘Show Package Contents’ trick and drill down a little bit. Also, if you are using Mac OS X 10.6 Buzzbird does not work (as of my writing this) though it does work on Mac OS X 10.5.

Buzzbird is a nice XULRunner-based application that is multi-platform and open source. The development seems pretty active on it as well. (And just like Spaz, the developer has some Twitter gripes…)


Next up was… Firefox. I happen to really like Firefox, and one feature I really like is that (on Linux) it has a “kiosk mode” that let’s you hit F11 and it makes all the browser chrome go away, and leaves you with a full-screen view of your browser viewport – no controls – just content. I love that! Especially on the small screen of the Eee PC, which shows just 800×600 resolution. But this isn’t the normal Twitter view, and the normal Twitter view also doesn’t automagically refresh itself, so there’s work to be done. (Note: I finally did find a kiosk extension for Mac OS X, it’s Full Fullscreen.)


First off, we need the page to reload. Believe me, I dug through all sorts of Greasemonkey user scripts claiming to make a page reload, or specifically claiming to make Twitter reload. None of them worked. Maybe they used to, but they didn’t for me. What finally did work was an extension called ReloadEvery. It worked when nothing else would. (Be nice and don’t make it reload too often, remember, every page load uses someone’s resources.)


So besides ReloadEvery we’ve also got Stylish installed, which lets us easily tweak the CSS for any web site. It’s pretty simple. So after just a little bit of CSS hacking (and I mean a little, I really didn’t spend much time on it) we’ve got a look that minimizes some of the stuff we don’t want to see, and emphasizes more of what we do want to see.

Here’s the CSS for “Twitter Kiosk” I put into Stylish.

/* Twitter Kiosk */

@namespace url(;
@-moz-document domain("") {

#logo { display: none !important; }
#status_update_box { display: none !important; }
#header { margin-top: -16px !important; }
#heading { display: none !important; }
#side_base { display: none !important; }
#container { width: 100% !important; }
.subpage { width: 100% !important; }
#timeline { width: 100% !important; }
.status-body { width: 93% !important; }


It’s not perfect. As you can see the page is still showing the notification of new tweets, and some of the links at the top. I didn’t bother trying to get rid of those bits, but it should be pretty trivial to hide them as well.


Anyway, this thing is ready to run, and can just exist on the Eee PC sitting on my desk, or be connected via VGA to a larger external monitor, projector, or television. And best of all, it works in Firefox, which is everywhere, and requires just two extensions, and a little bit of CSS.

So the big question is, can I run it on older hardware with older software? ReloadEvery claims to work as far back as Firefox 1.5, though Stylish claims to requires Firefox 3.0 or higher. Full Fullscreen (for your Mac kiosk) has older versions that should work with older Firefoxes. Firefox 3.x says it needs Mac OS X 10.4 or higher, so that tosses out a lot of older Macs unless you look at Firefox 2.x or older. Still, you can experiment if you wish and see what you can cobble together. Who knows, I just might do that myself. (Maybe even on Linux.)

No matter what you do, have fun and keep on hacking…

Note: This was all written before #newtwitter happened, so I’m not sure any of it will still work. If it does, let me know… thanks!


Return of

Tire Buddy Back in September of 2004 I published a Perl script I wrote called You can read that post if you like, because it’s still there (but we’ll get to that later.)

A day after I posted it, Phil Wilson wrote about it. You can read that post, because it’s still there.

Anyway, was a total hack. Short, simple, and it worked for me. Perfect.

Over the years, I’ve gotten a few pieces of email from others who used it, or tried to use it, or wanted to use it. Some of them I could help, others I couldn’t. (I switched jobs, and didn’t have access to an Exchange server anymore.)

So last week I got an email from a guy named Josh Lee. He had the following to say:

Thank you for the script. I would like to add a comment about it. I found it best to wrap it’s execution in a bat file on windows, then call that with a scheduled task. I set up the task to start 10 minutes after logon, and every 15 after that. I also setup the Sunbird option to reload remote calendars every 15 minutes and it works like a charm. On the properties of the remote (work calendar) itself, I unchecked “Show Alarms” and now everything is perfect, home calendar and work one, side by side in my Sunbird.

Thank you very much for sharing this. I would like you to add my comments to your page, sharing with people how to set up this a little further, in windows.

Also, not being a Perl guy, I was lucky to figure out I needed active Perl for windows, and that I needed the non standard Net::IMAP::Simple package installed, and how to do it, you might consider mentioning your dependencies.

Josh also sent me $10 via PayPal as a thank you! (He also suggested I add a “donate” link to my site in case anyone else wants to thank me.

Well, thank you Josh. I do appreciate the email, as well as the $10. :)

High Medium Low One reason Josh wanted to thank me is because I went out of my way to publish the script and make it available to anyone who wanted it. But here’s the thing… The reason I started doing things like that was because others did things like that. I’ve always felt that the web was a collaboration medium, and to a large part, it’s about helping each other out. Also, I like solving people’s problems, just as I like when other people can help me solve my problems. Every time someone posts a solution to a problem on a forum, or a wiki, or their own personal blog, it makes me happy that there is knowledge being shared, and I want to be a part of that.

Oh right, I know… blogs are not cool. Twitter, Facebook, “Social Media” … that’s where it’s at. Right. So… here’s a challenge: Find some post you made on Twitter or Facebook 2 or more years ago that clearly solves someone’s problem, and provides them with some piece of code they can download and run. Go on, I’ll wait. Also, send me the permalink to that public post that I can see without being logged into anything.

So when I said “You can read that post, because it’s still there” what I was talking about was the permanence of what you create when you control the publishing platform. You don’t control Twitter or Facebook, and you never know when the old posts will go away, or not be accessible. I know platforms like are hosted solutions, and they may also someday go away, but at least they offer an easy export of all of your data. Your Data.

So while Twitter and Facebook are platforms with a lot of good in them (as well as some bad) I’m still ultimately going to maintain my own home on the web, and it’ll be right here where I’m an owner, not a renter, and I feel like I have some control over things.

(If you’ve enjoyed this post, we’ve got about 13 more years worth, if you’re interested. If not, don’t worry… Someday you may need a problem solved, and a search will lead you here. Either way, thanks for stopping by!)

Update: I ended up donating $5 of that $10 to an open source developer who solved one of my problems today.


National Novel Writing

So last year, during MilwaukeeDevHouse3 I gave old pal Boone a bit of guff as he was doing some writing for National Novel Writing Month and I told him I would just write a Perl script to write my novel for me.

Well, I did. I wrote around the end of November, but I never actually published what wrote for me. So here it is…

Enjoy some of the excerpts below, and then download a PDF of the whole thing…

     Jello sysadmin macdink teergrube xreffing boga. Predominantly regexp hangs visionaries. Garbage insist FTPing nroff spamhauses plingnets. Vannevar By lobbyists clone spells feepping RETIed segmenting. Tense segfaults thunk Datamation chose BLTs. Mustard arrived stiffy inexcusable shame TELNET able warez. Modding FidoNets life dump frednets. Con derf Ks for users liked postings. Productive code gweeps boinked bouncing card. Loop robustest tronning flock Now gopher faith spamblock we. Competition baz hue lag. Realer prisons fairingses kits cats superloser proglet old RTM. Hollised Given Katrina gophers elvish rehi. Attempt frogging candidacy visionaries. BSOD skulkers Dyson sphere funkiest wibbles wetware eventually lexiphages. SEXes MEGOs within marketroid pocket universe awking.

I ended up using source text from various places… Text of Obama’s Speech: A More Perfect Union, 75 words every sci-fi fan should know, and I believe the Unofficial Jargon File Word Lists. At least that’s what my notes tell me… Here’s some more!

     Robots they’re foot roaches. Crunch download screwages bum inequalities. Pod short-term pessimals middle monstrosity. Skrogs CTSS values terminaks ENQ specific. Waldos muttered annoywares ping. Crank strudels seggies labor gas it shape. Emailing organized TANSTAAFL benefits puffing. Blocks Constitution truly GOSMACSes evidence. Prints flavorful clocked glorks ANSI primary latest dogwash flags. Students NMI arg passed psychedelicwares. Sharewares wonkiest frobnicating her chanop chrome posts. Spawn because blitters weedses simply. Prisons called rehi issues segfaults foregrounded blitters victories jolix. Risk whack dominated nine Trinity plonks. RTS snivitzes smoking society Berzerkeley.

Yeah… it’s that good!

Anyway, you can find the code here:


Mac Apps

A few months back David from Korporate Media sent an email to a few folks titled “Dear Macintosh users, let’s talk apps” and a bunch of people replied. It took a while to compile, but here’s my list. Some of these I don’t use much anymore in Mac OS X 10.5 but still do in Mac OS X 10.4, and some of these I almost never use, but still think they might be useful to others…

(Oh, and Perl, which does everything else.)