Thursday, February 28, 2008

Email to grand-boss

I felt like I should have gotten high-fives from the Bobs after sending this email to my boss's boss last night ;-)

--------------------------------
From: SEK
To: Grand Boss
Sent: Wed 2/27/2008 8:03 PM
--------------------------------

Hi Michael,

Thanks for discussing the implications of MT’s departure and your ideas on how we can cope with that as a group. As well as the ideas on making the group more efficient (contractor usage, etc)

I love to provide input into these areas – if you haven’t noticed, I have a lot of ideas on how to improve process, reduce costs, and in general make IT Apps more efficient.

Diminishing marginal returns and per project contractor ramp up times are definitely a drain on our project implementation efficiency that we should weight against the cost. Strangely enough, the thing I most hate to hear from “the business” is “cost is no object”. Every time that has happened in the past (not just as Cricket), the work which gets done is non-relevant, non-fun, and in the end against every businesses objective of making money.

I wanted to answer your question on how long it would have taken me to implement the CSP POS project all by myself.
We actually got really lucky with the contractors on the POS project. I rate our efficiency as follows:

Starting with myself at 100%, I’d say Protik comes in at 90% - He’s been a great asset on the team. He’s been on the same page with the project goals since day one and also assisting with much of the management task load. After that I’d rate the 3 most efficient contractors at 50% each, and the 3 less efficient contractors as 25%. That’s 415% total, but Protik and I probably dropped from our individual speeds due to management responsibilities.

In conclusion, I wouldn’t be surprised if I would have been able to complete the development in 3x the time that we took. I’d probably have had to have been whipped a few times to achieve that speed on my own. Since my #1 personal work goal is to learn skills needed to run a software company, I was excited at the challenge of managing the large team and put in a lot of extra effort to keep the team as efficient as possible. Plus there are some benefits of having additional people to bounce ideas off of and pawn off the time consuming tasks like builds and deployments.

And to answer the 2nd question, regarding how to improve our development efficiency and price performance in regards to contractors:
  1. We can hire people temp to hire instead of contractors. That way we get the best of both worlds. We can evaluate them before they are locked in, and if we hire them fulltime, they are likely to stay around for a while, accumulate business knowledge, etc.
  2. We can hire more Junior developers as opposed to people who are already Senior/Super Senior. Sure they might not bring quite as much to the table, but MVA is a good example of how getting the right type of less-experienced team member can really help the team. If you think of a sports analogy, developing younger talent is the lowest cost way to improve talent on the team.
  3. Opposite of #2, we shouldn’t get pessimistic on the talent market because we were unable to land the super stars we we’re looking for. I have personal experience with both John Dinh and Paul Webber. They are both super star developer level and the fact that we didn’t hire them on fulltime is probably just an indication that we were aiming too high. Back to sports: A team full of super stars doesn’t always gel anyway. I mean, you’ve already got me, I’m like the Kobe of programming ;-) Totally kidding of course! (I’m really the Steve Nash of programming)

This email is definitely already long enough, but my improvement push lately is to be as concise as possible. So at any given time I have 3 words which I bring up with Mike at every 1:1 meeting. We often come up with good ways on how to progress on them during those discussions.

  • Process
    o Document and follow repeatable processes
  • Consolidation
    o Reducing the number of production systems developed and maintained by IT Apps
    o Consolidation within the code – reduce duplicated code within the system – use a consistent coding style and form
  • Sustainability
    o Fight Entropy – businesses, systems, or code which isn’t improving, definitely isn’t staying the same!
    o Refinement of systems, processes, over time to increase efficiency (and thereby cut costs)
    o 20% of CSP dev efforts devoted to sustainability, maintenance, consolidation, non-project driven refactoring
    * Management approval for efforts like Kaizen - approval for members to spend at least 5% of their time towards continual improvement.

Thanks (and I can’t believe I stayed late to complete this email),
-Stan

PS: the reason I did stay late leads directly to low cost software development tip #4 and a huge part of the reason why MT had to leave: “Capitalize on Developer Passion
I’d propose that developer passion, and not whipping, is the reason why previous development efforts, potentially including your antidotes from the meeting were low cost while providing big benefit to the business.

