Tuesday, October 11, 2011
Act Now to Offend Your Customers!
We get the Sunday paper for the coupons, and I get a call from a hurried rep. This particular rep apparently works on commission for Boston Globe, because she's trying to upsell me to the weekend edition (not even sure what that really is, she was talking too fast for me to understand). I politely declined once, and she persisted, saying she "wasn't looking for a long term commitment." I politely declined again, and she said "OK," and abruptly hung up.
My opinion of the Boston Globe has declined at this time. What could Boston Globe have done better? What if a rep (not under time pressure) called me to ask how I was enjoying the Boston Globe? What parts of the Sunday paper do I enjoy the most? What could they do to make my experience better? She would have learned that I order the Sunday paper just for the coupons. Maybe she could have talked to me as an adult and suggested ways for me to enjoy the paper I already get more than I do now. Maybe that would have led to me reading the paper. Maybe I would have decided that I wanted more issues of the Globe.
Instead, a pushy sales rep tried to push an upsell on me. Bush league, Boston Globe.
Thursday, October 6, 2011
This Is How We Do It; or, Customer Service Done Right and Wrong
- The Sovereign rep sounded bored out of his mind. The Fidelity rep sounded excited to talk to me.
- The Sovereign rep clearly had a script to follow. The Fidelity rep was given more flexibility.
- At the end of the Sovereign call, I started thinking again about moving to a credit union. At the end of the Fidelity call, I felt excited about possibly opening a new account with Fidelity.
- When the Fidelity phone system took my SSN, it knew that I needed to speak to a rep, so it directly routed me to one. Sovereign's phone system made me jump through hoops to get to the right rep.
One More Thing...
And yet, you can't even begin to imagine how far Steve brought the tech world forward. Without question, his singular leadership made our world (not just tech, but the way we live our lives) better.
RIP, Steve Jobs.
(who is cutting onions in here?)
Tuesday, October 4, 2011
A Wasted Opportunity
Seriously, Dell? I try to defend you, but then you pull a terrible customer service move like this. You had an opportunity to have a human conversation with me about how the laptop was working out, seeing if there was anything I needed help with. Instead, you insult me as a customer.
When my father bought an iPad, he received a custom email a month later from the sales rep asking how it was going and if he could help. Nothing about money or sales, just making sure he was settled and happy. The rep then helped my father fix a problem he was having without referring to outsourced tech support.
See the difference? Forget about the relative performance of Macs and PCs. The meta-ownership experience of the two systems are light-years apart. This is something that seems so easy to get right, and yet PC manufacturers (and plenty of other companies... ask me about my GM experience sometime) continually get it wrong.
Friday, June 17, 2011
One of the Little Things That Makes Me Rage
Then came along Visual Studio 2010. I don't know what changed or why is changed, but now, I have to hit an additional "enter" in the middle: "alt, d, p, enter, w, enter". When using both VS2008 and VS2010 at the same time, this can get really freaking annoying.
Thursday, June 16, 2011
I Don't Get Prisons; or, Rehabilitating our Penal System
- Determent: If people know they are going to jail if they do illegal things, they will be less likely to do them.
- Rehabilitation: Criminals serving time may become rehabilitated and not want to commit crimes again either by a change of morals/outlook or by the fear of being imprisoned again).
- Punishment: Society demands that people who hurt them are in turn hurt (the old Babylonian "eye for an eye" morals).
Rehabilitation seems like the most valuable thing we can attempt with our criminals*. My wife once worked in a batterers intervention group, where she worked with convicted domestic abusers. After a once-a-week-for-40-weeks program, the recidivism rate was far lower than those who went to jail (granted, it is likely that this data is somewhat self-selecting; the judge could sentence intervention instead of jail time, and likely chose the more repentant men for intervention). I bet you many more criminals could be rehabilitated rather than just thrown in a snake pit with other criminals.
* I fully acknowledge that some people cannot be rehabilitated, and that life in prison or capital punishment are the only reasonable options for society.
I don't know where I'm going with this, other than to say it seems clear that our penal system could really use some work. Prison inmates are a drag on society, producing nothing, consuming goods and services, while (generally) falling behind in job skills. It's the 21st century; can't we do this better?
Thursday, February 3, 2011
resharper - surround with
Tuesday, February 1, 2011
Visual Overload
Sunday, January 30, 2011
On Troubleshooting
- Sanity check: make sure all cables are plugged into the right ports and the TV is set to the right setting. Still not working.
- Sanity check: turn off and on DVR and TV. Still not working.
- Move HDMI cable from port 1 to port 2 on TV, then port 3. Still not working.
- Get new HDMI cable from basement and test DVR and TV. Still not working.
- Test laptop HDMI into ports 1, 2, and 3 on TV. Laptop output to TV not working.
- Unplug power from TV, wait 10 seconds, plug back in. Eureka! It's working!
Friday, October 22, 2010
Derail
A more realistic goal for myself would be to meditate three times a week. That way, I can make plans to meditate on certain days, and if the plan doesn't work out, I have time to make it up. Good idea, Ed, let's do it!
The lesson I'm taking away from this is that it is unrealistic for me to attempt to force myself into a difficult arbitrary structure simply will not work. I'm too much of a "seat of my pants" kind of guy (on the MBTI scale, I'm definitely a perceiver).
Monday, August 23, 2010
Next Stop, Meditation Station!
So I challenged myself. 30 days, every day, meditating. Just 20 minutes (with a few minutes on each side) a day, I can do this, right?
Well, it took me about a week from when I said that to when I first meditated. But that first meditation was yesterday! So that's good. What about today?
I decided the best way to help me continue to meet this personal challenge would be to post it online and give daily updates. This would both A) get me blogging again, and B) provide me with extra incentive. After all, I can't let my (two or three) readers down, can I?
Wednesday, July 28, 2010
Nitpicking a House of Cards
- In the beginning scenes with Ardeth and the Medjai, there are like hundreds of Medjai. But once Ardeth and Dr. Bey confront Rick, Evelyn, and Jonathan about awaking Imhotep, all the other Medjai disappear, off doing who-knows-what. It should would've been useful to have even a dozen scimitar- and rifle-wielding warriors helping out. (At least in The Mummy Returns, they mentioned the other Medjai had to get ready to fight the Army of Anubis.)
- After Imhotep has "absorbed" three of the Americans, leaving only Mr. Daniels, the party is driving in car to get away from Imhotep's zombies. They know they need to protect Mr. Daniels to prevent Imhotep from getting fully regenerated (another case when more Medjai would have been nice). So why do they leave him unprotected at the back of the car? Dumb.
- And then after the zombies pull Mr. Daniels off of the car, the party keeps driving on, knowing full well that they are letting Imhotep get fully regenerated. Sure, there were plenty of zombies, but Ardeth, Rick, and Dr. Bey were all pretty badass fighters. You'd think they could've held off the zombies while Mr. Daniels got back in the car.
Wednesday, May 12, 2010
Oh, By The Way, New Baby!

