That Tingly, Geeky Feeling

My day job is building Web applications you will never see. That is by design; my apps deal with SECRET STUFF.

The first aside about failure: My first Internet application is also one you will also never see, not because of secrecy, but because it failed. We made an immersive app with a rich graphical interface that allowed people to share photos and messages with a select group of friends. The core app acted as an operating system, able to discover compatible services to provide data. It flopped. A few years later MySpace and Facebook provided crappy platforms that allowed the world to shout at each other. In retrospect my biggest mistake (among many) was assuming people valued privacy.

ANYWAY, I build Web applications. But I come from a background of developing desktop apps, and let me tell you, even now the world of Web app development is ridiculously painful. Slowly, slowly, software design principles worked out decades ago are finding their way to the Web.

Another aside about a failure: A while back I created a framework that allowed the UI (still running in a dang browser after all this time) to connect to the server with such efficiency that when anyone anywhere made a change, everyone saw it immediately. In geek terms, I created an MVC system where the central model was shared by all clients in real time. It also allowed anyone to track the entire history of every value in the system. I had a great 3D interface for that I never got to implement. The system worked so well I still get misty thinking about it. It was (still is) marketable. That project was shit-canned for reasons I could have managed better that had nothing to do with the technology.

But goddammit, I’ll fail shooting for making something great over succeeding at the mediocre, and I’ve got the track record to prove it.

I may have that chance again. I can’t be too specific (sorry for the tease), but I’m pretty excited. So this afternoon I snuck out of work early to go and… work. But fun work. Perhaps a chance to take my failures and put them together into a game-changer. I’ve come close before.

1

All-Nighter

She lay her head down on the table, wild dark hair soaking up spilled beer and mingling with the guacamole. “The problem with places that never close,” she said, her airy voice barely audible over the driving ranchero music of the cantina, “is that you can never go home.”

6

2017: Here we go!

I don’t usually resolve things, but last year I let some good habits slip away, and this year I want them back. So by publicly declaring them here, maybe I improve my chances.

  • Writing:
    • Write SOMETHING (almost) every day
    • More detailed character descriptions
    • Settings are characters
    • It ain’t worth squat if nobody reads it
  • Health:
    • Bicycle more miles than I drive (road trips excluded)
    • Improve commute pace by 3mph
    • Resume the no-beer-until-weekly-weight-target-reached regime (starting tomorrow)
  • Life:
    • Productive procrastination — use idle time better

The health ones are all things I have done well in the past. I didn’t have to wait for the new year to restart them, except that having a week off from work and being surrounded by excellent cooks would have doomed any attempt. Bicycling was improving in December, now I have to regain that momentum.

My average-speed-during-commute goal would put me back to about the speed I was going when I was in a state the fitness experts call “not potato”.

“Use of idle time” includes fixing the terrible Patreon plugin for WordPress, continuing to improve my Swift skills (especially on Linux), coming up to speed on photo editing and workflow options to replace Aperture, and keeping the Honey Do list short. The list of “productive” things will of course change over time.

But right now, I need to go play a game on my phone.

Edit to add:

Starting numbers for mileage challenge:
Bike: 7740 miles
Car A: 151968 miles
Car B (driven by two people): 6099

1

Knives Episode 26 Published!

With the Big Splash at the end of the last episode, it was time for Martin to take stock and do some planning. But not before contemplating just leaving everything and going back to his normal life as thief and assassin. But, well, there’s Elena.

On the patron front, it looks like my attempt to release more backstory was, well, unsuccessful. No worries — tomorrow I will do that first thing after taking down Christmas lights.

Episodes have been a bit slow lately, what with holidays and guests invading the Writing Bunker and whatnot, but episode 27 is forming up nicely and episode 28 is solidifying.

As always, thank you to all my generous patrons. You guys rock!

Read Knives.

Standing Rock and Internet Security

At the peak of the Standing Rock protest, a small city existed where none had before. That city relied on wireless communications to let the world know what was going on, and to coordinate the more mundane day-to-day tasks of providing for thousands of people. There is strong circumstantial evidence that our own government performed shenanigans on the communications infrastructure to not only prevent information from reaching the rest of the world, but also to hack people’s email accounts and the like.

Cracked.com, an unlikely source of “real” journalism, produced a well-written article with links to huge piles of documented facts. (This was not the only compelling article they produced.) They spent time with a team of security experts on the scene, who showed the results of one attack: When all the secure wifi hotspots in the camp were attacked, rendering them unresponsive, a new, insecure hotspot suddenly appeared. When one of the security guys connected to it, his gmail account was attacked.

Notably, a plane was flying low overhead – a very common model of Cessna, but the type known to be used by our government to be fitted with just the sort of equipment to do this sort of dirty work. The Cessna was owned by law enforcement but its flight history is secret.

