About Kent Cowgill
Articles filed under...
abs ab_ripper andylester arms back baggyshorts bestpractices biceps bike blog bugs bus calculator cardio catalyst cgi chart chest chinups code cpan datamodel dbi doctor documentation exercise exhaustion fitness flattire flat_tire google gps heart_rate helmet history houston html humor journal kate kenpo kenpo_x kettlebell knees lazy legs lisa lisanne maps math matthew michaelmckenna mom montreal motivation movie mysql oops orm P90X pain park patellar_tendonitis patrick perl phb photos physical_therapy plyometrics poor_gait presentation procrastination progress pullups pushups pyramid rabbits racecondition rant refactor rest ribs ride route running shoulders situps slides sore spike sql statistics syntax test testing textile timex training triceps ups versioncontrol video vim vimrc walk warren work workouts yapc yapcna2007 yoga youtube

A R C H I V E S

(2)
(7)
(15)
(16)
(25)
(3)
(4)
(2)
(4)
(11)
(1)
(1)
(3)
(2)
(2)
(10)
(5)
(2)
(3)
(4)
(9)
(21)
(3)
(3)
(1)
(6)
(4)
(1)
(4)
(3)
(2)
(1)

    Is Kent Cowgill Online?
    View Kent Cowgill's profile on LinkedIn
    Add to Technorati Favorites

    Recent Entries...

    Merry P90X-mas!

    So much to write, so little time. Having trouble remember...

    Still here, still working

    Yes, I'm still here. No, I haven't fallen off the face of...

    Catching up through week 7

    So it seems that nearly every time I write about what I plan...

    Motivation, or lack thereof

    Thursday, Friday, Saturday, Sunday - all a whole lot of noth...

    On track so far...

    The week is about half way over, and so far I haven't skippe...

    My pants are on fire!

    I lied. Friday evening I didn't do anything. Saturday ...

    Playing catch-up

    It's been a while since I've updated my P90X progress. A ...

    Re: Yoga kicks my butt

    You should try a different yoga mat. I highly recommend the...

    Yoga kicks my butt

    It's time for a confession. I haven't done an entire Yoga...

    Recovery week comes in the nick of time

    Since it's been a few days, and I know I've rearranged my in...

    weblog | `web·lôg -läg |
    noun
    Another term for BLOG
    ORIGIN 1990s: from web in the sense [World Wide Web] and log in the sense [regular record of incidents.]
    blog | bläg |
    noun
    A web site on which an individual or group of users produces an ongoing narrative.
    ORIGIN a shortening of WEBLOG.

    Feeping Creaturism

    Kent Cowgill

    Another mini work-related rant. The names, projects, and task names have been changed to protect the innocent.

    phb: "Please work on project X, which incorporates tasks Y and Z."

    me: "Hey, how about we split those up into two separate projects? Z is pretty straightforward, Y will take some doing. Y and Z aren't really related other than the fact that they show up on the same web page."

    phb: "No, as long as task Y doesn't take more than a few days, please do them together."

    me: "So, what datasource do you want for those Y items?"

    phb: "Oh, just pick the most recent Y items per category."

    a few days pass, where I do the lions share of tasks Y and Z

    phb: "Oh, by the way, some categories don't get new Y items very often - we want to have the one that gets displayed change more often. Can you build in some capability to do that?"

    me: "Hrm, nothing in the database lets me select different Y's based on date updated or anything. I'll have to change the database, and the module that interacts with the database, as well as the internal application system that produces all these things..."

    phb: "So, we've thought about it, and let's cancel task Y out of this project."

    me: "You're kidding, right? I've already done Y and Z, and let me tell you - I put in a lot of effort into figuring out Y, but making it so that Y and Z show up when a user logs in, and have the old look when a user isn't logged in, that was tough. Not to mention that not even part of Z can be used (again which I've already done), since if you remove Y, that part of Z is now worthless, too."

    It started out simply enough: implement a new design which pulls in new datapoints. In figuring out where the datapoints come from, the initial guess was wrong, which was to use the most recent data items for each category. It seemed likely enough, but once the business owner was asked about the source of the data, it turns out that guess was wrong - he wanted to be able to dynamically choose which datapoint was displayed per category.

    Normally, this isn't a problem - in fact, that's what web developers do all the time. However, this project was for modification of a legacy application, which in a rather complex way, displays one of these datapoints dynamically - but without being from a specific category. In order to accomodate the new request, a lot of the backend of this system would have to be changed - the database, the perl modules, the content management system, the XML files.

    And of course task Z is under intense deadline pressure.

    Let this be a lesson to make sure all the requirements have been at least thought about before beginning a task.

    Or perhaps, if a developer notes that tasks should be separated, he probably knows what he's talking about.

    Related Photos: None

    Trying to fix broken windows at work

    Kent Cowgill

    I keep getting reminded of the story about the broken window I read recently in a great book I've purchased called The Pragmatic Programmer.

    Most recently was this set of conversations between a coworker and myself, and my manager and myself.

    Coworker Y: "Kent, can you please run sudo command xyz on the production cluster?"

    me: "Sure, but only if you promise to fix the race condition that causes condition X on the production cluster."

    Coworker Y: "I would, but it's not on my platter."

    me: "Whose platter is it on?"

    Coworker Y: "Coworker Z."

    me: "This has been a known issue for nearly a half a year, hasn't it?"

    Coworker Y: "Actually, about 9 months."

    ... time passes ...

    phb: "Kent, does sudo really need to be run for command xyz? Can't you just1 do it with normal user privileges?"

    me: "I assume so - they wouldn't ask me to do it otherwise, no? BTW, the cumulative time taken to run or have someone else run [sudo] command xyz every time this happens is probably much greater than just fixing the race condition that causes condition X, which as I understand has been a known issue for at least 9 months."

    phb: "They tried to fix the race condition and failed. But I didn't know coworker Z had been running sudo command xyz all along, I thought he had another way to deal with it. Until he comes back from vacation, can you take care of these requests?"

    me: "I'd much rather the race condition get fixed."

    phb: "I agree, however coworker Z is out of the office this week and coworker Y is swamped -- we will have to wait."

    me: "Coworker Z hasn't been out of the office for 9 months, though."

    phb: "Coworker Z and coworker W tried a couple of times and could not get it fixed."

    me: "Did they exhaust the entire technical resources of our company?"

    phb: "No one really had lots of time on their hands. If coworker Z tells me again they can not fix it, I will hand it over to someone else for sure."

    I really wish conversations like this didn't happen.

    I really wish that more people at my job cared more about what they did.

    Why did coworker Z and coworker W give up?

    Why didn't they ask anyone for advice?

    Sure it doesn't take much time to run sudo command xyz, but how much time is lost from breaking your concentration, switching contexts into "firefighting" mode, running the command, and trying to pick back up wherever you left off? And then what if you're so distracted by this craziness that you have to write a blog post about? How much time gets lost then?

    I really wish people would care more.

    1 Andy Lester pointed me2 to a great rant of his about this very phrase "can't you just...".

    2 And a second article linked from Andy on complexity management (I think he's on to something here)

    Related Photos: work

    Is it just me?

    Kent Cowgill

    Snippet from a real conversation with names and features renamed to protect the guilty, on implementing a test feature for a piece of software I've been tasked to write:

    me: "Here, look at feature A, which is a test of X!"

    phb: "Oh, that's wrong, it's supposed to be B."

    me: "... But that's not spelled out in the requirements."

    phb: "Oh, it's there."

    me: "No, I just read them again, B is not mentioned. X is mentioned, Y is mentioned, B is clearly not mentioned. B is implied indirectly, but it is not mentioned. I implemented A to test X, but nowhere do the requirements say that A should be B. In fact, A is not mentioned, either."

    phb: "But it's in there"

    me: "No, X is mentioned, and to test X most easily, A should happen, but A is not mentioned, and B is clearly not mentioned. Regardless, if you wanted B a particular way, perhaps you should've, I don't know. mentioned it?"

    Had I only had a copy of the requirements handy, I would've happily requested said PHB to point me to the specific section.

    Related Photos: None

    Main Page | Login

    Do you want to buy me ? Find more gift ideas at my wishlist