Gambit

Gambit, y'allSo, we were watching Korra last night, and discusing the titles of the different episodes and excited we were by them (for me, specifically “Operation Beifong” had me wanting to watch the show badly.  I mentioned to the daughter that the next episode (there are only 3 left, egad!) is “Kuvira’s Gambit”.

The dotter (who is 12) asked “What’s gambit?”

I really had to supress putting on my deep Southern accent and say, “Now, how can ya’ll not know who Gambit is?”

Instead, of course, I pointed out that she already knew what a gambit was from chess club.

Test Driven Epiphany

So, when I first started formally learning to write code, and do programming, we were taught the only and true method of it, a method now known as Waterfall.  It doesn’t work, and it causes more problems than it helps with.  I understand why it was done that way at one time, but with the way we use computers now, it doesn’t work at all.  With “waterfall” all the testing was done at the end of the project. There was some expected unit testing by the developer, but they were supported by the supposed safety net of QA at the end. They would do the real testing and go through that cycle.

That worked okay; the real problem with waterfall is that it took too long, the business would change in the interim, and the users’ needs and expectations would drift in the nine months it took to make a waterfall project.  Also, it depended on getting the user requirements right, and that’s actually the hardest part of any project.  Most users don’t know what they want until they see something that’s not quite that. Which, again, takes months in waterfall.

I started learning about Agile methods, which have faster cycles and different methodologies when I worked for a bank in Charlotte.  We were trying to do better, but most of us weren’t properly trained in it. We were never going to do some of the things (like pair programming) and so wound up primarily doing fast cycles and user stories, because we were the most comfortable with that.  As the Agile-guru of our team, I was trying to figure out how to implement it and get it working. I was pretty stoked by this idea about testing, and test-driven code, but I couldn’t wrap my head around it.

