Friday 29 August 2014

Legacy Revisited

I have some positive responses to the draft, but also some negative ones.  The beginning is "way too technical" and "not related to the story."  I agree, to a point.  I was trying to bring some enlightening verbiage and set Mark up as proud of his work.  But I gather too much tech will turn off non-technical readers.  In re-reading this, it is a bit soap-boxy, and the more I read it the more I dislike it.  So here is the old beginning...
We missed Dean in the meetings.  His cutting wit had a way of getting to the heart of issues. He had moved on to be an IT Solutions Architect at a competitor. Dean only had a six month programming course from the Southern Alberta Institute of Technology, but he did have a good grasp of how software fit together and was knowledgeable about tech du jour.

IT Architects are supposed to plan, design, and oversee the implementation of technology in a company, but unlike real architects that make buildings, there is no requirement for license for safety purposes.  Though there are bodies that do offer some accreditation, like most disciplines in IT that grant certificates, there isn’t much validity to any of them.  I felt no need to certify in anything IT-flavored after getting my degree.  The paper didn’t make me an expert, my passion did and you could see it in my craft. People get accredited to get jobs.  This doesn’t always mean they have experience or can do the job - that is usually the point of getting a certificate.
Snip!  As for the rest of the techy speak in the story, I am not sure what to change yet.

Thursday 28 August 2014

Mission: iBooks

It is done.  It isn't painful, but it isn't trivial either.  I was unable to publish the stories individually - I could have fought with iBooks Author to try and get it to like my format - but ultimately I gave up and used its format.  You have a choice of writing a chapter book or a text book.  So I took the five published stories and made a short chapter book.  The import from Word per chapter was easy enough.  It even kept additional formatting (the list and font in Smackdown.)  But I could not use my stock book cover that I have on Play or Kindle.  There probably is a way but it was not obvious - I didn't see any over "default" covers so it is possible.  There are some quirks in the text edit for titles - it doesn't provide a mechanism to insert a newline, and if you split it, it looses the multi-line information when it gets pumped into iTunes Producer.  It was funky again when picking the device to publish to: one choice - iMac. One unfortunate thing about the BISAC codes - you can only pick one subject. iTunes Producer was trivial to use - but the publishing region is funky - if you select "world" it will not add it as a region (bad HCI Apple?  No interaction feedback? No!?) So, to select all regions, you have to select all regions!  The previewing tool was decent but the tab chapter view wasn't obvious (use the left and right arrow keys, don't click.)  It looks like it was designed for gestures.  Anyway, I'm going to splurge and see how it really looks on my iPad.

My brief summary: if you are starting from scratch iBooks Author is a cool studio.  But if you are just importing existing books, its not great.

Wednesday 27 August 2014

Legacy

First draft of Legacy is done.  In this episode Mark finds out that perception is everything.

Here is a snippet I posted to Reddit (Click here to up-vote.)

....
GASMAN was originally written by a fellow named Dmitri Isayev.  I never met Dmitri but I had heard about him through our client Bob in Gas Marketing.  Bob, the group lead, spoke glowingly about Dmitri and according to him Dmitri was the smartest IT guy around.  He had a PhD in mathematics and was brilliant.  He understood every requirement Bob gave him in the three years Dmitri wrote GASMAN, including some of the complex calculations (that I never got to see how complex they actually were.) I had the feeling Dmitri could walk on water. Dmitri had left Banana almost a year before I got there to go work in IT finance in Toronto.  Alan inherited Dmitri’s legacy and everything was going well, at least Alan never heard from Bob or any of the other traders.
 It waited for my shift before Bob called with an unusual dilemma.  Dmitri had implemented a brilliant, granular security on the transactions.  Only certain individuals or roles were allowed to certain data within a transaction and Dmitri had implemented this mathematically inspired security infrastructure.  Bob complained that one of the junior traders was seeing information he shouldn’t of so I set about trying to figure out why.  I anticipated my call to Alan would be unproductive.  It worked per specification according to him. So I jumped into the code with my handy-dandy debugger tool.  I found the security module.  I put in my break points and watch variables.  To my surprise, the program whizzed on by without triggering them.
