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.


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


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.

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.

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:

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:

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:

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.

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.


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.