Looking for writing-related posts? Check out my new writing blog, www.larrykollar.com!

Thursday, September 08, 2022 No comments

Cobbled together

Wow, has it really been four years since I discovered the peach tree next to the composter? Not like there was much more to say. The peaches were hard, and the critters stole the entire bunch every year as soon as they started getting ripe. We never did get around to moving it, either.

But, after the clearing out we did, it started getting more sun. I figured there wouldn’t be any this year; the tree started blossoming during a warm spell in January, and you can guess what happened a week later. But later on, as I went out to dump scraps in the composter, I saw it had about a dozen hard fruits on it.

As August rolled around, we moved Chief (the outdoor dog) next to the tree to keep critters away. I started checking every couple of days, felt them begin to soften, saw them start to turn. One fell off, and I took it inside to ripen up in the kitchen window.

A couple weeks ago, the composter run showed me a batch of ripe and nearly ripe peaches! I pulled up the front hem of my T-shirt for an impromptu basket, and harvested the lot before the critters could.

Wife stuck them in the fridge, with assurances that she would make them into something. She was leaning toward peach ice cream, using goat milk so Charlie could have some, but goat milk prices are getting to the point where it might be worth having our own goats. Then Mason got the ro, then the wife did. I considered freezing them (i.e. the peaches), so they would be at least usable for something when we got to them.

Last weekend, she got them out and got going on some peach cobbler. It wasn't huge, because we only had about 10 to work with, but there was enough to go around.

Tastes as good as it looks!

The tree itself is still rather spindly, so I’m still thinking about transplanting it (assuming we get a winter that’s more than Long November again). And I should have grabbed some vanilla ice cream to go with the last of the cobbler.… but it’s pretty darn good on its own.

So even FAR Manor is capable of pleasant surprises. Too bad they’re so rare.


Monday, September 05, 2022 No comments

Adventures of a #techcomm Geek: Go API chapter 2, “No ReST for the weary” (edit#2)

Image source: openclipart.org

Last time I had to deal with an API, it was pulling a vendor’s documentation into our own system. Now, I have to document our own APIs.

OpenAPI, formerly known as Swagger, is quite popular in the ReST API universe these days. And why not? One source builds a website, the hooks, documentation, and everything. At least online. If you want to provide a PDF document describing the API, though, there’s a little more to it.

  • First, all those definition and summary strings need some attention. Where developers involve the technical writers in the process makes a huge difference in effort (at least on the writer side).
  • Second, there’s more to documenting an API call than the definition and summary strings. There are path variables, query variables, examples, and the list goes on.

Fortunately, there are several utilities that extract documentation from an OpenAPI file. For my purposes, Widdershins works best—it produces a complete Markdown file—although it’s nowhere near ideal.

  • One issue was definitely not the fault of the tool. The developers told me of a dozen categories (or tags in OpenAPI parlance) that didn’t need to be documented for customers. Widdershins groups all API calls with the same tag under the same section, and that helps a lot.
  • The second issue could be either Widdershins or my personal preference. I didn’t like the order that Widdershins presented data for each method. There were some other minor issues as well.

I had a big wad of text that was my nail, and awk once again is my hammer. I started pounding. I did consider using a YAML parser for a brief time, but realized Widdershins did a lot of busy work for me. It actually does a pretty good job of building a Markdown document, describing all the method calls and schemas. If only there was a way to fix the presentation order, it would be perfect.

My first goal was to reshuffle the internal sections of each method to get them in the order I wanted. Deleting the unneeded groups, I reasoned, was a one-time thing that I could deal with myself.

My script worked the first time, but scrambled a bunch of things on the second attempt. Worse, doing the search-and-delete on those unneeded sections took more time and care than I’d anticipated. I needed a re-think.

Fortunately, a Computerphile interview with Brian Kernighan (the “K” in awk) came around, right when I needed it. It gave me… if not the key to my problem, a map to the key. In a nutshell, Dr. Kernighan advocates against large, monolithic awk scripts. His 1986 paper Tools for Printing Indexes describes his approach as:

…a long pipeline of short awk scripts. This structure makes the programs easy to adapt or augment to meet the special requirements that arise in many indexes.  

This approach can also be easier to debug, as you can replace the pipeline with temporary files and verify that the output of one stage is correct before feeding it to the next stage. Each stage refines the input further.

So I split the monolithic script into two medium-size scripts:

  • Stage 1a (weed) fixes headings, weeds out unneeded HTML markup (mostly <a name="x"/> tags), and gets rid of those unneeded sections. Having less cleanup already makes this approach worth the effort.
  • Stage 1b (shuffle) re-orders the remaining method descriptions. I learned that the input order is important for making this work; so if future versions of Widdershins move things around, it could break the script and I would need to fix it again.

It takes maybe a second to process the raw Markdown through both stages under Cygwin, which is noticeably slower than a shell under a native POSIX system. I expect my 8 year old iMac would be nearly instantaneous.

Now that I’ve cracked the code, so to speak, more stages are coming.

  • Stage 2 throws out the schema definitions that none of the remaining methods refer to. A pair of scripts identify which schemas needed to be kept, then weeds out the others.
  • Stage 3 fixes cross-references (mostly to schemas). The monolithic Markdown file uses a URL of the form #schemaxyz. Since the ultimate goal is to split the single Markdown file into topics, those URLs need to point to the eventual file name instead. A trio of scripts create file names that correspond to the URLs, replace the original #xyz name with the file name, then shuffle the schema’s description to the top of the topic.

