• Happy 2018!

    Happy New Year to all my readers! Not much revelry last night: we stayed in with Emmi and Kyle, baked some Chicago-style deep dish pizzas, and only braved the five degree outdoors to bang on a pot when the new year arrived. (They left for Durham this morning.) Unfortunately, our new year is starting on a somber note: we’re leaving in a few minutes to go to upstate New York, near Ringwood, for the wake of a friend’s brother. So no hike, no bike ride… Tomorrow will be our traditional New Year’s.

    Some resolutions:

    • Blog more.
    • Ride more.
    • Ride MTB way more.
    • Uh…

     


  • A Little Deeper Into The Process

    We just kegged our latest batch of beer, a rye IPA recipe called “Denny’s Favorite.”  It’s also one of mine…

    Listening: “Matty Groves” by Fairport Convention

    Anne and I have both become more interested in our brewing, and we broke out the hydrometer for this batch. This measures the specific gravity (density as compared to the density of water): you measure the specific gravity before and after fermenting, and the difference between original gravity (OG) and final gravity (FG) corresponds to the difference in density between the sugary pre-ferment wort, and the beer after the sugars have been converted to alcohol. Plug these into a formula to get the amount of alcohol in the beer: we got an OG of 1.040 when we brewed a few weeks ago, and today our FG was 1.006, so our new batch is about 6.5% alcohol by volume. It should be carbonated and ready to drink in about a week, but other than a taste test we’ll probably save it for Sarah’s birthday party.

    Listening: “Cello Song” by Nick Drake

    But that sent me on a voyage of Internet discovery, which led me to issues like calculated vs measured beer gravities — and how do you calculate the gravity? You do it by looking at the potential sugar supply of the malt in your recipe, adjusted for the efficiency of your brewing process, and the “attenuation,” or sugar-converting power of your yeast, and how do you do all those things?

    Listening: “Galileo” by the Indigo Girls

    Well, now I know how, but these all come more into play when you are trying to create a beer recipe; since we usually just follow recipes we don’t really need to know these things — measuredOG and FG are fine for our purposes, and that’s our one step deeper into the process.

    We are now waiting for Emmi & Kyle, and Ben (with possibly Candace) to arrive for our Christmas visit — we’ll be having the chili I made the other day, and tonight is the CAT Christmas Lights night ride, which had been rained out on Saturday.

    Listening: “Watershed” by Vienna Teng


  • Boxing Day

    Merry Christmas!

    I’m just sitting here, working on a few chores, bills etc, and watching the chili cook itself in the crock pot. It should be ready tonight, but we’re not going to eat it until Thursday night, when Emmi & Kyle, and Ben, all arrive for our Christmas gathering. I am almost caught up with my Christmas shopping…

    On Friday we went into Philly (by way of REI, where I finally got new boots), for a birthday lunch with Ben and his girlfriend Candace. We went into Port Richmond, a part if the city I’d never seen before, and apparently a heavily Polish neighborhood of long standing. Storefronts in Polish: funeral parlors, travel agents, even a BYO strip club (we joked that they played Polka stripper music), but most important: many Polish restaurants. Candace knew the area, and she knew of a place with “the best Polish food in town,” which is where we had our lunch. Much delicious, heavy food, then we went to the hipster coffee shop up the street before our trip home.

    Saturday was rainy, so that “Christmas Lights” night ride did not happen, but we did get together with Liz H-D for our annual “fancy dress cocktails” at the Hotel Bethlehem. We also ran into Erin and Todd out with some of their friends, so the party went a bit later than expected…

    Christmas Eve morning started a corresponding bit later than expected, but in the afternoon we went to Jeff and Crista’s farm for their annual bonfire, then we went with Anne’s mom to the Christmas pageant/service at the meeting house. That was followed by a rather subdued night out — a lot of places closed early — but we got our annual post-pageant Christmas Eve beer with Will & Martha and Peter and Anna, and Rick with Liz and Joey. Good to see everybody, and on the way home it started to snow.

    Yesterday we laid low, with another late morning and another big breakfast, and an afternoon bike ride along the towpath north of Jim Thorpe. They got a bit more snow, maybe two inches or so, than the dusting we got back home. It was a bit of work in the snow, but the ride and the day were beautiful.


  • Spanked!

    Another day, another awesome MTB ride… I rode again with Greg H, but we hit Sals this time. I think I did a but better in the rocky stuff than the other day, but even if I think [redacted] is a bit tougher, with more difficult trail challenges sprinkled here and there, Sals is relentless — it never stops being rocky, or uphill, or both…

    Tomorrow is a rest day, going in to Philly to see Ben, and Saturday, if the weather holds, we’ll be doing the “tour of Christmas lights” ride.


  • Rest Day

    I had an awesome ride yesterday, with Greg H at a local place that shall not be named — and if you’re in the know you already know where I mean — where, in contrast to Monday’s slop fest, the ground was snow-free and fairly dry. Chalk it up to good drainage, and maybe hilltop exposure to sun and wind, but conditions there were almost as good as it gets.

    My riding, however, displayed a certain lack of courage…

    On the way up the hill I was in front, and thinking to myself “enjoy it while you can,” because I knew the rough stuff would remove any fitness advantage I might have.  My recent riding follows the same old pattern: my fitness is the first to return (and the last to fade even when I’m slacking), but technical skills, and confidence, atrophy quickly and take forever to return. (I also got skunked by the fact that there were more technical features there that are just above my usual ability; I can clear them sometimes but am frequently knocked off my game. I used to call this my over/under. If things were just a little easier I would have been a lot better/faster/whatever, I swear…)

    Anyway, we had a good time, and I am getting better even if he has to wait for me after the difficult sections. We were supposed to go again today but Greg couldn’t make it, so it’s on for tomorrow.


  • Back Out In The Muck

    Yesterday’s ride along the canal was a slopfest, clothes and bike gray & gritty from the gravel/cinder surface, and I was whooped by a 14 mile ride over soft paths. So today, I’m heading out again — this time with Greg H to some actual trails, which stay dryer and more solid, hopefully. I’m heading out in a few minutes, just after blogging and a little lunch.

    A quick aside on the mapping front: I took a long time dithering about it, but I wrote my own chainage routine, and my own ascent/descent calculation function, both in PL/pgSQL, and both — especially the ascent routine, where there was a lot of room for improvement over my PyQGIS script — worked perfectly. (The ascent routine took about 20 minutes to run everything, as opposed to 4-8 hours for QGIS.) I still have to zero out the data at bridges, but I am now back to where I can wait for outside data (recommended routes, etc) to continue.


  • Motion

    Getting ready for a towpath ride; I’ll be out on the singlespeed which needed a little bit of work, tires pumped etc before it was ride-worthy, but looks to be in good shape — there are not a lot of moving parts. Not much to say otherwise..


  • Shoveling Out, On Steroids

    Another dusting last night, an easy shovel job but the neighborhood looks really pretty, especially on my walk this morning. Anne went early to deal with her office’s walkways, then met Debbie for breakfast at the new breakfast place on Main Street (the Flying Egg, go there it’s pretty nice). Anyway — after I got up, and shoveled here — I texted to see if she needed help; she replied that the job was done and I should  come over and join them. Great start to the day, nice to see Debbie, and the point of my story was that it was beautiful out, with early-morning-rosy winter clouds, before it all morphed into a generic “sunny winter day,” which was nice in its own way but that early sky really was cool.

    On the home front, we got our new oven yesterday. It looks pretty nice and stainless-steel modern, the range is a bit more aggressive than our old one and, most important, the oven keeps the correct temperature. Too bad the delivery came while I was trying to sleep in — not too early really, but before 9:00, and I was trying to catch up on my sleep after a rough few days…

    I’ve had a bit of an eczema problem lately, and it really got crazy this week. We super-cleaned the house, I switched to baths instead of showers… and I broke down yesterday, went to my GP and got some prescription strength cortisone cream, as well as a Prednisone prescription. I’ve been warned about euphoria, mania etc as side effects, but nothing: I’ve basically been just putzing around the house today, though my skin is running through a fast-motion miracle cure so there’s that. I have an allergist appointment in the New Year, and I got a referral for a dermatologist from the GP. I’m going up in the attic soon to find the humidifier. Life goes on.

    Meantime, the mapping — rather, the fixing of the mapping scale-up problems — continues. I had problems with getting the elevation changes, and had to eventually abandon a QGIS solution, and build my own PostGIS function to get the “chainages.” The term is apparently a holdover from ancient surveyor days, where they used chains to measure distances; what I needed was a shapefile of points, set every 10 meters along each road in the database, but the new file had to refer back to the road database in a certain way, and the QGIS plugin just wasn’t flexible enough for what I needed. (My solution worked like a charm.) The next step was to use SAGA and my elevation data to give each point an elevation, which since the new chainages were themselves now in the database rather than a standalone file, the process was its own struggle learning experience, but it’s done now. Next up is generating the ascent/descent data, which I might decide to do in PostGIS as well — my current, PyQGIS-based method is run-all-night-check-results-in-the-morning slow. Tomorrow, or this weekend…


  • This Week Today

    Stopping by again…

    Mapping: I had, and still have, a few technical issues to deal with, but the full Lehigh Valley database is now in PostGIS, along with elevation data — bogus elevation data, that’s one of my technical issues — and the demo map can now route with the new database. But it’s got the slows, it’s got the slooowws… With about 3200 road segments in the “toy database,” it could route in about 1-2 seconds, but the full-map version took about 6 seconds per routing task — and there may be multiple routing tasks in each route, from start point, to via point and then through subsequent via points, and finally to the endpoint. Unacceptable!

    I did some searches online, and sure enough there are a lot of people complaining about pgRouting performance and looking to speed it up. The general consensus: there are a few things you can do, including tune your database, but the actual bottlenecks are the pgRouting algorithms. Some suggested using osm2po, another program that converts OpenStreetMap data for databases but can  also do routing: tried it and it’s blindingly fast – d’oh! (Unfortunately, I didn’t see much there in the way of customized, dynamic cost functions, so I can’t see how to turn it into the the answer I’m looking for.) I tried a bunch f the Postgres/PostGIS performance-tuning tips anyway, and they did seem to help a little.

    I eventually came across one potential solution: route only on a subset of the roads in the database, using a bounding box. For each pair of points to route between, I find the smallest rectangle that contains both, then expand it by 2000 meters in every direction (like a buffer zone); this is my bounding box, and the routing search is limited to the roads that touch or fall within that box. This seemed to do the trick: my routing times are back down to about 1-2 seconds.

    Except near — wait for it — those confounded bridges. The valley is broken up by the Lehigh river, with occasional bridges, and if there are no bridges within the bounding box for a route that needs to cross the river, no route will be found. Meanwhile, when routing points are on a diagonal, the bounding boxes are fairly big, but routing points that run mainly east-west or north-south produce long, skinny bounding boxes. I found a few “dead zones” where routes couldn’t be found, especially east-west ones north of Northampton, routes with skinny bounding boxes where the bridges are a little sparser. My original bounding boxes were expanded by a buffer that was only 1000 meters; I went to 2000 meters in an attempt to alleviate the bridge problem. This didn’t solve it entirely, but it did help, and there was no real performance hit going from 1000 to 2000 meters. I’ll probably look at distances between bridges, and revise my buffer zone to be just bigger than say, half that distance.

    Reading: I picked up Don DeLillo’s Underworld again, intending to just read the first part. I love the first chapter but never finished the book because I found the rest boring; now I am engrossed and don’t know what I was thinking back  then.

    Listening: WXPN has been playing “The 70’s, A-Z” this past week, every song they have in their library that was released in the Seventies, played in alphabetical order. We’ve been following along religiously, and it’s been fascinating and fun but they’re only up to “T,” and it gets wearing. Full disclosure: the radio is off right now…

    The only time they weren’t playing the 70’s was for their Friday “Free at Noon” concert at the Word Cafe, which this week featured Russ’s band Cherry. So, we went down to Philly with Ray and Lorraine, where we met Frank and Patricia, and Ben, and Gabby, and we all watched the show and then went out to lunch with Russ at the White Dog Cafe. As always, we spent a few minutes at Penn Books before the ride home. All the talk in Philly, among us and overheard on the street, was about the upcoming snow on Saturday…

    By the way, Saturday was Luminaria Night in Bethlehem, here is a photo of ours:

    candles in bags on sidewalk
    Luminaria Night

    One last thing: here is what I wrote ten years ago.