Image Overhaul

The big slideshow used priorWhen I set this site up, I decided to collapse all images used into a slideshow. Each post has a couple relevant images attached, which show up in a teaser slideshow on the mainpage and as a large image within the article. 

But the slideshow had two problems. First, when writing a step-by-step piece (like this), images couldn't be placed in a relevant section of the text. For a while, I resorted to referring to images by number, but I wanted pictures next to the relevant text. 

Superfish Theming

.sf-menu li:hover > ul,
.sf-menu li.sfHover > ul {
  left: 0;
  top: 1.77em;
That little snippet of code's been giving me grief for a month. Well, this one, really:
/*Adjust top to line up submenu with shorter main menu*/
.sf-menu li:hover ul,
.sf-menu li.sfHover ul {
  top: 2em;
When I set this site up, I wanted dropdowns. Y'know, menus that expand when you hover them. They were initially provided by Nice Menus. For some reason, some time later (and no, I don't know why), Nice Menus stopped being nice. The dropdown's wouldn't drop. 


Now that you know what the IGVC is about, I'll go into some detail about our high-level approach. The challenge provides some obvious requirements:

  • A reference frame relative to earth to navigate to waypoints; GPS provides position and compass provides heading
  • Line detection to stay within lanes; a color camera suffices
  • Obstacle detection; a 2D rangefinder is the is logical choice
  • Precise measurement of velocity; provided by encoders, accelerometers, and gyros

I'll go through each requirement in a bit of depth, describe typical solutions, and design constraints. 

An absolute reference tells the robot exactly where in the world it is. GPS and compass provide that data. Unfortunately, GPS is only accurate to about 6', so it isn't useful for local navigation. A 2' difference in position is the difference in hitting an obstacle and avoiding it. The GPS is useful for providing long-range direction: the goal is 60' southwest.

Most teams improve their GPS accuracy with exotic antennas and exact correction services (the speed of light varies through the atmosphere, distorting timestamps and GPS location. A corrective signal provides the difference in true and measured time-of-flight, improving accuracy.) Although these units offer remarkable resolution (within 6"), they are prohibitively expensive ($20,000). 

Lafayette's team, named Team Terminus, will use an inexpensive GPS receiver, accurate to roughly 6'. It costs less than $100. (Cost, by the way, will be a persistent theme. Most IGVC robots run $20,000 to $80,000; Lafayette budgeted Terminus $6000.)

Pannier, Redux

A few months ago, I made a set of panniers for my bike out of some cheap canvas at Hobby Lobby. They were my first major sewing project, so I put a few things together in the wrong order. I left the clips off until the end, the straps were spaced wider than I'd have liked, and a few other things weren't quite right. 

Even so, they came out very well. My old panniers barely fit a 10# flour bag, and failed under the load. These are large enough to hold twice that, and would barely notice the weight. They can roll up and clip out of the way, and they look slick (They're unadorned black; my absolute favorite color scheme.) 

I decided to make another pair for my girlfriend, and took my additional experience into consideration. The second pair was easier to make and came out incredibly.


Yesterday, I went for a walk. Getting outside is always relaxing, and the town was beautiful in the dark, decked out for Christmas.

I also saw a broken electric radiator curbside. At least I hoped it was broken. On the way back home, I found the house again, hefted the thing onto my shoulder, and carried it a mile home. (I set it down too hard when I arrived and broke two of the casters. Now it was definitely broken.)

Hopeful, I plugged it into the wall, turned it on, and... nothing! Hooray! I had an excuse to take it apart. (The heater, by the way, is supposed to retail for $80. It's also got bad reviews, but hey. Free.)


The player, pretheming. The pause and unmute buttons are hidden; others are entries in a plain list.
Unformatted, white, ugly list. Sorry,
  • .
  • For a final project in German, my girlfriend decided to compile translations and other work into a website. She thought about using other formats, like a paper, but decided that web would make a compelling presentation. It'll also be useful long-term to track projects and act as a supplementary resume. Lafayette offers a similar service, LaFolio, but it's heavily Lafayette branded, is provided by servers outside of her control, and will become dated shortly after graduation. (18 months away!?)

    So, she decided to make a website. First step was checking for a domain. A quick search didn't turn up anything great, so she decided to piggyback on for now. If, in the future, she does want her own domain, aliasing the current site to a new url will be simple enough. For now, she's

    With hosting out of the way, I set up Drupal for her. The default themes didn't quite jive, so we made a Zen subtheme. As they say, imitation is the sincerest form of flattery: her site is almost identical to this theme. Different colors, but same two-column layout with the same left-column heading. 


    For a few glorious hours, my dining room was transformed into a wood shop. 

    Okay. "Glorious" is an exaggeration. So is "transformed" and "wood shop".

    For the past month, I've been organizing an international food tasting entitled "Technology of Food". International students are presenting food from their homes, with a focus on how the resources and history of the nation shaped its cuisine. 

    IGVC Introduction

    The robot, in profile.
    Lookit it! It's our robot!

    The robot, in profile. This semester, I was invited to work on a Mechanical Engineering Senior Project. (And yes, I need all of those capital letters.) The team is, with the exception of yours truly, entirely composed of MechE's. I was invited when the team leader spoke with Helen, who in turn suggested that I would be useful, what with my background in FIRST Robotics and Linux. (So many capital letters.)

    Each year, the Mechanical Engineering department sponsors a half-dozen senior projects. Each gives a team of engineers some capstone challenge, including SAE Aero Design, Formula Car, and many others. Most of these teams have been around for years; the team one I worked on was brand-new.

    IGVC. That's the competition. The competition - the Intelligent Ground Vehicle Competition - challenges teams to design and build robots capable of autonomously navigating a course. Two courses are provided: basic and advanced. 


    "Pannier" means two things. A pannier is either the thing that women wore in the 18th century to make their dresses all floofey or it's a type of luggage carried on the side of a vehicle or beast of burden. Needless to say, I'm working with the second sort. 

    A while ago - say, two years, I got a rack for my bicycle. The rack included a pannier, which was terrifically exciting. It had a center compartment where I took to carrying some basic tools and a reflective vest, and two zipper side pockets that could hold a fair volume. It was great, being able to take my bike grocery shopping or to use the side bags to carry books. 

    Like all cheap things, though, the bag broke. The side pouches were made from nylon and the seams just pulled right out. Ditto for the center bag - the floor and walls had an argument (or something) and came detached from each other. 

    Yesterday, I passed a 1 yard remnant (that means cheap) of duck canvas in a craft store. I'd been looking to make myself a set of bags for a while, and this seemed just the chance. (Plus, it was black. I love black.)

    Today, I started making the thing. I passed up a few designs for being too bulky or too simple, then found a nice one at The design was simple but usable, light but durable, and easy to modify to taste. Plus, the author included readable set of plans.

    Just a little kludge

    [ben@Puck ~]$ curl -ff && find Public/iTunes\ Music -iname "*`curl`*.*" -exec open -a itunes '{}' \;

    Nothing much - just a script that I threw together in 30 minutes. If you speak computer, it'll be simple enough to read. But it's going to be a secret for now.