Skip to content

On Winning the 4th HB Coffee Roasting Competition

2013 marks the third year in a row I’ve won the Home-Barista roasting competition, and as in previous years, I’m capturing the details for posterity here.

The judges from Sweet Marias described my first place entry as: “Full City, great example of a well-developed, darker roast that doesn’t compromise complexity; juicy stone fruits, developed sugar sweetness, pomegranate-like acidity.”

Other commitments kept me from experimenting much with this bean as in past years. I roasted it a couple different ways and shared my findings with the competitors, reproduced below:

Tried it two ways, identical drop temps and time from start of first crack to drop. The only difference being one was finished in 10:40, the other in 11:41. Bean surfaces look identical. Culled maybe 20 beans from each 8oz batch to discard the underdeveloped or misshapened beans.

Great creamy mouth feel in both cups, my favorite characteristic in this coffee. Brightness is restrained (for a Kenya), allowing for faster roasts and times to completion without having a total acid bomb.

Roast 1:









Roast 2:







Initially I had a hard time distinguishing between the two, but then it became more apparent Roast 1 (10:40 total time) was brighter, and roast 2 (11:41) had a bit more allspice notes. In a blind taste-off, Roast 1 was more distinguished. The extra brightness made it stand out and make Roast 2’s spice notes harder to pick off.

Typically I roast closer to Roast 2’s profile, and find it more pleasant as a morning cup. However in a competition situation, as Jim says, you need to separate yourself from the pack somehow, which Roast 1 does with its combination of brightness and mouthfeel. The shorter roast may have left some flavors undeveloped, but I didn’t really miss them (maybe the judges will). My belief is the 3 minutes post start of first is critical to ensuring you don’t end up with a “cupping roast”, even with the fast overall roast time.

I didn’t have the time to try a melange of the two and see if they compliment each other somehow, so I went with 100% Roast 1 as my entry.


Reinstalling OS X Mountain Lion over a FileVault 2 Encrypted Drive

1. Download Mountain Lion (on a different Mac) and copy it to a USB thumb drive

2. Hold Command-r during boot on the encrypted Mac to boot from the recovery drive

3. Go to Utilities-> Terminal, and delete the Logical Volume Group


You should now be able to insert the bootable Mountain Lion USB drive in the encrypted Mac, and choose the “untitled” HD you just wipes without being prompted for the FV2 password. 


On Selecting a Partner

Jon Krakauer on being caged in a tent in the back country during bad weather:

“The back country traveler then, in addition to developing such skills as the use of map and compass or the prevention and treatment of blisters, must prepare mentally and materially to cope with boredom, lest his tail grow scaly.  Social creatures that we are, it is primarily to our tentmates that we turn to for relief from the dullness of a socked in camp. It is impossible to use too much care in selecting your companions. A candidate’s repertoire of amusing stories, a store of gossip, and a sense of humor that blossoms under duress should be weighed at least as heavily as endurance on the trail or ice-climbing expertise.”

Seems just as relevant to selecting partners in all matters of life.

Roast It Like Rama

My home coffee roasting setup has evolved over time. Some changes were helpful, others weren’t. This is the short list of what I’d do if I were to start over:

1. Pick up the Hottop basic. Its nearly $200 cheaper than the programmable, but is much more adjustable. A lot of people with the programmable model regret it and revert the control panel to the basic version for more control. And the basic version allows you to save up to 3 programs, which is all you need. (I have two programs, one for when the roaster is cool, and one for when its warm from a just concluded batch.)

2. Get a Kill-a-Watt to monitor your voltage. This is key to consistency. Some roasters opt for a Variac to tweak power. I find this overkill when you can just adjust your batch size up or down by fractions of an ounce an accomplish the same thing.

3. Buy or build a TC4 shield for use with an Arduino.

4. Use an old laptop to run Artisan.

5. Run a pair of thermocouples through the back wall of the Hottop.

3/4/5 get you cool graphs like this, which help you make your roasts more consistent and learn what changes to the roast profile result in what results in the cup:






6. Add some beefier drum fins. This allows you to ‘charge’ 8oz at a time when your voltage is 119V or higher and not get any tipping or scorching.

Some people go further and use an Arduino or PID to control the roast instead of just monitoring it, but I find the profiles saved into the Hottop itself are accurate enough, and fine tune by hand as needed because you can’t leave the Hottop unattended anyway. (Its got an annoying safety feature that will eject the beans if you don’t manually dimiss it under certain circumstances.)

To roast, simple aim to have the beans “rise” 20F/min until first crack, then immediately slow down to 5F/min until the desired roast level is achieved and dump. Aim to complete the whole process in 12-13 minutes. It took me a couple of years to arrive at this simple recipe, but its consistently solid.

Thats it. Have fun!


On Winning the 3rd HB Homeroasting Competition

2012 marks the third Annual HB Homeroasting Competition, and the second year in a row I’ve won with my entry!

I’ve detailed the roast in the discussion thread, and just duplicating it here for posterity. 

My two entries this year were: 