These stages take another second to process… so 13,000 lines of YAML to monolithic Markdown file is about two seconds. The mdsplit script, that splits the methods and schemas into topics and builds a Lightweight DITA (LwDITA) bookmap, takes less than ten seconds to complete. So I’m now at the point where it’s easier to regenerate the entire document if I run into a scripting issue, instead of pushing through the problem. Uplifting the LwDITA to full DITA takes maybe a minute. After the uplift, another script fixes the extensions, changing .md to .dita, and fixing the cross-references.

At this point, I can focus on adding value: adding metadata, grouping related schema definitions, and the like. If I need to regenerate this thing again, I need only run the shell scripts that conduct the Geek Chorus.

Going forward, I’ll need to be able to compare versions, so I can replace topics with actual content changes, or add new topics. At that point, I could hand things off and intervene only when the input changes enough to make a difference. Or, we might decide to ditch the PDF entirely, and that would make things far easier on everyone.

Techcomm geeks never worry about automating themselves out of a job, by the way. There’s always a new presentation format, or new source document formats, or many new ways to streamline workflows. Handing off a system is a triumph; it means we have more time to focus on the next thing.

Edited 5 Sep: I didn’t realize I’d pasted this out of Logseq before going through it and fixing some things. Now we’re up to date.

Edited 7 Sep: All the tweaks have been made, and I now have a turnkey system.

Sunday, August 28, 2022 No comments

Leverage

Every few years at FAR Manor, one of the A/C units begins a horribly loud rumbling. The first time this happened, the wife called an HVAC dude to see what was W0RnG!one… turned out a mouse had hopped into the squirrel cage and got centrifuged to death.

The same thing happened again, not two weeks ago. An adult mouse weighs maybe 2/3 ounce on average, and that tiny bit of weight in the A/C motor can shake the whole freeking manor! Talk about leverage…

We've run out of money, and the wife continued to complain about the noise, so I got Mason to come upstairs with me on Saturday afternoon as the gofer. I had hoped the A/C fan was horizontal, and would let me easily remove any obstruction or imbalance… but no. It's vertical. I had Mason fetch me a mirror, but realized I could use my phone (with flash on) to see what and where I needed to grope with my gloved hand.

Rubber gloves highly recommended


After a couple attempts, I removed the imbalance and dropped it into a garbage bag before putting everything back together. And lo and behold, no more shaking or rumbling.

Ew. Major ew. But dealing with the (increasingly infrequent, thank God) Charlie accidents is little better. I hope Mason is learning how to fix things on his own, too. He has grandiose ideas of how he and his friends are going to live in style, but any money you save on a service call is available for fun stuff.

EDIT: And you can dang well bet, I treated myself to a bowl of Extreme Moose Tracks after that. I deserved it.

Thursday, August 04, 2022 1 comment

New granddaughter!

 Check out G3, for lack of a better blog-name right now…

I haven’t seen her awake just yet.

Man, it's so hard to remember how tiny they are when they’re newborns. After hoisting Charlie all the time, she’s like a feather. But that won’t last long.

AJ is (so far) very much the Big Sister, and even a little territorial. Charlie thinks she’s fascinating, and gets excited when “the baby is coming to our house.”

By the by, my skin isn’t blotchy. There was sunlight coming in through the window to my right, and between it and the overheads the shadows got funky.

Saturday, July 16, 2022 No comments

Pain in the Drain

Ah, Friday. The day you come downstairs after wrapping up reports and shutting down the work laptop for the weekend. Two days of rest, relaxation…

And then you see the contents of the kitchen cabinets, usually under the sink, sitting in a big box on the floor. “The dishwasher is leaking,” the wife said.

That didn’t really make sense to me. There’s a cabinet wall between the cabinet and the dishwasher. If it was the dishwasher leaking, wouldn’t it be coming out in front of the dishwasher? But if the cabinet was wet, it was either the drain line leaking, or the water intake line.

So I got my electric lantern to light up the whole intersection of Under and Sink. Wife started the dishwasher, which happened to be on the drain cycle… and water started shooting out the hole where the drain line went through!

“So what is it?” she asked.

“Most likely, the drain line itself has a hole in it,” I ventured. “But if the drain is at the top of the dishwasher, it could be loose there and shooting water across the drain line.” Which didn’t really sound plausible to me, but it’s unusual for a problem at FAR Manor to actually be the first idea I have.

But unusual doesn’t mean never.

When a drain line looks like this,
it’s time to replace it.

So this morning, I dug up the info about the dishwasher, in case it mattered, then disconnected the intake and drain lines under the sink so we could pull the dishwasher out. As with most things at FAR Manor, it fought until we found the little tabs just behind the tile, holding it in. Pushing down with a screwdriver let them clear the tile and we dragged the body of the dishwasher into the sun LED light of the kitchen. The drain line went all the way down and under the dishwasher. Wife suggested I look under the front, and I found the line coming out a front-facing outlet and curling back. (She was hitting on all cylinders with the ideas this afternoon.)

With drain line and model number in hand, I rolled to Home Despot. Charlie insisted on coming along, and took several micro-naps on the way there and back. Turns out dishwasher drain lines are universal, so I got one and a can of wasp&hornet bomb (more on that shortly). We needed groceries, but Charlie was ready to go home and looked it.

