Embracing “off the rack”

This one is geared towards my programmer brothers (and sisters!)

If you’re buying a suit, you can have one custom-made or you can buy “off the rack”. The Venn diagram intersection of software developers and people that have suits custom-made for them is pretty small (at least where I live), so most of us have embraced “off the rack” vs. custom when it comes to suits.

We need to learn to take the same approach to code.

Stereotypically (and I’m preaching to myself here as well as you) – we’d rather write our own functionality than use someone else’s. There are certainly exceptions to this. We all use 3rd party libraries like jQuery and iText, but I would argue this is for things that are either:

  1. so comprehensive that it’s not feasible to do it ourselves (jQuery), or
  2. something that we don’t know how to do and don’t want to take the time to learn (creating a PDF file from scratch)

If the task at hand is something we can do, our inclination is to do it ourselves instead of using someone else’s code. I’m currently working on a project that needs something to happen once a day (processing monthly subscription renewals), so I need something to virtually “press a button” to kick off a process once a day.

I’ve had a similar need many times in the past. I’ve written numerous Windows service programs whose only job was to wake up every minute, check a schedule and – if it’s the appropriate time – call a function.

The first time I did it, I didn’t really have any alternative and I was curious about how to write a Windows service. Today, those are no longer valid reasons.

A quick Google search this morning revealed that Microsoft Azure has something called Azure Functions that can be invoked on a schedule. (I’m sure there are other suitable offerings as well, like AWS Lambda functions.) There will be a little bit of a learning curve to use it the first time, but from a maintenance point of view – I need to let someone else worry about whether or not the machine that “presses this button once a day” is up and running.

I read something recently that I thought was insightful. It was that – “code is easier to write than to read”. (I wish I could remember where I read that so I could give proper credit.) I think that’s part of why we prefer home-grown (custom) code to someone else’s (off the rack).

There’s a certain “macho” (sorry sisters) programming mindset that says “I can do this better than anyone else”. Part of that came from disconnection. We didn’t know anyone that could do it better we could. In today’s connected world, that’s not really true anymore.

A pencil is a pretty simple object, but if you think of the manufacturing of a pencil – no one person would (I’m not even sure they could) perform all the steps needed to manufacture a pencil.* Older programmers (like me) grew up being a “jack of all trades”, but that isn’t an asset any more.

Let’s stop re-inventing the wheel, use that “off the rack” component and spend our time making something great.

  • I think I stole this from Seth Godin, but I’m not sure and I can’t find the post now.

Case study (Xbox) in getting your customers to hate you

My teenage son’s Xbox Live subscription expired and he wanted me to help him renew it. This annual ritual has become infamous in our house. All of my son’s have learned that this is going to put my in a “throw my keyboard through the window” kind of mood. It’s not a question of price (they are paying with their own money) or principle (I have no problem with them having an Xbox Live subscription). It’s all about Microsoft’s awful process for doing this.

Years ago, Microsoft had a Family Plan that worked well for us. Since they cancelled that offering, a parent helping their teenager renew is an awful process.

To renew my son’s account, I have to be logged on as him – even though the family relationship is still set up. Microsoft knows he’s my son. (I can change security and privacy settings for his account while logged in as myself.) This means we have to spend a few minutes figuring out what his login and password is. (This is the only thing he uses a Microsoft account for.) After we figure out his login credentials, we then have to get Microsoft to send us a code. (None of this is bad on it’s own – but it’s a lot of hoops to jump through.)

I have to save my credit card into his Microsoft account profile. That doesn’t feel right. Wait. Here’s an option to “Add money to his Microsoft account”. I like that better. I’m going to need to add $60. (The yearly renewal fee is $59.99.) That’s not an option. I can add $10 and then add $50 separately. I added $10 and then (based on previous Xbox Live renewal debacles) – the thought occurred to me “that would be just like them to not let the child use this money to renew Xbox Live”. So – before adding the other $50, I checked. My paranoia was justified.

Microsoft won’t let the child use the money you’ve added to their account to pay for an Xbox Live subscription. So even though they know I’m his father and will let me transfer money to his account – I still have to enter my credit card while logged into his account. I couldn’t find anywhere that says you wouldn’t be able to use this money for this purpose. (I looked.) I’m pretty sure this is because they turn on auto-renew by default. (If they just let him use the money in his account – they wouldn’t be able to charge my credit card in a year, when I’ve forgotten to cancel the renewal.)

You can’t just sign up for a one year (non-renewable) subscription. I made a point of carefully reading the Terms of Service to figure out when they would charge the renewal. It didn’t say specifically, but did say something along the lines of “your card may be charged a little before the subscription expires”. It also says “no refunds”.