closed brew- 100% Guatemala AHCP. I tried blending various amounts of the other two beans I purchased, but couldn’t improve on straight Guatemala. The Rwanda added some floral notes but killed the finish for me, and the PNG just seemed to dilute the flavor. So straight Guat it is. Lesson: don’t mess with a good thing.

open brew- 100% Kenya Murang’a AA Kangunu 2010. I froze two 8+ oz jars of this last year, roasted one to see how it faired a few weeks ago, and roasted and submitted the very last of it for the competition. The mouthfeel alone on this coffee is divine, like glycerine.

And my brain dump from my 1st place in closed brew and 7th place in open brew entries: 

The 7th place open brew entry did better than I expected. I made a series of mistakes and just didn’t have the will to change course. The first of these mistakes was believing I could stop beans from aging by using an ordinary freezer (subject to defrost cycles) and minimal air contact. This was the oldest/longest attempt at doing so, and it was a clear failure. The bean as submitted was a shadow of its former self when fresh. The second mistake was botching the first and only trial run I could do, having only 1lb to work with. I thought I had premeasured the batch sizes prior to freezing, but they were slightly heavier to displace more air in the containers. This extended the roast, and I assumed its deficiencies were due to a roast 2 minutes longer than ideal. And the nail in the coffin was submitting the entry essentially untasted. Once I ‘cupped’ the entry, ~8 hours after mailing the entry, I knew it wasn’t special. Honestly I’m a bit relieved to see the placement and comments because it confirms my palate. So there’s that. :) 

The 1st place closed brew entry followed essentially the same roast profile as my last year’s winning entries, and the same profile I use for pretty much everything: ~20F/min to start 1st crack, slow down to ~5F/min as quickly as possible after 1st crack begins (for my Hottop, this mean cutting the heat in ADVANCE of reaching 1c), and maintain that rate until the desired roast is obtained, a minimum of 3 minutes and typically not more than 4 minutes. 

Here are my roast notes, translation, and the profile. (Thanks again JimG for the excellent TC4 project!)

“7.9oz drop in 119.5 volts, 225bt, 290et. 1c 8:30/332bt/383et. eject 12:15/350bt/382et.”

7.9oz: 8 oz batches are possible on the Hottop without scorching, but I needed to add extra drum fins to get there. This isn’t just about laziness and wanting to roast the biggest batch size possible. The extra bean mass makes for a more predictable temperature rate of chance. Since I roast manually (no PID), this is important.

119.5 volts: I don’t bother with a Variac, instead I adjust the batch sizes based on the voltage the Kill-a-Watt reports. Typically I roast in the 7.5-8.0oz range depending on what the grid is giving me at the time.

225bt/290et: yes, my temperatures are off, but they’re consistent. Use my first crack start time to correlate these to your temps. 

eject 12:15/350bt/382et: as you can see this was 3:45 minutes post start of 1c, yet only an 18F gain in Bean Temp, and a slight dip in Environmental Temp. 

That’s about it. Hope it helps…


iRobot Replacement Battery

Our iRobot Dirt Dog recently started quiting before it could do a thorough cleaning job. Since we usually let it run while we’re out of the office, it took a while to realize it was because the battery was no longer holding a charge, so the robot would putter out after just a few minutes.

Given its maybe 2 years old and doesn’t get used more than once a week, the lifespan of the original battery was disappointing. And, at least in the Dirt Dog, its a NiCAD battery which perform poorly compared to the NiMH and Li-ion batteries used in most anything modern now.

So I looked into the options. There are affordable aftermarket batteries that have much larger capacities. Sounds great. What’s the catch? The iRobot expects a NiCAD battery, so it charges whatever you put in there like a NiCAD. Modern Li-ion batteries require a different charging procedure. If you charge a Li-ion like a NiCAD, namely with a continue trickle like the iRobot Dirt Dog does, you’ll shorten the life of the Li-ion battery. Which is a common complaint from those who buy these aftermarket batteries and expect it to be a drop-in replacement.

That’s a pain, but not enough of one that I’d consider replacing it with another NiCAD just yet. Luckily, there’s a cheap hack that’s been working well for me. Plug the iRobot charger into a Belkin Conserve Socket. This allows you to set a 30 minute, 3 hour, or 6 hour timer, at which point the power is turned off. I’ve been using the 6 hour mode since the 3 hour mode doesn’t quite top off the battery.

Total for the fix: $45, which is $5 less than the replacement NiCAD from iRobot. And it runs much longer than the original battery did, even when new. Win.

My 3.5 Year Old On Our Cat (Betty)

Mama: Look at the doggie in the car over there.

3.5yo: I see him. I wish I had a puppy like that. Maybe for my birthday?

Mama: Well, I don’t think Betty would do well with a puppy.

3.5yo: Because Cats and Dogs like to chase each other?

Mama: Yes, that is right.

3.5yo: How about if we give Betty to somebody else and then we can get a puppy?

Mama: Wouldn’t you miss Betty? I would miss Betty.

3.5yo: Yes I would miss her too. And the puppy would miss her, too.

Coffee Roasting with an Arduino Based Rate-of-Rise Meter

