A real interaction with Comcast

analyst Shivangi has entered room

Shivangi: Hello TIM, Thank you for contacting Comcast Live Chat Support. My name is Shivangi. Please give me one moment to review your information.

Shivangi: Hi, I would be more than happy to assist you in completing your order. How are you doing today?

TIM: good

Shivangi: I am glad to know that you are doing good.

Shivangi: As I can see that you would like to sign up for Digital Starter. Am I correct?

TIM: yes

Shivangi: Thank you

Shivangi: Are you an existing customer?/

TIM: yes, business class

TIM: what’s next?

Shivangi: Thank you

Shivangi: Thank you for being our valuable customer.

TIM: Ok, really, I’m falling asleep, you’ve thanked me quite a bit, but can I get my service turned on

Shivangi: Thank you

TIM: Ok, was that sarcastic?

TIM: Cause I’m trying to get my service turned on

Shivangi: I mean earlier that thank you as because you thanked me.

TIM: What is going on here? What do I need to do?

Shivangi: I would like to inform you that as it is the business class so you need to call our toll free number 1-800-934-6489.

TIM: What?

Shivangi: I really apologize for the inconvenience caused to you.

TIM: So, I filled out all these forms for nothing

TIM: Just to be thanked repeatedly

Shivangi: I understand, Tim.

TIM: Well thanks for the thanks

Where’s my 20 EB Holographic Disk Tube (or WTF is up with Storage)

Maybe my appetite for disk is outpacing the industry, but shopping for external storage is frustrating. First, let me frame the problem. I have little faith in hard drives these days. Traditional hard drives are made of platten that rotate at 7200 RPM very close to a tiny arm with a magnetic reader on the end. Yes, we’ve perfected this technology to the point where we can all rely on this thoroughly impractical idea, but it also means that once every year or two, you’ll have a drive that suffers mechanical failure or just stops working.

SSDs are a better idea, but they still seem too new to rely on. They are also still far too expensive to consume. Call me cheap, but I’m not ready to fork over the money for SSDs, and everyone I know who has had an SSD-based laptop has suffered a debilitating one week disk failure.

The problem is that Hard Drives die, and my hard drives tend to expire about once a year. Maybe I use them too much, maybe I have dirty power, I don’t know. What I do know is that the technology is an embarrassing mess. For all the reported elegance of the Apple products that are in my life, I still find myself spending way too much time assessing the current state of storage technology when I need to purchase an external hard drive.

And, I’m also surprised that capacity hasn’t seemed to keep up with demands. I’m sure most people see a 750 GB MacBook Pro and they think, “That’s a lot of storage, there’s no way I’d ever fill that up.” Since I record a lot of audio and produce a fair amount of video, I have an entirely different view. I see 750 GB and I think… I’ll fill that up in a few months.

Three problems: I eat through storage like I’m doing video production (because I’m doing video production), I’m wary of disk drives so I have to backup everything like I have OCD (because I have OCD), and I’m a cheap bastard so I don’t yet own a RAID 5 20 TB storage device. But, I’m also waiting for something bigger…

Years ago I was hearing about research into holographic storage technologies that promised to trigger a revolution in the space, but I’m still seeing incremental improvements. Every time I go to Best Buy, I always make sure to ask if they have any holographic 20 Exabyte disk tube device. They usually don’t understand.

John Yeary’s Documentation Advice triggers a Documentation Flashback

John Yeary wrote some useful suggestions for code documentation review: over on his blog. He has reasonable expectations for a Java developer, I think more people should write code level documentation, but unless you are shipping a public API of some sort, the reality of the industry is that no one writes documentation – ever.

Which is bad, you should write documentation. At least you should make an attempt at writing documentation before your project manager glares at you and tells you to get back to implementing requirements.

Anyway, it reminded me of a former employer that had a very curious approach to documentation. We weren’t allowed to write any. On top of not being allowed to write documentation, all method and variable names had to be descriptive. The first time the development lead had to talk to me about this, I seriously thought he was joking:

Him: “Ok, Tim. Um, that work you did yesterday, it’s great stuff, but you did something I’d like you to stop doing.”

Tim: “What you don’t want me to use JdbcTemplate?”

Him: “No, that’s not it… it’s the documentation. Our process doesn’t allow documentation, you need to make the code more descriptive.”

Tim: “That algorithm is complex, it’s recursive and a bit tricky. I just put a note in there to make sure that…”

Him: “Use a different algorithm, we can’t depend on it. All code has to be self-documenting.”

Tim: “Ok, sure, I’ll make the code self documentating boss.”

At University, I had a double major in Electrical Engineering and Sarcasm. A week passes, and all of my code turns into this:

public Patient loadsMedicalRecordAndUsesHibernateInsteadOfSQL( int patientId ) {
  HibernateSession session = loadHibernateSessionFromThreadLocal();
  Patient patient = session.load( Patient.class, patientId );
  return patient;
}

public static int calculateVisitsUsingAlgorithmToAccountForMultipleRecordSystems( Patient p, Hospital h, int visits ) {
  int numberOfVisitsCumulative = visits;
  numberOfVisitsCumulative +=  findNumberOfVisitsInHospitalRecordSystem( p );
  if( h.hasRelatedInsitutions() ) {
    int counterForRelatedInstitutions = 0;
    for( counterForRelatedInstitutions = 0; 
         counterForRelatedInsitutions < h.getRelatedInstitutions().size(); 
         counterForRelatedInsitutions++ ) {
     
      Hospital relatedInstitution = h.getRelatedInsitutions().get( counterForRelatedInstitutions );
      numberOfVisitsCumulative =  
        calculateVisitsUsingAlgorithmToAccountForMultipleRecordSystems( p, 
              relatedInstitution, numberOfVisitsCumulative );
    }
  }

  return numberOfVisitsCumulative; 

  }
}

Just imagine pages and pages of methods with names like “retrievingExactImmunizationScheduleWhileAccountingForNationalHolidaysInPatientLocale” or “calculatingBloodPressureUsingMeasurementsFromLastVisitToRelatedInstitution”.

What surprised me is that my boss liked what he saw. I turned my code into self-documenting code by taking the documentation and putting into all the class, method, and variable names. It was paralyzing for the team, really. My sarcastic attempt to prove a point turned into policy, or sorry “callMySarcasticAttemptAtTryingToProveAPointTurnedIntoPolicy”.