What does that actually mean? It means that in a vulnerable situation, where communication depends on wireless networks, federal and state law enforcement agencies have the tools to seriously mess with you.

“But I only use secure Internet connections,” you say. “HTTPS means that people between you and the site you’re talking to can’t steal your information.” Alas, that’s not quite true. What https means is that connections to your bank or Gmail can only be monitored by someone endorsed by entities your browser has been told to trust completely. On that list: The US Government, the Chinese government, other governments, and more than a hundred privately-owned corporations. Any of those, or anyone any of those authorities chooses to endorse, or anyone who manages to hack one of those hundred-plus authorities (this has happened) can convince your browser that there is no hanky-panky going on. It shouldn’t surprise you that the NSA has a huge operation to do just that.

The NSA system wasn’t used at Standing Rock (or if it was, that effort was separate from the documented attacks above), because they don’t need airplanes loaded with exotic equipment. But those airplanes do exist, and now we have evidence that state and local law enforcement, and quite possibly private corporations as well, are willing to use them.

The moral of the story is, I guess, “don’t use unsecured WiFi”. There’s pretty much nothing you can do about the NSA. It would be nice if browsers popped up an alert like “Normally this site is vouched for by Verisign, but this time the US Government is vouching for it. Do you want to continue?” But they don’t, and I haven’t found a browser plugin that adds that capability. Which is too bad.

Edit to add: While looking for someone who perhaps had made a browser plug-in to detect these attacks, I came across this paper which described a plugin that apparently no longer exists (if it was ever released). It includes a good overview of the situation, with some thoughts that hadn’t occurred to me. It also shows pages from a brochure for a simple device that was marketed in 2009 to make it very easy for people with CA authority to eavesdrop on any SSL-protected communication. Devices so cheap they were described as “disposable”.

Shower Coma

You know how sometimes in the shower you kind of lose your place, and you’ll be washing your face and remember you’ve washed it already? This evening I was washing my face and I remembered remembering that I had already washed it before.

My face is very clean at this time.

2

My Gingerbread House

I’m one of those people who heads for the shadows when “fun group activities” are afoot. While I imagine fun ways I could participate, I simply don’t. So when it was announced that this year’s winter-festival-of-your-choice party at work would include a gingerbread house decorating contest, I immediately decided that I would not be participating.

But… I had an idea. I’m one of the only engineers in my group, and I started to think about how a gingerbread house could be expressed abstractly, the way it would look in software. I got some pretty grand ideas.

Still, when the contest organizers were patrolling the area, trying to get people to accept the kit and commit to participating, I demurred. My arm was not twisted. For the next half-hour I heard other arms being twisted, and a loud-for-the-workplace lament that not enough people were participating. “I’ll do it!” I called across the office. “Bring me a kit.” [“Feel the wrath of the arm not twisted!” I didn’t add.]

The kit included a fully-assembled gingerbread house and stuff to stick to it. But in software, that’s not what a house looks like. So my first task was to break the house down to its constituent parts, the same way a software engineer breaks a big problem down into a set of smaller, more manageable problems.
img_0022

It’s important to recognize here that the front of the house and the back of the house are the same, except for location and orientation. So in software, we define an end panel that works for both cases. Same with the sides, and for the roof panels. You break a thing down into its fundamental pieces, find what’s common between those pieces, and build your structure.

The challenge then, was to present those pieces in a meaningful way, and then create a language that would express how the parts were assembled and how they were decorated. When thoughts of poured-sugar virtual building elements with the parameters that defined them entombed inside gave way to reality, this is where I went:
img_0026

On a cookie sheet I staged visual representations of the various parts of the house. I included things like the color sequence of the gumdrops when used in series (a co-worker gave me a demerit for not following the Apple rainbow in my sequence. I should have thought of that.) Then there was the purely abstract assembly instructions. The final result looked like this:
ginger

But it’s not software without bugs, and the wreath that came in the kit was broken. I filed the error in the company’s bug-tracking system:
radar

Did I win? No. Of course not. Did I give my co-workers a little insight into how I think? I’d like to think so. I’m surrounded by creative people who view what I do as vaguely magic. Perhaps they understand me a little better now. Though to be honest it would take much more effort than one is likely to give at a holiday party to understand the intricacies of my gingerbread house.
tile

Then there was this conversation:

Me: I think I overdid the roof.
Guy I work with, squinting at my display: Oh?
Me: Piping and a gumdrop on every roof tile? Along with the candies all around the edge. It might be a bit much.
Guy: Where?
Me: It’s all there if you look, but you can only see it in your head.
Guy: Oooh.

And that is my job. I build things you can only see in your head.

3

The Chinese are Attacking!