That’s my Hottop KN-8828B drum coffee roaster with a pair of thermocouples measuring bean temperature, one to the new Arduino based project, one to my old Fluke which its about to replace.

The “TC4 Shield” project started on, the “shield” designed by Jim Gallt, and the Arduino and Processing code is open source, c/o Jim and a few others. Its all very polished.

Besides being able to plot the data over time from up to four thermocouples (lots of homeroasters just use two, patched into two meters), the project also calculates the “rate of rise”, a critical variable in the coffee roasting profile, and one that is typically a PITA to chart manually.

Soldering was pretty easy thanks to a well designed and silk screened board, even with a cheapo soldering pencil, and components like this MCP9800 surface mount. I did manage to fubar the solder connection on one of the MCP9800 pins, but it was pretty simple to resolve with some debugging to the Arduino code and a DMM to check continuity, which I should have been doing all along.

Here’s the output (also available as CSV), captured via the Arduino over USB to Processing showing the bean temperature over time (in red) and the rate-of-rise (in green). The currently unused channel in yellow will soon be plotting results of environmental temperature, mostly to make sure my ET isn’t dropping when I rapidly lower the heat half way though first crack, as a sanity check to make sure I’m not doing anything I shouldn’t be.

Besides the addition of the ET probe, I also need to wire up the 16×2 LCD, come up with a decent enclosure, and rewire the two thermocouples to be unpluggable, which should all be pretty simple. I’m also a few revs behind on the Arduino, which is a quick fix, but not reflected in the above chart. The latest rev supposedly smooths out the rate-of-rise.

There’s currently some work being done to turn the TC4 shield into a PID. So instead of just data logging, it could be wired into the roaster to manage heater and/or fan control. My stored profiles in the Hottop are dialed in pretty well, but they Hottop doesn’t correct for things like changes in environmental temperature (either summer to winter, or a warm drum from a just completed roast), or changes in charge size (weight of beans you start with)- so I suspect a conversion to a PID is in my future.

Using your Iphone as a Bicycle GPS for <$20

My sense of direction is pretty bad, so I either learn new routes by following friends, or get lost several times before eventually finding my way. I’ve got an older Garmin ETrex GPS, which is fine for some things- in particular it’s weatherproofness, but is a major PITA to upload or download routes/waypoints. Newer GPSs are likely better in this regard, but they’re expensive unitaskers.

So when I started looking at the complex routes on for a way over the Golden Gate Bridge from my house, I knew I’d have two realistic options: get the handlebar mount for my old ETrex and suffer with its shortcomings, or try to use my iPhone.

I decided on the later, using the free Trails Lite app to navigate a new route home from work one night. After plotting out the route on, I downloaded the GPX to the Trails app and handheld the phone for sections I was unfamiliar with. It worked great, but the Lite version only allows you to have one set of tracks, and hand holding the phone is just asking for trouble.

Some quick homework on Amazon led me to the RAM Handlebar iPhone Mount. Its easy to install, well built, and hold my 3GS very securely- even on bumpy 30mph+ decents.

After installing the handlebar mount, I shelled out for the for-pay version of Trails ($14 + $4), expecting everything to work smoothly. Wrong. The default settings in Trails led to some pretty inaccurate readings. Uh, I didn’t actually ride across the water either of these times: .
Changing three default settings in Trails seemed to clear this up: 1. make sure you choose “biking” for your recording. Otherwise it seems to snap you to public roads. 2. Change the Required accuracy to something smaller. I use ~100 yards. Change the Distance Filter to a minimum distance of ~100 yards. The combination of these three changes means no more wildly off waypoints.

But there was a second issue. My phone would lock up, leading to my first ever needed hard reset. I had upgraded to iOS 4.0.1 just weeks prior with no known issues, but besides the lockup problem, I was seeing noticeably worse battery life. A friend (@lowbit) suggested doing a sync/restore of the phone to clear up the battery woes, and it worked! And I have yet to have another app lockup since doing the restore. Not sure why that actually helped, but I’m glad that it did.

So now I’ve got a very functional handlebar mounted GPS for less than $20. And importing and exporting waypoints is trivially simple. A fully charged iPhone seems to last about 3 hours while displaying a “live map” and recording waypoints all along. Good enough for most rides. Maybe I’ll strap the MintyBoost @royrob is making for me to the handlebars for the GG Bridge ride. 🙂

Using Google Services via the Command Line

1. Ensure you have Python 2.6+ on your platform.

2. Grab the latest
Google Data APIs Python Client Library, and the Command line tools for the Google Data APIs.

3. Extract and issue a

python ./ build
python ./ install

for both packages.

4. Have at it!

$ google
> help
Welcome to the Google CL tool!
Commands are broken into several parts: service, task, options, and arguments.
For example, in the command
“> picasa post –title “My Cat Photos” photos/cats/*”
the service is “picasa”, the task is “post”, the single option is a name of “My Cat Photos”, and the argument is the path to the photos.
The available services are ‘picasa’, ‘blogger’, ‘youtube’, ‘docs’, ‘contacts’, ‘calendar’
Enter “> help ” for more information on a service.
Or, just “quit” to quit.