Friday, February 22, 2008

Top 3 Reasons I can never get back together with my ex

We've been broken up for nearly 5 months now, but I have to admit, the number of times I thought about getting back together over that period of time, rivals the number of times I've thought about sex.

I think I'm beginning to think more and more rationally about it though, and today I came up with the top 3 reasons why I can never get back together with her
  1. Throughout our 3.5 year relationship, she never once (or at best 1% of the time) let me win even the tiniest, most insignificant, disagreement. I don't think I've encountered her level of stubbornness in anyone else I've gotten to know even moderately well. Even though she often apologized after the fact, I don't think she ever really changed her opinion, or allowed for the validity of my opinion, and it wasn't uncommon for the same disagreement to resurface again. That's not the type of person I want to be with.

  2. I think she's a "pretender". She hides her true feelings the majority of the time - perhaps because she feels that there is something wrong with them, or maybe just that it is best to hide ones feelings. I finally learned that the person I thought she was, kind and considerate of others, is just a facade. She only acts that way in order to cover up that internally she's extremely self-centered. I don't think she even realizes that she is doing it. Not only do I not want to be with someone who is incapable of putting herself in other's shoes, but one of my favorite quotes of all time is from Hamlet "To thine ownself be true". I don't want to be with someone who is so incapable of being true to themselves.

  3. When she broke up, there was very little hesitation or second guessing. She's now at a time of her life where she's not certain of very much in her life (job, where she wants to live, type of person who is a good match for her, relationship with her family, etc), but the one thing that she's been very certain of over the past 5 months is that she doesn't want to be with me. She really doesn't even have a good reason to explain to friends and family, and resorts to vague misleading reasons or outright fabrications. I don't know if I could ever really forgive her for that, and even if I did, how could I trust her to do not repeat the same behavior again?
I'll focus on those three reasons and continue reducing the number of times I think about her, until the relationship is just a faded happy memory, like remembering a childhood pastime. I'm a very considerate, supportive, and loving person and I deserve to date people who share those characteristics.

Monday, February 18, 2008

Blood Diamond

just watched Blood Diamond. Definitely Hollywood, but I agree with a review I read that it is a persuasive presentation. Why is it that I don't think it would change the behavior of anyone I know?

It must be that life in Africa (Hollywoodized or otherwise) is so far away from middle class life in the US that it's outside the realm of things we can think about in a realistic way.

I wish our foreign policy was a bit less supportive of situations in foreign countries that are so abusive to the residents of these countries. It's not our job to go fix all the world's problems, but we should at least try to not make them worse! I saw Nina Hachigianon on Bill Maher and like the title of her book: The Next American Century: How the U.S. Can Thrive as Other Powers Rise. I didn't read any of it or get a feel of whether I agree with her views exactly, but the idea of foreign prosperity not being such a threat to the US is the kind of win-win thinking that seems so lacking in US policy lately.

TV considered harmful?

I like TV quite a bit, but also realize that it can use up a lot of time.
Maybe it's a good idea to set a weekly quota or something... <shrug>
I tend to use my laptop while watching TV and work on things while watching, but maybe that's not a great idea either.

When I was in a relationship, I thought watching "our shows" together was a nice relationship activity. Watching and cuddling, relaxing and spending time together, staying up till wee hours of the night watching shows on DVD if some show catches our fancy. I felt like it was a nice bonding experience, but now that the relationship is over, makes me feel sad to watch those shows now - plus it just doesn't feel right to watch them alone. So, I've given up these shows (probably more, but these are the ones I remember right now):
  • Stargate Atlantis
  • Painkiller Jane
  • Flash Gordon
  • Doctor Who
  • Eureka
  • Inuyasha
  • Torchwood
  • So You Think You Can Dance
  • Dancing with the Stars
  • American Idol
  • Beauty and the Geek
  • My Name is Earl
  • One Tree Hill
  • Smallville
