November is Coming

In this entire mad, mad world, there are only a handful of people who have “won” NaNoWriMo every year since 2001. There were about 100 of us who won that year, and the number can only shrink from there.

So while I sit on the third blow-it-up-an-do-it-again exercise with chapter 40 of Knives, I’m also looking at November, trying to decide if my reason to participate is habit, pride, or actual creative need.

But I thought of a good moment, and the moment led to a couple of characters with a very small struggle in a vary large universe that cares not what becomes of them. Characters which, for the sake of dragging things out to 50,000 words, will have to stumble across some other, contrived, larger struggle.

In December I can maybe produce a smaller story that fits them better.

1

Swift, the Programming Language, and Why I Love It

He had me at closures. Nomadic chunks of code that show up when they’re needed.

Quick note: This episode is heavy geek.

A few years past Apple was looking for something to fill a few minutes in their presentation to their faithful developers. “Let’s tell them about Swift”, someone high up decided. I was watching that presentation, and at first I was all like, “Another language? This will be a fiasco.” Apple has a mixed (and mostly bad with one great success) record when it comes to languages. A few minutes in, I was intrigued. By the end, I was sold.

Swift built on the work of great designers of other languages, and managed to bring (most of) the best of untyped languages with (most of) the best of strongly-typed languages. In my heart, I’m a strongly-typed guy, but I’ve been using javascript long enough to appreciate its flexibility.

But there’s one place Swift went that no other language has ever tread. Nil. One of the most common problems in software is when you expect something to the there, but for whatever unexpected reason, nothing is there. This is literally the cause of every blue screen of death you have ever seen.

In Swift, when you say that variable x will be of a particular type, right from the get-go you have to decide if x can ever be nil. If you allow that x can be nil, then every time you use x you have to take the potential that it is nil into account. No getting around it. If you say that x can never be nil, then the compiler will not allow you to create any condition that x is nil.

You can, of course, punch the compiler in the face and say you know goddam well that by then x will not be nil. But, awesomely, you don’t have to be all aggro. You can be totally graceful and say, “if x is not nil, then let’s have some fun.”

Swift has many other features created with one purpose: Make the costly mistakes commonly made with other languages impossible. One of the motivators of this language was a potentially awful security flaw on iPhone a few year back, caused by a stupid missing curly brace.

The Swift compiler is almost spooky. I’m not going to go into its almost-magic ability to resolve generics, but dang.

I do have a quibble: If one is focussing a language on security and preventing bad programming patterns, I would like to see the end of “break” and “continue”. We all learned long ago how terrible “goto” is; it’s time to recognize goto’s buck-toothed kin. (In the iPhone security problem above, goto was part of the problem. I was stunned that any code from my company included that instruction.) I once sat through a long discussion on the WebKit boards while they argued about how to define constants to handle exceptional cases, when the exceptional cases themselves could have been eliminated by banishing “break”.

Programmers out there: any time you want to type “break”, there is a better answer. If you can’t find that answer, it’s time to grow. Seriously. Outside of case statements, there is no time “break” is the right answer. EVER. (Swift eliminated break in case statements for you.)

Maybe I’ll fork the Swift open source and create hard-ass Swift. The same as Swift, but without the goto’s. Or maybe I’ll just challenge my peers to embrace the spirit of Swift, and write good code.

I program in four languages day in and day out, and a few others now and then. Give me Swift.

1

You Can’t Go Home Again

On Nov 30, 2001 I finished my first NaNoWriMo effort sitting at Callahan’s, a brew pub in my neighborhood, with minutes to spare. Callahan’s occupied a spot in a little mall that had previously housed Reno’s Cafe d’Italia, a little family restaurant I worked at for two weeks. Callahan’s was better. I was already fairly regular there (they were close to my workplace) when, soon after they opened, brewing equipment started showing up. At the time, there were no other brew pubs in San Diego.

They got the brewery up and running, and after a shaky start while they refined the recipes and got the quality under control, things started to go well. Bernardo Bitter was my favorite, but in the early days it was awful as often as it was awesome. Apparently that brew used a special yeast that was, in brewing terminology, “a little bitch”. But finally they got the yeast under control, and people found the place buried deep in the mall, and all was well.

By 2001, Callahan’s had annexed the next business over and expanded their dining area. The move frightened me, because many restaurants fail when they try to grow and end up ruining what they have.