My first thought was that I hadn’t done something right in configuring my debugger so I fiddled a bit with no change. Then I looked closer look at the code through my integrated development environment.  I tried to discover where the security code was called.  I found it was never called from anywhere.  I did a deeper dive only to discover that a lot of it was never fully implemented, and what was implemented would never work.   There were recursive calls and other strange instruments. For all intents and purposes there was no data security in GASMAN.
I tried to find out if GASMAN was ever code reviewed.  No one knew, and there were no documents to artifact that anyone aside from Dmitri looked at it.  It didn’t even seem to have user acceptance testing or client sign off.  When I asked Anne what I should do, she told me to talk to Bob.  I scheduled a meeting.
“Hey Bob, I wanted to talk to you about the security issue in GASMAN,” I said.  Bob was a portly fellow and outwardly quite jovial.
“You found it?” he said somewhat excited.
“Well, yes.  The security portion of GASMAN was never completed,” I replied.
“Sure it was.  I saw it working,” Bob replied. “Dmitri showed me the test cases.”
I wasn’t sure how to respond.  Maybe it had worked at some point but Dmitri forgot to check in the code under version control?  “I went through the code Bob and traced it.  There really is no security code.”
“That’s simply not possible,” Bob said with apparent frustration. “You must be wrong.”
“Trust me Bob,” I said, “I spent a lot of time going over it and it looks like it was never completed.  It’s not called by any other part of GASMAN.”
“Dmitri wouldn’t do that,” Bob stated flatly. “I saw it working.  I want someone else to look at it.”
I was stunned into silence for a moment but then I just blurted out, “Listen Bob, believe what you like, but why don’t you try it yourself?  Any user can see anything, and it’s not a bug.  If Dmitri did have it working, he didn’t leave the code behind, and it’s not what is running in production.”
“I will,” Bob said gnashing his teeth.  Our meeting was over.

The next day I arrived to see a meeting request in my inbox from Anne concerning GASMAN.  When I met her in her office she told me that Bob had complained about my unprofessional demeanor: Why don’t I like Dmitri? Why would I lie about Dmitri? I recalled and recited my meeting with Bob in great detail.
“So you see - one way or another - it doesn’t work, and it looks like it never worked.  It’s dead code,” I said. “I don’t know how else I could have explained it to Bob.”
“I know, I trust you,” Anne said.  “The client really holds Dmitri in high regard.  To make things easier, and reduce the heat a little, I’m going to assign this to Kenneth.”

You are going to pour gasoline on a freaking fire? I thought.  The guy has no people skills whatsoever. “That’s fine with me,” I said.  I didn’t know I could feel so relieved and pissed off at the same time.
....

Back-Story
The GASMAN story line happened to me when I was working for a financial systems company.  I was hired to come in and finish a complex role based data security feature that was left in an unknown state.  The developer before me had spent two years on the problem, and I was told to get it working, but not change it substantially.  Sure enough as I started to analyze the code I found recursive sections and major chunks that would not/could not work.  It all became moot when I started to trace back to who actually called the code - only to discover it was never called anywhere.  There were tests that didn't test the functionality, but management believed because tests existed, it must actually work.

I blended this into another experience where I had to maintain an application by a developer who was very popular with the client.  The client was resentful that the developer was off-boarded during a reorg and didn't want to give me a chance to provide service.  This problem will be explored in a future story - where you build personal relationships with clients that get obliterated by lack of organizational change management and impact assessment.

The SNUPEA story line happened to me several times in my career.  Rewriting a large chunk of code or an entire, working application - just to understand it - when you could just ask the right people the right questions or read the documentation (when it exists of course) - is just mind boggling.  I had one fellow rebuild something in six months that I built in one - not that I'm saying I did it quicker - but it is a total waste of time and effort to rebuild working, tested code or fix things that aren't broken.  These mistakes usually get caught if you have periodic peer review or effective project/program management.  This theme will reappear in later stories... around the "I just replaced a whole thwack of working code that I didn't understand why it was there with some OpenSource libraries that were totally busted and subsequently derailed the project 6 weeks."

Wednesday 20 August 2014

Prima Donna

First draft of Prima Donna is done.  In this episode we see how easy it is to make very public mistakes with technology and how none of us are immune!

*** updated ***

Here is what I posted to reddit.  (Click here to up-vote.)

Hey folks; I'm writing a bunch of short stories based on my experiences over 25 years in IT.  Here is an excerpt from draft of my latest story...

….

I tried to log in to my email but the server was down.  “Your email working?” I asked Todd.

“It was but a summer student managed to take out the server,” Todd replied.  “That’s one of the reasons I’m here.  I can’t do much on my current project because I need the email servers and the messaging team has locked them all up.”

“Wow, what happened?” I asked.

