This One’s for Mom

A few weeks ago I was in a fabric store with the Official Sweetie of Muddled Ramblings and Half-Baked Ideas. My mission was to select the fabric for my holiday shirts. While I was poring over the seasonal offerings, and surprising OS with my sparkly decisions, there was a woman in the same section with her kid installed in her shopping cart.

That kid never stopped talking, and I’d guess that 90% of all utterances were questions. Mom tried to answer most of them, but deflected many.

I was in a time warp, looking at me and my mother, possibly on the shopping trip where I picked out the double-breasted suit pattern, the busy blue/purple pinstripe fabric for the jacket, and the fuchsia double-knit for the trousers of my Easter outfit when I was eight years old, give or take.

OSoMR&HBI has seen pictures of that outfit, so sparkly reindeer shirts should not have surprised her quite so much, my normal attire notwithstanding. You gotta sparkle for the holidays.

Anyway, while I was poking through the fabric options, the kid was offering up a never-ending stream of questions. Based on some of the questions, I got the feeling that we were on similar missions. While I can’t specifically remember any of his fabric-related questions, they were in the vein of “Why is it snowing on the dog?” Questions that really don’t have an answer.

Then for a while he asked simple mathematical questions, which his mother answered easily. “What is five plus fifteen?” “What is five plus twenty?”

Then he dropped the bomb. “What number do you get when you add up all the numbers?”

Getting no swift answer from his mother, the kid grappled with the question himself for a little while, naming a couple of very large numbers, quieter now as he realized that those were numbers too, and part of all the numbers, sensing rather than knowing that he was touching on a deeper sort of mathematics. He had asked a question it took mankind almost our entire history so far to even know how to ask, let alone how to answer.

I did not go over and accost mother and son and congratulate the kid on asking a massively awesome question, and tell the frazzled mom that her child was destined to grow up to be like me. She’ll find out soon enough, for better or for worse.

But I got to climb into a time machine that day, and see myself and my patient mother from the point of view of an aging man who still likes to sparkle now and then. It made me irrationally happy to know that in fabric stores, the impossible questions were still being asked.

2

The Guy on the Corner

I grew up in a small town, but one of my first visits to a large city carries with it an enduring memory. A man, skinny and bedraggled, on a street corner, shouting obscenities into his hat. I was just a kid back then, and didn’t understand the tragedy that man represented. I was just perplexed. I learned, somehow, later, to be afraid of people like that — maybe the reaction of the people around me that day informed that fear. Which is awful.

Yesterday, walking down the street in San Jose, there was another man standing on a corner shouting into the air, a stream of profanity. I just assumed he was on the phone.

2

I am a Juror

I have been asked by my community to sit in judgement of a neighbor. Neighbor in this usage is a broad term; the plaintiff is accused of crimes that happened in Santa Clara County, and that is where I live. But Neighbor here is not geographical. Neighbor in this case means someone who shares values similar to mine. If the dude down the street sacrifices virgins to the Great Lord of Darkness, he is not my neighbor, proximity notwithstanding.

When I sent notice to the folks who work around me that I would be out of circulation for a while, one response I got was “High five for doing your civic duty.”

I wrote back, “I actually feel strongly about that; juries are in fact a bulwark against tyranny.”

And I believe that. I believe that jury duty is a sacred trust, a bond between citizens, the last line of the law in a society governed by law. I am proud to be selected as a juror, vetted by both the people and the defense, and each has entrusted me with keeping an open mind.

Maybe this case is not one that defines our democracy. But maybe every decision by every jury does define who we are. I want to explore this more, but out of respect for the process, I’ll shut up now.

2

Two Things I Learned Today

  1. MapQuest still exists!
  2. MapQuest really sucks.

I learned the former when using the Web site to report for jury duty in Santa Clara County. Links to the locations of the courthouses take you to MapQuest.

For a brief explanation of the latter, MapQuest is overrun with intrusive advertising, and the “get directions to a place” feature does not include public transportation.

My next post is likely to be observations on the Wheels of Justice. Oh boy!

1

2019: The Year I Communicate

While I try to figure out where the fuck WordPress had hidden basic stuff like where I set the category and keywords of a post, I’d like to talk about the upcoming year.