By the time I was laying the keel of The Monster Within during a later NaNoWriMo, Callahan’s had moved across the street to a larger, more accessible space that had come into this world as a Tony Roma’s rib joint. There was a large mirror on one wall, emblazoned with the logo of Bass ale. I was looking for a name, and in Monster you will find Master Bass.

But people don’t go to bars for alcohol. Alcohol is much cheaper at the liquor store. (Bad Bobby, a friend from another bar and a teacher at Bartending Academy pointed out this obvious truth to me.) People go to bars to take alcohol with friends. Lacking friends, patrons turn to the staff. I had a lot of friends on the Callahan’s staff.

I won’t try to list them all, but there are two I have to mention.

Travis. A really smart guy, well-read, articulate. We weren’t tight, not at all, but in a lot of ways I wanted to be Travis. He felt things strongly, and could explain why.

Rose. My favorite bartender. I have laughingly told many other bartenders that they are my second-favorite, but there is only one at the top. “Rose, you rock,” I would say each night as I left. If she was busy I would point to her and raise my fist. “Am I in your story?” she would ask. Spiritually, she was in many of my stories, but it wasn’t until Worst Enemy, a later NaNoWriMo effort, that I put her quite directly into a story. I’ve never done that for anyone else.

I also never told her about that one. By then I was a nomad.

Occasionally I would pass back through San Diego, and I would visit my friends at Callahan’s. Fewer and fewer of the staff would recognize me, but the faces I missed the most were still there.

Although it has been a long time, and I knew that it was not realistic, I thought that if I walked into Callahan’s today there would still be connections for me.

But Callahan’s, apparently, is gone. No longer can I entertain the thought that I will meet any of my friends, both the staff and the regulars I used to sit next to, ever again.

Bill, Linda, Darlene, Joe, Debbie, Malcom, and all of you, it was a good time. Travis, I know you’re all right.

Rose, you rock.

5

Giving with Maximum Gain

In this case “gain” is used in the electronics sense. We are prepared to amplify your donation 6x. Six! X!

We can all be excused if disaster fatigue sets in; first one hurricane, then another (carrying two disasters with it), and finally fires. Hopefully finally.

But many people lost their lives and their loved ones, and many more lost their homes to the wildfires in Northern California. As someone who watched a large chunk of my home town burn down in years past, I feel for the folks up in wine country.

The fires are mostly out, or at least contained, and the weather is cooling. The first part of the disaster is over. But now comes the much more difficult part. The rebuilding. Providing shelter for thousands of people who are, unexpectedly, homeless. Some of those have enough insurance to get back on their feet (eventually), but not all.

Habitat for Humanity exists to build homes for those who need them. We’re holding a fundraiser right now, and it works like this:

You donate $10. The Official Sweetie and I match that donation (up to a total of $250). Now your donation is at $20. But then my employer gets involved. They are currently matching donations to Habitat times two.

Your humble ten bucks is now sixty mighty dollars of world-improving power.

Just so we’re clear, because you don’t give the money directly to the charity, but instead use us as a proxy, you won’t get a tax deduction. You’ll just do six times as much good.

Ready? Let’s do it!

1

An Apology to my San Diego Friends

I was in San Diego yesterday. I debated whether to tell anyone, but in the end this was a hit-and-run trip to the courthouse for a document, with a little time set aside for a trip with my sweetie (and dogs) to Kono’s for a big breakfast and a too-short, very happy visit to Dog Beach.

For those keeping score at home, Kono’s is everything it ever has been.

For my San Diego friends, I promise I will visit again, and next time there will be ‘bertos and Callahans and Tiki and BV and Keith and Mikie and Adam and Jerry S. and all the rest of you. I feel a little guilty, but this trip turned out so very well that I hope you can forgive me and accept my rain check.

2

The Pledge of Allegiance was Written by a Socialist

Here’s a fun fact I bet you didn’t know: The pledge of allegiance was written by a socialist. I’m not quite sure what Francis Bellamy was thinking; although he imagined all the people of the world pledging to their various flags, the result of the exercise is inevitably nationalistic.

But Bellamy was a socialist, and he wrote the pledge, and a treatise on the etiquette surrounding it. Much of that was slurped up by the flag code (although the text of the pledge has undergone two significant edits). The flag code includes language that states one should face the flag while speaking the pledge, and remove any non-religious headwear while one salutes the flag.

Uh, Whups, my original source contains the phrase “non-religious”, but the current code does not. I’m very curious when the change was made. If the flag code were on GitHub this would be much more transparent.