Todd settled back a bit in his chair to tell the story.  “Well this girl sent a fund raising request to one of the corporate address lists by mistake yesterday.  This address list contained most of the people in the company.  So then everyone started replying to all saying don’t contact me, but they carbon-copied her boss, their boss, and now everyone in the company is cc’ing everyone else saying stop replying-to-all and whatnot.  This poor girl started an exponential, internal, accidental, denial-of-service attack.  The email guys can’t delete the messages fast enough and every time they bring the system back up it reignites like a forest fire in a drought.”

“I saw that and ignored it.  But that’s a great start to a career!” I chuckled.  “Does she still work here?”

“I don’t know, but if I were her, I’d be hiding,” Todd responded.   He paused and had a somewhat serious look on his face.  “We need to coordinate the fair dissemination of Dean’s office supplies.”

….

 “Hey email is back!” Jeff exclaimed.

I was feeling a bit anxious about getting back to work, but I wanted to keep talking with the dudes via messaging.  Banana Corp didn’t approve of instant messaging, so I had an idea to use old-school Microsoft network messaging.  “Hey do you guys know if the desktop messaging service is enabled?”

“By default no,” Todd said, “but it’s not like the desktop guys can get rid of it.  It’s a standard part of Windows.”

“Cool,” I said, “Turn it on and we can send each other messages.”  I got the okay from the dudes and I went back to my office.  To this day why I couldn’t use a phone I do not know.


Later that afternoon I got a message on my computer from Dean.  It was preceded by an annoying beep and a pop-up window.  Message from Computer01435: I just met with Anne and I’m clearing out.  Keep in touch bro.  It had been a while since I used the network message command.  I typed, net send /banana deano “Come to my office before you go.”  Then I heard a chorus of annoying beeps echoing up and down the hall.  Even though I was pretty far from the corner office I heard a burst of laughter.  Oh – my – god, I thought as I quickly walked down the hall.  On the way I noticed a few people sitting at their desks with puzzled looks.

When I got to the corner the dudes were still laughing.  On Todd’s screen I could see a pop-up window that read, Message from Computer01541: deano come to my office before you go.

“Forget a colon?” Jeff asked.

“It’s domain, colon, user – no space,” Todd said.

“I just sent this to everyone in the company, didn’t I?” I asked defeated.

“Yep, you spammed everyone online,” Dean chuckled.  “Let me know how many Deans show up.”

“Todd, you said it was off by default?” I said angrily.

“It’s supposed to be,” Todd said shaking his head.  “I guess the desktop guys changed the default to off recently and it wasn’t a retroactive desktop update.  So it would be more correct to say you sent a message to anyone who wasn’t recently provisioned with a computer.”

….

Monday 18 August 2014

Smackdown done...

Six major edits and its published.  Toughest yet.  Trying to keep it interesting without getting too technical or distracted.

And the kickstarter ended yesterday.  Thank you to all those that pledged.  I raised about 15% of my goal - and mostly from people I know.  The various $0 marketing campaigns failed.  Not one reader from outside my circle.  But I am optimistic that some day someone I don't know will read my stories...

Stay tuned.  Next one will be really funny!

Wednesday 6 August 2014

Smackdown!

Smackdown has finished its third edit.  And it is not done.  Though I am happier with this version over previous versions, my supporting wife tells me there is too much going on and it is still too technical.  She suggested I put more comedic examples in of how Alan is inept, and maybe use it as an opportunity to explain some of the technical jargon.

She also finds the references to the MMORPG not well aligned with the story line.  Chris too thought this was dangling (and wanted more, so that would mean a dedicated story, or more inline references.  Its hard enough to explain what an Epic is let alone a game like EQ or WoW.)  And my editor also had some comments here...  So this aspect of the Mark's character is going away.  Leave that humor to The Guild.  Goodbye to the following verbiage.

... was home in time to attend the Epic Raid my guild-mates had planned for the day.  The game was a classic “Skinner Box.”  A friend had bought me this massively multiplayer online role playing game (MMORPG) just after graduation and I was quickly addicted.  Players organized into groups called guilds. Several of the folks in my guild were in the United States military.  They didn’t seem to sleep so there was always someone online to play with or talk to.  Accomplishing things in the game seemed to go better than in real life (IRL).   An Epic Raid is one of those events in the game that literally takes months to jump through all the hoops required, and all of your guild-mates help, to get bits and pieces for super rare weapons and armor that only your character can use.  The game took more time and effort than the job; I was over forty hours a week in game time.
.... In passing conversation I discovered Paul played the game too and had a character far superior to my own.  He’d even completed his epic.

.... Losing myself in my Epic Raid game when I got home was much simpler than what I was doing at work. There was no client to keep happy. The team in-game works because they want to play together to achieve common objectives. And you can never work outside the rules.