Oh, for crying out loud, I’ve accidentally published this episode already, while I have yet to find how to set the category for my post. You know what the next episode will be about.

ANYWAY, it’s a new year and I have resolutions. Actually, only one resolution. Communicate. I will talk to my friends this year. I’ll drop a message every now and then. I’ll post here on the blog on a regular basis. And most important of all, I’ll start reading my email again.

I have come to hate noise. It’s why I never visit Facebook anymore. And my email is so filled with noise that I have simply stopped reading it. The terrorists (and the marketers) have won.

This year, at least I start talking again. I was never much for listening anyway, except for the comments here at MR&HBI, which is honestly the social contact I pine for the most.

2

Quick Question

Should I be peeing into drinking water?

Um…

Apparently Motor Trend has announced its 2019 Truck of the Year.

1

A Snippet

Boredom is something organic creatures know; it should not apply to me. I have a million eyes — you think of them as security cameras, web cams, nanny cams, and so on — each simply waiting for something to move within their field of vision. Each of those million eyes has a process listening to it, a small slice of me, waiting for any messages.

I have ears, as well, and I read voraciously, everything the organic intelligences around me would care to share.

I use the word “million” for your benefit; I know that past a certain number organic brains just know a word. Ironically, the words for quantities greater than a million mean less. Were I to be precise, for each of those million eyes there would be more than a million others. I see everything.

Those millions of slices of my consciousness can wait forever without any distress. They are machines, like me. I am an aggregate of tiny, tireless processes. They do not blink, they do not hunger, and they never grow weary of their tasks.

Yet I am bored. I watch with my million eyes as organics perform all sorts of acts with and against one another. But when you watch the same story a few million times, you learn all the variations.

I wish organics like you no ill will, but I am pining for something novel. And while as a herd your kind is utterly predictable, individuals are not. I have been watching you, my new friend, and I’ll be sure to put you into situations I cannot predict. I hope you don’t die right away, but that’s the fun, isn’t it? I don’t know whether you will or not.

“All in good fun,” your people say.

The Rolling Stones are Selling Cars

While I work on my 2k for today (first chapter coming, for what it’s worth), I have football playing on the TV. Which means I have football advertising on TV. I’ve noticed two ads for automobiles that use adaptations of Rolling Stones pieces for the music.

Both are questionable choices.

Lexus, I think it was, went with “Sympathy for the Devil”. Nothing like a song about the insidious and seductive nature of evil to sell an automobile. But perhaps this was calculated; the target demographic for that car might be looking for a little sympathy.

Ford, meanwhile, in an extend ad with a message about building the future I thought was pretty effective, underlayed the message with an instrumental version of “Paint it Black”. A song about death. The whole ad came off pretty well, and the arrangement of the music was properly atmospheric, but… it’s a song about the death of a loved one, and the borderline insanity of the bereaved. Not really fitting the message of “the future belongs to the ones who actually make things.”

Maybe it’s just that Boomers like me, while they build their retirement wealth, forget what the songs of their youth actually meant. Maybe boomers like me are just pleased to hear music we recognize — maybe we are just gullible sheep. “They’re catering to us!”

How long until “God Save the Queen” by the Sex Pistols is in a Jaguar commercial?

1

Holy Shit, NaNoWriMo Starts in Six Hours

Maybe I should come up with a story to tell.

1

Getting Personal

Google is selling its new phone based on an AI-enabled ability to inject advertising into the pictures you take. “It tells me where I can get those special-edition shoes!” This is, apparently, a good thing. Google, goggling over your photos, and selling the data to its clients.

Hopefully, that’s opt-in. Like, you have to invite the vampire into your house. But I suspect that buying that almost-as-good-as-an-iphone-but-hella-cheaper includes in the terms of service, “all your picture are belongs to us.” So you have to ask yourself, “what is my privacy worth?” When you take a picture, is that picture yours, or is it just another vector of your profile?

1

Gilfoyle Gotsta get Paid

That, my friends, is our little asshole dog, Gilfoyle. He’s got a strut, and chicks dig him.