Some of it I got, certainly. I’d naturally come to a place where I worked backwards from outputs to inputs. This was mostly laziness, since I didn’t want to write the parts of the program that no one was going to use — let’s start with the end product and build things that make that. [One of the things that frustrates me about the C# development I’m doing at my current job is the amount of what feels like boilerplate and structural code that ‘has’ to exist. It feels like trying to do surgery with a mace.]

But there are things I didn’t get.  How do you start? How do you really test each function? How do you test UI elements (still don’t have a good idea about that.) I couldn’t figure out how to start.  Starting on code was easy, I could focus in on one thing and build it and it worked. Most of my private projects were small and I didn’t need to do much more than that. I probably wasn’t going to finish them anyway.

But with my focus on Making Things this year I want to finish things.  I want to share them, and some of the things — like an IF Parser– should be fairly testable. I mean, I can take a script and pipe it into tads and get the game script out.  At least at some level, that should be completely testable.  So I started up a nodejs project for my parser, Mydas, and set to work.

I knew that I would be having a set of command strings, and I wanted to isolate what were  verbs, direct objects, and prepositions, etc. So I had a parser object, that was going to have some private functions to  parse the syntax. I’d found pos.js which had been ported to Node by Darius Kazemi. I pulled the parts, stopped myself and said, “Wait, don’t I need to write some tests first?”

I started digging around with mocha, and seeing how to write the tests, but I couldn’t figure out how to test my code. I mean, I knew what I was going to call it with, and what I expected out, but it wasn’t working. Part of it, of course, was that I was trying to test a private function. It was private because I know after 20+ years that’s where it’ll wind up, it’s not a public API, it should be a private function.  But you can’t test it.

You can, actually, there’s ways listed on Stack Overflow if you look hard enough.  But you shouldn’t.

Because I was doing it all wrong.

Not completely wrong, of course, my instinct was to focus in on the hardest bit of code and see if I could pound that out, get it working.  But that code won’t exist in a vacuum. It’ll be called from somewhere, with a particular goal in mind.  The truth is, I didn’t know if I was right when I was so certain that I was going to need this f unction, that it was going to be private, etc.  Probably, but I didn’t know.

The only way to know was to start with some use cases/user stories.  What does this thing do, and for whom? Then to slowly back up into writing the needed functions as you moved from the outputs to the inputs.  And that private function? When there’s a test for the public function that calls it, then you can refactor it to a private one, because it will still be tested. Starting with private functions risks code that’s never tested, and that’s decidedly not the goal.

And of course this makes sense. Only write code for the uses that the program will be written for. Figure those out first, and then write the code that does that. And then that because another user of code, which calls back and back until you’ve got the whole processing chain written and tested.  And I realized that I had at least two different kinds of users in Mydas — we’ve got the player who I had been focusing on, but you also have the author who is writing code. All of this has to work for both of them, and what does that mean anyway?

But, again, the advantage of this project is that I can specify the whole thing. I can write the Author’s inputs, and the player’s inputs as text files (perhaps) and input them both to the program, and be completely certain of what the output should be.  And that’s where I should start writing my use cases. And there will be more detailed ones as I go and worry about the how, and the what.

For the first time I feel like I might know what I’m doing with this.  Of course defining the what is turning out to be a harder task than I thought at the time, which makes me glad I started on it.

Interactive Fiction

There’s a deep part of me incredibly fond of text adventures. I remember waiting for my  Uncle’s TRS-80 to load (it took so long — I remember it as hours — to read that tape) and then to play for just a bit. To open the mailbox and see the house on the hill. To have the whole thing crash and have to be reloaded.  I spent several days with them that year and made no progress in the game.  Later, I got Diplomacy for my Apple ][c, and played Hitchhiker’s Guide on a friend’s Commodore.  I wasn’t really a gamer back then, games didn’t fascinate me the way they do now, but there was something about text adventures I liked.

In the past few years, I’ve played a few. I’ve watched the AIF community grow and wane and grow again with different types of “adult interactive fiction” games. I’ve played more point and click adventures in their renaissance than I ever played in their heyday. But while I like them, I don’t really play them. On the other hand I yearn to make them.  This seems contradictory to me, but there’s something about the possibility space of IF that fascinates and challenges me as a story teller.

So maybe it’s a bit of hubris that I think I can write a kind of game I barely play and tell an interesting story.  It’s definitely hubris that I think I can write a parser and make a JavaScript parser game designed to be played in a browser. I’ve done a bit of research and have found some partial projects, but nothing really developed. That probably means I’m the main audience for this as well. The truth is, I’d hoped that TADS3.0’s HTML implementation had been more like Twine’s, but it requires a working server to function.

And speaking of Twine, why not use and extend that?  Twine is pretty awesome, and it offers something really pretty amazing for people to create stories with.  I’ve thought about adapting my stories to that medium (and wrote 2 or 3 games for it last year).  But ultimately, I’m a programmer too, and just as I’m drawn to TADS’s object oriented structure over Inform’s more narrative structure, I’m drawn more to writing JavaScript that editing a wiki.

Inform does have a web-based exporter, IIRC, and it will be simple to find an interpreter for Inform that will run on just about anything.  That’s pretty cool of Inform, and is certainly worth anyone’s time.

So it’s hubris to think that this is needed; it’s hubris to just think I can do it and be successful at it.  But then, hubris is for this very reason one of the traits of a great programmer.

The project will be split into two pieces, much like TADS. One will be the parser/disambiguator (which figures out what verb/command you are giving, and which objects you are referring to. It figures out you are taking or putting and that it’s the red ball not the blue pencil that you are taking. I’m calling it Mydas because it touches every other part of the project, and because it’s the species name for the Green Turtle (Chelonia mydas).  The other part of the project is the library of objects which the parser uses and which authors will instantiate or override as part of their game creation.  It will be called Chelonia, for obvious reasons.

I’ve already started and had some missteps, which will be the subject of future posts.

New Year, New Plans

So, long time readers of the blog may know that I try to do a plan for what I’m doing in the coming year, so that I have some idea of whether I’m doing the things I want to be doing.  Last year at this time, I couldn’t even manage to think about what I might want to do in 2014.  In January and February, I considered writing a post, but never got to it. My March or April, I just forgot about it, and tried to keep moving forward.

Some of this was settling into new work experiences — my job keeps me busier than any job ever before, and I’m learning (and, frankly, hating) C#.  But interspersed with that 70-90% of stuff I don’t like doing, i get to do some interesting JavaScript, HTML, and interactive sites and displays.  There are places in the world where I can stand in front of something I made and say I made this.  I wrote a video game for work; we did kiosks for a museum; we’re working on an iPad app as well.  So, that’s all good — but busy and draining.

I published no work last year. Few if any blog posts, no stories, no games, nothing. (Some of my work software shipped, so it’s not nothing, but it’s not what I want to do.)  Some of that was work related, but a lot of it has to do with some personal stuff that’s no one’s business by my own.  I’m mad about some stuff I can’t do anything about, and I’ve not been willing to let it go or change it so that the stuff I’m upset about goes away.  That sort of locked me into a cycle of non-creation that kept me from even making plans I knew I was going to fail at.

So for the first time in a decade, I’m making some New Year’s Resolutions.  Most people make bad ones, but I’m just committing to two operating principles.  The first is to Deal with My Rage.  I’ve got a lot of it (I always have) and I don’t handle it well.  So part one is to figure out how to manage it better.  Being angry takes energy, and all that energy going to stoke my fires is energy that’s not being put towards my other guiding principle:  Make More Stuff.  And by “Make” I mean, finish, publish, let people see. I’m a writer and I write all the time. I’m a programmer and I program all the time too.  But finishing has always been the problem, and it feels like you never make anything if it’s never actually done.

So, I’ve already started working on the anger stuff. There’s a little therapy. There’s some rebuilding some social groups so I have somewhere to talk about things. There’s this project, because projects are good.

I’m spending the month of December figuring out what sorts of things I want to Make next year.  I’ve got a novel/novella that I wrote some time ago in response to 50 Shades of Grey. The movie’s coming out, it might be good to get that in shape for when it does.  I’ve got a really cool and probably unnecessary JavaScript IF parser project that I really want to work on.  (I love writing in JavaScript. TADS and Inform? Not so much).  I’ve got a couple of game ideas to work on, and an interactive toy that I want to make. Then there’s the games website that needs making which points to the games I actually did make in 2013.  There’s a lot to do, probably more than a year’s worth of stuff.  So December is about working on one of these (because I can’t stop myself) and figuring out what takes priority over the next year.

Because I’m saner if I handle my emotions;  I’m saner if I make things and know I’m adding to the world.

This post is over a year overdue, but like the turtle in the story, we just keep plodding forward doing the best we can.

Things Change Like a Circle

This post was prompted by The Extinction of Blogs and Prototypes for Blog Revival at  Chris Bateman’s Only a Game, as well as several other blogs related to it ( The Day the Music Died and Whatever Happened to Class? as of this writing)

I have a couple of large things to say about blogging, it’s role, and if it’s working/how to make it work better.  This post is just one of those things, and goes to my own history with blogging, which goes back to before there was the term “blogging”.

Back in ’95 we called them “Online Journals”

Something happened web-wise in 1995.  There was an influx of people who got web technologies. There were several free hosting platforms (Geocities and Tripod come to mind).  It became possible for a pretty much ordinary non-technical person to put up a website and stick the things they were thinking about up there.  I did it, and quickly joined a community of people who had nothing more in common than that they all posted their daily thoughts on a webpage somewhere.  Back then there was no software for it — I edited the index page, the current page and the previous page every day to maintain links and often screwed it up.

I did it enough that about a year into it I broke down and bought a domain and wrote my own platform for managing journals, then rewrote it when php5 came out and let my friends join it.  I didn’t incorporate usernames or anything that would allow the different users on my site to interact with each other — because I didn’t think anyone would want that. I also thought that the newest content should come at the bottom of the page, because it’s in chronological order, dammit.  I was pretty obviously wrong about that as well.

The community that I joined in 1995, though, had a problem.  Suppose I create a new blog and I want people to find out about it? How do I do that? You could submit yourself to the Yahoo Directory of online journals, and many of us did that, but really, how do you find people? Well that community had two ways. First we had a mailing list, and then we had a webring.  Webrings linked sites in a sequence so that if you clicked on the next and previous links on it you’d go through all the sites on the webring.  Ours was the Open Pages webring, and it still exists.

Then we went all Social

Eventually, a couple of things happened. First,posts became shorter and displayed all at once, and ‘weblogs” were born. Pretty quickly that was shortened to the unfortunate name of ‘blog’ and we’re where we are today with that.  The other thing that happened was LiveJournal. We didn’t call it that then, but let’s face it — LiveJournal is a social network.   You have an account, you can follow and friend people, and their posts come into your main page. You can comment, and it’s all tied to your identity. It was easy, supported some theming, and there you go — people migrated in droves.  The handful of friends I was supporting either stopped journaling or went to LiveJournal. Eventually I went too (and good thing, too, I met one of my wives there.)

And it starts all over again

Eventually, there was better software. WordPress, and other blogging software made it so someone with a few bucks to spend on a hosting plan that had PHP (almost all of them) and mySQL (ditto) could create their own blogs and do their own thing. LiveJournal was still there, and a lot of people still use it (like most SF Authors I know, with a few exceptions, many of whom just mirror the content onto a main site.)  Discoverability was still an issue, but we were back to a point where it was a few people, and there were tools for that as well.

You find a few like-minded blogs, you do linkbacks (Until those were perverted by spammers). You connect up with Technorati, and find more.   You use RSS and the social aspects of GReader to find more people with shared interests.  You comment on each other’s blogs, and you write blogs that reference theirs. For Gaming blogs, Corvus Elrod made the BoRT which guided some of the discussion, and let other people know who you were as well.

Then we slide back into social media again — twitter is great for sending links and having an open quick conversation about them. Facebook and Google+ do these things too.  The latter two have their own comment systems (and often you can pull those comments and identities into your hosted blog). I’ve started writing things that felt too light for a blog on G+, and I get more commentary.  People do take links for social media, they go and read, but they don’t comment.  (Not on a median site, anyway, some sites do just fine, but there’ the 1% of blogging).

So what’s next?

I get more responses on Twitter and G+ to what I have to say because the fluidity of  it is easier.  You’re logged in, your identity is there, and your voice is easily accessible.  For a blog, you’ve got a minimum to fill out: name, url, email, the comment itself If you want to post yoru own blog that’s an even higher hurdle. Does that mean that I think “Blogs are Dead” or that they’re over?

No, I think we’re at a point when they are at a lull. There’s something more needed– software of some kind — that is needed to push things over the hurdle. Right now our social media is fragmented, and while there’s more commentary there, it’s separate. RSS was largely maimed by Google Reader (and the the loss of social features there — GReader’s demise is probably good for RSS.)  Yet blogs have advantages over social networks — they are owner-controlled, they have some longevity (try to find a tweet from last year), they allow for longer-form, more thought-out writing.

Whatever software gets created will have to keep those advantages but incorporate the ease, identity and networks of the social sites. I suspect it’s going to be some technology that makes it easier to be who you are online, to carry your identity around, and participate in your networks and blogs at the same time.  That’s going to take a third party who is willing to merge these networks together into some new identity, and that’s going to be hard from a political/business standpoint, probably more than engineering of it.

 

(Tropes vs Women) vs Internet Idiots

I like to think that I”m a reasonably empathetic person.  That I can usually see where someone else is coming from and why they are doing what they are doing.  It doesn’t stop me from thinking they are ill advised or making mistakes when they do those things, but I can usually get it.  I do have my blind spots, I admit, but they aren’t that common.

But there’s a whole class of people acting in a way I just can’t understand.  I can’t wrap my mind around what would make them do the thing they are doing, whether they are lying or actually hold the beliefs they espouse, I just can’t get it. It’s alien to me, in the strongest sense of the world: it’s beyond my comprehension.

Okay, that’s vague, so let’s be specific.  And some of this should be marked with a Trigger Warning, although I don’t intent to link directly to that material, what I’m liking to, does.

There’s a woman, named Anita Sarkeesian.  She does a video series called Feminist Frequency.  I find her work to be intelligent, enlightening and entertaining. The series generally looks at the portrayal of women in the popular culture: movies, tv shows, and video games.  She is putting together a series on Video Game Tropes and is Kickstarting it.  (I donated to the project last night, which I’d meant to do earlier, so this controversy helped me remember).

From the moment she started the Kickstarter, she’s been harassed by gamers. There are game forums where the are organizing ways to harass her.  These harassments follow the typical entitled stupid male gamer methods threatening her physically and all the ways in which Courtney Stanton details from her experiences. The Border House had short blog on it, linking to some of the longer pieces by Sarkeesian about what has happened to her.

I get that geeks love things, and they don’t always understand why people don’t love the things they love.  I don’t quite get the idea that things that are loved are above criticism.  Kat has often told me that I complain more about the stuff I love being imperfect than the stuff I dislike being awful.  It’s because I want the stuff I love to be better, and it’s almost there. The flaws stand out more in the awesomeness like an Uncanny Valley of near-perfection.

And I’m really jazzed to hear what Sarkeesian has to say about video game tropes. I’ve probably heard most of it, and it needs saying.  Sure, there are people that don’t want to hear it, but I don’t get the motivation to silence someone. I don’t understand what set of motivations and desires compels someone to act in the way these men are acting.

I can’t wrap my head around it.

So I’ll keep saying things, and doing things like supporting the voices who are speaking out.  Yes, Sarkeesian is still doing this despite all this harassment, and that makes her of remarkable character and strength.  The thing is, you shouldn’t need to have remarkable character and strength to say these things.  But evidently you do, and maybe one day I’ll understand why.

 

Elder Scrolls Replay: Arena (part 1)

For a moment, something breaks me out of what I’m doing, and I realize that I’m leaning forward, chewing on my upper lip. My right hand is glued to my mouse and my left on the ever-popular WASD keys, which I spent half an hour mapping. On the screen is a horribly pixellated dungeon.  My BattleMage, Zhenette is there, on the first level of Fang Lair.  She’s there to retrieve the first part of the Staff of Chaos, but is resting for a moment, after defeating her first wight.

I’d been following the “right-hand rule”, after the first two extremely large dungeons of Arena, I’d given up on searching the whole thing. Right-hand rule would get me to most of it, and I’d be leaving laden down with treasure, leaving behind quite a lot — and hopefully by now I knew what things to leave behind.

The wight had little treasure, but the two battlemages who showed up while I was resting had armor I could wear.  I hadn’t so much forgotten to buy armor in the last town as run out of money on spells.  I nearly died in the last dungeon because I’d been diseased by some ghouls. Then I accidentally saved over my “safe” savegame, and was just screwed.  I hadn’t found the part of the interface which told me I was diseased, so I thought I was fine, until I tried to travel back, my quest done.

And on the way back I died, and then I died again, when I tried for somewhere closer.  I drank all my potions, not sure what they were, and the last one — of course — was a cure disease potion.  I took the scroll the Queen wanted to her, and she showed me the way to Fang Lair.

I waited a bit, I was getting better at fighting, both leveling and the actual physical skill of fighting — the Elder Scrolls games, particularly the early ones — make this a more visceral, first person experience.  Arena doesn’t have skills like the later games, so it’s your stats, and your mousing that decide how well you hit.

So, I bought some spells, both cure disease, and some fire resistance since I’d heard Fang Lair had lava pits, and that tapped me out.  But finally I was ready.

I was mastering the dugeon pretty well, and it looked like there was this small section that I hadn’t explored.  It was to the left, but things were good.  So I delved into a mineshaft, and headed north.  I popped out in the small room, and something was pelting me with a spell I’d never seen.  And I was suddenly out of spell points and there was a wight in my way.

Heart pumping I swung my sword, heartened that it even worked — I wasn’t sure it would.  Eventually it died or went away (no body I could see), and I was nearly dead.  There were enough spell points for a healing spell, so I cast it, saved my game and rested to recover.  The two battlemages I mentioned showed up, and I killed them quickly.  Looting their body, I finally got some leather armor that I could wear. I healed again, and rested again. That rest was interrupted by ghouls, who promptly diseased me.

At least I had  my spell.  I tried to cast the spell, and it didn’t work — I’d neglected to see how many spell points it cost to cast; I was low on spell points, so if I rested again I might have enough.  I had a save, sure, but that was before I got the armor.  I rested again, and that’s when I realized I was leaning forward, anxious, wondering if this was going to work.

I so rarely have this experience in new games. I think it’s because I trust them.  They’re going to make sure I make it to the end.  There’s probably three ways to solve any problem, just in case, and you can’t ever really screw yourself.  TES: Arena makes no such promises (and neither did Daggerfall or Morrowind; once I got bitten by a rat in Vvardenfell, and I couldn’t move, nor would I ever be able to again.  Load a save, and carry better spells/potions next time were my only options).

Later, after defeating the wights and returning to my right-hand path, I was leaning back, my feet propped up on an old speaker.  I’m confident again, and doing well: the spell had worked, and I wasn’t diseased, and I’d rested fully so I was full health.  Nothing was beating me.  I climbed out of the mineshaft, and four minotaurs surrounded me.  My feet found the floor and I leaned forward.

This might be a hard battle.

I’ve Seen This Scam Before

There are a lot of people who really want to be published authors.  They’ll do just about anything to be one, and that opens them up to scam artists and other people who desire to take advantage of them.  There are people who pose as literary agents, taking fees from authors to represent them, when in actuality they’re supposed to get points on your book. There are contests that make you sign over your rights to the work, and may not even pay out prizes.  There’s a whole page on SFWA about scams for authors, because the draw there: to be published, to see your name on paper is so strong, it makes people stupid for the chance.

Here’s the thing: if you’re good enough to get published, people will pay you.  That’s how it works: an author writes, and they get paid.  If you’re not good enough to get published, then the scams won’t do anything but lose you money.

Simply put: You should get paid for your work.

 


 

QA testing is one of the hardest jobs in IT.  It’s a difficult thing in the first place.  Then add to that fact that if you do that job, you have to go to those egotistical programmers and tell them that yes, again, their code is broken.  The messenger gets shot a lot.  I know, I’m an egotistical programmer.

(I’ve worked in manufacturing environments too, and nobody likes the QC people there, either. It’s their job to find mistakes, and nobody likes being told they make mistakes.)

But smart programmers (even egotistical ones) recognize that QA people make their code, their product better.  The difference between an MMO in beta, and that MMO at launch is QA. And that’s important.

So, like writers, QA people should be paid for their jobs.  But the thing I know is this: some people want to be in the gaming industry so badly that they’ll do anything for it, even falling for scams like this.  Or crappy contests.

And yes, I know the two names behind those links are huge names in the gaming industry.  But QA is hard, important work.  It’s not fun, but it can be fulfilling.  And you should be paid to do the job, not pay the companies who are benefiting from your work.

Frankly I think these two are the same scams, targeting the same kind of people: earnest,passionate people with dreams.  And it makes me a sick.

Get paid for your work, you deserve it.

 

RIFT Travelogue

So, I mostly ignored RIFT because of the Pen and Paper game of similar name.  I was told through Twitter that it wasn’t the same, then that it used a “skill based” system that made it different enough from the other Fantasy MMOs out there, that I decided to sign up for the beta, a complicated enough process that I insulted the game team in my reasons, and forgot about it until they invited me for a beta event.

Everybody has their favorite kind of character to make, and my is a dark-skinned, white-haired Mage, who I usually name “Zhenette”. I had one on WoW, have one in DDO, something similar in Guild Wars, and so on.  She’s not the only kind of character that I play, but I like playing ranged magic DPS, and whatever that is, usually gets a character like that, as much as I can make it.  I even have on in Dragon Age, so there.

I also usually play on the more civilized/order side. Yeah, Alliance on WoW.  I played Order/Light on WAR, although I made characters on the other side, to see what it was like.  So I gravitated towards Guardians in RIFTs, but you know what? I couldn’t make Zhenette on that side. The darkest character I could make had a slight tan.   The first thought through my mind was “They didn’t go there, did they?”

And when I went over to the Defiant side, all the characters and races there are dark, by default, and I realized they had.  I also saw that the Defiant used machines, and Zhenette is often also a mining/engineering type, I settled on them.  I’m glad I did, because their opening story is much more evocative than the Guardians.

The over-story goes something like this: the world was created as a nexus to all the other worlds, which was intended as a blessing from the gods.  Things went well until the dragons showed up and tried to take over.  The gods sealed the rifts, and things were doing okay, but people forgot about it, and then something happened which unsealed the rifts, and things got bad.  I’m not certain precisely what happened, and in fact the opposing sides have different views about what it is that happened, each blaming the other.

The gods then made the Ascendent, special people designed to fight back and fix the problem.  These are what we call “Player Characters” for the most part.  In the Guardian story line, an angel raises you from the dead, and sends you out to fight. In the Defiant starting area, however, you’re far in the future, and the Defiant have finally figured out how to make Ascendents themselves, raised you and through the tutorial area, ship you back into time to when things got started so you can stop it. The Guardian starting area is much more vanilla, with a siege on the city your in, starting just after things went to heck.

So while I don’t like that they’ve racially divided the two sides light/dark, I like that the conflict is one of Religion vs Science. Trust in the Gods to save you, or save yourself, because you can’t trust the gods.  Which means I probably won’t be playing my Guardian Characters during the open beta, because I’m pretty sure I’m firmly in their camp.

I’m setting these posts to start after the open beta is over, and writing them as I go, so my impressions may change.  In the next part, I’ll be talking about how their “Skill based” system stacks up, and how successful it feels to me, with the understanding I’m not deep into it yet at all.

Ada Lovelace Day

Today is Ada Lovelace Day, and I pledged over a month and a half ago to write a post about a woman in technology and science who inspired me.  I’m a programmer by trade, and inclination; writing is important to me as well, but even that is centered around programming and technology issues. Ultimately, there are four people who inspired and shaped me into the programmer I am.  The first is a man, the remaining three are all women.  Today I’m going to write about them.

Ada Lovelace was the first programmer, and Charles Babbage was the first hardware tech.  I guess its’ fitting that the one man in my list was a hardware tech, and all the women were programmers.  Without them, I probably would have been a hardware tech, but without this first man, I probably won’t have heard of or met two of the women, at all.

When I was about eight years old, I went to spend a summer week with my mother’s father, whom we called “PopPop”.   He was a retired Air Force Master Sergeant, who went back to work for the Air Force as a civilian contractor.  One Saturday while I stayed with him, something happened at his work, and he took me with him.

He worked at one of the (now defunct) Air Force bases that monitored the Russian submarines off the coast of North Carolina.  His job was to keep the RADAR system running, which meant taking care of the computers.  This was in the mid-70s, and these were the first computers I’d ever seen.   They were hulking behemoths, 5 or 6 of them, each the size of a refrigerator.  He set me down at the teletype — the only input/output for the device, and had me play with the software that calculated trajectories.

One of the breadboards — this computer was old enough that it didn’t use integrated circuits, although it was new enough that it used transistors instead of vacuum tubes — had burned out.  There was a civilian tech there, to replace the part, and my grandfather had to meet him.  As if being in the computer center wasn’t thrilling enough to my 8-year-old mind, my grandfather showed me the secret radar room (where they covered the locations of the subs with a curtain so I couldn’t see, or tell), and the radar dish as well.

He ended the tour showing me a computer bug in the trajectory software that made it come out with negative numbers for height when the angle was too high.  So, a good day for my younger self: my first hardware failure, my first bug, and secret anti-Soviet spy stuff, like a geek James Bond.

If nothing else had happened, I’d probably have gone off to NC State, majored in Electrical Engineering, and be designing chips and hardware today.  In fact, I did spend a year at State, following that goal, but several things and people changed and altered that goal, and those are the women I want to talk about today.

Like my grandfather, I was an early riser. I often woke up earlier than most of my family. My father worked at the end of a long commute, so he was often gone by six in the morning, when I woke up.  I had a couple of hours to really wake up and catch the bus, and I spent a good portion of that watching local news, and the follow-on show, Good Morning America.

One morning they had a guest who was all about computers.  She was in the military, like PopPop, and worked with computers like he did.  Her name?Rear Admiral Grace Hopper (Although she wasn’t a Rear Admiral when I first encountered her, it’s the rank she retired with).  I remember a lot of that talk with the hosts of Good Morning America, although possibly they were conflated with other times I saw her.  She struck a chord in me, there was something about her reservedness and formality that contrasted with her sense of humor.

Her description of finding the first “bug” in a computer program (a story about them actually finding an insect which had died on one of the breadboards of a computer they were maintaining)  reminded me of my trip with PopPop to the base he worked on.  She wrote one of the first computer languages, COBOL.  I remember that she had one of her nanosecond wires  (a wire the length that light travels in a nanosecond), and gave it to the host.  It was neat, and I was awestruck.

And she was the one who introduced me to the concept that it’s “easier to ask forgiveness than permission.”  I know I quoted that a lot when I was younger, but I’ve learned that there’s a certain level of excellence required to pull it off.  I suspect Admiral Hopper managed that level of excellence, though.

If I’d had the words then, I’d have understood why she made such an impression on me. She was tough, she was a geek, and she was a woman.   The women in my life were all strong, determined women.  While my mother’s mother fulfilled a more traditional role as a military wife, my father’s mother worked outside the home as a chemist. So it was no real surprise when my mother went to work, and back to school.

Perhaps the thing that surprised me the most then was that she went to school for a programming degree.

I don’t know why it was surprising, maybe it was because she was my Mom, and she was a teacher, and at that age, who is better than a teacher? Now I know she was a teacher’s aide, which is even more thankless and underpaid than teachers are.  While she taught, she went to night school, at the local technical college, and got her associates in computing.

I think at the time, I was still fascinated by the artifacts of computing. Computers were rare.  We had one in my middle school, and the access to that was strictly controlled.  My brother and I saved up for an Atari 2600 and that plus a cheap LED Football game were about the only ‘computers’ in our house.  I still remember the day, though, when Mom dropped her BASIC program.

She’d kept it up on the top shelf of her closet.  While getting it down, she slipped, and the entire thing cascaded down, cards going everywhere.  I don’t remember how long it took her to get them back in order, but from then on, she kept her programs wrapped up with rubber bands.

A decade or so later, I was living with them for a while, and Mom professed to not ‘understand computers’ all that well.  I had to wonder what had changed so much? It bothers me when people denigrate themselves that way, but where was the woman I remembered, the programmer whose biggest problem was an out of sequence card-stack?  I remember more the ambition and learning, and the desire to program that played out in my own BASIC programs, which, thankfully weren’t on punched cards.

I wrote a game during summer camp, and did a lot of work with the Apple ][c, but was still focused on being an electrical engineer, because I somehow naively thought that’s how you worked with computers.  Even then, I knew I wanted to program them, make them do things. I just didn’t now how that was done.

Perhaps because of that naiveté, I didn’t do so well my first year of school.  I came home, saved up some tuition, and we had a family discussion about how I would be going to a local school.  I’d do more what Mom had done, and go to a local school, and take computing classes with a business perspective.  (Mom’s degree had been business focused, as well).

I might do it differently today, but that would have meant that I never met Mrs. Wanda Thies, and I’m sure I wouldn’t be who I was today without that.   I did a search on her, and other than some mention of her church, and that she did a seminar at UNC-Greensboro (where I went to school) in 1989, there’s not much about her on line.

I took four classes with her, COBOL mostly, and we talked her into teaching us assembly language.  Because she was an old IBMer, the only assembly she knew was on an old IBM Mainframe.  We didn’t have one of those at UNC-G, so we mailed our programs to NC State to be run.  They would only run at night, and when there was time, so one of the things we learned was to check our software over carefully, including the JCL that told the computer how to run our jobs.  I had a few problems with that, but so does everyone.

It was the closest I ever got to old-style, punch-cards, time-shared computing. By the time I entered the workforce, client-server development was the norm, and the way we work on the web is completely different. Still, those skills are useful — they’ll cut your time when you’re doing any sort of programming work.

She was probably the best teacher I had at any computing task.  She wrote and ran all her assignments ahead of time, she was efficient and clear.  You never felt like her classes were a waste of time, or that her instructions were incorrect.  She gave you every chance to succeed, but she wasn’t going to hold you back from failure either. Late assignments weren’t accepted, there was no extra credit, and that’s just the way it was.  She was clear about it from the beginning, and her class schedules rarely, if ever, changed.  It was wonderful.

She survived somehow in a world organized around men — the only other female professors in that part of the business school taught the “Office systems” degree, geared to wards administrative assistants and secretaries, in other words more traditional women’s roles. She didn’t even have a Doctorate, or if she did, we were informed she was “Mrs.” Theis, and that’s the way it was. I suspect she didn’t have one, but had a lot of life experience, and a respect for us as students that made her one of the best teachers I ever had.

She spoke one day, in one of the later classes. It was 1989 or so. “Look at this file format,” she said. “Four digits for the date.  Any of you turn in a program that doesn’t use a four digit date, and I’ll fail you. In a few years, you’ll all get jobs fixing that problem, I guarantee you.  But don’t you even think about doing it now, or in your professional career.”

She was right about that, too.