Skype Sucks for Business

I was really excited when starting my own small business to be using Skype for my telephony needs. It was really cheap, and I could get a real number and have it direct to my phone or to my computer depending on when I was logged in.

Too bad the support has sucked. My account password was stolen, and the culprit logged in and charged stuff to my stored credit card. Skype was happy to reset my password, but informed me that it was impossible to get a refund on these purely virtual unused goods.

At this point, I called my credit card company, and informed them of the fraud, and they took care of it. Skype didn’t like that very much however and completely disabled the paid functions of my account (which I had used my stored “skype credit” for).

So my business phone number went dark. They didn’t email me about this at all either. I don’t get a lot of traffic on that number so I didn’t even know it wasn’t working.

So that’s where I stand now. I’m on a live chat with a Skype rep trying to get it sorted out.

In the end, I suppose this is run by the same company that runs PayPal, and we all know how they are legendary for their uber-crappy support. I shouldn’t be that surprised.

Lesson of the Day: Don’t trust Skype (or PayPal). I can’t wait for Google Voice.

Update: Annnnd the chat just ended. Andre on the Skype Support Live Chat was way more awesome and helpful than the last person I spoke with @ Skype and actually helped me out. So there’s that.

Still, I’m not planning on using Skype for anything mission critical in the near future.

Talking at South Sound .NET User Group

Just a reminder that I’ll be at the South Sound .NET User Group meeting on December 10th, 2009 to talk about MVP in a WinForms desktop application.

Everyone talks about all the fancy new WPF stuff, but I’m really excited to be talking about WinForms here. I know that a lot of us are stuck using WinForms for quite a while, and we’ll all be maintaining WinForms apps for the foreseeable future. MVP is something you can apply to your WinForms code and create desktop apps that are testable, flexible, and maintainable. We all want this.

I’m hoping to do a live coding example with a small ToDo application there building the app up and showing how to wire up all the MVP-ness. Visual Studio is currently being uncooperative and it’s currently doing a repair, so we’ll see if that fixes it. Here’s hoping! If not I’ll just do it in MonoDevelop or SharpDevelop. It’s all gravy.

Here are the details:
7-9PM
Olympia Center
222 Columbia NW
Olympia, WA 98501

See you there!

Testing, Django Client, and HTTP Basic Access Authentication

I was writing a test using the django client against some code that uses http basic authentication. I had to dig for hours to figure this out, so I figured I’d post my solution somewhere.

def create_auth_string(username, password):
  import base64
  credentials = base64.encodestring("%s:%s" % (username, password)).rstrip()
  auth_string = 'Basic %s' % credentials
  return auth_string

# create auth string for header
auth_string = create_auth_string("user", "pass")

# This is where the magic happens
response = self.client.get('/url/requiring/authorization/', HTTP_AUTHORIZATION=auth_string)

Not complicated, but not documented anywhere I could find. Enjoy!

Select Blocks of Text in Visual Studio

I have often wanted to be able to select blocks of text in Visual Studio like I used to willy nilly in vim, but I didn’t think it was possible… Until Yesterday!

block-select

All you have to do is hold down alt and use the cursor or select with your mouse to select arbitrary blocks of text. Best day ever.

Visual Studio isn’t terribly discoverable.

Independant Contractor – Day 1

So today was my first day working as a purely independent contractor. I had been working full time, then transitioned to full time contracting with the same company, and today I blossomed into being solely a consultant and owner of my awesome sexy company, Unit of Work, LLC.

And what a day it’s been! I’ve managed to… do a lot of administrative tasks. Wait. What? What’s that you say? You can’t bill for administrative tasks? Yes. Well, I know that.

But since taking on my own clients, a lot of administrative tasks had piled up working full time. My time keeping system consisted of post it notes, and while I had QuickBooks, I hadn’t actually bothered to learn how to create an invoice.

Time keeping software is scary. It’s pretty much a horrible task, so any software you use only makes a horrible task computerized and more horrible. There’s no real winning with time keeping. Nobody has ever said, “Oh man, last night, I got home and I got to record my time! It was so awesome!”

I consulted my OCD friend Lifehacker for reviews of various Time Tracking Softwares. timeEdition seemed relatively popular, so I downloaded it and started transferring all my post it notes of billable hours into it. It seems to be pretty simple which is what I wanted. Select customer, project, and task, click start, work, click stop, and bam, you’re done.

That’s nice, but entering historical hours is pretty painful. A date picker which always defaults to today, and some pretty picky time selection controls makes for rough waters. I persevered, and I think, moving forward, it will work nicely.

Likes: Simple, Easy to Use
Dislikes: Painful Manual Data Entry UX, Doesn’t Store Database in the Cloud

I could rant about QuickBooks sucking, but everyone who uses it already knows that, so I’ll leave it at that. I have nothing new to contribute.