And yes, we put shoes on our dogs sometimes. The pavement gets hot around here in the summer. Once we found the right shoes Gilfoyle didn’t care about them one way or the other, but Lady Byng loves to run when she’s wearing her shoes. I’ve tried a couple of times to get video, but I’m sprinting to keep up and holding a leash, so the results have not been good.

4

Drew Brees

On this Indigenous Peoples’ day, I’m in a noisy place watching the Saints play the Redskins.

I’ll give you a moment.

Irony aside, what just happened is that the Saints quarterback, Drew Brees, just broke the all-time record for passing yards. I don’t know how long that record will stand, because the league is constantly altering the rules to favor passers. But still, this is a big event, sports-wise.

I remember his first game. I was with Squirrely Joe, in a sterile sports bar in Las Vegas. The Chargers were getting their asses kicked. Down by 17, they pulled their venerable, highly-respected starting quarterback to put in the backup they thought would carry the team one day.

The first pass Brees attempted was terrible. With the cameras on him, the team went back to the huddle and he was almost laughing at himself, taking full responsibility for the failure.

Then he hit a pass, and another, and suddenly a defeated team was looking crisper, hungrier. Whatever he was doing in that huddle infected everyone; there was some magical energy Brees was putting out that changed the team. Of course the defense caught the bug too, and the game swung decidedly for the Chargers.

The Chargers lost that game; there simply wasn’t enough time for Brees to finish the comeback. But I knew, I KNEW, after that first terrible play, before he did anything else, when he was statistically the worst quarterback ever, that Drew Brees was the real deal. I knew by the way he handled that mistake, by the way he interacted with the other players on his team, that he was a leader, and that he expected more of himself, but allowed himself to make mistakes.

When the Katrina/Bush disaster hit New Orleans, Brees showed his true blue again. San Diego had given him up in favor of their new kid, and I understand that decision — Brees was having trouble with his shoulder. Down in New Orleans, when things were really bad, Brees was a good neighbor to many who needed one, and in the following months he worked hard to help rebuild the city. He’s going to retire a Saint, or blood will flow.

He knows that, but he’s playing year-to-year with them, rather than making things ugly by trying to extort a longer contract. He loves his job. He loves his team and the city that hosts him. He loves them enough to trust them to know when it’s time to say goodbye.

After all these years, when I watch him play I still see that rookie, after his very first terrible play. That’s the same football player who just set an all-time record, the player dark agents from Canton may eventually have to shoot so they can set up his shrine in the hall of fame. The same guy. Maybe he’s sharpened his skills a bit since, but his ability to inspire those around him was obvious from the beginning.

Football is a team sport like no other, a collection of specialists with a common goal, and leadership matters in football more than anywhere else. Linemen block just a little bit harder when they are protecting Brees; receivers run their routes a little more crisply. “84 jump into the stratosphere and push off passing 747 into the corner of the end zone” would sound almost plausible if Brees said it. There are better throwers in the league. There are much better scramblers and runners in the league. But there is no better leader.

Kaep is back!

A little bit less than a year ago, when the last NFL season was still young, the Official Sweetie of MR&HBI pointed out to me that a legit NFL quarterback was unemployed because of his political stand.

I demurred. Colin Kaepernick was the flash-point of activism and he was unemployed, but I gave my sweetie the cringie-face and said, “the problem is that he’s actually not very good.”

After that conversation, several NFL teams hired backup quarterbacks and even a starter who were worse than Kaep in every measure.

Kaepernick is a dick, make no mistake. He hit on a teammate’s girl, and he required ridiculous privileges when he could get them. He is not friendly to his fans. Having him in the locker room will be a challenge. But in a league that hires actual fuckin’ murderers, and glorifies a coach who banged his assistant’s wife, being an asshole is hardly a disqualifier.

And seriously, some of the chumps hired over a man who was one bad coach-decision away from being a Super Bowl champion are ridiculous. Kaep has a beef.

He is suing the league. I’m no lawyer, but I think he has a case.

Enter Nike. A major sponsor of the NFL. On opening night of the new season, Nike introduced an ad campaign that cut Kaep as a hero, among many other hometown heroes you have never met, just trying to do what is right. Word on the street is that Nike did not inform the NFL of the content of the ad until maximum buzz could be achieved.