They give terrible error messages. I posted this to Twitter a couple of years ago after a previous occurrence of this ritual. Got a similar error message this time. At this point, I have one browser (Edge) logged in as my son and another browser (Chrome) logged in as me, so I can try to figure out what setting I need to change to let him purchase the renewal. (Of course, the entire time  – there’s a banner at the top of the page in Chrome suggesting that I try Edge.)

They won’t let me remove my credit card info from my son’s account. I did immediately change the auto-renew setting on the subscription to not renew in a year. (I was pleasantly surprised that was an option.) But – when I went to remove the credit card information from the Payment Methods in his account – it said that it couldn’t remove this because it was still being used. Recommended that I change the auto-renew setting (which I had already done).

This took me about 30 minutes to work through all of this. Then, I took deep breaths for about 15 minutes until the feeling of wanting to murder someone went away.

What’s to be learned from this? Eat your own dog food. Since Microsoft is who made that phrase famous – apparently there’s a little more to it than that. I feel certain that there are Microsoft employees who work in the Xbox division who have renewed their teenagers’ subscriptions. I’m wondering if they have watched adults who aren’t serious gamers do this process. My guess is no.

Am I getting carried away here? Maybe. Is this the end of the world? No. Am I exaggerating about how frustrating this was for me – at that point in time? Not a bit.

It’s a good rule of thumb to make the process your customers use to send you money as friction-less and pain-free as possible.

Well – at least I have a year before I have to fight this battle again.
bad Xbox

Sgt. Pepper at 50

By now, you’ve undoubtedly heard about the 50th anniversary edition of Sgt. Pepper’s Lonely Hearts Club Band. It was remixed by Giles Martin, son of original Beatles producer George Martin. If the word “remix” gives you pause in the context of a classic like Sgt. Pepper’s – don’t worry. It’s more of a restoration. You can read all the details elsewhere, but I wanted to put down a couple of thoughts.

  • It’s fantastic. Let’s just get that out of the way to begin with. Martin did a fabulous job. I can only imagine the pressure of feeling like “you better not screw this up” on something as beloved as this.
  • Since the album was originally released a few months before I was born, I obviously don’t remember that. What I do remember was the original CD release. In 1987 (I was in college), the Beatles albums were finally being released on CD. As I recall, they released them in batches – first 4 together, next 3 together, and then, on the 20th anniversary of its original release – the Sgt. Pepper CD was released by itself. I remember going to the record store (yes – there used to be record stores) that day to get it. Much ado was made about “It was 20 years today…” at that point.  Hard to believe that that was 30 years ago (seems like yesterday). What’s not hard to believe is that the album is still hugely popular and influential.
  • I have said before that I think “Stay With Me” by The Faces has just about the perfect beginning to a rock and roll song. Listening to this, I realize the same thing can be said about “Lovely Rita”. The opening is perfect and even better on this version. Not only do the harmonies really pop, but even the kazoo sounds really come through.
  • I don’t usually think of Paul McCartney in the category of “best rock and roll bass players” – not because he’s not fantastic, but because what he doesn’t fill the traditional role of a bass player (John Paul Jones of Led Zeppelin is my favorite at this). He’s doing a completely different thing with the instrument. The bass line on “With A Little Help From My Friends” is a great example of this, and it really comes through now. I was listening to this while making breakfast this morning and realized I had a huge smile on my face. “Delightful” isn’t a word I use very often, but that’s the best word I can think of for it.
  • I love how you can really hear Paul, John, and George’s individual voices during the three part harmonies.
  • The cymbals are clearer and the kick drum really come through.  (The end of “Good Morning Good Morning” is a great example of this.)

If you haven’t listened to it yet, set aside a few minutes. I definitely recommend headphones to really pick up all the nuances.

Well done Giles Martin. Thank you for this.

By Source, Fair use, Link

Appearance of Motion

I’ve having a small project done at my house. The vendor hit a small snag and I’ve been waiting to find out how they’re going to resolve it. Yesterday, I called them because it had been a couple of days since I had heard anything and I was getting a little frustrated. This morning, I got a call back explaining what their plan is and I feel better about things, even though no additional actual work has been done yet.

It reminded me how powerful “appearance of motion” is for a project.

Don’t get me wrong – the project needs to be finished eventually. And – there are definitely some projects that absolutely, positively have to be done on time. But for most of what we do – you can buy yourself some goodwill (and some leeway to deal with the unexpected things that pop up along the way)  if you will just continually give the client the feeling that things are moving in the right direction.

It’s easy to get buried in the weeds of doing the “real” work of moving towards the finish line. Don’t forget to take a second to keep the client in the loop.