screen-shot-2016-12-11-at-11-06-55-am
Every once in a while I check the logs of the server that hosts this blog, to see if there are any shenanigans going on. And every time I check, there ARE shenanigans. The Chinese have been slowly, patiently poking at this machine for a long, long time. The attacks will not succeed; they are trying to log in as “root”, the most powerful account on any *NIX-flavored computer, but on my server root is not allowed to log in from the outside, precisely because it is so powerful.

But the attack itself is an interesting look at the world of institutionalized hacking. It is slow, and patient, only making an attempt every thirty seconds or so. Many attack-blockers use three tries in a minute to detect monkey business; this will fly under that radar. Trying fewer than 200,000 password guesses per day limits the effectiveness of a brute-force attack, but over time (and starting with the million most common passwords), many servers will be compromised.

And in the Chinese view, they have all the time in the world. Some servers will fall to their attacks, others won’t. The ones that are compromised will likely be loaded with software that will, Manchurian-Candidate style, lie dormant until the Chinese government decides to break the Internet. And although servers like mine would provide excellent leverage, located as it is in a data center with high-speed access to the backbone, the bad guys have now discovered that home invasion provides a burgeoning opportunity as well. Consider the participation of refrigerators and thermostats in the recent attack on the Internet infrastructure on the East Coast of the United States and you begin to see the possibilities opened by a constant, patient probing of everything connected to the Internet.

I’ve been boning up on how to block the attack on my server; although in its current form the attack cannot succeed, I know I’ve been warned. The catch is I have to be very careful as I configure my safeguards — some mistakes would result in ME not being able to log in. That would be inconvenient, because if I’m unable to log in I won’t be able to fix my mistake. But like the Chinese, I can take things slowly and make sure I do it right.

1

Knives Episode 25 Published

keIr8jbMXxmru4jF8SmZgLewEQsJqeLDjbPX7mnqvHXuQ641S02V6HFty34Ricip_large_2This episode took a while to get out; there were several things working against it. November was a big one, but this episode resisted me every step of the way all on its own. Then in the middle of the night I figured out what was missing, tied things up, deferred a chunk of exposition to a later date, and here we are!

So what are you waiting for? Start reading already!

A couple of important things happen in this episode; Martin makes a decision about Elena and Bags has a couple of surprises. Happily, those surprises also allow me to release the rest of Bags’ backstory for my valued patrons. If I can remember how to do that.

I think it would be more fair to my patrons to commit to a regular release schedule, but I’m not sure yet what frequency I can commit to. We’ll figure that out in January; December is filled with house guests and general wassailing. I hope to get some good writing time in, but, well, the new year is all about resolutions, right?

NaNoWriMo Success!

In the last couple of days I’ve thundered past the 50,000-word line, and earned myself a sixteenth NaNoWriMo victory. The primary objective, Glass Archipelago, is by no means a complete story, but I did put the words to use fleshing out a setting with three very different cultures. I could have kept going, as I was having a lot of fun, but it’s time to turn my attention back to Knives. The first few days of the NaNoWrimo effort were in fact Knives-related; I banged out the rest of Kat’s backstory, which I will be releasing in the coming week. As with Bags, the amount of backstory you can read depends on your patronage.

Also, the after the next episode of the main story, I’ll be able to reveal the rest of Bags’ backstory. So, lots to look forward to, if you are a fan of hastily-written exploratory prose. Woo!

Meanwhile, I’ll be having a sip of the good stuff this afternoon, and reviewing the plan for the next few episodes of Knives. It’s going to be tough to go to work tomorrow.

Thoughts on the Electoral College

We were taught in school that the Electoral College was an institution designed to protect the American public from themselves. That some rational group of men would stand between the public and the presidency so that candidates with foreign ties or who openly spoke against the principles of our republic would not be able to charm their way into office. Alexander Hamilton actually wrote about that at length.

Now there are people who say that our current President-elect is precisely the kind of guy the electoral college is supposed to protect us from. He covers all the checkboxes: shady foreign ties, a long record of unethical behavior, conflicts of interest, and that fascism thing. But the electors are not going to protect us from Trump. In fact, they can’t. They are bound by the laws of the states they represent.

So why does the electoral college really exist? For the same reason it’s never going away: less-populous states don’t want to get railroaded every election by the more-populous states. The electoral college was an invention to get the constitution ratified in the first place. In this country, citizens of the more populous states are less powerful by design. It was the only way to get the little states to sign up in the first place.

Personally, I think if you believe in one person/one vote, then all the votes should count equally. That, or we should go ahead and split up a few states. California becomes three states, New York two. Texas, I’m not sure about. Three? West Texas, East Texas, and Austin?

It doesn’t seem right that simply drawing lines on the map differently should change the outcome of an election that covers all that territory, but if that’s what it takes to get equal representation, then why not? Honestly, I think California would function better if it were three separate states.

Though I have to note that if the polar ice caps keep melting, a lot of people are going to be moving in the next few decades. The imbalance may just take care of itself.