I had some trouble reaching the under-sink drain connection, because the original drain line had an elbow that shortened the turnaround. I had just enough. If I have to pull the dishwasher out again for any reason, I’ll grab a hole saw and put a lower hole in for the drain line—that should give a good foot of slack. The wife wondered if we could put something around the drain line to prevent future wear-through, so we took the piece of rubber we had to cut off the dishwasher end (the universal line has step-down sizes, you cut to the size you need) and slipped it over the other end and pushed it into the hole. Maybe that will keep it happy.

A crude attempt at not having to do this again

So we ran an empty load… and water started coming out from under the dishwasher. Looking underneath, I could see it was shooting out the drain connection at the dishwasher. I replaced the clip-type hose clamp with a worm gear-type, and that (and a few towels) took care of the problem.

Groceries have been got, and the kitchen floor is still dry, so it appears we have saved ourselves a crap-ton of money on a plumber. Getting on and off the floor is a pain at my age, but at least I can do it.

Now that it was dark, it was time to save a crap-ton of money on an exterminator (they quoted us $225 for this job).  Hornets built a large nest above a gable window, and I had to get up on a ladder for even a nominal “27' jet spray” to reach it. I hope it worked, but even with a flashlight trained on the target, I’m not sure the spray reached it. I guess we’ll find out tomorrow. If not, I’ll get the extension ladder and get a lot closer than I’d really like. I hope it doesn’t come to that.

Friday, July 01, 2022 No comments

Our newest resident