You can find more photos of our beautiful daughter at Flickr. Mia is more important than just about anything I've ever done, but I will attempt to get back to posting a little.
Thursday, February 18, 2010
What is a TypeLoadExceptionHolder and What Should I Do If I Have One?
Object of type 'System.Runtime.Serialization.TypeLoadExceptionHolder' cannot be converted to type 'System.Collections.Generic.List<companyname.framework.persistableobject>'TypeLoadExceptionHolder? What the crap is that? I tried Binging it, and after pouring through results, found this post by Michael Freidgeim:
Binary deserialization doesn't throw exceptions, but just replace some members(in my case it was enum, that was moved from one namespace to another) with this undocumented TypeLoadExceptionHolder class.OK, so why was my binary deserialization failing? I wrote up a quick integration test to simply serialize and deserialize a file and it worked fine. But the sample serialized file just wouldn't deserialize in this branch, even though this exact code worked fine in the source branch.
I was nearing my wits end when I realized Michael had already nailed it for me: namespaces. One of the reference assemblies, "companyname.framework", had changed names in this release branch. It used to be "companyname.framework.core". And so the sample serialized file had the old namespace and couldn't properly be deserialized. The mystery is solved.
The moral of the story is Never trust canned data in your integration tests. Always suspect it when sometime goes wrong.
Friday, February 12, 2010
Force Feeding You Change
Wednesday, February 10, 2010
Google Buzz: The Facebook-ization of Google
Google surprised me when they suddenly launched their latest endeavor into the social networking world, Buzz. After one look and their introduction video, it seems clear they are targeting one competitor: Facebook. Sure, Buzz includes features from Yelp, Foursquare, Gowalla, and others, but those aren’t the main targets.
Think about it. Facebook is working on a new email feature. Facebook’s goal is to have you on their website for as much time as possible. I know plenty of people who would almost never leave Facebook if they could get their email there. Sure, there would still be users like me who actually post content into Facebook via Twitter linking outside content. But for probably 80-90% of users, Facebook becomes the Internet.
Google doesn’t like that future. Google’s business model is predicated on having users, well, use Google. They want users to experience all the web has to offer, and to find it all through Google Search. There are two parts to that strategy: pushing the openness of the web and empowering users, and then showing them relevant advertisements. Google cannot do all the cool stuff it does without the huge revenue base it has, but more importantly, all these cool things are there to keep you on Google and learn about you so they can keep showing you relevant advertisements.
So what is Buzz? It’s a reason for people who use GMail a lot to stay on Google servers. It’s an attempt to keep users from, once they’ve read their mail, leaving the site and going to Facebook. Will it work? I don’t know. I only have access to Buzz on my Android, in the Maps program, so I can’t say how useful it is. I agree with Eric that the technology involved is cool, but that goes back to part one of the strategy: pushing openness and decentralization. (Think about Google pushing decentralization. If everything isn’t in one place, how do you find it?) But the takeaway of this is that Google is reacting to the Facebook-ization of the Internet, and it seems to be a pretty cool reaction.
Wednesday, February 3, 2010
Building Integration Tests With Workflow Components
A lot of blood, sweat, and tears have been shed over the use and design of unit tests, but what about the red-headed stepchild of automated testing, integration tests? They have fallen out of vogue lately in popular discussion, but they can be just as useful as unit tests. Just search for unit test best practices and integration test best practices; the unit test search has almost twice the results.
One of the biggest stumbling blocks I have found with integration tests is internal dependencies (external ones, like databases and webservices, are also a pain, but you’re on your own for them). If you have to test an “Approve” action, you probably first need to “Create” the object before you can approve it. You’ve written your “Create” integration tests, so do you make your “Approve” tests inherit from the “Create” tests? That seems kind of ugly. But you don’t want to have duplicate code, even if it’s just in the tests.
A better solution is to split your integration tests into “workflow” classes. Each workflow class represents an action you want to test, “Create” in this case.
public class CreateResults
{
//data to return
}
public class CreateWorkflow
{
public CreateResults DoAction()
{
//Do the action, return the results
}
}
You can use this code for your “Create” tests, but even cooler, your “Approve” workflow can consume the “CreateResults” object:
public class ApproveResultsHow cool is that?
{
//data to return
}
public class ApproveWorkflow
{
public ApproveResults DoAction(CreateResults results)
{
//Do the action, using the data from the create test, return the results
}
}
Well, what if you want to have a workflow with various options? We can do that:
public class CreateOptions
{
//inputs to the workflowpublic class CreateWorkflow
{
public CreateResults DoAction(CreateOptions options)
{
//Do the action using the provided options, return the results
}
}
You can experiment with using the “Options” and “Results” objects in different ways. YMMV. This may not solve all the problems with integration tests (and it’s not revolutionary, and someone else probably already did it), but it can make for some pretty modular tests and make your life easier.
Monday, November 9, 2009
Unexpected Benefit
"Hey honey, is this milk bad?"
"Babe, can you smell this deli meat? It looks a little... funky."
Alternatively, if I cook something good, to her the whole house will smell like it for a while, so it's in my best interest to cook as much deliciously-smelling stuff as I can. Look out world, here comes Chef Ed!
Saturday, October 3, 2009
Get Busy Living, or Get Busy Setting Up Your Workspace
For a long time now, I’ve been trying to make my work-from-home setup more usable. Or, more accurately, I’ve been complaining that my work-from-home setup is inadequate and then not doing anything about it. See, I have a desk in the basement, but it’s not really a computer user’s desk. Sure, it has a keyboard drawer, but there is no room on that drawer for a mouse, so my mouse-hand always ends up in an awkward position. Couple that with the fact that my desktop PC just croaked and I have no USB keyboards to plug into my laptop, and the desk became darn-near unusable. I tried using my laptop on the couch, but I either end up nearly burning my lap or hunched over the coffee table.
With the bare minimum in mind, I set out to Staples (just about the only tech retailer within walking distance of my job) to get a USB wireless keyboard. I figured $35, maybe $40, and my desk would be back in action AND I could use the laptop just about anywhere in the house.
I managed to get lucky; Staples was having a sale on the Microsoft Wireless Desktop 3000 (keyboard and mouse combo). $50 seemed like a good price for both devices.
Well, the keyboard is great, though nothing special compared to other keyboards (well, it’s no Microsoft Natural Ergo Keyboard 4000). It just works. The mouse is the real winner. The bundled mouse is the Microsoft Wireless Mouse 5000, and it comes with “BlueTrack” technology. I don’t know what that means, but I do know I can use the mouse on just about any surface. Anything. I just flopped it down on the fleece that’s piled right next to me and it worked perfectly. I’m not sold on the location of the “forward” button, but I rarely use that anyway, so it’s not a big deal.
This is coming off like a shill review, so I’ll stop talking about the devices themselves (I have no relevant experience with wireless keyboards or mice to compare these to anyway). I’m sure Logitech’s offerings are awesome too (their MX500 mouse has been my faithful companion for years).
The point is that now I’ve got a very comfortable working environment at my desk OR on the couch. The nice side benefit is that using a wireless keyboard just makes me feel like a badass hacker too.