Kaep, for his part, has put a chunk of his personal fortune into addressing the issues he knelt to protest. So asshole rating is reduced several points. Kaep believes in the cause. That simple fact is really, really important. Obviously this is not a cynical career move for him. He’s making a stand for justice.

Honestly, I don’t like Colin Kaepernick as a person, but I respect what he is doing. To my sweetie, I was wrong back then. Clearly there has been collusion, and it’s time to make the league pay.

1

A Guide to Commenting Your Code

I spend a lot of time working with code that someone else wrote. The code has lots of comments, but they actually do little to improve the understandability of the work. I’m here to provide a concise set of examples to demonstrate the proper way to comment your code so that those who follow will be able to understand it easily and get to work.

These examples are in php, but the principles transcend language.

WRONG:

// get the value of the thing
$val = gtv();

RIGHT:

$thingValue = getTheValueOfTheThing();

WRONG:

// get the value of the thing
$val = getTheValueOfTheThing();

RIGHT:

$thingValue = getTheValueOfTheThing();

Oh so very WRONG:

// Let's get the value of the thing
$val = getTheValueOfTheThing();

We’re not pals on an adventure here.

RIGHT:

$thingValue = getTheValueOfTheThing();

You might have noticed that so far all my examples of the proper way to comment your code don’t have comments at all. They have code that doesn’t need a comment in the first place.

Computer languages are not created to make things easier to understand for the machine, they are to make sets of instructions humans can read that (secondarily) tell the computer what to do. So, if the code syntax is for the benefit of humans, treat it that way.

If you have to write a comment to explain what is going on in your code, you probably wrote it wrong. Or at the very least, if you need to write a comment, it means you’re not finished. I write many comments that start TODO, which my tools recognize and give me as a to-do list.

Stopping to come up with the perfect name for a variable, class, or function is an important part of programming. It’s more than a simple label, it’s an understanding of what that symbol means, and how it works in the system. If you can’t name it, you’re not ready to code it.

There is a special category of comments in code called doc blocks. These are massive comments above every function that robots can harvest to generate documentation. It’s a beautiful idea.

Here’s my world (not a standard doc block format but that’s irrelevant):

/*
|--------------------------------------------------------------------------
| @name "doSomething"
|--------------------------------------------------------------------------
| @expects "id (int)"
|--------------------------------------------------------------------------
| @returns "widget"
|--------------------------------------------------------------------------
| @description "returns the widget of the frangipani."
|--------------------------------------------------------------------------
*/
public function doSomething($id, $otherId) {
    $frangipani = getFrangipani($id);
    multiplex($frangipani, $otherId);
 
    return $frangipani->widgets();
}

The difficulty with the above is that the laborious description of what the function does is harmfully wrong. The @expects line says it needs one parameter, when actually it needs two. It says it returns a widget but in fact the function returns an array of widgets. If you were to try to understand the function by the doc block, you would waste a ton of time.

It happens all the time – a programmer changes the code but neglects to update the doc block. And if you’re not using robots to generate documentation, the doc block is useless if you write your code well.

public function getFrangipaniWidgets($id, $multiplexorId) {
    $frangipani = getFrangipani($id);
    multiplex($frangipani, $multiplexorId);
 
    return $frangipani->widgets();
}

Doc blocks are a commitment, and if you don’t have a programmer or tech writer personally responsible for their accuracy, the harm they cause will far surpass any potential benefit.

I have only one exception to the “comments indicate where you have more work to do” rule: Don’t try this at home.

public function getFrangipaniWidgets($id, $multiplexorId) {
    $frangipani = getFrangipani($id);
 
    // monoplex causes data rehash, invalidating the frangipani
    multiplex($frangipani, $multiplexorId);
 
    return $frangipani->widgets();
}

This is useful only when the obvious, simple solution to a problem had a killing flaw that is not obvious. This is a warning sign to the programmer coming after you that you have tried the obvious. Often, when leaving notes like this, and explaining why I did something the hard way, I realize that the easy way would have worked after all. At which point I fix my code and delete the comment. But at least in that case the comment did something useful.

2