Blog

  • Gracefully Mighty Forces

    Gracefully Mighty Forces

    • Beans: Mighty Forces (blend)
      • Roaster: Gracefully Coffee Roasters (Baltimore, MD)
      • Origin: Sumatra, Colombia (check bag)
      • Roast level: Medium/Dark
      • Roast date: 2/4/2026
      • Purchase date: 2/10/2026 from Gracefully curbside café
      • First cup: 2/14 or 2/15/2026; last cup:
      • Tasting notes: Cocoa, honey, cinnamon apple
    • Pour-over with Ode grinder:
      • 20g coffee / 300g water (1:15)
      • Ode: 3
      • Water at 95°C
      • Size 2 V60
      • Recipe: Single Cup V60 Pourover, 60g bloom water and 60g pulses. Finishes around 03:00
    • AeroPress with JX Grinder:

    This is another blend where the specific beans used seem to vary depending on what is available at different times of year. The bag pictured on the web site, the web site description, and the actual bag in my possession, all show slightly different bean blends, although they all have Sumatra and Colombia in common. The coffee itself is just as advertised: bold and roasty. The AeroPress, in particular, produced a really nice, smooth, strong cup. This will probably be my office coffee for the next 2 or 3 weeks.

  • Random stuff

    I’m battling off-and-on dizziness again, similar to what I had back around the end of last year. Still unsure what causes it. As with last time, it’s not room-spinning vertigo, just more of a spacey, lightheaded feeling. Various things I’ve considered as possible causes:

    • Allergies/Environmental
    • TMJ issue (chewing/clenching/jaw tension)
    • Low blood pressure/low heart rate
    • Low electrolytes
    • Dehydration
    • Migraine
    • Eyestrain/squinting or possibly vision issue (do I possibly need glasses?)
    • Positional vertigo/motion sensitivity
    • Something I’m eating

    I’ve noticed that I rarely wake up dizzy. I often first notice it while eating breakfast, meaning that chewing/clenching (TMJ) or possibly diet could be factors. I suspect that the only way I’ll ever get to the bottom of it is to try to be scientific, keep notes on diet/environment/etc., and try to find some kind of correlation.

    I ran on Monday, Tuesday, and Thursday (today) this week. Monday was 6.5 miles. I felt stiff for most of it, hit the wall at around mile 5, and cut the run short by a half mile. For mile 6, I could only manage a pace of 13.5(!) minutes/mile. Tuesday’s run was 7 miles, and the best of the three. I paced myself well and finished strong. Today was also 7 miles, and better than Monday, but the finish was not as good as Tuesday’s. It was, however, my fastest average pace of the week, at 10:50/mile, which is still about 20 seconds/minute slower than what I consider my average pace under ideal conditions. The dizziness does affect my running to an extent, but I don’t think it’s directly responsible for “hitting the wall”. My working theory is that the latter is related to electrolyte/hydration imbalance, and something else is causing the dizziness.

    This winter’s house project is upgrading our home LAN. I am running low on ports (particularly PoE ports) so I’m adding an additional 8-port switch in a different part of the house, which will give me more capacity, and allow me to shorten a few wire runs. I’m also going to start upgrading some of the wiring from Cat-5e to Cat-6, starting with the “backbone” that runs from the FiOS ONT to the router and from the router to the switches. I’ve also replaced our old AP-AC-Pro wireless access points with new U7 Lites, which support WiFi 7. Once the new switch is in place, I’m going to move one of the old APs into the garage, to provide better coverage for outdoor cameras, and eventually support a smart garage door opener. Lastly, I may put an AP in the basement family room, and I want to clean up the wiring in the closet around our existing switch. We will see how much of this actually gets done. 😄

  • Gracefully Colombia Nariño

    Gracefully Colombia Nariño

    • Beans: Colombia Nariño
      • Roaster: Gracefully Coffee Roasters (Baltimore, MD)
      • Origin: Colombia (Cooperativa de Cafés Especiales de Nariño, Alvaro Gomez)
      • Roast level: Medium
      • Roast date: 2/4/2026
      • Process: Washed
      • Purchase date: 2/10/2026 from Gracefully curbside café
      • First cup: 2/12/2026; last cup:
      • Tasting notes: Peach, pear, sugar cane
    • Pour-over with Ode grinder:
      • 19g coffee / 300g water (1:15.8)
      • Ode: 2
      • Water at 99°C
      • Size 2 V60
      • Recipe: Single Cup V60 Pourover, 60g bloom water and 60g pulses. Finishes around 03:00

    I lucked out with the timing, and was able to pick up a bag of this microlot coffee last week. I’ve now brewed 4 or 5 cups of it. It is definitely very fruit/acid forward, and I’m finding that, at least for the moment, I like it best at 1:16. At 1:15, it was kind of like a little too much of a good thing. Someone posted on Facebook that it turned out really good with immersion (using a Clever Dripper) so I may try brewing it in the Switch to see how that compares.

  • Farewell SnowCrete

    We have had quite the run of unusual winter weather here for the past couple of weeks. It started out on January 25 with several inches of snow, followed by a full day of sleet, resulting in densely-packed snow that the locals have affectionately dubbed “SnowCrete”. After that, we went into an extended deep freeze where temperatures barely made it into the 20s. As a result, the “SnowCrete” has stuck around for quite a while. Now, 16 days later, the cold snap has finally broken, and the stuff is starting to melt down.

    While the SnowCrete was more of an annoyance than anything else, there are a couple of things I’ll miss about it. It was packed down so hard that you could (mostly) walk right over it without sinking down. It was great for snowshoeing, and I managed to get out twice, hiking 3 miles the first time and 4 miles the second. It also worked really well with studded bike tires. In Patapsco Valley State Park, I could ride right over the unplowed pavement, on top of the snow. Contrast that to most snows we get, where the unplowed sections quickly turn into icy, rutty messes of footprints and bike tire tracks. After two weeks of SnowCrete, however, today was the day it ended. I rode my bike to work, and this morning, I was able to ride over the snow for one last time. This afternoon, I had to push the bike through the same section, with my feet and tires sinking down with every step. It was fun while it lasted, and we probably won’t see another snow like this for a long time. All the same, it will be nice to get back to some of my usual outdoor activities like mountain biking and geocaching.

  • Icy Bike Commute

    Icy Bike Commute

    I took my first bike ride after the big snow-and-ice storm and ensuing deep freeze last week. It was actually fairly warm out this morning (for this winter), with temperatures hovering just a few degrees below freezing. I trotted out my old Specialized Rockhopper for the occasion, which I hadn’t ridden since last winter. The chain had a little bit of surface rust, and could use a good cleaning, but I just shot some lube on it for today. The bike rode fine. I used to ride it year-round, but lately, it has been a winter-only bike. I have two wheelsets for it, one with studded tires, and one with regular tires, and I haven’t used the latter in 2 or 3 years. Since that one is a newer wheelset, I might end up moving the studs over to it, as the 1995-vintage freehub on the old wheelset tends to occasionally “miss” in colder weather. But, I’m going off on a tangent…

    I had scoped this morning’s ride out by car on Monday, and determined that it was doable. Back in the day, it wouldn’t even have been a question, but at my current age, I’m more invested in staying upright, and thus a little less adventurous about road riding in adverse conditions. As usual, the best part of the ride was the segment through Patapsco Valley State Park. Most of the roads running through the park, as well as the Grist Mill Trail, were plowed down to bare pavement and in great shape. The exceptions were River Road between the Avalon day-use area and Orange Grove, which had in inch or two of crusty, compacted snow, and the River Road entrance on the Howard County side, which never gets plowed. Typically, after a snowfall, the latter turns into a big mess of icy footprints and bike tire tracks. This snow, though, was so hard and crusty that very little had broken through it in over a week. That will change as it starts to thaw, but with another cold snap coming, we may have several more days of these conditions. The entrance road is mostly downhill, and it’s hard to regulate the speed of the bike in icy conditions, so I put my Yaktrax on and walked it out of an abundance of caution. Once inside the park, River Road was rideable with care. I did stop to walk one or two downhill segments, but by the time I got out near the swinging bridge, I was riding more confidently. It’s been a really long time since we’ve had hard-packed snow like this, and I don’t think it has ever stuck around for as long as it has this winter. It is almost tailor-made for studded tires. Yaktrax and snowshoes work great on it too, and I saw a number of tracks (actually more like indentations) from both.

    The river was almost completely frozen over today, with the exception of a narrow area of flowing water around the swinging bridge. Parts of the surface looked like glass, and parts had ice shards that looked kind of like diamonds. It was quite beautiful. I took my time getting to work, and stopped for a few photos along the way. I’m looking forward to the ride back home in a couple of hours.

  • Tehila Single Origin Ugandan

    Tehila Single Origin Ugandan

    • Beans: Uganda (single origin; Arabica; 12oz)
      • Roaster: Tehila Coffee (Baltimore, MD)
      • Origin: Uganda
      • Roast level: Medium
      • Roast date: Unknown
      • Process: Washed
      • Purchase date: 11/29/2025 at 12th Annual Sykesville Holiday Market in Westminster, MD
        Freeze date: week of 12/1/2025
        Thaw date: 2/2/2026
      • First cup: 2/3/2026; last cup: 2/13/2026
      • Tasting notes: Earthy (aroma)/Fruity/Chocolate
    • Pour-over with Ode grinder:
      • 20g coffee / 300g water (1:15)
      • Ode: 2
      • Water at 99°C
      • Size 2 V60 or Size 3 Switch
      • Recipe: Single Cup V60 Pourover, 60g bloom water and 60g pulses. Switch: bloom with drain closed, open drain at end of bloom – finishes around 03:15

    My wife picked a bag of this up at the Sykesville Holiday Market back in late November. From the roaster’s Facebook page: “I’m a specialty coffee artisan devoted to crafting coffee with purpose and passion. Every bean we source is hand-selected for its flavor, quality, and story — because great coffee starts at the origin and deserves to be honored all the way to the cup.” I brewed one or two cups around the end of November, but didn’t take any notes. I then froze the rest, as I was about to go out of town, and had a surplus of beans at the time. To make a long story short, I finally took them out of the freezer yesterday. I brewed them with the same settings I used for a recent bag of Tanzania Peaberry beans, and it was a good cup. It had a smooth, round mouthfeel and good body. As with a couple of other African coffees I’ve brewed, I didn’t detect much fruitiness, in spite of the stated tasting notes. I’m wondering if a different brew method would bring more of those out. I might try a cup or two in the Switch, but probably won’t experiment much more beyond that.

    2/5: Tried the Switch this morning, with drain closed for bloom phase (3x coffee weight for 45 seconds) and then pour-over with drain open. I think I liked it a little better than straight V60. Hard to put a finger on it, but with some African coffees, the full-immersion bloom step seems to do something to bring out a slight amount of acidity/complexity. Of course, it’s also possible that I’m imagining things.

    2/13: I ended up brewing all of my subsequent cups with the Switch, and all of them were smooth with just a tiny hint of acidity. My final cup was a little bit stronger, as I had 21g beans left, and forgot to add extra water to keep it at 1:15. I liked this a lot, and I wonder if I’ll have an opportunity to buy the beans again at some point. I get the sense that it’s a one-person roasting operation.

  • Cool Runnings

    Cool Runnings

    We are in the midst of the longest deep freeze here since probably the 1990s. I remember in the winter of either 1993 or 1994, we had a very similar weather pattern to the past week’s, with a disruptive snow/ice storm and a long ensuing stretch of below-freezing temperatures. Just like this year, schools were shut down for at least a week (probably longer, actually). I remember going in to UMBC one day while the campus was still closed, just to shake off the cabin fever. Fortunately, as I’ve previously written, I have a couple of low-traffic back roads near me that I can use for running, as most of the sidewalks around here are hopeless at the moment. Last winter, I ran once when the weather was under 20°F, and so far this winter, I’ve been out 3 or 4 times in those conditions. Based on what I wrote last year, I made a few tweaks to what I have been wearing:

    • Relaxed fit Kühl running pants over 32°F synthetic leggings (same as last year)
    • Injinji Snow calf-height toe socks, Correct Toes, and Xero Mesa Trail WP shoes with Tuli heel cups (same as last year, plus the heel cups)
    • Smartwool neck gaiter with The North Face fleece headband (vs one-piece fleece balaclava last year)
    • REI long-sleeve merino wool base layer shirt (vs 32°F synthetic base layer last year)
    • REI lightweight liner gloves (vs heavy winter gloves last year)
    • Top layer variations:
      • Long-sleeve polyester/rayon/cotton athletic top + Patagonia R1 jacket
      • Long-sleeve lightweight bamboo/polyester/spandex hoodie + R1 jacket
      • R1 jacket + Arc’teryx Norvan Gore-Tex outer shell with hood

    Same as last year, I used Vaseline on exposed areas of my face (mainly cheeks and nose) and it worked great as a wind barrier. I’m going to try to remember to do this any time the temperature is below freezing and there’s any wind. I just have to remember to wash my face afterwards.

    Overall, I tried to improve on things that I noted were issues last year, and I think I succeeded. The gaiter with headband worked better than a heavy 1-piece balaclava. My feet stayed nice and comfortable, and my hands also were perfectly comfortable with just the thin gloves (I even took them off a couple of times). The wool vs synthetic base layer was a push comfort-wise, but wool is more odor-resistant, and I’m able to wear the wool base layer for more runs before I have to wash it.

    I’m finding that I like to run with a hood in below-freezing weather. The one time I ran without one, I was missing it. The lightweight hoodie worked well, as did the Gore-Tex shell. In the future, I wouldn’t mind getting a jacket similar to the R1, but with a hood.

    My 2 most recent runs were 10K and 8 miles, respectively. I still work up a pretty good sweat each time, and I’m still having issues with my energy dropping off during the second half of the runs. Could be hydration, could be electrolytes, could be pacing, could be something else. Running with a hydration pack could be an option, but I’d need to figure out how to keep the hose from freezing. An insulated water bottle would be too bulky to carry, and my soft water bottle would be a solid block of ice after 30 minutes.

  • Snowshoes

    I’ve had a pair of snowshoes since 2016. They were a birthday gift from my wife. That was the year of the January 2016 blizzard, which dumped over 2 feet of snow, and the snowshoes saw a good bit of use that winter. Since then, though, they have mainly collected dust, as we have yet to have any snowfalls even approaching that magnitude. This past weekend, though, we got a storm that dumped around 11″ of snow, followed by several hours of sleet. The result was a hard-packed snowfall with a crusty glaze of ice on the top. I remember as a kid, we got a snowfall like that one year. We had a metal realty sign sitting around (can’t recall why we had it or which realty it was for) and I repurposed it as a sled. My parents’ lawn was not what you would call steep or hilly, but it had a very slight slope to it that was enough for gravity to carry me from one end to the other while sitting on that metal sign. I did it over and over, and it was tons of fun. This type of snow is not good for walking or hiking, as the icy layer is slippery, and my feet often tend to punch through, making for a laborious slog. However, it is perfect for snowshoeing. The snowshoes distribute my weight over a larger area, reducing (though not totally eliminating) the punch-through issue. They also have spikes to provide traction on the ice.

    Today, I carried the snowshoes to the trailhead about a half mile from home, where I often go to take short hikes or ride my mountain bike. I hiked a 2-mile loop, and really enjoyed it. The forest is beautiful with the snow cover and the shiny, crusty glaze of ice. There were some human footprints near the trailhead, but farther in, I only saw animal tracks (likely deer). I’d estimate that I was able to go at about 70-80% of my usual hiking speed, which wouldn’t have been possible without snowshoes. We are in the middle of a really arctic cold snap, with lows in the single digits and highs in the low 20s, and everything was frozen solid, which made it relatively easy to cross the 2 or 3 streams along the way. I lost the trail in a few places, but was able to pick it back up each time with the help of the trail map on my phone. It also helped that I’m highly familiar with these trails. I also snowshoed here back in 2016, when I didn’t know the trails as well, and it ended up being more of a random walk through the woods. I had much better luck today, and really enjoyed the time outside. It was a great way to shake off the cabin fever. If the opportunity presents, I may try to get out one or two more times while the snow is still on the ground.

  • Konnected with Vista-20P and Hubitat

    I’ve just about got my new Konnected Alarm Panel Pro (APP) Interface Kit completely installed and working with my Vista-20P alarm panel and Hubitat C-8 automation controller. Everything seems to work pretty well, and I thought I’d note a few things here about my experience setting it up.

    As I alluded in a recent post, I managed to fit all of the Konnected boards into my Vista-20P enclosure, but it was a tight squeeze along with all of the existing junk in there (zone expander, battery, terminal strips, wire, etc).

    I started out by wiring up the zones I wanted to monitor. Most of them were attached to one of two zone expanders and wired with 1k-ohm EOL resistors. These all worked “out of the box” without the need for any tuning on the APP interface board. The only zone I had to tune was one that was wired to the main Vista-20P board as a “zone doubled” zone, with a 6.2k-ohm resistor. This required a slight adjustment to the tuning screw, but subsequently worked without a hitch. Also of note is that one of my zone expanders is mounted remotely, around 30′ or so from the panel. I had 4 zones there that I wanted to use with the APP, which meant that I needed 4 extra wires running between the expander and the panel. It worked out that I was able to reuse an existing 4x22AWG cable that was already there, sparing me from having to run more wire in the attic. With everything wired up, I was able to test things out by faulting the zones, watching the status LEDs on the expansion boards turn on and off, and monitoring the zone status on the APP’s web interface.

    I then went to the Konnected app to configure the zones and generate new firmware for the APP. In the app’s panel settings section, there’s an “Alarm System Interface” section that appears to be a one-stop shop to configure the Keyswitch and Arm/Disarm/Tripped status zone settings, but it did not work for me. I had to go in and manually configure these (see below) to get the appropriate buttons and zones to show up on the web interface. Other than that, the app-based configuration and firmware flashing worked fine, although it never seemed to detect when the panel had finished restarting, always giving me a message to “restart the app” and confirm that it had updated to the correct firmware version. Each time I did that (3 or 4 times) I found that it had updated everything correctly.

    I used zone 1 on the Vista-20P for my keyswitch zone. This works fine, but I had to wire a 2K-ohm resistor IN PARALLEL with the zone wiring, which is contrary to what the Konnected documentation shows. This was easy enough to do: just attach the resistor inside the panel between terminals 8 and 9. Then, I connected the OUT1 and OUT2 pins on the APP to the IN pins on the two Konnected interface boards, and ran wires from the relay terminals on both boards to Vista-20P terminals 8 and 9. I also checked to make sure that both relays were jumpered to NO, and the ALARM2/OUT2 switch on the APP was set to OUT2. On the Konnected app, I programmed OUT1 and ALARM2/OUT2 as Momentary Buttons, with duration set to 600ms for one of them (for arm away) and 2000ms (2 seconds) for the other (for arm stay). I had initially tried 1200ms for the latter, but it wasn’t long enough (the panel armed “away” instead of “stay”).

    I wanted to monitor armed “stay” status separately from armed “away”, so I used the two Vista-20P triggers for this, attaching each to a separate zone on one of the APP interface boards. The only confusing bit here is that there’s no zone type on the Konnected app that is really appropriate for a dry-contact relay zone. I just had to tell the app that they were window zones. Once wired up and programmed, both zones worked fine once I programmed the trigger output devices and actions into the Vista-20P (Konnected has fairly good documentation for this process). Pro tip: you can test the relays on the Vista-20P by using [Master Code}-#7-[Device Number] to activate and [Master Code]-#8-[Device Number] to deactivate. For example, if the master code is 1234 and you want to activate trigger 1 (device 17), the sequence would be 1-2-3-4-#-7-1-7. This is useful if, e.g., you want to test the alarm tripped status relay without having to actually set the alarm off.

    Konnected’s documentation uses a single trigger for armed status, and the other trigger for alarm tripped status. However, with my setup, both triggers are in use for monitoring armed status, so I needed a third trigger to detect an alarm condition. I was able to use one of my zone expander relays for this. Unlike the panel triggers, the zone expander relays use an isolated circuit, so the common pin is not connected to the panel ground. So, to get the relay to work as a “zone”, I had to add a wire between the common pin and the panel ground screw on the expander, as well as connecting the NC pin to the appropriate zone terminal on the Konnected interface board. I should probably make a diagram of all this…

    Last but not least was getting this to work with Hubitat, which was fairly straightforward. I installed the Konnected driver via Hubitat Package Manager (HPM), created a virtual device for the panel, and pointed it to the APP’s IP address. The docs stated that it would automatically create child devices for all of the zones, but I was impatient and hit the “Initialize” button, whereupon it populated everything right away. I was a little nervous that re-flashing the APP would delete and recreate all of the devices in Hubitat (potentially messing up automations) but that was not an issue: all of the existing zones continued to work, and new zones that I added showed up automagically after several minutes (no need to hit “Initialize” again). One thing I did notice was that when I renamed a zone from “Armed Away” to “Armed Away Indicator” (and changed the zone type), the old “Armed Away” device stuck around in Hubitat until I manually deleted it. Not really a big deal.

    The next step is to start using all of these new devices in some automations, and see how reliably everything works over time. I will report back on that eventually. In the meantime, it seems to work as advertised, and setting everything up was a fun way to spend this craptastically frigid and icy day.

  • Counter Culture Atwater’s House Blend

    • Beans: Atwater’s House Blend (a.k.a. Hologram)
      • Roaster: Counter Culture Coffee (Durham, NC/Emeryville, CA)
      • Origins: Africa/Latin America (per website; not stated on bag)
      • Roast level: Medium (6/10)
      • Roast date: 12/23/2025 (Durham)
      • Purchase date: 1/1/2026 at Atwater’s in Catonsville, MD
      • First cup: Around 1/19/26; last cup: 2/2/26
      • Tasting notes: Fruity/milk chocolate/syrupy
    • V60 with Ode grinder:
      • 20g coffee / 300g water or 24g coffee / 360g water (1:15)
      • Ode: 3 → 2
      • Water at 99°C
      • Recipe: Single Cup V60 Pourover with size 2 cone, 60g bloom water and 60g pulses – finishes around 03:00 for 20g, 03:15 for 24g

    Although I’m not 100% sure, I strongly suspect that this is just the Hologram blend re-badged as Atwater’s House Blend. The tasting notes on the bag are identical to what the web site shows for Hologram. It’s possible that the roast level and/or the bean proportions are slightly different, but I kind of doubt it. Visually, the beans look on the lighter side of a medium roast, but again, everything is subjective. I’ve been brewing these identically to Big Trouble, mainly out of convenience, since I still have some of that left. The first 3 or 4 cups were pretty good: roasty with a nice twang of fruit. However, the last couple cups have tasted under-extracted, so I’m thinking I might be better off with a finer grind. I will try that next time I brew them, likely tomorrow or Sunday.

    1/29: The past several cups have been pretty good at grind setting 2.

    2/2: This was probably my favorite of the 2 Counter Culture blends that I’ve had recently. Nice, well rounded cups with a twang of fruitiness. I brewed my final 3 cups with 24g coffee/360g water so that I wouldn’t end up with beans left over. This quantity took a little longer to draw down, finishing maybe 03:15-03:20.