Pop, our orange cat, disappeared a few weeks ago. Missing and presumed… you know the drill. :-( KT, the shy and retiring cat, has been slightly friendlier since.

The wife is a dog person, but one of her friends was trying to unload some kittens. So…

Hiya, I’m Miya.

Charlie, who loves pretty much anything that moves, was totally captivated. The wife suggested that I let him name her… so we were hanging out on the porch (where the kitten lives), and I asked him, “What do you want to call her?”

Charlie thought it over for a long moment, then said, “Miya.” (MEE-ya)

“OK… is that M-I-A, or M-I-Y-A?”

A briefer pause. “Y-A.”

Well, it’s slightly more creative than the name I gave a cat at that age: Ia (EYE-a). And I think I did better than Other Brother, who named his cat Yo-Yo. But I digress.

Miya is already nearly twice the size of this picture. She’s thriving, and I hope she’ll do well as a porch cat. She has already figured out how to get up on the table.

Rosie, aka Doofus, aka Stupidog, is (as one might expect) confused. She goes over to the doors to the porch, and looks for Miya. Meanwhile, the kitten is up on a chair near the door, watching the dog, and hops down right in front of her. This usually sets off a startled bark and growl, as Rosie scuttles back from the door. She followed Mason upstairs yesterday, trying to stay relevant. I brought her ball up, and she was happy to fetch it for a bit.

I did bring Miya (and her gear) upstairs earlier this week. I probably won’t try that again, for a while. There was more than enough cat litter to vacuum up once I knocked off work and took everything and everyone back downstairs. Then again, Charlie stayed close and didn’t try to slip downstairs to annoy Mason or get into stuff he shouldn’t… maybe I can put Miya’s litter box in the bathroom? That would help to keep Charlie from playing in it while I’m on a call. Scooping would be simple, with the toilet right there.

Miya has a nice, loud purr, and lets it loose when someone (even Charlie) is holding her. Going out to the porch is just as important (in Charlie’s mind) as going outside, now. Well, I can think of much worse things than hanging out with a kitten and a child. (Much worse, being the illegitimate supreme court.)

Do you have some new critters? Sound off in the comments!

Tuesday, June 21, 2022 1 comment

Wrong Solstice for a bonfire

With the stingy rainfall, and temps well past 90°F lately[1], maybe creeping into triple digits south of Sector 706, you would think it’s summer.

Well, as of today, it is. Top of the year to y’all!

I guess between Memorial Day and Independence Day in the US, we kind of leave the solstice unmarked. On Termag, they call it High Summer, and it’s a week-long holiday. Sorcerers who can and desire travel to Queensport to the annual Gathering of the Conclave for two weeks of business, learning, hanging with old acquaintances (not to mention the occasional Conclave Romance), and cramming their apprentices’ heads full of knowledge.

But I digress. The wife calls this “hay baling season,” and is living the highest honor a farmer has (out standing in her field). Machinery makes this a much less labor-intensive undertaking than in the past, but all that machinery is complex and still needs eyes and hands on it[2]. Modern hay balers in particular are a lot more complex than you might expect (the manual is nearly an inch thick, and not large type). And, you need a tractor to pull it. And a cutter. And a rake (a/k/a “fluffer,” since it fluffs the hay into neat rows so the baler can pick it up). And maybe a truck and trailer to haul the hay to its resting place. And another tractor with a hay fork, to pick up the bales[3] and put them in the barn until they’re needed come winter.

So… to this afternoon. The wife was out standing in her field, when she saw smoke from the direction of another farm, about a mile away. “Not too smart,” she remarked, “it’s too hot and dry to be burning brush.”

This evening, she got a call from one of her helpers. “They were baling at _____’s,” he said, “and their baler caught fire. It torched the tractor, and half the field, too.” Yipe!

The wife points out that hay is exothermic (or “goes through a heat,” as she puts it) as it drys. It’s the main reason she repeatedly tells her helpers to not leave a partial roll in the baler. Her speculation: the people at the other place left a partial roll in the baler overnight, letting it get nice and hot, then that + the heat of the day + friction + the new hay being scooped into the baler = spontaneous combustion, and things got a bit hotter than anyone wanted. Or it could have been a baler malfunction, who knows? I doubt anyone will do a post-mortem to find out.

So think about the farmers, this time of year. Some have lost cattle, others are dealing with fires, and the rest are dealing with all the crap (literal and metaphorical) they have to encounter. Every day is Monday on a farm… and it’s nowhere near August yet.

Since that DALL-E mini thing is all the rage right now, I’ll leave you with its impressions of “hay baler on fire.” [4]


[1] I think Sector 706 is getting the good end of climate change, so far. Despite the current hot weather, we’ve been not nearly as hot as many surrounding regions… not to mention out west.

[2] So the wife has about three helpers. I joke about her hanging out with sweaty men, but she’s sweating just as much.

[3] Round bales are nearly 6 feet (about 1.5m) diameter, and about 4 feet (1.2m) wide. The only way you’re going to move those by hand is if you can roll them downhill.

[4] The top-center image has a vague resemblance to our baler.

Tuesday, May 24, 2022 No comments

AJ, office buddy

One thing about working at home, you don’t have so many distractions. But sometimes, the wife has to go do something on the farm while she also has AJ through the weekdays (while Daughter Dearest is teaching). So that means AJ comes upstairs on occasion, to hang out with Granddad while he’s working.

AJ has figured out the whole office deal from watching me. The “console” space heater I used to keep my legs warm through the winter became her “desk,” and she has a stool for a chair.

I haven’t even finished breakfast,
and I have to answer this email!

Sometimes, she takes the call.

Hello. Yes, this is Tech Support.

And if I get out of my chair, for more than a second, guess what happens?

You call that information architecture? Jeez. Here, let me fix it.

The school year wraps up this week. That means DD will be home, and AJ won’t be around. But Charlie will likely be my substitute office buddy through the summer.

Who are your office buddies? Comments are open—give us some links!

Thursday, May 12, 2022 3 comments

Months go by…

…and I haven’t been posting. I'll backdate a few things, starting with a trip to Mom’s for Spring Break, so scroll on down to see what’s new (or nearly new).

Friday, April 08, 2022 No comments

Going home (bleah)

We got out on time, but traffic suxxxxxxed. We lost an hour overall. I was hoping to get out before the mad weekend rush, but no such luck.

I poked Mason awake on the home stretch, and suggested he get his shoes on so he could run inside when we got home. He was still dressed for Florida, and it was 41°F at home.

Charlie was still up when we got here, and laughed when I hugged him. Then I put him to bed.

The Orange Crate averaged about 30MPG on the way down, and a shade under 29MPG on the way home. Downhill and uphill.

And one final pic of the boys on the beach:

It beat being at the manor.


Wednesday, April 06, 2022 No comments

Boogie in the surf

We took the boogie board to the beach today. Mason actually did pretty good.


A guy about my age had a surfboard, and offered to let Mason try it. That was fun to watch.


He told me later, “I just hang out and try to get people hooked on surfing.” Nice work if you can get it, dude. :-D

After lunch (well, before lunch actually), Mason was worn out and just wanted to hang around. That was OK with me.

Supper was ribs and shrimp, and it was really good stuff. Solar brought coleslaw from KFC (which seems to be considered pretty good here), and Mom baked beans with bacon.

After supper, Mom and Mason went for a walk, and left Solar with me. He got a new-to-him truck to replace his van (it’s rusting away), and gave me the run-down on what he was doing to clean it up. Maybe we should see if we can sell The Boy’s old Acura, the way used car prices are now. Solar said the stealership offered to buy back his Civic for more than he paid for it.

Mom was talking about how much she streams stuff these days. I told her about the wife binging The Good Place, and we watched the first four eps. I kind of wish she had talked me into watching it with her when she started.

Raining tomorrow. We had better luck than I’d expected with weather, and it will be clear for the Friday drive home. So tomorrow afternoon, I’m going to hang with Solar while Mom takes Mason to a movie or other indoor entertainment.

Wife texted late in the afternoon... big storm at home knocked out power. I told her where to find my portable charger, and what it looks like. 

Tuesday, April 05, 2022 No comments

Parks

The morning started out, um... interesting. Wife sent me a pic of her iMac screen, showing a blinking question mark over a folder. Figuring she just needed a repair, I looked up the “what to do” stuff and sent it to her.

So far, this week, we haven’t managed to go to the pool. But Mom’s cat, the one Mason has tortured since he was 2, decided to be nice. Mom thinks she’s trying to clean up her act enough to get to Cat Heaven.

I’m trying to enjoy this.

Mason and I hiked over to the nature park this morning, while Mom was trying to get her library card straightened out (or renewed). We talked with a woman who had a red-tailed hawk and was giving him some air. I told her about the ones that live near the manor. We walked out onto the pier, and Mason openly wondered how safe it was. I pointed out new boards, showing him that they are maintaining it. He saw some interesting marine life, anyway.

Since last time we were here, they’ve “paved” the walkways with rubber shavings, bound together somehow. I forgot to ask them whether they fused the shavings together with heat or used some kind of compound. In any case, it puts a spring in your step.

After lunch, we went to Largo Park so Mason could goof off on the playground. There weren’t many kids there, let alone any his age, so he got bored pretty quickly. Mom thought the locals were on spring break this week, but we passed a middle school that was full of cars and bicycles, and they were setting up crossing guards, so I guess it’s not this week, anyway.

We went to the end of Walsingham for ice cream. Kind of nice, after all the walking we’d been doing. Mason wanted to browse the shops, so I agreed we could do that and walk home, and Mom could just motor on back. We went south until we ran out of shops (where the road runs alongside the water), then north a ways.

Then I grilled some burgers on the grill out back. I had to scrub the spatula with the wire brush, trying to get some of the rust off. Mom said the burgers were perfect, so that was a win. I thought they were pretty good, too.

On the way back from the park, Daughter Dearest texted me about the wife’s computer. They still hadn’t gotten it to cooperate. DD ended up calling me; she thinks the hard drive might be fried, and mine was dying, so she might be right. I replaced mine, so I should be able to do hers.

Of course, her computer had to pick this week to take a dump.

Monday, April 04, 2022 No comments

A day (of several) at the beach

Mason and I went to the beach this morning. We brought The Boy’s old skimmer board, and Mason actually did better on it than his dad did. 



Mason didn’t bring a chair, but he did have a shovel… and that worked out fine.

Custom fit!

After lunch, we went to Publix for stuff. I needed cherry juice, and there were other things we needed. Mom heated some rotisserie chicken for supper, and did little Yukon Gold potatoes with some good seasoning. A fruit salad rounded things out. 

Solar came, and we all hung out for a while. After Solar left, Mom got out the dominoes and we played Mexican Train. I won the first round, and Mason won the second after getting deep in the hole to begin with. What a comeback!

Sunday, April 03, 2022 No comments

We’re in Florida—no foolin’!

Well, Mason and I are. Wife can’t leave the farm unattended at the moment, and Charlie has some therapy appointments he couldn’t miss. Mason had a snit when I opted for the Orange Crate instead of the Miata, but he was bringing his dad’s old skimmer board and a boogie board, and they wouldn’t have fit. I brought the drone, in case there was a day with not much wind.

I was hoping to leave around 10, and we did manage to get out around 10:30. I've observed before, the fewer people you have in the car, the less late getting out you'll be.

I was hoping that leaving on Sunday would shield us from the traffic jams... nope. It was mostly slow from the beginning of the express lanes, almost to the rest stop just before taking the Macon bypass. Then there was another stretch of heavy traffic from Valdosta down to the state line. One or two more in Florida (im)proper.

But we’re at Mom’s, and Solar has a break!

Monday, February 21, 2022 No comments

Mad cow, and Paddling about

More rain is headed our way tomorrow afternoon, but the weekend gave us a pair of not-quite-spring days: a fair measure of sun, and highs of 55°F to 60°F (12*C to 15°C, give or take). Between the farm and Omicron, we didn’t get out much, but sometimes you can find a little fun in the farm work.

Saturday, as any day in winter goes, the wife takes hay to the cows. Depending on the day and time, she takes either me or Mason with her to cut the strings (big round bales). But first, we (and DD’s boys) piled into M.O. the B.B. and went to a farm supply to get fencing. We went west, toward Ellijay, instead of east toward the retail district, because the local suppliers only had 100' rolls of mesh fencing and she wanted 350' rolls. As Mick Jagger sang, you can’t always get what you want, and they had 330' rolls. It mattered only in that her crew had spaced posts for the slightly longer rolls; she still needed three.

They dropped the rolls into the truck’s voluminous backside, using a Bobcat with a forklift attachment. I threw a ratchet strap over the triangular stack, and that was a wise move—the top roll flopped around a bit until it settled down tightly between the other two. There was also a couple rolls of barbed wire, and a bag of chicken feed (one of the renters has a small brood of layers). As usual, M.O. the B.B. went “pfft” at the load (pulling a one-ton trailer doesn’t affect the fuel mileage on that beast, it will give me 21MPG empty or loaded—seeing as the minivan gets 19MPG, that’s kind of impressive).

Pasture cattle
Oh hay! Let’s roll. (My photo)
The fun part was taking hay to the cattle. As the wife was doing her pastoral duty, Blockhead the heifer wandered over toward the hay barn. The gate was open, after all. (Wife has a t-shirt, compliments of DD, that has a sketch of a calf and the caption “Live like someone left the gate open.”)

Blockhead saw me, and froze. “What do you think you’re doing?” I asked her. She saw the open gate, and decided to press the issue by rounding the corner.

“Oh, no you don’t,” said I, and pulled the gate shut.

This is where it gets funny. Blockhead got pissed off, and bucked her way back toward the tractor. As Mik and his aunt observed, cattle are born knowing all profanity, and Blockhead used quite a bit of it through her body language.


That evening, wife made it clear that there were Things That Had To Be Done on Sunday afternoon. She repeated it before church… and Mason, somehow, was surprised to hear about it after church. This has been a long-standing trait on the wife’s side of the family, acting shocked that reality doesn’t conform to their whims, and Mason has it down pat.

Stuff to be done included:

  • Raking debris out of a chokepoint in a drainage ditch
  • Taking feed to the renter’s chickens (I don’t know how we got roped into doing that)
  • Running a couple more rolls of hay out to the cattle
  • Clearing the debris filter over the pond’s overflow pipe (a wire crate—my idea, and a rare idea of mine that the in-laws actually acted on)

Wife was like, “How are we going to get those fence rolls out?”

I suggested, “Use the hay spike on the tractor. Slide it into the hole in the middle and pull it out.”

For once, she realized I had come up with a Good Idea.

So I pulled the rolls out to the tailgate, and she carefully slid the spike in far enough to hoist the fence roll. It turned out that if I used gloves instead of bare hands, I could pull the rolls out to where she didn’t have to worry about catching the tailgate with the bottom spike. That only happened once, and the dents were already there on the tailgate. M.O. the B.B. is a work truck, not a TPC. A few scratches and dents are to be expected. In this case, I don’t think there was any damage.

Mason wasn’t needed for the hay part, although Charlie came along. He likes to bring a construction-equipment toy and play in the dirt/hay while his parents handle the details. Given the coming rain, she dropped much of one roll between the gate and haybarn, so we might have some non-mucky footing through the coming week.

After that, it was Mason’s turn, He was ranting that we gave Charlie the R/C truck he wanted, although he had guided me through the Zon’s pages to the one we got for him. (We missed the two-year anniversary of Charlie’s adoption, but made up for it.) But he came along anyway. He sat in the truck while I cleared the drainage ditch (a small tipped-over tree is catching debris at this particular juncture), but helped a lot with the chickens. The johnny boat “somehow” got bashed in at one corner of the stern, and tore it open. Mason opined that we could hammer it out and patch it with Flex Seal, and that might actually work, but it didn’t solve the immediate issue. So we clattered back home; I grabbed the inflatable kayak, but the pumps were scattered around. Wife finally found the 12V one, and I found the 120V one plus the hose in the camping box (and I don’t know why they ended up there). The hand pump is behind a pile of yard tools in the big garage, as I learned after the fact. Wife made one of her usual comments about putting stuff away, and she was right for a change. I’m not sure why it happened, though.

Anyway. We clattered back down to the pond, and I inflated the kayak while Mason did a little fishing. He got a nibble or two, but no fish. But he was good and ready to hop in when I told him to help me carry the kayak down to the water. We put it next to the dock, took off our shoes, climbed in (one at a time), and I found being slightly off-center was an invitation to ship water. But we paddled out to the overflow pipe, and I cleared off the debris while Mason kept the kayak away from the drain handle.

But we weren’t done yet! We paddled over toward the pump house, where the overflow feeds the pond. Remember, the air is cool, and the water is cold. Mason got the worst of the dripping off the paddles. But we did get a good (if algae-encrusted) five-gallon bucket out of the pond, floating there since Kobold had let it fall in.

We got back to the dock, clambered out, and Mason decided he wanted to solo around the pond. He had been helpful, so why not? He got in, we maneuvered back around the dock, and of course I got pics (and video).


Wife didn’t approve of me letting him solo in the pond, but that kayak has five air chambers—any one of which would keep him afloat long enough to get the fifteen feet (five meters) to shore. Not to mention the seats, attached only with two clips and velcro, and that would have made seven levels of redundancy (two seats). It certainly won’t hurt to bring a couple of floatation devices for future trips, though. And a couple of towels.

After deflating the kayak, we clattered on home. I put the wet stuff in the big garage to dry out, then we got supper. Charlie was already 90% asleep, and he seriously overreacted to dropping some books on his foot as he tried to kickstart his bedtime routine.

Wednesday, February 16, 2022 1 comment

You know it’s mid-February…

…when the daffodils start blooming. This clump is just across the driveway from the front yard.


A good reminder that winter doesn’t last forever. Better days are coming, and more rain for Sector 706 in the short term. At least we’ve had a week and a half to dry out after the last deluge.

I got Mason to get up all the stuff he’s strewn around the back yard, and got all of the outdoor toys in the garage or under the gazebo. The boys are off for “winter break” until Tuesday; I never did think to take a day or two off work, but that won’t stop them from coming upstairs (still, it’s not as distracting as co-workers yapping on phones all around me in the office).


It has been warm enough to get the grill out. Sizzle has one of those pellet-feed smokers with the phone app, and it has eliminated the “not quite done” issues in his BBQ game. Me, I just go with the dual-chamber (gas on the left, charcoal on the right) grills. I did a couple of sirloins from the pasture last week, and it was some of the best steak I’ve had in ages. I didn’t sear it, but Sizzle handed me an 11" cast iron griddle he had left out on the deck to rust up. I took a wire cone brush on a drill to it, to get most of the rust, then followed it up with soaking in Coke overnight. That left the ultra-fine rust residue, and I got that off with a Brillo pad. A couple rounds in the oven with a thin coat of Crisco, and it looks a lot better than it did when I brought it home.

So I can toss it on the gas side of the grill to get it good and hot, and put pretty sear marks on the next meat I grill, or maybe cook bacon and/or sausage on it. I’ll probably take it with next time we go camping, too.

Are you seeing signs of spring? Or getting neglected stuff ready to use again? Comments are open!

Thursday, February 10, 2022 No comments

Sunset over FAR Manor

 …and when I say over, I mean over.


I launched the drone, high (23m, according to the flight log) above the trees to get an unobstructed view of the mountains to the west. You can see the tree platform in the back yard at the bottom center. The light-colored horizontal strip left of center is one of the chicken houses equipment storage sheds.

We’ve been getting pretty sunsets all week, but this was the first evening I had the presence of mind to get an aerial shot. There was a little wind, enough to make it tricky bringing the drone back down, and for the second time I’ve had trouble getting a good GPS lock pre-launch. (The workaround is to turn off the GPS switch on the side of the controller, get the drone up about 20 feet/6m until it finds some satellites, and turn it back on.)

There has been plenty going on, but I’ve often had a hard time motivating myself to share it. I’ll try to do better.

Friday, December 17, 2021 No comments

If the Kludge works, use it

Kludge. Jury-rig (or the variant, jerry-rig). Lash-up. Sunshine Engineering (named for Mr. Sunshine, who bodged lots of things together that I had to straighten out later). Whatever you call it, including the racist ones nobody should have used in the first place, it’s (so the dictionary says) “an ill-assorted collection of parts assembled to fulfill a particular purpose.” Sometimes, the kludge is a necessity; a critical piece of equipment failed, deadlines are looming, and there’s no way to run to a nearby store to find what you need.

So… last week, someone called the wife. Her video business, that hasn't had any significant income in two or three years, still has a listing the in the Yellow Pages. “Can you put VHS video onto DVDs?” As she has done that before, she took the gig. Last time, we hooked a VCR into her commercial-grade DV deck and rolled tape. This time… not so much. The deck wouldn’t stay powered up, and wouldn’t open the tray (she was just passing through, but wanted the tape in there to be out so it wouldn’t interfere). She opined the deck got fried by one of the close lightning strikes we’ve had from time to time, and I couldn’t dismiss the possibility. Meanwhile, I was trying to find our cache of RCA-to-BNC adapters. We found plenty of the BNC-in/RCA-out types, but we needed the opposite. Mal-Wart dot commie carries them, but “not sold in stores.” The Mighty Zon could get us some by Thursday… it was Tuesday, and the wife was in DO SOMETHING NOW mode because she wanted to wrap this up by Friday. But with the DV deck apparently fried, there wasn’t any urgency to get the connectors anyway.

Seems to work fine for old VHS tapes
But! As the wife snarled something about taking her client’s tapes back to her, I remembered finding something else when looking for the adapters: my old Canon ZX-80 camcorder. When I say old, I mean I took footage of The Boy’s high school football games, so at least 15 years. Probably more like 17. The imager crapped out on it a long time ago, but I kept it around because I could at least play tapes into a Firewire connection, view on a tiny screen, or a bigger screen if I plugged in the included DV cable. In other words, it could do everything but take video itself. Being a tech writer, I kept the manual with the camcorder. There were lots of functions I never explored, and just in case…

Well, just in case arrived Tuesday night. I went down the table of contents, and found the vindication of my packrat ways on page 84: Converting Analog Signals to Digital Signals (Analog/Digital Converter). In this mode, you:

  • connect a VCR to the camcorder’s DV cable
  • connect a Firewire cable to the Mac
  • start capture on the Mac, play the tape, and relax
Sure, it’s a kludge, but time was tight. We have better camcorders, but I didn’t have time to find the manuals to figure out how to use them as video digitizers. Here, we hit Snag #2 (or is it #3? I lost count quickly): Final Cut Pro wasn’t capturing the video, or even seeing it. Looking at the documentation, I guessed FCP was too snooty to deal with an early-century consumer camcorder. So I tried iMovie, and iMovie told me:

(link to original)

So I guess iMovie is friendlier to the older, not so well-heeled, camcorders of the world. Since FCP has no problem importing iMovie assets, we were on the way.

Or so I thought. Snag (int(rand()*4))+3 came in this afternoon. Wife was again ranting about giving up and taking the tapes back to the client, because she couldn’t burn a DVD. I seem to remember us using Compressor to create MPEG-2 video, then using Toast to burn that, but we couldn’t remember the incantations and she wasn’t inclined to take the extra step. So I started troubleshooting. The DVD Burner app icon started bouncing, so I clicked it. “Couldn’t burn (click here for more information).” Clicking the helpful link told me what the initial “insert dual-layer disc” message should have told me in the first place: the video was too long to fit.

Solution: cut the video to 80 minutes so it fits on a DVD. Splitting video and moving it around is one of FCP’s strong suits, so the wife got to work on it.

As I type (10:30pm Friday evening), she has all the video on the system, and two or three DVDs burned. She’s behind schedule, but has a clear path to completion.

If the kludge works, use it… at least until you get a more elegant solution in hand. We’ll look into replacing the DV deck—looks like we might find something that works for around $400—and if she’s going to start back on her video work, it will pay for itself soon enough. Then, maybe, we can look at modernizing the intake end of things (i.e., the commercial-grade camcorders that are at least as old as that ZX-80). As I understand it, a lot of the newest models skip the tape drive and go directly to a SD card with some enormous amount of capacity. If that’s true, importing would mean sticking the SD card into the back of the iMac and copying the file. At that point, who needs a DV deck?

Tuesday, December 07, 2021 No comments

Computer-Aided Weeding

A couple weeks ago, I finally decided to start pulling in all the notes I’d saved up from Evernote and Google Keep into Logseq. I started with Evernote, just because.

First, I had to update the Evernote app on my iMac, so I could actually access my stuff. That should tell you how long it’s been since I actively used it.

After exporting, I used a utility called Yarle to convert the notes in each notebook to Markdown.

Now the hard part: deciding what I wanted to keep, and what to toss. The even harder part: cleaning up the sloppy mess that were most of those individual pages. There were over 400. Cleaning them up in Logseq was do-able, but slow. Lots of repeated stuff. This wasn’t a job for an outliner, it was a job for a high-powered text editor like Vim or Atom.

Unlike Vim, Atom sports a sidebar that displays all the files in the directory, and its regular expression parser recognizes newlines. So I could find blank strings using the expression ^- *\n (which means, “look for a line starting with a dash, followed by zero or more spaces, then a new line”) and get rid of them.

But the even bigger time-saver: realizing a lot of those entries were long outdated (some dated back to 2013) and deleting them. By the time I was done with that pass, I had 109 “keepers” left. From there, it was a matter of applying search and replace to fix common issues.

So with 3/4 of the pages deleted, and much of the boilerplate stuff from the remaining pages deleted as well (I just need the content, the source, and some info about the author). That means my assets folder has 4852 items in it, and most of them were no longer being linked to.

Now… am I going to make 4852 passes through my pages, by hand, to see if a pic can be deleted?

The shell (aka Terminal) is my machine gun for blasting a job like this.

# assume we're in the assets directory

mkdir -p ../assets_removed

for i in *; do

  grep -q "$i" ../pages/* || mv "$i" ../assets_removed

done

Let’s pick this apart, for those who need it.

The first line is just a comment. An important one, all the same. You need to be in your Logseq database’s assets directory for this to work correctly. BAD THINGS will happen otherwise! One of the nice things about using MacOS: if I eff something up, I can pull it out of the Time Machine backup and try again.

Next, we make a directory called assets_removed at the same level as the assets directory. Just in case we make a mistake, you know. The -p option is there to make the script shrug and move on if the directory already exists (if we’ve been here before, for example).

The third and fifth lines begin and end a loop, going through each of those >4800 graphic files.

Inside the loop, we search for the file name in the pages. The -q option is exactly what you want for a script like this; it returns success if grep finds the string and failure otherwise. The || (two vertical bars) means “execute the next part if it fails” (in this case, fails to find the file name)… and the next part moves the unused file to the assets_removed directory.

And I ended up with 255 files (out of nearly 5000) that were actually being used. The other ones are out of the way, and can be safely deleted once I verify that none of them are needed.

[UPDATE: After stepping through the pages again, I found 18 “false negatives” that had to be dragged back into the assets folder. That’s why you move them out of the way, instead of just nuking them.]

It took about a minute to grind through the assets directory, and a couple of minutes to set up the script, but that beats the heck out of hours (or days) doing it by hand! I’m fond of saying, I’m lazy enough to get the computer to do my work for me. It doesn’t always pay off this big, but it does pay off.

Off to get the Google Keep notes…

Thursday, November 18, 2021 No comments

Some updates to recent happenings

Backyard play area: I got another pair of eyebolts and hung the old bucket swing beside the nest swing. Charlie has long outgrown its previous iteration, but it’s perfect for AJ. She was a little apprehensive at first, as it’s fairly high off the ground; but once she realized there was a gate of sorts, she was all for it.

Up high is where the fun is!

Balloon: The planning commission met Tuesday to hear about the proposed tower. A lawyer for Verizon came, along with a rep from the company they’re outsourcing the tower ownership to. (I’m not sure quite what the deal is with that, if it’s a way to shield Verizon from any liability issues with the tower, or what.) Anyway, the neighbor to whom I sent the photo invited me to ride with them to the hearing.

So they had a nice little presentation, justifying why the tower was needed. They wanted both a Special Use permit (to put the tower on a piece of agricultural property), and a variance. Towers have to be spaced 3 miles (4.8km) apart here, and the location is 220 feet (67m) short of 3 miles. The tower is spec’ed at 190 feet (58m) high, plus 5 feet (1.6m) for a lightning rod, just short of the height that requires flashing lights.

After they finished, they invited members of the public up to speak for or against the tower. There were only a handful of citizens, and we were all nearby residents. Personally, it's “not my dog, not my fight.” The trees along the road would hide it for me, even if it did have a blinkenlight up top. But being a good neighbor, sometimes, means supporting your neighbors when they feel strongly about an issue (to a point… if they think #Dolt45 is the second coming of Christ, I’m not supporting that).

Anyway, the commish for our district is also the chairman, and said he thus wouldn’t be voting (although he seemed to lean toward supporting it). The others were less convinced, and thus both the Special Use and variance were voted down 3-0 (with the chairman abstaining). Shocker!

As we stood around outside, chatting about the next move, our commish came by and said, “You’ll need to be here December 16 for the county board meeting.” The board can, as I gather, overturn the planning commission's decisions… which means it’s more of a recommendation than a decision. I guess that means we (the neighborhood) need to come up with our own counter-presentation. I don’t have any qualms about public speaking; I’ve done a dozen or more sermons at church, so I’ll take point on this one.

One salient point, that one of the neighbors brought up: after they get the 190-foot tower up, what will stop them from coming back later and insisting they need a bigger tower at that spot? Then we get Das Blinkenlights, and maybe it is my dog in the fight. They should have chosen our pasture to put that stupid thing up in… it wouldn’t have even bothered the cows.

The thing is, Verizon could short-circuit all the opposition with a little honey. The local phone company laid a bunch of fiber along the road, going straight to the proposed tower site, and it’s mostly dark. If they offered to light up that fiber and give everyone a far better Internet connection (for free) than our flaky DSL, they might end up with one or two holdouts. Stay tuned, there will be more next month. I'm sure Goliath isn’t done with us yet.

LinkWithin

Related Posts Plugin for WordPress, Blogger...