It's sad to give them all up, but I suppose breakups happen for a reason. I'm not supposed to be the same person anymore - have to change and evolve. That should free at least 6 hours per week for more productive activities. And all those shows are associated with her in my mind, so watching them now wouldn't be the same.

We watched all 10 years of Stargate SG-1 together (like 7 years on DVD). That was pretty great.. But, it's not real - it's just a TV show. Maybe if I'd found other activities - maybe outdoor activities like mountain biking or something, then that would have bonded us together better. Although I have to remember that I already did give it my best... the relationship just wasn't meant to be :-/

Saturday, February 16, 2008

Reasons to like Stan

kindness, ability to keep up in a conversation (with a non-idiot), genuine interest in figuring things out, smell late at night, and those eyes

nice eyes?

Everyday normal guy

I do make a pretty good spaghetti sauce, have a bad back, like hiphop, and have a pet cat... but that's totally all I have in common with this guy.
Everything else about me is totally amazingly uncommon =)

Bastard Breakup

Don't know exactly why, but I like seeing some of these breakup stories lately. Maybe it's cause they make it seem so extreme in a funny way - makes experiencing the real life version not seem as extreme, and perhaps a little humorous also =)



The Boondock's Episode where Usher takes Tom's wife is hilarious too!
This is just a clip of it:

Tuesday, February 12, 2008

Jonathan Coulton - Baby Got Back

Jonathan Coulton is my new favorite geeky musician (or at least in strong competition with Weird Al). He's the same guy as did the Code Monkey song from a previous post. His version of Baby Got Back (IMHO), is in strong competiton for the best rap remix by a non-hiphop artist. Plus he uses the Creative Commons by-nc License for all the songs he writes, so people are free to remake the songs, make videos, etc of his songs.

Production Deployment

I don't really think my work is that interesting to subject someone to a minute by minute account of my day, but I wrote up a huge sequence of events after production issues today, and figured I'd post on my blog at work (doubt anyone is even interested there? except perhaps to point out how they might have fixed the issue faster - with their super power of hindsight no doubt). Since it was posted there... might as well post it here too. So for any poor saps that would actually subject themselves to reading such drivel, here goes:

A rundown of 2/12 Production Issue Activity that I was involved in:

2/11
  • ~4pm - double checking properties and binary build (we really should do these during business hours to save after hours aggravation and cost). The whole Denver office was down (including VOIP phones) due to a network outage.
  • 5:30pm - Conclusion of review: Property files weren't updated yet, and we *really* need to fix the property file formatting so that it's possible to use the cool eclipse diffs between environments without spending hours scanning through ordering and formatting changes. Started looking into how to get the production ROC DB properties.
  • ~6pm - Todd P was working on the build in San Diego - ran into the properties issue and sent an email. Turns out he was building 1.100 instead of the planned 1.111. But that's because 1.100 was never tested in the QA2 env by front end QA. Ok, we need a staggered code freeze for future deployments
  • ~8:30pm - got properties from Jon Bigelow, checked in and
  • ~9:30pm - checked with Todd P and build was successful. Sweet - we should be good for the deployment to proceed smoothly now.