Most of this same etiquette has been transferred to the national anthem. So let’s get this straight. If sitting or kneeling or quietly protesting is bad, shouldn’t ignoring the whole pledge be worse? Not an act to raise awareness, just pure sloth. Sitting around, yapping to the people around you, absolutely ignoring the flag out of pure contempt should be far worse.

Right?

Tune in and watch your congress during the pledge tomorrow morning. Watch the senate. Glory in the patriotism. All those fuckers are far worse than a conscientious athlete hoping to deliver a message. Most of your elected representatives just don’t care. There is protest, and there is contempt.

Tree-Climbing

There is a tree in my backyard, and I’ve never climbed it. There was a time earlier in my life where that would have been unthinkable. Gotta climb trees, after all.

But somewhere between then and now I passed from being a climber of trees to a non-climber. I didn’t notice when it happened, but I do appreciate the shade.

A coupe of days ago I punched the time clock at the end of the day and transitioned from coding to writing… and kept coding. Yesterday, the same thing. Today, so far it’s mostly been coding.

It’s not a bad thing that there’s something I’m working on at Apple that has taken root so deeply in my brain. If your database isn’t normalized, what tools can you offer at the just-above-driver level to make it as easy as possible to keep data consistent, without degrading write performance? It’s a very small part of my job, but chasing questions like this is geek nirvana.

But now — right now — I’m gonna finish a draft of Knives 40.

1

Ah, Kentucky

She was probably as old then as I am now, but better-preserved. A friendly smile and a big hat, a twinkle in her blue eyes, her voice with that perfect Kentucky lilt. We were in line to place our bets for the Derby. It was crowded in that line, and I moved to block people from jostling her wide-brimmed hat. Then I saw the badge hanging from a lanyard around her neck, clashing with the classic pink rose of her dress.

But I’m getting ahead of myself. The adventure really starts long before that, when Mikie asked me if I wanted to join him and his father Mike and another man named Art at the Kentucky Derby. Mike and Art were old friends, and the Derby was a tradition for them. Usually, I think, they treated clients to the experience, but this year it was Mikie and me.

It started fairly early in the morning, at San Diego International, when my party got a warning that if we got too hammered off Bloody Mary’s we would not be allowed on the plane. (Or was that the Las Vegas Trip? I think that was the Las Vegas Trip. Never mind.)

The thing to understand about the Kentucky Derby is that, except for television, it is not a singular event. The races build up for four days or more, and the parties in town and in the infield of the track also pick up in intensity. Also important to note: certain parts of the stands cost more to sit in than others. Our section, apparently, was on the swankier side. We shared our little area with a very nice, very wealthy guy with a stunningly beautiful younger wife. There was no doubt on either side what had attracted each to the other, but it was an honest relationship, I think, and the fact they seemed to genuinely love each other was a bonus for both. They joked and laughed as he threw tickets to the concrete beneath our seats for bets he lost. My curious forensics discovered most bets in the hundreds of dollars.

His big bets he was making offshore, and he was annoyed that the cell signal at the track was getting overloaded. That’s how long ago it was.

We were staying at some Sheraton or another, which had a shuttle to the track. The place had an absolutely typical hotel bar, except this particular hotel bar had Heather. A pixie with a quick smile and an honest streak that only a great bartender can pull off. She hated mint juleps. They are labor intensive, and the asshats who drink them when they come for the Derby are the same asshats that don’t tip well.

I got on well with Heather, but Art was a charmer and Mikie has a certain something. She started spending extra time around us.

There wasn’t much in the way of actual good beer at that bar, but at one point I found myself sitting next to the only other person there who seemed to care about the taste of the beverage he was consuming. We talked for a bit; I didn’t get his name. But he was a good guy.

Perhaps it was the second night in Louisville that Mikie found the karaoke bar. It was a good bar that happened to be doing karaoke, and I perused the list and chose… Nirvana.

When I do Nirvana, it can go two ways: awesome or horrifying. There is no in-between. That night, Kurt Cobain borrowed my pipes and I was fuckin’ wailing. As far as I remember. Then suddenly POW I was on the floor trying to keep singing while not spilling too much of my beer and dudes were slam-dancing while I shouted (around laughter) “I AM STUPID, AND CONTAGIOUS! YEAH!”

Best karaoke night ever. Except maybe full-bar Bohemian Rhapsody. Or all-you-can-drink night in Las Vegas… But those are other stories. All with Mikie. So there you go.