I’m so excited though. I did Administrivia, and I loved it. I’m ready to take over the world! At least as soon as I get this invoice to save to PDF.

Remote Pairing with Microsoft SharedView

pairon As part of some contract work I’m doing for one of my clients, I am pairing with one of the new developers in the company to bring them up to speed on the code base.

I can’t say anything new about paired programming in general that someone else hasn’t already said, but I can say this: it is freaking awesome. Others seem to agree.

I want to talk about my paired programming setup. We tried VNC, but it apparently sucks a lot these days. It was flakey and kept dropping connections. No idea what that was about. It also required all kinds of firewall fiddling I have no love for.

Sean Chambers told me about SharedView and Tokbox on twitter, and while I  haven’t used Tokbox yet, I must say SharedView has rocked my world. It’s so cool! No firewall baloney, you only share what you want to share, and it’d dead simple.

We use Skype for voice communication, which is always clear and well behaved. I love Skype for video chats, too. With a modern webcam, the quality is so amazing.

The combination has worked great, and combined I think we have dramatically reduced the friction of remote operating.

Save Time and Money – Remap F1 in Visual Studio

This guy is hardly the first one to say it, but he’s right: if you want to save yourself lots of time, remap Visual Studio’s F1 key away from help. We all know the Visual Studio help system sucks hard, so just give up on it. Welcome to a world where a missed ESC slap doesn’t paralyze your computer for 2 painfully grueling minutes.

But what to remap it to? So many ideas!

Sock it to me now!

LogoYes.Com – You Have Failed

I have a client wanting a website on a very small budget, so I recommended using logoyes.com to create the logo for the business. They are cheap, and last time I used them was relatively straightforward.

Not this time. The payment processor marked my card as fraud for whatever dark reason payment processors do, and the software provided no means of recourse. The excellent customer service representatives were hamstrung by a web application which provided no ability to manage any of these common issues.

It reminded me a great deal of Ayende’s PayPal Post

Anyway, here is the email I sent to logoyes after borrowing my partner’s credit card so I could perform a business transaction:

Thank you [Very Nice Customer Service Rep Name].

As I said on the phone, I had to call several times in order to get this purchase sorted out. The customer service representatives were very kind, patient and helpful. I cannot speak more highly of the customer service representatives employed by logoyes.

However, as a software developer, I feel ashamed that someone in my profession was paid money to write the logoyes.com software. The fact that I can spend quite a bit of time creating a logo and getting approval from a client, only to have the payment processor mess up and not have that logo saved anywhere, or provide the customer service reps with any ability to help me in that situation is ridiculous.

I understand that payment processors are pretty tricky things, but a false positive on fraud is such a common occurence it’s a complete oversight to not have any other way for a customer (which in my case had already invested at least 2 hours into the process) to pay for their logo is incredulous.

I will not be buying another logo from logoyes, which is unfortunate because I’ve been pretty pleased with the results. However, for such a low cost product, I cannot risk investing more hours into the logo and suddenly have no way to download it. It makes no business sense.

Thank you,

James Thigpen

Bing Me – Redux

So it’s been a 2 weeks since I switched Chrome’s default search engine from Google to Bing, and this is what I’ve got to say.

430890004_98639b3bb7It’s not bad, but there’s nothing there that blows my socks off. The image search is way better than Google’s, but the regular search results are *slightly* less relevant sometimes than Google’s. I found myself at maybe once a day re-searching the same term on Google to find what I want. My searches typically have a very technical bent, so maybe that is relevant.

Oh and I don’t like the maps, but I think that may just be my fondness for Google Maps. The Bing maps aren’t bad either. I can’t quantify my distaste for the Bing Maps, but I don’t like them as much as Google’s. I think it may just be an aesthetic thing.

So the conclusion? I’m switching it back. It still feels foreign, and I think it’s a little less relevant to me than Google is for the things I search for.

Now I’m on the prowl for the next thing to jump into whole hog and test my preconceptions.

Accidental MVC

So this app I’m writing and maintaining at my day job. It accepts requests over this painful legacy protocol, performs some action based on that request, encodes the result in the same painful legacy protocol, and returns it to the client.

The way it’s designed, it has an array of IMessageHandlers that are each bound to a particular request type. So if a GETPRT request comes in, it loads up the GetPartMessageHandler which processes it and returns a result to send back to the client.

I had an epiphany a while back. This is MVC. If I didn’t have to deal with the legacy network protocol and weird encoding scheme, I could drop all this custom message handling code stuff in the dumpster and drop in one of 800 MVC web app frameworks and be done with it.

The command type, say GETPRT, could be mapped to http://server/GETPRT, and we could use our handy dandy routing engine to say route $GETPRT^ to the GetPart action on the PartController.

So in essence, I think I grew an MVC framework. It’s actually a little Django-ish, because I don’t really use controllers. But neat.

I wonder if I could have saved time if I had realized this would fit so well with MVC from the get go.