2

Facts? Bah!

I was pretty pleased with myself when I realized it was perfectly logical for my point-of-view character to be claustrophobic. After all, she was born in the ocean (literally) and lived almost her entire life on a raft. Sure they had canvas structures to keep the rain off their heads, but overall, the sky has been her ceiling.

So when she’s on a submarine, that’s got to be pretty awful, right?

I got to that point and realized that I know next to nothing about: a) claustrophobia, and b) submarines. After about two thousand words in this setting, I have finally dug up a cutaway of a typical attack submarine, and, well, the sub in my story has a lot more decks. Maybe that’s why the ceilings seem so low to her; the decks are only four feet apart to fit them in a 33-foot diameter cylinder.

But that’s what rewrites are for, right?

1

NaNoWriMo 15-day Checkup

November is half-spent, and I’m still pretty far behind on my novel, at 18.5 kilowords. I was even farther behind before this last weekend, but I fell into a good rhythm of 1000-word sprints — write a thousand words, take a little break. I have 32 more sprints to go, but honestly I’m not too worried; I’ve taken some time off work in the coming days to be around for an influx of home repair and new appliances, and I should be able to get in three sprints a day on non-work days pretty easily, and sometimes more.

Meanwhile the story itself has really just been an exploration of the setting, and the cultures of the people in what was once Miami. I’m getting a good feel for the raft culture, though sometimes I wonder if perhaps their traditions are too well developed — after all, there are people who can remember Miami before; has enough time passed for a navajo-inspired system of intermarriage to have evolved? Probably not; but if that’s the thing people pick out to complain about then I’ll feel all right.

Several characters have had “audition chapters”, in which I experiment with whether they would fit in an actual story. A couple of the scenes were pretty fun to write, others fell flat.

Fun idea: if algae blooms suck all the oxygen out of the water and kill off marine life (look up “dead zone Louisiana”), a few vegetarian air-breathing species might flourish. Some sea turtles are strictly vegetarian, for instance, and in the absence of predators (except of course for starving humanity) they might do well. Also, I may introduce manatee farming.

There have of course been some of those crazy first-draft no-time-to-go-back moments. There is a floor in one of the buildings that at first is empty, every sound resonating as a storm rages outside. Then, maybe half an hour later, that same space is crammed to the gills with industrial equipment and supplies. Perhaps that place is a portal to another dimension, but nobody in the story said, “Holy shit! Where did all that stuff come from?”

If things get tight around Nov 28th, that portal may reopen, and who knows what would come out. Just sayin’.

I’ve also managed to find a couple of little touches to communicate the magnitude of the disaster, to go along with the skeletons of fallen high-rise buildings. An Igloo cooler sitting on the seat of a submerged utility truck, with a lunch packed inside that would never be eaten, things like that. Jaqi, who dives into the wreckage and into the past, usually isn’t affected by them; things have been like this her whole life. But when she is separated from her raft/family, those old clues of the humanity of those who died can touch her.

Will I have an interesting yarn at the end of this exercise? Honestly, probably not, though it does have moments. But I think I’ll have a pretty good place to put a yarn, and a few interesting people to play the parts.

1

Friday Afternoon, Way Behind

This has not been a good week for my writing mojo. This weekend I want to poop out a few thousand words of Glass Archipelago and also get a draft of the next episode of Knives to near-ready status. That’s a lot of writing.

To improve things and give myself a shot at a moderately productive weekend, I’m going to continue what has been very relaxing tactic for the last two days: no Facebook. Although it might appear that I’m over there, rest assured that my presence is really that of a robotic doppelgänger, taking my words from here and gluing them into my feed over there. Jerry the human will not be appearing until he has caught up a bit. If Jerry the human finds himself happier as a result of the exercise, he may continue it.

Keep in mind, then, that at least for now comments you make to my posts on Facebook WILL NOT BE READ BY ME. If you click “like”, I’ll never know. If you want to comment on my words, do it here on the blog. If you think they’re sweet, there’s a button for that, too.

Now, back to the task at hand.

3

That Can Never Happen Here

A long time ago I was in an intense conversation with a co-worker. I was speaking in defense of the right of the citizenry of this country to own guns. My friend disagreed. My friend is Jewish, and to further my argument I posited the dubious assertion, “If the Jews in 1920’s Germany were well-armed, things would have been different.” Honestly, it might not have made a difference, with the steady, insidious erosion of Jew’s rights across Europe at that time. But it makes a good argument.

My friend scoffed at my assertion. Not at the idea that well-armed Jews might have turned aside the oppression of their people in Nazi Germany, he scoffed at the very thought that a national socialist scapegoater would ever rise to prominence in this nation.

And here we are. I have never been a stronger proponent of the loose-ass interpretation of the 2nd amendment.