Bike Commuting, week 2

Five for five, biked to work every day this week! That’s actually the main reason I decided to try to post about this every week: to keep track of it, just for me.  I didn’t have any goals in mind when I started, but on the bike this morning it occurred to me that an 80% bike to non bike ratio would be something to try for. And today puts me at 90%   😉

New speed record today:  made it to work with an average 15.5 mph, or 18 minutes of riding time. That doesn’t count waiting at stop lights, which seemed to be timed just right this morning.

Also, I used MapMyRide to, uh, map my ride this morning.

Bike Commuting, week 1*


  • Days biked: 4 out of 5
  • Total distance (mi): 36
  • Total time on bike (hrs): ~4
  • Average speed (mph): ~13


Endpoints are Allandale (2222 & Burnet) and UT campus. I tried a few different routes last week before finding one that mostly works.  There are two roads between home and work that have decent bike lanes and not too much traffic (Shoal Creek and Guadalupe); the trick is connecting the two.

Continue reading “Bike Commuting, week 1*”

Pachube and the wifi thermostat

A few months ago, I installed a wifi-enabled thermostat. It connects to a service in the cloud ( ) and from there you can connect to it from its Android and iOS apps, or directly from the Web. And I was pretty excited (maybe inordinately so) to find out it has an open REST API with some pretty decent documentation. This thermostat speaks JSON.

Literally within an hour of finding the API docs, I had a Python script grabbing temperature readings from the thermostat and pumping them intro a Pachube feed. It took longer to get the thing attached to the A/C and reliably connected to wifi.


I used the requests module for retrieving the JSON. Here’s the short version (config variables have been hardcoded and error checking removed for brevity ;).

response = requests.get( '' )
indoor_temp = json.loads( response.content )['temp']

It helped speed things along significantly having the Pachube part mostly taken care of by the eeml module. Adding that temperature as a new datapoint to my feed goes something like this.

import eeml
pachube = eeml.Pachube( PACHUBE_API_URL, PACHUBE_API_KEY )
# This particular feed has named datastreams -- if you're posting to one with a numerical ID instead, enter that here.
datastream = 'temp'
pachube.update( [ eeml.Data(datastream, indoor_temp) ] )


I was about to wrap this up with a list of reasons I haven’t posted the entire chunk of code on github yet. But like many unpublished personal software projects, it really comes down to some combination of perfectionism and (perceived) lack of free time. “The perfect is the enemy of the good enough” and all that. The right way would be to just post it already – having code out there publicly means other people can spend their free time to help me make it perfect. 😉

Maybe next weekend.

I made a thing


Making a lamp out of a bottle is pretty straightforward, but for fun I thought I’d document how this one was thrown together.


  • a bottle (save the cap) – empty (depending on how you empty it, best not to do this all at once)
  • filler – I used green sand. The hobby store had sand in many colors, $2 for a 1.5 pound plastic jar. It only took half the jar to fill this 750 mL liquor bottle. So, roughly 1 pound of sand per liter of volume you’re filling.
  • a lamp kit – includes the fixture, wire, harp, etc
  • a lamp shade – It seems not many places sell green ones. Finally stumbled on this one at Ikea. SKIMRA. It was sold as a shade for pendant light.
  • a light bulb
  • a house, apartment, or other building – this should have some sort of power outlet, where you’ll plug in your lamp

Assembly Notes
The basic process is this: make an extra hole in the bottle; string the bottle onto the lamp wire; close the extra hole (hot glue!); fill the bottle with sand; assemble the bottle cap (with a new hole in it) and all the lamp parts and screw it into the top of the bottle; plug it in.

Some tips:

  • When drilling the hole in the glass, remember that glass would rather be sand again, and will try to break to accomplish this. Drill slowly.
  • After feeding the wire through the bottle, the plug end should be dangling out the back of the bottle. If the plug end is coming out the mouth of the bottle, you did something wrong.
  • If the wire and plug are inside the bottle, you may be using a Klein bottle. Re-orient yourself and the bottle and start again.
  • Don’t forget to clean up your mess!