I promise TFM won’t become a cooking blog, but eating is a big part of life here. I’ll be posting one or two more recipes in the coming weeks.
Let’s say you’re like me, and party mix is one of your weaknesses, but you long for a little extra bang in your snack. I got ya covered.
Everyone has their own variant on party mix; some add pretzels, some add Cheerios, and the wife prefers to use Crispix and lots of cashews. Personally, I think Wheat Chex is essential, because it does an awesome job of trapping the flavorings. Anyway, here’s my variant, which brings on the flavor but is less loaded with sodium than some:
Garlic-Sriracha party mix
2 c (each) Corn Chex, Rice Chex, Wheat Chex
1 c Cheerios (regular or multi-grain*)
1 c (each) Brazil nuts, unsalted almonds, unsalted peanuts
6 T butter or margarine
2-1/2 T Sriracha chili-garlic paste
1 tsp “Italian blend” salt-free seasoning
3/4 tsp No-salt
1/2 tsp onion powder
2 cloves garlic, pressed
Preheat oven to 250°F.
Combine cereals and nuts in a large roasting pan; set aside.
Melt butter in a saucepan. Add remaining ingredients and stir until combined. Pour the mixture over the cereals and nuts, and stir until evenly coated.
Bake 1 hour at 250°F, stirring every 15 minutes. Allow to cool before putting in an air-tight container.
Flavors seem to strengthen over time, so make this on the 29th for the New Year’s Eve festivities (if you can stand to wait that long).
*Multi-grain Cheerios adds a little sweetness, taking the edge off the heat. But adjust the dry ingredients as you please. Make it your own. Maybe leave a comment and tell me how you like to do your own party mix. You never know, I might adopt a couple things!
Saturday, December 28, 2019 No comments
Monday, December 09, 2019 No comments
Moving to a Big Boy Bed [[UPDATED]]
AJ is doing very well. She had her first church visit yesterday, and that went well. She has put on a pound since she came home from the hospital (that was like >20% of her take-home body weight, people… babies grow fast).
So we sent DD and AJ the mattress out of Charlie’s crib, which meant we had to get serious about updating his sleeping arrangement. The crib is a “4-in-1,” which in practical terms means it converts into toddler bed, daybed, and finally (using the back as a headboard) a full-size bed. The wife thought a full-size bed would fit in Charlie’s small room at first, then realized it wouldn’t. That was the bad news. The good news was, the bed frame width is adjustable. We slid it down to twin-bed size, I cut a piece of 1/2" plywood I had in the garage to fit, then (temporarily) inflated the air mattress and layered a foam topper over it.
The body pillow behind him goes on the floor for actual night-night time. He still has a habit of rolling off the bed, and we’re trying to provide him with a soft landing. He made it to about 5:30am this morning, so I think his bod is starting to program itself to not flip and flop all over the place. Then again, I remember falling out of the top bunk a couple of times, when I was 4 and 5, onto a floor (no carpet, and certainly no body pillows to cushion the landing).
Next stop is to replace the air mattress, but we’ve found he does like a soft bed. I guess we can go with memory foam if nothing else.
UPDATE: We got him a cushy mattress with memory foam. He loves the way it feels, but not so much that he’ll go to sleep by himself. :-P
So we sent DD and AJ the mattress out of Charlie’s crib, which meant we had to get serious about updating his sleeping arrangement. The crib is a “4-in-1,” which in practical terms means it converts into toddler bed, daybed, and finally (using the back as a headboard) a full-size bed. The wife thought a full-size bed would fit in Charlie’s small room at first, then realized it wouldn’t. That was the bad news. The good news was, the bed frame width is adjustable. We slid it down to twin-bed size, I cut a piece of 1/2" plywood I had in the garage to fit, then (temporarily) inflated the air mattress and layered a foam topper over it.
As long as you don't expect me to actually go to sleep… |
Next stop is to replace the air mattress, but we’ve found he does like a soft bed. I guess we can go with memory foam if nothing else.
UPDATE: We got him a cushy mattress with memory foam. He loves the way it feels, but not so much that he’ll go to sleep by himself. :-P
Sunday, December 01, 2019 No comments
Mason got a turn…
I asked Mason what he thought of AJ after he had a chance to hold her.
“Small, warm… and her nose is really tiny.”
Speaking of AJ, she’s gobbling down formula (and increasing amounts of what DD is producing) very well. She’s still under a pretty strict germ protocol—anyone who holds her has to wash thoroughly first. We didn’t have those precautions for preemie DD in 1989, let alone preemie me in 1958, but back then we didn’t have MRSA, flesh-eating bacteria, and all those other fun things we have today. [PEOPLE: TAKE ALL YOUR %$@!%&* ANTIBIOTICS. FINISH THE BOTTLE. DOESN’T MATTER IF YOU’RE FEELING BETTER.]
Mason also reached a milestone of sorts yesterday: he got to crawl into the storage space under the stairs and send out boxes of Christmas decorations. Part of it was that he really wanted to do it, part of it was incoming rain paining my titanium knee. He wore out before the last five or six boxes, but all of those needed inspection anyway. I scooched in, identified what needed to come out (including a kitchen appliance the wife bought who-knows-when and never used), and what could stay.
“I don’t know if this still works,” she said about one random decoration.
“We should purge this stuff, then,” I suggested. She seemed amenable to the idea, which is good. The fewer boxes we have to retrieve (and put away), the better.. I’m sure one of the local thrift stores would be happy to get some seasonal decorations. Mason already has a fever-dream of turning that space into a fort. Unfortunately for him, there aren’t a lot of other good places for storing seasonal items around FAR Manor. The small outbuilding (a/k/a Studio FAR), that I wanted to use as an office/retreat, is pretty well packed with junk. Maybe I should return to my idea of bending some of the pine trees out back into a really big yurt; it would at least keep him (and Sizzle’s kids) occupied.
It’s definitely the most wonderful time (to drink beer).
“Small, warm… and her nose is really tiny.”
Tiny nose! Grainy low-light pic! |
Speaking of AJ, she’s gobbling down formula (and increasing amounts of what DD is producing) very well. She’s still under a pretty strict germ protocol—anyone who holds her has to wash thoroughly first. We didn’t have those precautions for preemie DD in 1989, let alone preemie me in 1958, but back then we didn’t have MRSA, flesh-eating bacteria, and all those other fun things we have today. [PEOPLE: TAKE ALL YOUR %$@!%&* ANTIBIOTICS. FINISH THE BOTTLE. DOESN’T MATTER IF YOU’RE FEELING BETTER.]
Mason also reached a milestone of sorts yesterday: he got to crawl into the storage space under the stairs and send out boxes of Christmas decorations. Part of it was that he really wanted to do it, part of it was incoming rain paining my titanium knee. He wore out before the last five or six boxes, but all of those needed inspection anyway. I scooched in, identified what needed to come out (including a kitchen appliance the wife bought who-knows-when and never used), and what could stay.
“I don’t know if this still works,” she said about one random decoration.
“We should purge this stuff, then,” I suggested. She seemed amenable to the idea, which is good. The fewer boxes we have to retrieve (and put away), the better.. I’m sure one of the local thrift stores would be happy to get some seasonal decorations. Mason already has a fever-dream of turning that space into a fort. Unfortunately for him, there aren’t a lot of other good places for storing seasonal items around FAR Manor. The small outbuilding (a/k/a Studio FAR), that I wanted to use as an office/retreat, is pretty well packed with junk. Maybe I should return to my idea of bending some of the pine trees out back into a really big yurt; it would at least keep him (and Sizzle’s kids) occupied.
It’s definitely the most wonderful time (to drink beer).
Turkey Tacos
I’ll spare you the long-winded, self-indulgent preramble. If you live in the US, you know exactly where this is going: you have a metric crockload of leftover turkey, and you’re trying to figure out what to do with it all. This works really well to resuscitate undercooked or dry bird, too. You can reuse a pound of it this way, anyway. Think of it as a public service…
Anyway, the wife suggested I half the recipe, because Mason probably wouldn’t want turkey tacos. But when he tasted the meat, he was all in. I really didn’t know what to expect, but in the end it was a hit at FAR Manor.
Turkey Tacos
1 lb. leftover Thanksgiving turkey (or any-other-time turkey), shredded
2T oil
1 packet taco seasoning (which usually calls for 2/3c water)
12 taco shells or small/medium tortillas as desired (we like the blue corn taco shells)
shredded cheese
salsa
everything else—tomato, onion, guacamole, sour cream (or crema), sliced avocados, etc.
Heat the oil in a wok or skillet. Add the turkey, and warm. Add taco seasoning and water, cook as directed. Remove from heat, spoon into taco shells, add toppings as desired. Serve with chips (again, we like blue corn) and salsa.
(A brief post-ramble: taco plates are awesome for the purpose, and your supermarket might carry them. If only they had a lip to keep salsa from leaking into the taco area.)
Now to figure out what to do with the other four pounds of leftover turkey.
Anyway, the wife suggested I half the recipe, because Mason probably wouldn’t want turkey tacos. But when he tasted the meat, he was all in. I really didn’t know what to expect, but in the end it was a hit at FAR Manor.
I started eating before I had a chance to take the picture… |
Turkey Tacos
1 lb. leftover Thanksgiving turkey (or any-other-time turkey), shredded
2T oil
1 packet taco seasoning (which usually calls for 2/3c water)
12 taco shells or small/medium tortillas as desired (we like the blue corn taco shells)
shredded cheese
salsa
everything else—tomato, onion, guacamole, sour cream (or crema), sliced avocados, etc.
Heat the oil in a wok or skillet. Add the turkey, and warm. Add taco seasoning and water, cook as directed. Remove from heat, spoon into taco shells, add toppings as desired. Serve with chips (again, we like blue corn) and salsa.
(A brief post-ramble: taco plates are awesome for the purpose, and your supermarket might carry them. If only they had a lip to keep salsa from leaking into the taco area.)
Now to figure out what to do with the other four pounds of leftover turkey.
Thursday, November 28, 2019 5 comments
Monday, November 25, 2019 2 comments
Granddaughter Dearest!
Say hi to AJ, born Saturday afternoon around 4:30pm local time.
She was a month early, extending our streak to three generations. I was a month early, so was Daughter Dearest, and now AJ… all for different reasons. Still, she is doing fine, and might get to come home as early as Thursday (Turkey Day). As preemies often do, she has a touch of jaundice and spends some time in a tanning booth (the NICU version, anyway).
Keep me covered! |
DD and I went down to NICU to see and feed her yesterday evening. DD was rubbing her head, and she got visibly irritated and calmed down instantly when she quit… so she’s already showing some preferences (besides hating to be cold). She also didn’t want to eat, pressing her lips together tight. The nurse persuaded her, though. I told her, “I’m gonna call you AJ,” and she gave me a half-smile and a fart. I guess she approved!
We’ve been a little concerned about DD’s high blood pressure, which was a side-effect of the pregnancy. But after she stood up a couple of times, it returned to a normal range. The nurse said it should go away soon, but the BP was what prompted the early escape this generation.
Back at FAR Manor, we’re in a flurry of activity. We’re sending Charlie’s crib mattress to DD for AJ’s crib, and working on converting his crib to a regular bed (he doesn’t have a lot of room to stretch out in the crib now). That on top of Turkey Day.
Saturday, November 23, 2019 No comments
I want to ride my bicycle
Long ago, I observed TANSTAAFL (There Ain’t No Such Thing As A Free Laptop). I got a throwaway from work, but had to spend $120 to replace all three batteries. In those days, there was the main battery, the CMOS battery, and a “bridge” battery (which kept the system state up long enough to swap in a fresh main battery).
More recently, I find a similar adage holds: TANSTAAFB (There Ain’t No Such Thing As A Free Bicycle).
The Boy found that, when you own a moving company, people give you stuff they don’t want to keep for whatever reason. One of his customers gave him a mid-range road bike—a Fuji Newest 2.0, to be precise. I had a chuckle at the name; I got a mental image of a marketroid trying 'way to hard to come up with something that sounded trendy, then I learned that there are 3.0 and 4.0 versions as well. Now I’m just confused. But I digress. The daughter-in-law was happy to pass it to me, especially since the frame size was perfect for me.
I figure, a “free” road bike is cheaper than buying a second set of wheels for the mountain bike and swapping them as needed (faster than changing tires). Maybe.
A few free weekend hours (amazing!) made themselves available, and I decided to give the Newest bike a trial run. It was a total fiasco: I had no idea how to shift, and the rear derailleur kept hopping between sprockets. Fortunately, both of my brothers are avid cyclists, so I took pictures and texted.
Turns out it’s a “Flight Deck” shifter. The little thumb lever goes up, and you push the brake lever sideways to go down! Other Brother told me, “Once you get the hang of it you can brake and [downshift] at the same time.” It makes sense in a way… if you’re trying to save weight By Any Means Possible, making something that has to exist (like a brake lever) serve two functions is totally logical.
So back on the road. I figured out how to shift the rear easily enough, but the front was frozen… and I was still having the hopping problem. Back to the ol' drawing board, as they used to say a loooooooong time ago.
At the drawing board, or rather flipping the bike upside-down onto a deck box (a/k/a the “camping box,” because I keep all the camping gear in it), I got things halfway sorted. Eyeballing the chain, it was a long way off-center. Shimano’s Sora geartrain has a handy adjustment where the cable enters the rear derailleur, and I got that part taken care of in seconds.
Fiddling with the front took a while, but I finally realized what the issue was: the nub holding the spring back on the front derailleur had snapped off! I toyed with the idea of tapping a screw in its place, but decided to bite the bullet and spend the $30 on a replacement. (I also toyed with the idea of just taking the broken derailleur off and having a 9-speed bike, but I'm kind of anal that way.)
I don’t know how old this bike is, but it could have been built any time after 2006 (which makes it newer than my mountain bike, but whatever). Shimano still makes and sells the Sora geartrain, although there have been a few changes over the years. The old front derailleur is a 3304, and the closest replacement I could find was 3030. If it fits, it sits, says I.
One would think mounting a derailleur would be not terribly complicated… but then again, this is FAR Manor. First off, it seems that there are three sizes of seat tubes to contend with. Rather than to maintain three SKUs, Shimano decided to size the clamp for the biggest tube and include shim(ano)s for the next two sizes down. Kinda cheesy, if you ask me, but it seems to work.
Second, the new derailleur has a lot more plastic than the old one. If it made a significant weight difference, I wouldn’t mind, but the newer one might be slightly lighter. Might.
Third one’s the big annoyance. The old derailleur had a screw at the back of the cage (the part that surrounds the chain and pushes it from gear to gear), so it was really easy to take off. Undo the screw, cable, and clamp, and off it comes. The new one is riveted, which means I needed to separate the chain (and rejoin it after threading it through the cage). OK, fine, finding the master link wasn’t difficult, but this doesn’t have the U-shaped clip I was expecting. This is the newer “QuickLink.” Nothing I had would pop that thing loose, so I put Charlie in the Orange Crate and ran up to the local bike shop… only to find they’re closed on Sundays. So in a fit of pique, I went to Amazon and ordered a master link tool and a bike stand. Oh well, I have several other things on the list I can buy local.
The master link tool arrived Tuesday; I popped the chain, mounted the derailleur, then put the chain back together. Things go amazingly fast when you have the right tools. The adjustments had to wait for the bike stand, which arrived Wednesday. The stand also came with a pair of 5mm Allen wrenches, a common size on the Newest, so that was a bonus.
I’ve wanted a bike stand for years, ever since I saw one in use at a bike shop. They get your bike up high enough to work on, and you can work all the controls without having to flip the bike upside down or hold the rear tire off the pavement.
So while I was grabbing a master link tool, I decided to check out stands as well. I settled on one that had pretty good ratings, was less than $60, and folds up when not in use. I should have done this years ago.
Anyway. Initially, it seemed like the new front derailleur would need little adjustment. It hopped from chainring to chainring without issue… except for the chittering in certain rear gears with the middle chainring. I turned the adjustment screws, and the noise went away.
Friday came around. I was working at home due to some issues with Granddaughter Dearest (he next post will almost certainly be her birth announcement/celebration), so I ate a quick lunch, made some last-minute adjustments to the brake pads, aired up the tires (air leaks between rubber molecules at 100psi, I think), and started Shakedown Cruise #2. Still had the issue with the middle chainring, so breaking a sweat in 60F weather while wearing a long-sleeve T-shirt happened but didn’t run as long as I had hoped. I got that sorted, which requires more high-gear adjustments. You can’t do just one thing, I’ve found.
I haven’t rode more than 2 miles on this bike so far, and it’s clear the previous owner rode the living hell out of it. The not-stock tires are nearly new, I’m not sure if the fork and wheels are stock, the frame has here-and-there dings, the left end of the handlebar is ground off at an angle, and there’s a lot of rust in the threads (rather impressive, as the Newest 2.0 has an aluminum frame). Sensors and mount for a bike computer are there, as is a mount for a small 7-LED flashlight, but the computer is gone (the flashlight is still there, though). Some rear accessory was also gone, and the mounting clamp itself was rusted tight, so I cut it off. I kind of get the impression that the front derailleur breaking was the impetus/excuse to get a newer bike (but how could anything be newer than Newest?).
But that’s cool. I’m looking forward to putting a few miles on the bike, and hearing what it has to say about its history. My bro Solar has a “beer and tacos” bike; I have to go more than twice as far has he does for either, but that’s fine. I need more exercise. Maybe I’ll get a trailer to tow Charlie along on my rides; he can have refrieds and rice while I have tacos, and I’ll burn even more calories.
It’s supposed to rain all day tomorrow, so I can put Newest on the stand and get that middle chainring issue adjusted. If all goes well, I can at least ride to the church and back (10.2 miles round-trip) Sunday afternoon.
More recently, I find a similar adage holds: TANSTAAFB (There Ain’t No Such Thing As A Free Bicycle).
The Boy found that, when you own a moving company, people give you stuff they don’t want to keep for whatever reason. One of his customers gave him a mid-range road bike—a Fuji Newest 2.0, to be precise. I had a chuckle at the name; I got a mental image of a marketroid trying 'way to hard to come up with something that sounded trendy, then I learned that there are 3.0 and 4.0 versions as well. Now I’m just confused. But I digress. The daughter-in-law was happy to pass it to me, especially since the frame size was perfect for me.
I figure, a “free” road bike is cheaper than buying a second set of wheels for the mountain bike and swapping them as needed (faster than changing tires). Maybe.
Dual action! |
Turns out it’s a “Flight Deck” shifter. The little thumb lever goes up, and you push the brake lever sideways to go down! Other Brother told me, “Once you get the hang of it you can brake and [downshift] at the same time.” It makes sense in a way… if you’re trying to save weight By Any Means Possible, making something that has to exist (like a brake lever) serve two functions is totally logical.
So back on the road. I figured out how to shift the rear easily enough, but the front was frozen… and I was still having the hopping problem. Back to the ol' drawing board, as they used to say a loooooooong time ago.
At the drawing board, or rather flipping the bike upside-down onto a deck box (a/k/a the “camping box,” because I keep all the camping gear in it), I got things halfway sorted. Eyeballing the chain, it was a long way off-center. Shimano’s Sora geartrain has a handy adjustment where the cable enters the rear derailleur, and I got that part taken care of in seconds.
It’s dead, Jim. |
I don’t know how old this bike is, but it could have been built any time after 2006 (which makes it newer than my mountain bike, but whatever). Shimano still makes and sells the Sora geartrain, although there have been a few changes over the years. The old front derailleur is a 3304, and the closest replacement I could find was 3030. If it fits, it sits, says I.
One would think mounting a derailleur would be not terribly complicated… but then again, this is FAR Manor. First off, it seems that there are three sizes of seat tubes to contend with. Rather than to maintain three SKUs, Shimano decided to size the clamp for the biggest tube and include shim(ano)s for the next two sizes down. Kinda cheesy, if you ask me, but it seems to work.
Second, the new derailleur has a lot more plastic than the old one. If it made a significant weight difference, I wouldn’t mind, but the newer one might be slightly lighter. Might.
Third one’s the big annoyance. The old derailleur had a screw at the back of the cage (the part that surrounds the chain and pushes it from gear to gear), so it was really easy to take off. Undo the screw, cable, and clamp, and off it comes. The new one is riveted, which means I needed to separate the chain (and rejoin it after threading it through the cage). OK, fine, finding the master link wasn’t difficult, but this doesn’t have the U-shaped clip I was expecting. This is the newer “QuickLink.” Nothing I had would pop that thing loose, so I put Charlie in the Orange Crate and ran up to the local bike shop… only to find they’re closed on Sundays. So in a fit of pique, I went to Amazon and ordered a master link tool and a bike stand. Oh well, I have several other things on the list I can buy local.
The master link tool arrived Tuesday; I popped the chain, mounted the derailleur, then put the chain back together. Things go amazingly fast when you have the right tools. The adjustments had to wait for the bike stand, which arrived Wednesday. The stand also came with a pair of 5mm Allen wrenches, a common size on the Newest, so that was a bonus.
Upsy-daisy! |
So while I was grabbing a master link tool, I decided to check out stands as well. I settled on one that had pretty good ratings, was less than $60, and folds up when not in use. I should have done this years ago.
Anyway. Initially, it seemed like the new front derailleur would need little adjustment. It hopped from chainring to chainring without issue… except for the chittering in certain rear gears with the middle chainring. I turned the adjustment screws, and the noise went away.
Friday came around. I was working at home due to some issues with Granddaughter Dearest (he next post will almost certainly be her birth announcement/celebration), so I ate a quick lunch, made some last-minute adjustments to the brake pads, aired up the tires (air leaks between rubber molecules at 100psi, I think), and started Shakedown Cruise #2. Still had the issue with the middle chainring, so breaking a sweat in 60F weather while wearing a long-sleeve T-shirt happened but didn’t run as long as I had hoped. I got that sorted, which requires more high-gear adjustments. You can’t do just one thing, I’ve found.
I haven’t rode more than 2 miles on this bike so far, and it’s clear the previous owner rode the living hell out of it. The not-stock tires are nearly new, I’m not sure if the fork and wheels are stock, the frame has here-and-there dings, the left end of the handlebar is ground off at an angle, and there’s a lot of rust in the threads (rather impressive, as the Newest 2.0 has an aluminum frame). Sensors and mount for a bike computer are there, as is a mount for a small 7-LED flashlight, but the computer is gone (the flashlight is still there, though). Some rear accessory was also gone, and the mounting clamp itself was rusted tight, so I cut it off. I kind of get the impression that the front derailleur breaking was the impetus/excuse to get a newer bike (but how could anything be newer than Newest?).
But that’s cool. I’m looking forward to putting a few miles on the bike, and hearing what it has to say about its history. My bro Solar has a “beer and tacos” bike; I have to go more than twice as far has he does for either, but that’s fine. I need more exercise. Maybe I’ll get a trailer to tow Charlie along on my rides; he can have refrieds and rice while I have tacos, and I’ll burn even more calories.
It’s supposed to rain all day tomorrow, so I can put Newest on the stand and get that middle chainring issue adjusted. If all goes well, I can at least ride to the church and back (10.2 miles round-trip) Sunday afternoon.
Friday, November 15, 2019 1 comment
Granddaughter Dearest, an early peek
It’s amazing what they can do with ultrasound these days. They zoomed right in on Granddaughter Dearest’s face…
Her face is all squooshed… as the Genie might say, “itty bitty living space!” Looks like she has some hair, too, although that could be focus/distortion.
The Blessed Event is about a month away, now… although DD is starting to be less insistent about carrying her to term. “She could decide to come early," DD opined recently. I don’t hold out a lot of hope about sharing a birthday, but whatever the date, it’s all good.
Look at those duck lips! |
The Blessed Event is about a month away, now… although DD is starting to be less insistent about carrying her to term. “She could decide to come early," DD opined recently. I don’t hold out a lot of hope about sharing a birthday, but whatever the date, it’s all good.
Tuesday, November 12, 2019 No comments
Fixing supper, redux
Back in May, I blogged about Kroger’s Home Chef meal kits. They’re basically raw ingredients and a recipe card. None of the prep work has been done, which is the only thing that would justify the markup on those kits.
Well, they still have the meal kits, but now they feature recipes on their website as well. Even better, you can get a weekly “meal planning” email with links to five recipes. I haven’t seen a week yet where I want to try all five (each week, at least one of them requires an Instant Pot and I don’t have one), but one or two usually catch my interest and I add them to “My Recipes” for future reference. Of course, they have a helpful feature that lets you add the ingredients to your grocery list. Many have a very short total time listed, but I’ve found those wildly optimistic (or, in the case of the most recent, doesn’t count the time needed to cook pasta). Clearing off work surfaces adds to the total time, but that’s specific to FAR Manor.
So, here’s links and commentary to the recipes I’ve tried so far:
Well, they still have the meal kits, but now they feature recipes on their website as well. Even better, you can get a weekly “meal planning” email with links to five recipes. I haven’t seen a week yet where I want to try all five (each week, at least one of them requires an Instant Pot and I don’t have one), but one or two usually catch my interest and I add them to “My Recipes” for future reference. Of course, they have a helpful feature that lets you add the ingredients to your grocery list. Many have a very short total time listed, but I’ve found those wildly optimistic (or, in the case of the most recent, doesn’t count the time needed to cook pasta). Clearing off work surfaces adds to the total time, but that’s specific to FAR Manor.
So, here’s links and commentary to the recipes I’ve tried so far:
- Italian Sausage and Pasta Bake—this one was a hit with everybody, including oft-fussy Mason. Wife doesn’t like casing, so I removed them before slicing the sausages. The only wrinkle is that I bought mild Italian sausage and it still came out pretty spicy. Maybe next time, I’ll use “sweet” sausage. And, of course, the total time didn’t include preparing the rotini.
- Quick Mediterranean Chili—another widely-accepted dish, which actually came in fairly close to the posted prep time (and I doubled the recipe). Wife thought it was a tad spicy, even though I used half the paprika called for. I added a half teaspoon of the ghost pepper sauce The Boy made for me to my bowl, and it perked everything right up.
- Bacon, Apple, and Sage Stuffed Chicken Breasts—the adults really liked this. The kids were just OK with it. I thought I had sage growing along the driveway, but it must have died out (or the wife hit it with Roundup when she was cleaning up the weeds). I subbed fresh lemon balm for the sage, and (on the wife’s recommendation) rolled them in bread crumbs. Next time, though, instead of slicing into the side to make a pocket, I'll go in from the top and add side chambers. That should keep more of the cheese inside. I like big breasts and I cannot lie, but these were big enough to make two servings per. What I ended up with fed my family and Daughter Dearest’s with some left over… maybe I didn’t have to double the recipe on that one.
Labels:
food
Tuesday, November 05, 2019 4 comments
Snack break
Recently, those “Balanced Breaks” snacks have captured some attention. It’s a great premise—a snack that concentrates on protein with dried fruit (mostly raisins or cranberries) for carbs. Nice idea, except for all the plastic waste. The “lid” (also plastic) peels off, and there’s no tops that would make the containers reusable. A few probably find their way into basement or garage workshops, as handy trays for holding screws, but the vast majority are destined for the landfill. I suppose if they did make the containers easy to reuse, a lot of people would refill them and not buy more.
So I was in the supermarket recently, saw a display case of Balanced Breaks, and thought, “you know, if they carry small containers with 3 or 4 compartments, I could just make my own and not have to throw away more stuff.”
I wandered over to the container aisle—and though I didn’t find anything small with three or four compartments, I found 2-compartment “meal prep” containers. Close enough!
There was a block of medium cheddar in the fridge that has been waiting for a purpose; I cut it up and diced some leftover ham. Nuts and raisins were in the pantry. Here’s the result.
I showed them to the wife and Mason; both liked the idea. “Can I have this one?” Mason asked. No problem, but he stashed it in the fridge. I made another, and that used up the rest of the ham. Since then, I've made some with thick slices of ham from the deli, and even some not-crab (the fake crab meat they make from pollock); one of Sizzle’s kids suggested shrimp. Wife complained that I was using “her” cashews, so I got some almonds (light salt and habenero BBQ) and peanuts. The fruit is either raisins or craisins (dried cranberries)—I should mix them for grins.
I’m calling this one a win.
So I was in the supermarket recently, saw a display case of Balanced Breaks, and thought, “you know, if they carry small containers with 3 or 4 compartments, I could just make my own and not have to throw away more stuff.”
I wandered over to the container aisle—and though I didn’t find anything small with three or four compartments, I found 2-compartment “meal prep” containers. Close enough!
There was a block of medium cheddar in the fridge that has been waiting for a purpose; I cut it up and diced some leftover ham. Nuts and raisins were in the pantry. Here’s the result.
Looks good enough to eat! |
I showed them to the wife and Mason; both liked the idea. “Can I have this one?” Mason asked. No problem, but he stashed it in the fridge. I made another, and that used up the rest of the ham. Since then, I've made some with thick slices of ham from the deli, and even some not-crab (the fake crab meat they make from pollock); one of Sizzle’s kids suggested shrimp. Wife complained that I was using “her” cashews, so I got some almonds (light salt and habenero BBQ) and peanuts. The fruit is either raisins or craisins (dried cranberries)—I should mix them for grins.
I’m calling this one a win.
Sunday, November 03, 2019 1 comment
Charlie speaks (sort of)
A couple Fridays ago, I went to pick up Charlie from daycare, and this is what he looked like:
Seems there’s a downslope at one edge of the playground, with a fence, and Charlie decided to take a trike down the slope at full-tilt-boogie. They said he put his hands out at the last minute, but it didn’t stop the faceplant (or was it a fenceplant?). The scuff scabbed over, and could be seen a long way off, before it finally started healing. Fortunately, it’s nearly gone now. I carried the incident report from the daycare around with me for a while, in case someone accused me of something they shouldn’t.
But that’s not what I wanted to talk about. Charlie’s speech therapy is finally starting to pay off. He still can’t do hard consonants, but he can say several things recognizable as words: “gah-dah” (Granddad), “gah-ma” (Grandmom), “ow-ooo” (out, as in outside), “uh!” (up), “banana” (his favorite snack food) and a couple other things on occasion. The therapist is working on getting him a Dynavox, a tablet with speech software. You tap an icon and it speaks for him. She tried him on one she was setting up for another patient, and he took to it right away. Still, the old grunt-and-point often gets him a long way toward being understood. He’ll put a whiny edge on it when he wants something, too.
I observed recently that he’s looking less like a baby and more like a little boy these days. He wants to do more things for himself, which is commendable. One recent evening, we read a few books, and he held one and turned the pages after I read the text. He’s been working on dressing himself as well, and can do all but the shirt (The Boy, advanced as he was, didn’t start dressing himself until he was 4). He is even showing a preference for which car he wants to ride in… either M.O. the B.B. (huge pickup) or the Miata (tiny roadster).
Now if I could only get him to expand his approved proteins list…
Fence 1, Nose and Forehead 0 …but he came out grinning! |
But that’s not what I wanted to talk about. Charlie’s speech therapy is finally starting to pay off. He still can’t do hard consonants, but he can say several things recognizable as words: “gah-dah” (Granddad), “gah-ma” (Grandmom), “ow-ooo” (out, as in outside), “uh!” (up), “banana” (his favorite snack food) and a couple other things on occasion. The therapist is working on getting him a Dynavox, a tablet with speech software. You tap an icon and it speaks for him. She tried him on one she was setting up for another patient, and he took to it right away. Still, the old grunt-and-point often gets him a long way toward being understood. He’ll put a whiny edge on it when he wants something, too.
I observed recently that he’s looking less like a baby and more like a little boy these days. He wants to do more things for himself, which is commendable. One recent evening, we read a few books, and he held one and turned the pages after I read the text. He’s been working on dressing himself as well, and can do all but the shirt (The Boy, advanced as he was, didn’t start dressing himself until he was 4). He is even showing a preference for which car he wants to ride in… either M.O. the B.B. (huge pickup) or the Miata (tiny roadster).
Now if I could only get him to expand his approved proteins list…
Thursday, October 31, 2019 1 comment
Sunset, sunrise… (2019 edition)
Together again! |
And when I die, and when I’m gone,
There’ll be one child born in this world
To carry on, to carry on.
—Blood, Sweat, and Tears
There’ll be one child born in this world
To carry on, to carry on.
—Blood, Sweat, and Tears
The father in law passed away a couple weeks ago. This was something he’d wanted for a while, but especially after he fell and broke his leg a couple weeks after The Boy took his longest journey. He was mostly interested in reuniting with his wife, who has been gone about seven years now, but I like to think they also hang out with The Boy (and my dad).
So the wife has been at the manor a lot more than usual, and that’s a good thing. Daughter Dearest, Sizzle, and their kids have been coming by a lot as well (also a good thing). One of us cooks supper, we all eat, and sometimes we’ll hang out and play cards or whatever on the weekends.
And, coming soon, to a blog you’re reading… Granddaughter Dearest!
Hi! |
So besides that, it’s the usual crazy at FAR Manor. The furnace went out to lunch, just as the weather decided to get serious about cooling off. With any luck, we’ll have that fixed tomorrow.
Saturday, September 28, 2019 No comments
At last… breaking in our new old camper
Beats camping in a tent, says my 60 year old back. |
There were a couple of maintenance items I wanted to deal with on the Starflyer before we left, so I opened it up in the driveway Thursday evening. I poked at things, and Mason figured since we had it set up, we might as well sleep in it.
Why not? Of course, that meant Charlie would be sleeping with us, but he thinks the camper is really fun to hang out in. So that’s what we did Friday night.
I’m not ready to go to sleep just yet! |
Of course, when Mason got in bed (back-side bunk), Charlie decided that was the perfect place for him to sack out as well. Mason protested, but Charlie didn’t give him too much hassle and both the boys were asleep before too long. I scooped up Charlie and put him in his sleep cave, adding a cushion at his feet in case he decided to migrate. He woke up in the 3 a.m. hour, which isn’t unusual, but I understood his motivation. The low that night was around 58F, and there’s not a furnace in the camper, and one blanket wasn’t sufficient. Charlie likes his feet cold, but not that cold. I put him in bed with me, made sure he was covered, and tried to warm his feet up. He pulled up close until he got slightly warm, then rolled away.
Saturday morning rolled around, and Mason was itching to get on the ROAD. I had a similar itch, but knew there were a couple things I needed to take care of first. One was easier than expected, one was close to estimated effort, and one was beyond ridiculous.
The easy one turned out to be the weatherstrip under the front (large) bunk. It's basically a plastic angle bracket, and all but about 6 inches had detached and was laying loose. The previous owner just stuffed 2" A/C foam in the gap and called it good. At first, I thought I might have to push the bunk in a couple feet, lay on the floor, and staple it up—instead, pushing it in about a foot was enough to kneel on a cushion and do the job.
Next up was the sink faucet. Starcraft cut too much wood out of the countertop for the faucet, leaving the screws in the back trying to grab air. Someone came up with the “clever” idea of turning it backwards, allowing the hand pump to function… but with any torque in the opposite direction, the faucet lifted off the countertop. My clever idea was to use longer screws, because there was some wood for them to bite into down below, but it didn’t work. My solution was to replace the wood screws with long machine screws, using a washer and nut to hold it in place. It worked! Longer-term, I’m going to replace that countertop.
The hard one was the tires. They want 80PSI(!), and my air compressor had a cracked hose. Try as I might, I could not get more than 50PSI into the tires. Fortunately, I was trying this part on Friday evening, so I knew I needed to get a new air hose on Saturday. But then I had to find a connector that the air chucks would snap into, and find an air chuck that would actually push air into the tires. Fortunately, I had them here at the manor. The spare needs to be replaced, because it has cracks in the sidewalls, but the primary tires were fine and I was only going 40 miles.
Time for the main event! I backed M.O. the B.B. into position. A few years ago, I was coming home from work and found a drawbar with a 3-1/2" drop on the road… with a 2" ball, which just happens to be the Starflyer’s size. In a way, someone’s loss was part of what got me serious about finding a camper. I really need a 6" drop drawbar with this behemoth, but it got us there and back.
Now let me tell you about M.O. the B.B. Earlier this year, The Boy needed a truck to pull the 26' moving trailers he was using for his new business. Due to a number of circumstances, mostly having to do with my employer getting acquired, I had a large pool of cash in a brokerage account. I figured that (assuming the business worked out) I could get a better return on investing in Let’s Get Movin’ than any CD and most stocks. So we bought him this gigantic TPC: a Ram 3500 diesel dualie. I’m not exactly sure what the tow capacity is on this thing, but it’s measured in tons. The Starflyer’s empty weight is 1700 pounds, and I would have to pack lots of junk to get it to a single ton.
The other thing: I had hoped The Boy would come with us on this trip. I had planned to give him and Mason the big bunk up front, and I’d go to the back of the camper. It would have been worth it.
But I digress. As expected, the truck was going “Trailer? I’m pulling a trailer? Really?” all the way to the campground, LOL. The dualie’s big butt is wider than the 7-foot camper; so I knew if I could see stripes in the side-view mirrors, the Starflyer was on the road. It inspired confidence… which evaporated as soon as I tried to back into the site we selected. I need lots of practice backing a trailer. This was something I was hoping The Boy would help me learn. But I figure he was having a good laugh at my expense, as Mason kept going “You’re about to hit the TREE!” and similar sentiments. Eventually, I got it backed in, detached, and we got set up. I had a leveler and extreme-heavy-duty extension cord, but neither were needed. There was some drama associated with the water hookup, most of which was debris in the threads, but I think a new washer will fix it. The A/C was less easy to deal with: it spun up, but I didn’t feel any air coming out the vents (cold or otherwise). After about 15 minutes, it shut down and would not start again. I think something froze up and blew a fuse.
Otherwise, I think the spot I selected was perfect: right across from the bath house (the Starflyer has a Porta-Potti, but that’s for late-night needs), almost across from the playground, and a short walk to the lake. Of course, the lakeside sites were occupied, but we had plenty of space. Mason spent a lot of time fishing (no luck) and meeting other kids more or less his age (better luck). I cooked meals, rode my bike around a little, and had some quality time with my Kindle. If you’ve never been camping, and have kids, you’re missing out on a huge opportunity. The kids take off, and leave you with lots of quiet time. I remember this from the camping trips we took when I was a kid… thankfully, some things don’t change.
Sunday had us going to Newnan for Zoey’s birthday party. That ran longer than I expected (and Mason hoped), but we still had lots of fun and I let Mason stay up late to compensate. He rode his bike around the dark campground until 10:30 or so, then he was ready to pack it in for the night.
Breakfast, anyone? |
As expected, Mason made himself scarce for the breaking-camp part on Monday morning, despite me telling him we had a pretty tight schedule (I had a work call at noon). I got him to chuck a couple things into the truck, but that was about it. Fortunately, I had planned for that. I got camp broke down, and we got on the road in good order.
The big question now is: how soon can we get out again? The way things are going this year, we should have good camping opportunities (weather-wise) well into November and maybe later.
Sunday, August 18, 2019 2 comments
All the boys
I found this after the fact: Mikel, Mason, and Charlie, all in one pic. It was from last December, when he came up to spend Christmas with us. This is one of the few shots I have of all three of my boys in one place… and almost certainly the latest.
Gotta love the Pocahontas pillowcase that I gave Mikel that night!
The boys hanging out |
Gotta love the Pocahontas pillowcase that I gave Mikel that night!
Friday, August 16, 2019 5 comments
The Boy takes the exit
This is one of the hardest things I’ve ever had to write: The Boy has begun his longest journey. A permanent TB01. You-know-what this.
Mikel lived for 31 years and change. We might think of that as a short lifespan nowadays, but he lived more in those 31 years than do some who get three times that. Even on the day he was born, he wasn’t messing around. At age 5 minutes, he launched himself right out of my arms—fortunately straight at the pediatrician. (That inspired the birth scene in Pickups and Pestilence, of course.) On the way to the hospital room, I noticed how he was watching everything.
He never let up, really. He said his first words at 9 months: “ite” (light), “da-dahhhh” (me), “uht-ohhh,” and by 18 months he was speaking in complete sentences. He was also climbing before he was walking. He hated barriers—and would always try to figure out a way to get around, over or through—but loved the challenge.
And man, did he ever tackle the physical challenges. By age 4, he thought nothing of being 30 feet up in a tree. I used to joke that he was born with a No Fear sticker in his hand. At a birthday party back then, a bunch of boys were climbing a tall pine tree in the host’s front yard. A 12 year old shouted “Get out of the way!” at Mikel, as he was climbing up. “No!” Mikel retorted, and scrambled even higher. The older boy started after him, then looked down… and back at Mikel, continuing to gain height, back down, back up (he was still climbing)… and decided he was going to sit this one out. Fortunately, early on I taught him that whatever he got up, he could get back down. That probably saved me a few heart attacks, and one or two calls to the fire department.
Intellectual challenges were tougher. He and his mom (and Mason) love to butt heads, and they went at it with gusto in his teen years. But in the end, those are emotional challenges. Part of his many problems, that I chronicled in the early years of this blog, likely were because Sector 706 doesn’t exactly abound with intellectual challenges. I don’t have to repeat those years here; you can go check out the archives if you want all the gory details.
I believe the turning point was his two years in Manitowoc. When I went to see him in 2012, it was obvious things had turned out the way I had hoped they would. He had become the adult of the house, perhaps because he no longer had the old safety net to rely on. It also helped that he finally made a permanent break with Snippet (who wasn’t and isn’t an evil person, it’s just that Mason is about the only good thing to come out of that relationship). Wednesday, my sister in law said that she noticed how happy I was during the time I spent on the east side of Lake Michigan after I got off the ferry.
Some time after, he returned to Planet Georgia, and it wasn’t long before he met his wife to be. They got married, and I keep laughing every time I re-read the phrase “we smelled like dead water buffaloes by the end of the evening.” August on Planet Georgia is not the time to spend hours outside.
Actually, it would be best if one could sleep the entire month away. Like the song doesn’t quite say, August in Georgia is just no place to be.
But I digress.
The marriage was fitting for Mikel: another challenge, but one they both overcame in the end. We have Zoey (aka Grandkid #2), and (like Charlie) she adores Mason. Good people, and I won’t let anyone diss my daughter in law. BTW, Daughter Dearest has Grandkid #3 on the way…
Last year was the beginning of the end. In prehistoric times (aka before I started blogging), Mikel became diabetic at 16, and he wasn’t happy about it (is anyone?). I can still remember that day he kept going down, and going down, and I finally made an executive decision to take him to the ER. I had to help him walk into the hospital, and that wasn’t easy because he was a heavy kid back then. Turns out I’d not helped things by giving him sports drinks to fix his dehydration symptoms—his glucose level measured around 1600 (normal is below 100)… so his blood was basically fruit punch. His survival was touch and go, but once again he overcame the challenge. One of the funnier things I remember about that whole ordeal was the presentation the hospital put on. I don’t know if Mikel paid attention or not; I just remember a black girl a couple of rows up turning around to check him out. A lot. (She was cute, but I think Mikel was too busy trying not to pay attention to anything to notice. I hope she’s doing OK, whoever and wherever she is today.)
But again, I digress.
In the last year or so, Mikel finally found his purpose. He got a job with Hewes Family Movers, and was soon a crew chief. I need to call this guy and thank him. He encouraged Mikel to start his own moving company, Let’s Get Movin’. We helped him get a truck—and he was by-God paying us back for it. Mr. Hewes would loan him trailers if he needed them, and Mikel was working on getting one or two trailers of his own. That didn’t come to pass, which might have been for the best under these circumstances. But it was obvious to us that Mikel had finally found his niche in life. He not only had an occupation that didn't keep him in one place, he was THE BOSS. We had planned to set up his website in the next few weeks…
Mikel’s pancreas did him in, in the end. In the last year or so, he started having seizures. The seizures got really bad last November, and he spent Thanksgiving in the hospital. That’s when my wife and his really got together and made sure he was getting the care he needed. His short term memory got clobbered, even worse than mine, in the end. The neurologist told them Mikel would probably not survive another one. And then…
Lately, Mikel had been coming up to FAR Manor a lot to visit us. I don’t know if part of him knew what was coming, and who cares if it’s important? The fact was, he was around. He and I got to hang out mostly on weekends, and he and his mom got to hang out on weekdays. When the engine in Sizzle’s truck lunched out, and they found a motor somewhat north of Nashville, he and Daughter Dearest took a road trip to pick it up.
He made a point of telling us he loved us—one could say it was redundant, because his presence made that clear, but it’s always good to say it. We had been talking about things we were going to do in the upcoming months: he had costumes for all of us picked out for the Ren Faire (he as a barbarian, daughter in law a wood elf, me as a mage, and Mason a hobbit). In turn, I planned a trip to a campground/microbrewery/disc golf course in North Carolina next summer, and even talked about a Big Road Trip to Montana (my dad did that for a few summers to fish). Mikel said he always wanted to go out West to try snowboarding. Obviously, none of that will happen exactly as planned. But I want to at least do some of those outings in his honor.
It was a hard thing to tell Mason about it. Mikel had called his mom Thursday night, telling us he was going to go to Zoey’s orientation, then come up. So we all had expected him to be at FAR Manor Friday evening… but he never woke up. Mason took the news very silently, but cried later that night. The wife laid down with him after dropping a restless Charlie off with me.
There’s a lot of him in Mason—especially the intelligence, and the love of butting heads—and maybe there are at least some token intellectual challenges for Mason nowadays. Mason has the head for numbers that might have skipped Mikel (the way visual art skipped me), and he fortunately hasn’t started to put on weight the way his dad and aunt did.
Tonight, or maybe tomorrow night, I’m going out to the graveyard with a lawn chair and a couple of beers. I’ll have one, and give him the other one. I’m not sure what I’ll tell him, but I know he’ll hear it. He probably has a busy schedule right now: helping the wife’s mom in the garden in the mornings, fishing with my dad in the evenings, and snowboarding and disc golfing in the afternoons. Then at night, he jams with the Heavenly Choir. I hope he tells Johnny Cash how much I appreciated his music during the breaks. God willing, I’ll have 20–30 years before I join him.
A walking Father's Day card; My oldest and youngest; The last pic I have of us together. |
Mikel lived for 31 years and change. We might think of that as a short lifespan nowadays, but he lived more in those 31 years than do some who get three times that. Even on the day he was born, he wasn’t messing around. At age 5 minutes, he launched himself right out of my arms—fortunately straight at the pediatrician. (That inspired the birth scene in Pickups and Pestilence, of course.) On the way to the hospital room, I noticed how he was watching everything.
He never let up, really. He said his first words at 9 months: “ite” (light), “da-dahhhh” (me), “uht-ohhh,” and by 18 months he was speaking in complete sentences. He was also climbing before he was walking. He hated barriers—and would always try to figure out a way to get around, over or through—but loved the challenge.
And man, did he ever tackle the physical challenges. By age 4, he thought nothing of being 30 feet up in a tree. I used to joke that he was born with a No Fear sticker in his hand. At a birthday party back then, a bunch of boys were climbing a tall pine tree in the host’s front yard. A 12 year old shouted “Get out of the way!” at Mikel, as he was climbing up. “No!” Mikel retorted, and scrambled even higher. The older boy started after him, then looked down… and back at Mikel, continuing to gain height, back down, back up (he was still climbing)… and decided he was going to sit this one out. Fortunately, early on I taught him that whatever he got up, he could get back down. That probably saved me a few heart attacks, and one or two calls to the fire department.
Intellectual challenges were tougher. He and his mom (and Mason) love to butt heads, and they went at it with gusto in his teen years. But in the end, those are emotional challenges. Part of his many problems, that I chronicled in the early years of this blog, likely were because Sector 706 doesn’t exactly abound with intellectual challenges. I don’t have to repeat those years here; you can go check out the archives if you want all the gory details.
I believe the turning point was his two years in Manitowoc. When I went to see him in 2012, it was obvious things had turned out the way I had hoped they would. He had become the adult of the house, perhaps because he no longer had the old safety net to rely on. It also helped that he finally made a permanent break with Snippet (who wasn’t and isn’t an evil person, it’s just that Mason is about the only good thing to come out of that relationship). Wednesday, my sister in law said that she noticed how happy I was during the time I spent on the east side of Lake Michigan after I got off the ferry.
Some time after, he returned to Planet Georgia, and it wasn’t long before he met his wife to be. They got married, and I keep laughing every time I re-read the phrase “we smelled like dead water buffaloes by the end of the evening.” August on Planet Georgia is not the time to spend hours outside.
Actually, it would be best if one could sleep the entire month away. Like the song doesn’t quite say, August in Georgia is just no place to be.
But I digress.
The marriage was fitting for Mikel: another challenge, but one they both overcame in the end. We have Zoey (aka Grandkid #2), and (like Charlie) she adores Mason. Good people, and I won’t let anyone diss my daughter in law. BTW, Daughter Dearest has Grandkid #3 on the way…
Last year was the beginning of the end. In prehistoric times (aka before I started blogging), Mikel became diabetic at 16, and he wasn’t happy about it (is anyone?). I can still remember that day he kept going down, and going down, and I finally made an executive decision to take him to the ER. I had to help him walk into the hospital, and that wasn’t easy because he was a heavy kid back then. Turns out I’d not helped things by giving him sports drinks to fix his dehydration symptoms—his glucose level measured around 1600 (normal is below 100)… so his blood was basically fruit punch. His survival was touch and go, but once again he overcame the challenge. One of the funnier things I remember about that whole ordeal was the presentation the hospital put on. I don’t know if Mikel paid attention or not; I just remember a black girl a couple of rows up turning around to check him out. A lot. (She was cute, but I think Mikel was too busy trying not to pay attention to anything to notice. I hope she’s doing OK, whoever and wherever she is today.)
But again, I digress.
In the last year or so, Mikel finally found his purpose. He got a job with Hewes Family Movers, and was soon a crew chief. I need to call this guy and thank him. He encouraged Mikel to start his own moving company, Let’s Get Movin’. We helped him get a truck—and he was by-God paying us back for it. Mr. Hewes would loan him trailers if he needed them, and Mikel was working on getting one or two trailers of his own. That didn’t come to pass, which might have been for the best under these circumstances. But it was obvious to us that Mikel had finally found his niche in life. He not only had an occupation that didn't keep him in one place, he was THE BOSS. We had planned to set up his website in the next few weeks…
Mikel’s pancreas did him in, in the end. In the last year or so, he started having seizures. The seizures got really bad last November, and he spent Thanksgiving in the hospital. That’s when my wife and his really got together and made sure he was getting the care he needed. His short term memory got clobbered, even worse than mine, in the end. The neurologist told them Mikel would probably not survive another one. And then…
Lately, Mikel had been coming up to FAR Manor a lot to visit us. I don’t know if part of him knew what was coming, and who cares if it’s important? The fact was, he was around. He and I got to hang out mostly on weekends, and he and his mom got to hang out on weekdays. When the engine in Sizzle’s truck lunched out, and they found a motor somewhat north of Nashville, he and Daughter Dearest took a road trip to pick it up.
He made a point of telling us he loved us—one could say it was redundant, because his presence made that clear, but it’s always good to say it. We had been talking about things we were going to do in the upcoming months: he had costumes for all of us picked out for the Ren Faire (he as a barbarian, daughter in law a wood elf, me as a mage, and Mason a hobbit). In turn, I planned a trip to a campground/microbrewery/disc golf course in North Carolina next summer, and even talked about a Big Road Trip to Montana (my dad did that for a few summers to fish). Mikel said he always wanted to go out West to try snowboarding. Obviously, none of that will happen exactly as planned. But I want to at least do some of those outings in his honor.
It was a hard thing to tell Mason about it. Mikel had called his mom Thursday night, telling us he was going to go to Zoey’s orientation, then come up. So we all had expected him to be at FAR Manor Friday evening… but he never woke up. Mason took the news very silently, but cried later that night. The wife laid down with him after dropping a restless Charlie off with me.
There’s a lot of him in Mason—especially the intelligence, and the love of butting heads—and maybe there are at least some token intellectual challenges for Mason nowadays. Mason has the head for numbers that might have skipped Mikel (the way visual art skipped me), and he fortunately hasn’t started to put on weight the way his dad and aunt did.
Tonight, or maybe tomorrow night, I’m going out to the graveyard with a lawn chair and a couple of beers. I’ll have one, and give him the other one. I’m not sure what I’ll tell him, but I know he’ll hear it. He probably has a busy schedule right now: helping the wife’s mom in the garden in the mornings, fishing with my dad in the evenings, and snowboarding and disc golfing in the afternoons. Then at night, he jams with the Heavenly Choir. I hope he tells Johnny Cash how much I appreciated his music during the breaks. God willing, I’ll have 20–30 years before I join him.
Tuesday, July 02, 2019 5 comments
Tech Tuesday: Y'all Watch This
While we were cleaning up the house, a Casio wristwatch turned up. Sizzle didn’t claim it, and I had never seen it before. Mason thought he might like to have it, once it had a battery in it. It has an analog face with a small LCD display, not terribly geeky-looking. I’m used to Casio watches having a tiny keypad and a zillion functions.
So I got out the little tools and the magnifying light, and popped the back off. There was the battery, but the number (16xx) was a new one, and there was a small metal clip holding it down. Not seeing an obvious way to get it off, I did what anyone does these days: Googled for instructions. The watch is a Wave Ceptor, and the first thing that popped up is “this watch has a solar panel and a rechargeable battery.” It was a bright sunshiny day, so I put it back together and stuck it in the window. Sure enough, after a few hours, the little display coughed to life, showing what I thought at first was t 1.
Having no idea what to do next, I headed back to Google to find a manual. That’s when I found out you need only set the timezone and the watch does the rest, using a long wave receiver at night to download the time from WWVB (if using a North American timezone). The link has all the gory details, but WWVB transmits time data at a blazing 1 bit per second (actually, it's a tri-state, with values of 0, 1, or marker—does that make it a trit?). The watch tries receiving at the top of each hour from midnight to 4 a.m.
Just for grins, I watched it the other night. Sure enough, it showed its “receiving” display at 1 a.m., made a small adjustment, and moved on.
The other thing I found out was that the first display I saw wasn’t a lowercase T, it was 土 (an abbreviation for Saturday in Japan). The watch’s epoch (first time) is January 1, 2000. It also has a “Y2.1K” problem, in that its year doesn’t go past 2099. If it’s still around then, I guess one of Mason’s kids will have it.
So once again, Casio made a geeky watch—but this time, they hid the geekiness on and under the face. Oh, and it does have a stopwatch, alarms, and a “world time” mode (uses the little LCD to show the time in a second timezone). It has a light, but the hands and numbers are phosphorescent, so you can at least see what time it is in the dark without using the battery. Putting it in a sunny window for half an hour is more than enough to keep it running another day.
So we tried to put it on Mason, and his wrist is too skinny for a large-face watch like this one. I’d been wearing an iFitness watch for a while, but it often misses steps and has lately developed a habit of trying to pop out of the band (I lost it for over a week that way). It has a decent sleep monitor, and my phone does a better job of counting steps, so now I wear it at night and the Wave Ceptor during the day.
So I got out the little tools and the magnifying light, and popped the back off. There was the battery, but the number (16xx) was a new one, and there was a small metal clip holding it down. Not seeing an obvious way to get it off, I did what anyone does these days: Googled for instructions. The watch is a Wave Ceptor, and the first thing that popped up is “this watch has a solar panel and a rechargeable battery.” It was a bright sunshiny day, so I put it back together and stuck it in the window. Sure enough, after a few hours, the little display coughed to life, showing what I thought at first was t 1.
We get signal. |
Just for grins, I watched it the other night. Sure enough, it showed its “receiving” display at 1 a.m., made a small adjustment, and moved on.
The other thing I found out was that the first display I saw wasn’t a lowercase T, it was 土 (an abbreviation for Saturday in Japan). The watch’s epoch (first time) is January 1, 2000. It also has a “Y2.1K” problem, in that its year doesn’t go past 2099. If it’s still around then, I guess one of Mason’s kids will have it.
So once again, Casio made a geeky watch—but this time, they hid the geekiness on and under the face. Oh, and it does have a stopwatch, alarms, and a “world time” mode (uses the little LCD to show the time in a second timezone). It has a light, but the hands and numbers are phosphorescent, so you can at least see what time it is in the dark without using the battery. Putting it in a sunny window for half an hour is more than enough to keep it running another day.
So we tried to put it on Mason, and his wrist is too skinny for a large-face watch like this one. I’d been wearing an iFitness watch for a while, but it often misses steps and has lately developed a habit of trying to pop out of the band (I lost it for over a week that way). It has a decent sleep monitor, and my phone does a better job of counting steps, so now I wear it at night and the Wave Ceptor during the day.
Thursday, June 27, 2019 2 comments
Adventures of a #techcomm Geek: A Cautionary Tale of an Acquisition
Pull up a chair, young’uns. Today, I bring you a tale from a time when years started with a 1. It was a technologically backward time, before email had yet to completely replace paper memos and USENET or BBSes were how most people “went online.” But the technology we had, we used well. It didn’t require LinkedIn to help empty out an office when things went to #3||.
The 80s were in our rearview, although its music lives on to this day, and the corporate merger and acquisition binge was starting to cool off. Still, buying and selling is the lifeblood of a corporation, and sometimes what they sell is pieces of themselves. So, on to this particular place. None of the players are around anymore, so let’s call it Don’t Care Anymore (DCA). It was a “coulda been” company—I’ve worked at a couple of them. DCA, with some vision and luck, coulda been Cisco. The founder held the (now expired) patent for statistical multiplexing, and they did good business building and selling serial port multiplexers. (Remember, this was a technologically backward time, when some people still had serial terminals on their desks).
But even then, Ethernet was beginning to worm its way out of the server rooms and developer offices, and into the office as a whole. There were competing networking technologies, most notably Token Ring (mainly in IBM shops), and Ethernet at the time required relatively expensive coaxial cable. Many companies still thought serial terminals connected to a VAX or IBM mainframe were adequate; some had PCs for word processing and spreadsheet software (“Lotus 1-2-3,” look it up, kiddies), but the PCs still had a serial connection. You see, networking applications like email, file sharing, and (for forward-looking companies) USENET were things that ran on mainframes.
There were some good ideas going on—the serial concentrators got an Ethernet card, and DCA bought a company making a T-1 transceiver (basically a really high-speed modem that could carry data, voice calls, or any combination). The developers were also working on what amounted to an Internet router. Had executive management given it more focus, things might have been different… but what they called “networking” was only one part of the company, and the execs considered it the unimportant (if original) part. They were focused on selling a hardware/software combo that allowed a PC to emulate an IBM3270 terminal. It was an amazingly high-margin product for the PC market, and the execs had little headspace for anything up-and-coming (despite handwriting on the wall, like a declining market for IBM mainframes and chipsets that would slash the cost of the hardware component to nearly nothing).
So, the execs found a buyer, and sold the networking division to another company. Let’s call that outfit Really-Moronic (R-M), for reasons that shall soon become obvious. Long story short: there was a lot of goodwill on our part, because we felt like we were actually wanted, and they threw it down a rathole.
You see, DCA had a pretty decent benefits package. The Boy and Daughter Dearest were both born when I worked there. Wife-unit was working as well, and her benefits were on par with mine. The upshot was, “childbirth” was covered at 80% for each of us. So one package picked up 80% of the bills, and the other got 80% of the remaining 20%… which meant a $10,000 hospital bill became $400 out of pocket.
It was a good thing we had our kids before the acquisition. R-M’s healthcare package, compared to DCA’s, was terrible. I ran the numbers, and it amounted to a 7% pay cut. It didn’t help that R-M’s VP of HR (are we choking on the acronyms yet?) both misled and outright lied to us about the benefits:
The benefits disparity had to come up during the due diligence that any company has to do when they’re buying another company (or a large part of one). Did R-M think that people would just shrug and take a pay cut on top of the overt disrespect, especially the highly-talented engineers and support staff who do the magic that makes a tech company profitable? Did they really believe that skills aren’t transferable? Or were they so arrogant that they thought it wouldn’t matter?
A round of layoffs hit. One manager, told he had to cut one person in his department, laid himself off. After that, no layoffs were needed; the talent started draining out the door. R-M made a few half-hearted efforts to stem the outflow, paying out a token one-time bonus and hiking the raises to cover some of the difference in the benefits packages. But we were still taking a significant pay cut for a longer commute, and word got back that the new owners considered us “losers and whiners.” That, as you might imagine, did nothing positive on the goodwill front.
Our boss was the first of the documentation department to depart. The new boss was several hours away (by plane), which meant we mostly managed our own affairs. We became Resume Central for the rest of the office, in between our own job hunts and departures. After a few months of searching, I hooked up with a reputable contract house and spent about a year bouncing around from place to place. R-M sank like a stone, and nobody remembers them. Ironically, the parent company retooled and is an important customer of the place I work at now. DCA also disappeared, bought by a competitor who did a better job of understanding the changing landscape.
Moral of the story: employees aren't stupid. They recognize a significant pay cut when it happens, and they recognize a lack of respect. Combine that with a robust tech job market, and you might find money you spent on that big acquisition going down the drain… and taking you (and your CEO’s reputation) with it.
The 80s were in our rearview, although its music lives on to this day, and the corporate merger and acquisition binge was starting to cool off. Still, buying and selling is the lifeblood of a corporation, and sometimes what they sell is pieces of themselves. So, on to this particular place. None of the players are around anymore, so let’s call it Don’t Care Anymore (DCA). It was a “coulda been” company—I’ve worked at a couple of them. DCA, with some vision and luck, coulda been Cisco. The founder held the (now expired) patent for statistical multiplexing, and they did good business building and selling serial port multiplexers. (Remember, this was a technologically backward time, when some people still had serial terminals on their desks).
But even then, Ethernet was beginning to worm its way out of the server rooms and developer offices, and into the office as a whole. There were competing networking technologies, most notably Token Ring (mainly in IBM shops), and Ethernet at the time required relatively expensive coaxial cable. Many companies still thought serial terminals connected to a VAX or IBM mainframe were adequate; some had PCs for word processing and spreadsheet software (“Lotus 1-2-3,” look it up, kiddies), but the PCs still had a serial connection. You see, networking applications like email, file sharing, and (for forward-looking companies) USENET were things that ran on mainframes.
There were some good ideas going on—the serial concentrators got an Ethernet card, and DCA bought a company making a T-1 transceiver (basically a really high-speed modem that could carry data, voice calls, or any combination). The developers were also working on what amounted to an Internet router. Had executive management given it more focus, things might have been different… but what they called “networking” was only one part of the company, and the execs considered it the unimportant (if original) part. They were focused on selling a hardware/software combo that allowed a PC to emulate an IBM3270 terminal. It was an amazingly high-margin product for the PC market, and the execs had little headspace for anything up-and-coming (despite handwriting on the wall, like a declining market for IBM mainframes and chipsets that would slash the cost of the hardware component to nearly nothing).
So, the execs found a buyer, and sold the networking division to another company. Let’s call that outfit Really-Moronic (R-M), for reasons that shall soon become obvious. Long story short: there was a lot of goodwill on our part, because we felt like we were actually wanted, and they threw it down a rathole.
You see, DCA had a pretty decent benefits package. The Boy and Daughter Dearest were both born when I worked there. Wife-unit was working as well, and her benefits were on par with mine. The upshot was, “childbirth” was covered at 80% for each of us. So one package picked up 80% of the bills, and the other got 80% of the remaining 20%… which meant a $10,000 hospital bill became $400 out of pocket.
It was a good thing we had our kids before the acquisition. R-M’s healthcare package, compared to DCA’s, was terrible. I ran the numbers, and it amounted to a 7% pay cut. It didn’t help that R-M’s VP of HR (are we choking on the acronyms yet?) both misled and outright lied to us about the benefits:
- We got yearly bonuses at DCA. When asked about that, he replied “Sure, I get a bonus.” He neglected to mention that only management got bonuses. Deliberately misleading. So on top of the 7% pay cut on the healthcare front, we lost a bonus averaging another 7% per year.
- Asked about the healthcare package, he replied “it’s comparable to yours.” An outright lie, unless he meant “our package looks terrible by comparison,” or management had a better package.
- They moved our office to Dunwoody, claiming it was a more central location—another lie, they chose the office to avoid building out a computer room. One of the things people liked about DCA was that exurbia had little traffic. It was an easy commute. People moved nearby to take advantage of low(er) housing costs. Dunwoody added a good half-hour or more to the commute time, each way. We shared a high-rise with a couple other companies, including AT&T. Ma Bell’s kids were really nice people, who invited us to their company BBQs and the like. Having good corporate neighbors took some of the edge off the relocation, but certainly not enough to make up for the increased commute time.
The benefits disparity had to come up during the due diligence that any company has to do when they’re buying another company (or a large part of one). Did R-M think that people would just shrug and take a pay cut on top of the overt disrespect, especially the highly-talented engineers and support staff who do the magic that makes a tech company profitable? Did they really believe that skills aren’t transferable? Or were they so arrogant that they thought it wouldn’t matter?
A round of layoffs hit. One manager, told he had to cut one person in his department, laid himself off. After that, no layoffs were needed; the talent started draining out the door. R-M made a few half-hearted efforts to stem the outflow, paying out a token one-time bonus and hiking the raises to cover some of the difference in the benefits packages. But we were still taking a significant pay cut for a longer commute, and word got back that the new owners considered us “losers and whiners.” That, as you might imagine, did nothing positive on the goodwill front.
Our boss was the first of the documentation department to depart. The new boss was several hours away (by plane), which meant we mostly managed our own affairs. We became Resume Central for the rest of the office, in between our own job hunts and departures. After a few months of searching, I hooked up with a reputable contract house and spent about a year bouncing around from place to place. R-M sank like a stone, and nobody remembers them. Ironically, the parent company retooled and is an important customer of the place I work at now. DCA also disappeared, bought by a competitor who did a better job of understanding the changing landscape.
Moral of the story: employees aren't stupid. They recognize a significant pay cut when it happens, and they recognize a lack of respect. Combine that with a robust tech job market, and you might find money you spent on that big acquisition going down the drain… and taking you (and your CEO’s reputation) with it.
Sunday, May 19, 2019 1 comment
Fixing supper
The local Kroger recently set up a refrigerated kiosk with “Home Chef” meals. These are boxed meals with two servings, running $17-$20 per box depending on what’s in the box. I’ve seriously been considering setting something up with Hello Fresh, or any of the myriad other players in this space, so I picked up a box to see how things would go. It featured (boneless) pork chops, mashed potatoes, and snap peas. Sounded pretty good, anyway.
Saturday evening, I got the box out and got to work. Now I had expected everything to be mostly ready to go—sure, I’d have to fire up the oven and what-not—but reality smacked me over the head with a raw pork chop. What was in the box was: raw ingredients, and a recipe. I had to string the pea pods, cut up two whole potatoes, put the breading on the pork chops, and cook the sauce. So what this amounted to was, a box of raw ingredients and a recipe card. The card said this was “intermediate” difficulty (gee, that would have been nice to put on the outside of the box), but I didn’t have any trouble putting it together. My technical writer (a/k/a work) side pointed out where the recipe sequence could be improved. The recipe did say to add some stuff like olive oil, salt, and pepper. I substituted NoSalt for the salt, and nothing turned weird colors or exploded.
Except that midway through cooking the potatoes (that I had to dice up myself), I realized I’d forgotten the second spud. In an inspired moment of panic, I cut up Tater#2 and threw it in the microwave for 3 minutes, then chucked it in the pot with the other one. This was the first time in my entire life that I made mashed potatoes from scratch, and in the end it was okay.
So was the rest of it. It actually turned out to be a pretty pleasant meal; we had our dinners, and Charlie sat between us and deconstructed a liverwurst sandwich. (Hey, if he eats the meat before the bread, fine.) The wife isn’t a big fan of snap peas, but Mason will have a side dish when he comes home (he went home with The Boy tonight). She also pointed out that russet taters are white, and you need to peel white potatoes (red potatoes are fine if you include the peels). The recipe card said “cut up the potatoes,” and the picture showed the peels still on, so that’s how I went. I thought the cream sauce that the chops floated on did a fine job of mitigating that bitter taste that comes with russet peels, but what the package provided wasn’t enough to cover them.
The upside is, the recipe card provides the ingredients list… so I can do this again, and improve on things instead of buying the box. Maybe I’ll double the recipe so there’s four servings (which would cover Mason plus some leftovers for work), and double-double the sauce/gravy recipe. Substitute red potatoes for the russets, or peel the russets.
Anyway… if this is what pre-packaged meals offer, I don’t see a lot of value. In the end, I might just mosey over to Publix instead. They provide recipes for meals like this, and give you the list for all the stuff you need (some of which you may already have). No pretense, and (especially) no markup for what amounts to packaging. But it was a valuable experience. Now I know what to do with Panko breadcrumbs, I can smash potatoes with the best of 'em, and maybe I’ll substitute a carrots/onions combo for the snap peas if I make this again. I’m sure it will end up with a lot less sodium than the original.
In the end: three stars. The food was fine, but doing some of the prep work would have been nice. I’m certain the value proposition is heavily weighted in favor of buying the ingredients individually.
What I really need to do is go back to my single days: plan out the meals for the week, figure out what I don’t have, then shop accordingly.
Saturday evening, I got the box out and got to work. Now I had expected everything to be mostly ready to go—sure, I’d have to fire up the oven and what-not—but reality smacked me over the head with a raw pork chop. What was in the box was: raw ingredients, and a recipe. I had to string the pea pods, cut up two whole potatoes, put the breading on the pork chops, and cook the sauce. So what this amounted to was, a box of raw ingredients and a recipe card. The card said this was “intermediate” difficulty (gee, that would have been nice to put on the outside of the box), but I didn’t have any trouble putting it together. My technical writer (a/k/a work) side pointed out where the recipe sequence could be improved. The recipe did say to add some stuff like olive oil, salt, and pepper. I substituted NoSalt for the salt, and nothing turned weird colors or exploded.
Except that midway through cooking the potatoes (that I had to dice up myself), I realized I’d forgotten the second spud. In an inspired moment of panic, I cut up Tater#2 and threw it in the microwave for 3 minutes, then chucked it in the pot with the other one. This was the first time in my entire life that I made mashed potatoes from scratch, and in the end it was okay.
So was the rest of it. It actually turned out to be a pretty pleasant meal; we had our dinners, and Charlie sat between us and deconstructed a liverwurst sandwich. (Hey, if he eats the meat before the bread, fine.) The wife isn’t a big fan of snap peas, but Mason will have a side dish when he comes home (he went home with The Boy tonight). She also pointed out that russet taters are white, and you need to peel white potatoes (red potatoes are fine if you include the peels). The recipe card said “cut up the potatoes,” and the picture showed the peels still on, so that’s how I went. I thought the cream sauce that the chops floated on did a fine job of mitigating that bitter taste that comes with russet peels, but what the package provided wasn’t enough to cover them.
The upside is, the recipe card provides the ingredients list… so I can do this again, and improve on things instead of buying the box. Maybe I’ll double the recipe so there’s four servings (which would cover Mason plus some leftovers for work), and double-double the sauce/gravy recipe. Substitute red potatoes for the russets, or peel the russets.
Anyway… if this is what pre-packaged meals offer, I don’t see a lot of value. In the end, I might just mosey over to Publix instead. They provide recipes for meals like this, and give you the list for all the stuff you need (some of which you may already have). No pretense, and (especially) no markup for what amounts to packaging. But it was a valuable experience. Now I know what to do with Panko breadcrumbs, I can smash potatoes with the best of 'em, and maybe I’ll substitute a carrots/onions combo for the snap peas if I make this again. I’m sure it will end up with a lot less sodium than the original.
In the end: three stars. The food was fine, but doing some of the prep work would have been nice. I’m certain the value proposition is heavily weighted in favor of buying the ingredients individually.
What I really need to do is go back to my single days: plan out the meals for the week, figure out what I don’t have, then shop accordingly.
Labels:
food
Thursday, May 16, 2019 No comments
Adventures of a #techcomm Geek: Sharp Edges when Rounding
One of the advantages of using a text-based markup grammer for documentation—these days, often XHTML or some other XML, but could be Markdown, Restructured Text, Asciidoc, or even old-sK001 typesetting languages like troff or TeX—is that they’re easy to manipulate with scripts.
There are quite a few general-purpose scripting languages that do a fine job of hunting down and acting on patterns. I’m conversant with Perl, and am learning Python; but when I need to bang something out in a hurry and XML is (mostly) not involved, Awk is how I hammer my nails. Some wags joke Awk is short for “awkward,” and it can be for those who are used to procedural programming. Anyone exposed to event-based programming—where the program or script reacts to incoming events—will find it much more familiar. Actually, “awk” is the initials of the three people who invented it: Aho, Weinberger, Kernighan (yes, that Brian Kernighan, he who also co-invented the C language and was a major player on the team that invented Unix).
Instead of events, Awk reacts to patterns. A pattern can be a plain string, a variable value, a regular expression, or combinations. Other cool things about Awk:
Okay. I told you all that to tell you this.
I’m working on something that extracts text from a PDF file, and formats it according to rules that use information such as margin, indent, and font. It requires an intermediate step that transforms the PDF into a simple (but very large) XML file, marking pages, blocks, lines, and individual characters.
“But wait a minute!” you say. “I thought Awk only worked on text files. How does it parse XML?”
Like many useful utilities first released in the 1970s, Awk has been enhanced, rewritten, re-implemented from scratch, extended, and yet it still resembles its ancestral beginnings. The GNU version of Awk (commonly referred to as gawk) has an extensions library and extensions for the most commonly-processed textual formats, including CSV (still beta) and XML. In fact, the XML extension is important enough that gawk has a special incantation called xmlgawk that automatically loads the XML extension.
The neat thing about xmlgawk, at least the default way of using it, is that it has a very Awk-like way of parsing XML files—it provides patterns for matching beginnings of elements, character data, and ends of elements (and a lot more). This is basically a SAX parser. If you don’t need to keep the entire XML file in memory, it’s a very efficient way to work with XML files.
So. In most cases, I only need the left margin of a block (paragraph). Sometimes, I need the lowest extent of that block as well, to throw out headers and footers. I need to check the difference between the first and second line (horizontally), and possibly act upon it.
In the document I used for testing, list items (like bullets) have a first line indent of –18 points. “Cool,” I said. “I can use that to flag list items.”
All well and good, except that it only worked about 10% of the time. I started inserting debugging strings, trying to figure out what was going on, and bloating the output beyond usefulness. Finally, I decided to print the actual difference between the first and second lines in a paragraph, which should have been zero. What I found told me what the problem was.
In other words, the difference (between integer and floating point numbers) was so miniscule as to matter only to a computer. Thus, instead of doing a direct comparison, I took the difference and compared that to a number large enough to notice but small enough to ignore—1/10000 point.
And hey presto! The script behaved the way it should!
It’s a good thing I’ve been doing this at home—that means I can soon share it with you. Ironically, it turns out that we might need it at the workplace, which gives me a guilt-free opportunity to beta-test it.
There are quite a few general-purpose scripting languages that do a fine job of hunting down and acting on patterns. I’m conversant with Perl, and am learning Python; but when I need to bang something out in a hurry and XML is (mostly) not involved, Awk is how I hammer my nails. Some wags joke Awk is short for “awkward,” and it can be for those who are used to procedural programming. Anyone exposed to event-based programming—where the program or script reacts to incoming events—will find it much more familiar. Actually, “awk” is the initials of the three people who invented it: Aho, Weinberger, Kernighan (yes, that Brian Kernighan, he who also co-invented the C language and was a major player on the team that invented Unix).
Instead of events, Awk reacts to patterns. A pattern can be a plain string, a variable value, a regular expression, or combinations. Other cool things about Awk:
- Variables have whichever type is most appropriate to the current operation. For example, your script might read the string “12.345,” assign it to
x
, then you can use a statement likeprint x + 4
and you’ll get 16.345. - The language reference (at least for the original Awk) fits comfortably in a manpage, running just over 3 pages when printed. Even the 2nd edition “official” reference is only 7 pages long.
- It’s a required feature in most modern Unix specifications. That means you’ll always have some version of Awk on an operating system that has some pretensions to be “Unix-like” unless it’s a stripped, embedded system. On the other hand, even BusyBox-based systems include a version of Awk. Basically, that means Awk is everywhere except maybe your phone. Maybe.
Now what am I going to do with it? |
Okay. I told you all that to tell you this.
I’m working on something that extracts text from a PDF file, and formats it according to rules that use information such as margin, indent, and font. It requires an intermediate step that transforms the PDF into a simple (but very large) XML file, marking pages, blocks, lines, and individual characters.
“But wait a minute!” you say. “I thought Awk only worked on text files. How does it parse XML?”
Like many useful utilities first released in the 1970s, Awk has been enhanced, rewritten, re-implemented from scratch, extended, and yet it still resembles its ancestral beginnings. The GNU version of Awk (commonly referred to as gawk) has an extensions library and extensions for the most commonly-processed textual formats, including CSV (still beta) and XML. In fact, the XML extension is important enough that gawk has a special incantation called xmlgawk that automatically loads the XML extension.
The neat thing about xmlgawk, at least the default way of using it, is that it has a very Awk-like way of parsing XML files—it provides patterns for matching beginnings of elements, character data, and ends of elements (and a lot more). This is basically a SAX parser. If you don’t need to keep the entire XML file in memory, it’s a very efficient way to work with XML files.
So. In most cases, I only need the left margin of a block (paragraph). Sometimes, I need the lowest extent of that block as well, to throw out headers and footers. I need to check the difference between the first and second line (horizontally), and possibly act upon it.
In the document I used for testing, list items (like bullets) have a first line indent of –18 points. “Cool,” I said. “I can use that to flag list items.”
All well and good, except that it only worked about 10% of the time. I started inserting debugging strings, trying to figure out what was going on, and bloating the output beyond usefulness. Finally, I decided to print the actual difference between the first and second lines in a paragraph, which should have been zero. What I found told me what the problem was.
diff=1.24003e-18
In other words, the difference (between integer and floating point numbers) was so miniscule as to matter only to a computer. Thus, instead of doing a direct comparison, I took the difference and compared that to a number large enough to notice but small enough to ignore—1/10000 point.
And hey presto! The script behaved the way it should!
It’s a good thing I’ve been doing this at home—that means I can soon share it with you. Ironically, it turns out that we might need it at the workplace, which gives me a guilt-free opportunity to beta-test it.
Wednesday, May 15, 2019 No comments
The Dresser Purge
In the brief two years I was on my own, I concluded 15 changes of clothes was the ideal number. It let me do laundry every two weeks, with one extra pair just in case I had to postpone laundry day.
Clothes accumulate, like everything else, and these days I have a lot more than 15 changes. And somehow, laundry day is twice a week—actually, that makes sense. Four people in FAR Manor means four times the laundry, right?
After the Great Closet Purge, I started putting out of season clothes in a storage bin I kept in the closet, to relieve pressure on the bulging dresser. This worked for a while.
But the warm weather got to Sector 706 couple weeks ago, and I got the bin out to swap stuff around. Being about 35 pounds lighter than last year, I tried on shorts… and if I could pull them off without undoing them, and half of them fit the description, they began the purge pile. Then I tried shorts that wintered over in the dresser (because the bin was crammed full). All in all, I shed eight pairs of shorts, including one that still had tags on it. There were also eight pairs of swimsuits between the bin and dresser… where did they all come from? I decided three pairs was plenty, and added the rest to the purge pile. I got the now-too-big pants out of the closet and tossed them on.
Then came the T-shirts. I weeded them out, and finally the purge filled a large garbage bag. Except for the three remaining swimsuits, my bottom dresser drawer was empty and the other drawers had headroom. And there was plenty of room for the winter clothes in the bin. But I think the shirts in my closet have decompressed, because now it feels as packed as before. I should probably weed them out again; if I lose a few more pounds, I might be able to go from XL to L.
I still have way more than 15 changes of clothes. Even with more frequent laundry, I probably don’t need to cut down to 8 or 10, though.
Clothes accumulate, like everything else, and these days I have a lot more than 15 changes. And somehow, laundry day is twice a week—actually, that makes sense. Four people in FAR Manor means four times the laundry, right?
After the Great Closet Purge, I started putting out of season clothes in a storage bin I kept in the closet, to relieve pressure on the bulging dresser. This worked for a while.
De-bulging the dresser |
Then came the T-shirts. I weeded them out, and finally the purge filled a large garbage bag. Except for the three remaining swimsuits, my bottom dresser drawer was empty and the other drawers had headroom. And there was plenty of room for the winter clothes in the bin. But I think the shirts in my closet have decompressed, because now it feels as packed as before. I should probably weed them out again; if I lose a few more pounds, I might be able to go from XL to L.
I still have way more than 15 changes of clothes. Even with more frequent laundry, I probably don’t need to cut down to 8 or 10, though.
Subscribe to:
Posts (Atom)