Anyway, back in Kentucky, I was a little shaky the next morning. It was probably the day before the big day by then, and the stands were getting full and our high-roller pals were getting serious. I also learned to recognize the badges some people wore. They were the badges that would give the owners access to the winners circle if their horse won. Each badge had a number (the number of the race that day) and a name. So a badge with a big 8 and the name “No Hope” would mean that the bearer owned the horse “No Hope” that would be running in the 8th race that day.

I told you already, I was in the high-roller section.

At this point, gambling-wise, I’d been doing OK but not great. I have a system for betting on the ponies, if you can believe that. I study the racing form, do the numbers, balance risk and reward, and go place my $2 bets at the window. When I won my tiny jackpots I always left a tiny tip, so the window people were OK with me, even though I was pretty much an obstacle to the real flow of cash.

The night before the Derby tension was definitely ratcheting up at Heather’s bar. Then Mike Sr. went AWOL for a while and Mikie was losing his shit and Art was as calm and confident as ever, even as he told me stories I’m pretty sure I shouldn’t have heard. I sat at the end of the bar with The Only Other Good-Beer Drinker for a while, before retiring.

It occurs to me now — I don’t remember my hotel room at all. At all. I probably shared it with Mikie. Maybe all four of us? It’s a blank. Intellectually I have to recognize that I slept at points on that trip.

Race Day. We take the shuttle to the track early, and a steady stream of mint juleps ensues. There are a lot of races that day; the track squeezing all it can out of the big crowd. I place a few bets, drink some juleps (no doubt from a big julep-vat), and study the form. I find what I’m looking for.

Funnicide, I think the horses’s name was. We called him Fungicide. A long shot, but not silly. The favorite that day was Empire Maker, a fine steed, Triple-Crown whispers following in his wake. But Fungicide had the exact profile in the racing form that I looked for. Each workout better than the last. Peaking at the right time. “Fungicide’s gonna win,” I told my group. Turns out they listened.

Almost time for the big race. I was standing in line with the high rollers who don’t bet offshore over the phone. Maybe they want a souvenir ticket. Fungicide was going to win, but Empire Maker was a beast. The easiest exacta ever. I was poised to rake in dozens of dollars. Dozens!

Her hat brim brushed me and I turned around to find her smiling apologetically at me. “I’m so sorry,” she said. Then someone else brushed against her hat and I used my right hand to very gently grant her space. There was another man behind her, large, probably on her payroll, but I was in the right place to do the right thing.

She gave me a little smile and we chatted a little bit, before I saw her badge. The number was 10. The Derby. She had a horse in the Derby. When I made that discovery I was neither gushing nor coy; there’s even a chance I was pretty cool. “I’m going to put a bet on him right now,” she said. “Will you?”

“Absolutely!” I said, or maybe something more suave than that. (For the record, I did put a bet on her horse to win. He did not do well.)

It’s hard to tell, actually, with a genteel Southern woman, whether she likes you or if she’s just tolerating you. In every case she will be polite. But I think… I think she liked me. Sometimes I wonder what might have been, had I protected her hat a little longer. But when it was my turn at the window I turned my back on her and that is all that ever happened.

Fungicide won. Fungicide beat out Empire Maker and won the Kentucky Derby. A titanic upset.

On the shuttle from the track back to the hotel, the mood was ugly. “Who the fuck bet on Funnicide?” someone shouted. In that angry space I just shut up.

Back at the Sheraton, things were different, too. My good-beer buddy was a celebrity; people asking for pictures with him. Everyone else was pissed off. Heather confided in us, “I may be smilin’, but it’s fake.”

“Who the fuck bet on Funnicide?” the lament came again.

“I did,” I said. “I got the Exacta.” I was more than a little proud of that. There was a some quiet around us then.

“I got the trifecta,” Art said softly, with a knowing smile. He had called the race 1-2-3. Put me right in my place. And it’s safe to say his bet was somewhat larger than mine. It paid for his trip, he told me later. Hopefully my research justified what he spent to host me there, as well.

One wave of anger after another washed through the bar, almost starting fights, but finally the last wave passed and carried with it the anger, leaving exhaustion. Good Beer Guy was still at the bar, and I sat next to him. By then I had learned that he was part of the cartel that owned Empire Maker. We didn’t say much; we just sipped our beers. “You never know,” I said at last, and he nodded. But I had known.

5