2/12

  • 5am - woken by Steve Fletcher to get on the testing bridge. The Verisign daily had run long and so testing was just starting - and some calls were failing (esnValidation)
  • ~6am - standard deploy troubleshooting step of restarting cluster completed
    having trouble logging into BO - appears the "Enterprise" passwords I've used for every previous usage no longer work. The AD active directory login isn't working either... annoying!
  • ~7am - intermittent failures begin to get worse - percentage of failures rise from ~25% to ~90%
  • 7:10am - Bigelow says his AD account works in BO - just normal login (ex: jbigelow) and windows password. I try it a few more times, and there's no way I could have misstyped my password so many times, and it finally lets me in!
  • 8:20am - After researching in BO, and browsing the code some, while meanwhile answering all kinds of questions from the bridge, finally came up with a theory of what was going on (see the Auth.createSalesCode functional spec page for the 3 issues identified)
  • 8:23am - called Zafar - left message - he called me back - still sleepy, he concurred that my theory of what was happening was correct
  • 8:40am - called and briefed Cassisa
  • 8:40 - 9:20am - discussion on the bridge on what to do.
  • 9:20am - decision is reached to have me work the fix ASAP, and also to do a roll-back in parallel
    branch auth-165cvs rtag -r csp-authentication-165 csp-authentication-165_branch_ROOT csp-adapters/authenticationcvs rtag -r csp-authentication-165_branch_ROOT csp-authentication-165_branch csp-adapters/authentication
  • 9:26am - cvs up -r csp-authentication-165_branch Seemed like forever to switch the branch - weird
  • 9:32am - make the code modification ( no local testing ) - initially thought to modify the GetSalesmanCode operation class, but instead modified SalesmanCodeCache.java - think it's simpler change and has less chance of missing something
  • 9:44am - checkin and tag
    validate diff: cvs diff -r csp-authentication-165 -r csp-authentication-165_branch_1
  • 10:06am - edit deploy_versions.props create binary build based on 1.100
  • 10:29am - first build failed - fixed tag and restartingcvs up -r 1.113 deploy_versions.props./binbuild-csp.sh dev3 deploy-to-repo HEAD
  • 10:56am - start deploy to dev server - sancapvmcsptr3./bindeploy-csp.sh dev3 80 1.113 v20080212_3
  • 10:58am - deploy complete
  • 11:02am - Jboss finished starting up
  • 11:18am - completed SOATest validation of createSession, searchByName, getAccount, and auth.getSalesCode. getSalescode returning 000 in ~100ms... searchByName and getAccountInfo ~3-8 seconds
  • ~12:30pm - QA2 had to be built 2x, with prod build in between - CSP build had been rolled back to 1.68 and everything was partially functional
  • ~2:30pm - Command Center's decision is made to wait until 8pm mountain to deploy this fix

Sunday, February 10, 2008

emotions suck?

Until the last 4 months, I never quite understood how difficult it is to recover from a relationship when you really give your heart to someone and then they crush it. My ex has this 'friendly while cruel' thing going that seems to make it even harder on me. I find it hard to believe that she doesn't realize that complaining about things from early in the 3.5 year relationship after the fact is not very nice. Not after she's already ended it, refused a proposal, and decided to date girls. If she would have mentioned any of those things while we were still together, and I would have changed them or at least worked on them... Now it's unfortunately WAY too late =( Which seems to mean to me that they are just silly excuses. Even the dating girls thing (which she has done during this 4 months), is just a silly & cruel excuse. She may date some girls for a while, even a few years; but I predict that she will be married (to a guy) within 5 years (September 2012). I suppose it's possible I'm wrong on this, but I really don't think so. In the 3.5 years with her, the only prediction about her that I've been wrong on was that she would actually leave me, and that her emotions wouldn't tie her tighter to the relationship. Most everything else significant, I've been able to predict, even while she's saying she's going to do the opposite. I still think she wouldn't have moved out if my Dad hadn't been living with us for 8 months and she hadn't gotten a big pay increase at work at just the right moment.

So, if I'm right about her marrying a guy before too long, then what the hell is she doing? Maybe she's just being rebellious. Partially rebellious against her Mom (she told me that she felt wrong about getting married, cause it's what her Mom wants), but partially rebellious against me (she even hates the idea I can predict her for some reason). It's pretty lame to be rebellious against ones parents when you are 28 years old and don't even talk to them all that often, but I'm just not the controlling type, so it's seems even sillier to rebel against me. Well, for a bonus prediction, I bet the guy she ended up marrying is more controlling.

The real issue here is WTF is my problem? If a relationship between the two of us is meant to be, then it will happen somehow. If not, then I'm better off without her. I should be excited to take advantage of my single status. Sucks that it is hard to feel that way =(

Are lingering emotions like these there to tell us something that is important to listen to, or are they just lingering remnants of a lower type of gut level thinking?
Even at a higher level, I've programmed myself to be hooked on her. I thought that all indications were good that I'd never have to reverse this self-hypnosis, but apparently I was way off.

Jonathan Coulton - Code Monkey



Also check Jonathan's website... even has karaoke versions of his songs. Pretty sweet =)