Business

Dear Businesses: Get off Twitter

<

div class=”zemanta-img” style=”margin: 1em;”>

The Twitter fail whale error message.
Image via Wikipedia

… and back on to customer support.

Twitter has become a necessity for reputation management. Don’t want people to talk crap about you on Twitter? Use it to respond to all the naysayers and whiners! Nip those problems in the bud! Twitter is so great, you can interact directly with your customers! Hooray!

Let’s back up a minute. You know what’s great for interacting directly with your customers? Email. Over the years email based customer support tools have evolved beyond your standard POP3 mail client. I do some customer support work for NearlyFreeSpeech.Net and we have a system that makes it relatively painless.

So why are all these companies putting so much money into twitter management software like CoTweet and yet leaving their customer service departments in the last century?

The result of this Twitter madness is we’re training our customers to go there first, because it’s faster than trying to get help through the official support channel. Case in point: I was having problems with my Amazon Payments account. I sent an email to their customer support team. I was told someone would look at and respond to my request in “1-2 days.” This infuriated me more, as I was already pretty ticked off at Amazon, and so I went to Twitter to complain. Lo and behold, within a few hours of my tweet I had a response from a director at Amazon Payments.

Using Twitter to catch users who fall through the cracks is great, but it should never be a company’s first line of defense. Customer service hinges on the customer’s expectation. Exceed their expectation and you win, fall short and you lose. But the expectation varies, and isn’t always based on “rational” assumptions.

A few years ago I worked at a scooter shop in Richmond, VA. The owner had a habit of staying there late to work on things, and would often take customers’ late night phone calls to help them with their scooters. As business picked up and she had less time in the evenings, she stopped taking the late night calls. And the customers who had been calling her got mad. They had come to expect free scooter help in the middle of the night, and when the shop owner didn’t meet their expectations, they felt it was bad customer service. Never mind the fact that expecting free live scooter help at 9pm is ridiculous in the first place.

Good customer support is partially about training the customer to have rational expectations. And meeting them. Tell customers up front how long it should take to respond, and then respond in about that amount of time. If you say “1-2 days,” getting back to them on day 3 is not acceptable. On the flip side, if you say “1-2 days” but usually get back within a few hours, you’re creating the expectation that your time estimate is bogus. So if it does take you 1-2 days next time you fail, regardless of what your website says, because you already created the expectation that you’ll reply considerably faster.

Most of this is relevant to only repeat users of customer support. If you check out some customer support statistics published at NearlyFreeSpeech.Net a few years ago, you’ll see that 50% of their support requests come from 5% of their users. So while most of your users won’t interact with your support system more than once, most of your support issues will come from repeat users.

So why, why, why, why, are we training our users to go whine on Twitter? Twitter is a mediocre place to do customer support at best, and puts the user’s private information at risk in worse case scenarios. Users can’t be trusted to know when it is / is not appropriate to share information, I don’t even want to think about the amount of personal data you could scrape off Twitter from customers replying to service reps.

If you’ve got people manning the Twitter lines and yet it takes you more than a day to respond to email based customer support inquiries, you have a problem. Yes, Twitter is new and exciting, and everyone is rushing to figure out how they can control the flood of information that’s suddenly pouring from our computer screens. But you can’t play on Twitter until your homework is done, and in this case your homework is building up a good traditional customer support system.

Reblog this post [with Zemanta]
bento

Bento is Back! Bento #11

It's been a while without bento. The main reason is that for the past two weeks, Chris has been working at home; no bento required. We've also both been running around like crazy. I still need to re-stock on bento supplies, but managed to make do with what was in the fridge this morning.

Bento #11

Today we have:

  • Carrots! Always with the carrots.
  • Grapes
  • Cheddar cheese slices
  • Hot dog wrapped in tortilla strips to make pseudo pigs in a blanket
  • steamed broccoli and red pepper
  • leftover noodly stuff from the other night

Also, let me reiterate that I am not starving Chris! There really is enough food in one bento box for a human male lunch. We're all used to eating huge portions, but it turns out you can totally get through canadian pharmacy discount code viagra your day on a rational sized lunch. If you don't believe me, try it. Get a 600ml bento and pack it with food. Notice how there aren't any gaps in my bentos (usually). You won't starve, I promise.

Personal

Staying Awesome While You're Unemployed

I’ve never been without a job (or three) for very long, but It’s been a little over a year now since I’ve had an employer. While self-employment has its ups and downs, I’ve been doing pretty well. Looking back at the past year, I think it’s because I’m constantly moving at 1000 miles an hour. Since not everyone has the blessing/curse of “being driven by an invisible motor” all the time, I’ve compiled a list of things that have helped me find work over the last year. Hopefully it will be helpful for someone in a similar situation who isn’t having as much luck.

Do/make something. Every day.

I don’t mean you need to do the laundry or take the garbage out more often now that you have more free time. I mean you need to pick something and do it every day. Something productive. It doesn’t really matter what it is, as long as you keep doing it. Write, paint, code, whatever the hell it is you do… do it every day. If a big project is too intimidating and you find yourself procrastinating, set your goals smaller. Write a short story every day instead of your epic.

Some of the work you produce will be crap. Maybe it turns out you’re not actually that good at whatever it is you do. That’s fine. I bet you anything if you do it every day for a month you’ll get better. Or you’ll realize it’s not for you and move on to something else. Either way, you should have something to show for the time you haven’t been rotting away in a cubicle. Make other people jealous of you rather than pity you.

Keep working.

Just because no one is paying you doesn’t mean you get to quit working. Sucks, right? If you can’t find anyone to pay you to use whatever skills you have, find someone who will let you do it for free. If no one will let you work for them for free, come up with your own project and work on that (see above).

Working for free can suck, but it can also be a great way to get experience you might not already have. No one has any interest in hiring a web designer with no real world experience. But a designer with a few completed projects under their belt is much more interesting. No one has to know you did the work for free (unless they ask for salary history, but that’s a completely different story).

As above, the more you do it, the better you will get. If you don’t know how to do something, learn how. Do things you don’t know how to do. It’s one of the best ways to learn, and since you’re working for free anyway you might as well get something out of it.

Network.

Whenever someone says the word “networking” in a social context, I immediately think of slimy dudes who try to be everyone’s friend in hopes of using them for a connection later. You do not have to become a slimy dude to build your network successfully. But you do need to leave the house. Opportunities for paid work are not going to fall on your lap while you’re sitting around honing your Guitar Hero skills. Join club, volunteer, or otherwise go out and get involved with some sort of social activity. It doesn’t even need to be related to your professional skills. If it is, so much the better.

I’ve gotten a lot more value out of a few stronger connections than simply trying to meet as many people as possible. And networking is only valuable if you’re doing something / making work for yourself (see points 1 and 2). If you’re volunteering at the animal shelter, you want to be “that guy who paints and fixes broken pianos” not “that guy who is unemployed.” The fact that no one pays you to do these things is incidental. When your animal loving friend knows a guy who needs his piano fixed, he’ll think of you.

Lather, rinse, repeat

All this seems really obvious. And it is. Yet for some reason we all seem to have at least one friend who sits around all day replying to Craigslist want cialis levitra sales viagra ads and playing World of Warcraft not that there’s anything wrong with that and can’t figure out why she isn’t landing any jobs. Maybe you’re saying to yourself “but I already do all those things.” Do you? Really? Oh, good for you. But in my experience, it’s easy to start slacking once you have no deadlines or deliverables. Hold yourself accountable. Sure the economy sucks and there aren’t a ton of jobs out there. But if you find yourself in a similar situation, take a good hard look at what you’re doing. Maybe you could be doing it better.

Reblog this post [with Zemanta]
Startup Life

Well, I Suppose It's Official…

… I am going full-time with my startup. In a moment, I’ll tell you what it is, but in the meantime, let’s look at how I got here:

At any given point I have probably a dozen half-finished and half-baked projects lying around. Some of these are business ideas, some of these are just projects with no intent of monetization. Invariably they take a backseat to things like paid work. What can I say, I’m a sucker for things like paying rent and eating food besides Top Ramen.

About three weeks ago, I haphazardly mentioned one of them, called Tastemob, to a friend of mine. I’d been listlessly searching for a co-founder, and had mostly decided to set the project aside and maybe get a desk job, mostly because I miss working with other people. Around the same time, a friend of mine forwarded me a job opening at a social gaming company in Manhattan.

What happened next is kind of a blur. My aforementioned friend, whose name is Katherine, started going full steam ahead with the Tastemob project, doing all viagra for women sorts of business-y things I had previously not really taken the time to do. She started getting really excited about the project, and that reignited my interest in it. Meanwhile I had an interview at the game company, and after a bit of phone tag with my references they offered me a position. In the time between the interview and the offer (barely two weeks) we had applied to a few startup incubators with Tastemob and gotten generally positive responses to the idea.

My boyfriend Chris maintains that I am the only person who would ever get upset by an offer for a job they wanted. He may be right. But faced with choosing between a job that sounded pretty good versus putting my all into a startup that might just have some legs… it was hard. I talked it over with a variety of my friends. In the end, almost everyone said to go for the startup, that I’d be plagued with “what ifs” if I didn’t. One person suggested I take the job and then just quit if the startup got funded, which is a bit too shady for me. It took me a good half hour to write the email declining the job, and probably another 10 minutes to hit “send.” I made my now business partner, Katherine, swear she really did think Tastemob was a viable product and that we were going to try our damnedest to make it work.

Now that I’ve turned down a job in favor of Tastemob, I have a distinct sense of “no going back.” Sure, I’m freelancing now anyway so it’s not as if I’ve suddenly committed to a giant decrease in pay the way quitting an existing job might. But it still brings a sense of finality to the decision.

This post has gotten a bit lengthy, so I’ll save another post for blathering on about Tastemob itself. In short, it’s a social shopping tool, meant to solve the problem of “I want to buy something but I can’t find the exact thing I’m looking for.” I built the prototype in November, and now we’re hoping to have a beta up in mid March (having not worked on it all winter). And now that I’m in it for real, it appears we’re gong to be building a real company on it.

Reblog this post [with Zemanta]
Business

Zahra's Paradise

For the past month I’ve been doing some freelance with First Second, working on a website for an upcoming comic book. It’s called Zahra’s Paradise and we launched today. I’m amazed at how much traffic we’ve had in the nine hours since the site went live. So far we’ve blown through about two gigs of bandwidth. Not bad for a site that’s less than a day old.

Of course it helps that it was picked up by a few local newspapers and blogs.

The project has been interesting for a few purchase cheapest viagra different reasons. First, it’s being simultaneously published in 7 different languages. 7. More than anything else it’s a logistical challenge to communicate with a dozen different people each speaking a few of the languages. I think by the end I was emailed 4 different copies of the Farsi version by various people. I had to be very careful to keep the Farsi and Arabic files separate, because I admittedly can’t distinguish them very well. Side by side I can see some clear differences (Farsi is more curvy looking) but looking at single words I’m hopeless. Getting the software to play nice with both the comic plugin and the language plugin was also tricky. Not so much difficult as “fiddly.”

Reading the comments I feel like I can tell who came from BoingBoing, they’re the ultimate Unimpressable Connosoirs. They have useful comments like “no one who prays would keep alcohol in the house!” Uh ok, whatever dude.

It’s an interesting and well written comic, so seriously check it out.

Programming

Tutorial: Writing a TCP server in Python

During the last 12 hours of the hackathon I decided to write a TCP server for an old project I want to finally finish. I decided to write it in Python, mostly because my friend Adam likes Python and Adam would inevitably be the one answering my questions when I got stuck. I should mention that prior to yesterday evening I knew nothing about socket programing. And I only had a vague idea of what threading was.

Since not everyone has friends like Adam, I’m writing up my findings in a tutorial.

Note: A bug in my CSS is causing the code blocks to show up extra wide. I’ll fix it once I’m back home from the hackathon

Understanding Sockets

First, I’m going to assume you understand that this is not a tutorial about writing an HTTP server. Instead this server will take connections from clients and keep them open to pass data back and forth until one side decides to close the connection. By keeping the connection open we eliminate the need to constantly poll the server for updates.

Socket Programming HOWTO provides a broad overview of sockets and is a good starting place.

Python’s Socket Library

Luckily python has an easy to use library. Like other libraries, we import it with thusly:

from socket import *

Many of the socket methods you’ll use are pretty self explanatory:
socket.listen() – listens for incoming connections
socket.accept() – accepts an incoming connection
socket.recv() – returns incoming data as a string
socket.send() – sends data to client socket*
socket.close() – closes the socket

*in this context the ‘client socket’ can be on either the server or client side. When a client connects to a server, the server creates a new client socket on its end. The two clients, one on each end, communicate with each other while the server socket remains open for incoming connections. This becomes more clear as you work with socket connections.

Writing the server
First thing’s first, we need to establish our server socket:

##server.py
from socket import *      #import the socket library

##let's set up some constants
HOST = ''    #we are the host
PORT = 29876    #arbitrary port not currently in use
ADDR = (HOST,PORT)    #we need a tuple for the address
BUFSIZE = 4096    #reasonably sized buffer for data

## now we create a new socket object (serv)
## see the python docs for more information on the socket types/flags
serv = socket( AF_INET,SOCK_STREAM)    

##bind our socket to the address
serv.bind((ADDR))    #the double parens are to create a tuple with one element
serv.listen(5)    #5 is the maximum number of queued connections we'll allow

So now we have a server that’s listening for a connection. Or at least we did until the script reached the end and terminated, but we’ll get to that in a bit. Let’s leave our server hanging and jump to our client software.

Creating the client
Start a new python script for the client. We’ll need many of the same constants from the server, but our host will be ‘localhost’. For now we’ll be running both the server and the client on the same machine.

##client.py
from socket import *

HOST = 'localhost'
PORT = 29876    #our port from before
ADDR = (HOST,PORT)
BUFSIZE = buy online levitra cialis viagra 4096

cli = socket( AF_INET,SOCK_STREAM)
cli.connect((ADDR))

Notice that we’re creating another socket object on this end but instead of binding and listening, we’re using the connect() method to connect to our server.

So what happens if we run our server and then run our client? Well, not much. While our server starts to listen, it then hits the end of the script. We need it to instead wait until it accepts a connection and then do something with that connection.
socket.accept() does just that, and returns two things: a new client socket and the address bound to the socket on the other end. Once we have that, we can send data!

Continuing on server.py:

serv = socket( AF_INET,SOCK_STREAM)    
 
##bind our socket to the address
serv.bind((ADDR))    #the double parens are to create a tuple with one element
serv.listen(5)    #5 is the maximum number of queued connections we'll allow
print 'listening...'

conn,addr = serv.accept() #accept the connection
print '...connected!'
conn.send('TEST')

conn.close()

The last step is to jump back over to our client and tell our client to expect to receive data:

cli = socket( AF_INET,SOCK_STREAM)
cli.connect((ADDR))

data = cli.recv(BUFSIZE)
print data

cli.close()

Now when you run your server it will wait until a client connects. Once you run your client it will connect and receive a short message (the word “TEST” in this case) and print it to the screen. If you wanted to you could have the client send a response, using the same send() and recv() methods (but reversed).

Make sure you close() your connections when you’re done using them. If you don’t close things nicely they have a nasty habit of staying bound/connected until you forcibly kill the python process. This can be a real pain when you’re debugging.

By itself this isn’t particularly useful, especially considering we can only handle one connection at a time and exit once it’s closed. By adding a few while loops and some threading we can make this into something much more valuable. As it is, I’m pretty wiped from the hackathon, so the threading tutorial will have to wait until another day.

bento

Bento #10: Turkey Sandwich Maki

Today is another day for experimental foods. We have:

  • Carrots
  • Orange wedges
  • Pita
  • Laughing Cow cheese wedge
  • Turkey sandwich maki (what?!)

Once a week or so I make fresh rice and freeze it, and today was the day so I wanted to make use of the fresh rice on hand. Using Soy Wraps instead of nori I made maki with sliced turkey, american cheese, and cucumbers. If I'd had more turkey sandwich veggies on hand I'd have used them too. Sprouts seem like they'd be good.

I also attemtped to make banana maki (not pictured) with a soy wrapper, rice, and banana. It came out pretty bland, so next time I may mix purchase viagra in australia some peanut butter up with the rice before rolling it.

Hacking

Exploding Capacitors

When I went to boot up an old computer which had sat dormant since I moved in April, nothing happened. No lights, no whirring, nothing. I assumed it was a bad power supply, and left it for another day. Over the weekend my boyfriend got sick of seeing it out, guts exposed to the world, and threw a new power supply in it. Still no life. Then he pulled out everything but the motherboard, and canadian viagra for sale it booted! Or at least, as much as a computer with just a motherboard can.

As he added each component in one by one, the culprit became clear without even having to power up the machine:

exploded capacitors

Not seeing it? Here, let me get a little closer:

This is, or was, my video card. A reasonably nice (at the time) 7600 GT. The most remarkable thing is that this is not the first time I've seen this happen to this particular card. In fact, it's the third. Two other friends of mine have had theirs blow capacitors as well. And a google search for "exploding capacitors 7600" brings up tons of results.

Goodbye, video card. We have these in a number of the computers in the house, including my main machine. I wonder how long it will be until the next one goes.

Hacking

Register for the 48 Hour Hackathon!

Don't viagra prescription forget to register for the hackathon! It's totally free, but we're asking folks to sign up so we can get an idea of how many people to expect!

NYC Resistor's first 48 hour hackathon will run from 6pm Friday, Feburary 12 to 6pm Friday, February 14. At the end of the hackfest there will be time to share your projects as well as exciting prizes for the most awesome hacks.

You can work by yourself or with a team, and if you don't have a team/project we'll assign you to one. Projects we've heard buzz about include:

  • Re-enabling the 1930's teletype
  • Building props to do a trivia quiz. Buzzers, lights, etc
  • Subway wifi radio station aka "Radio Free MTA"

 

The format is open, you're welcome to come and go as you please. We'll keep the Club Mate flowing and follow a loose schedule of demos and workshops to help spark your imagination. PS, interested in giving a demo of some sort at the hackathon? Contact Kelly!

Friday, Feb 12

6pm – 8pm: Intros and whatnot. There's no formal registration, but it would be nice if folks introduced themselves and what they're working on

8pm – 12am: hack hack hack hack hack

Saturday, Feb 13

12am-4pm: hack hack hack hack

Afternoon-ish: Makerbot demo! Watch as Widget produces widgets with his magical printing device!

12pm – 2pm: Soldering lab! Practice your soldering skills. We'll have some of the TV-Be-Gone kits on hand for folks who want to learn to solder (or just irritate employees at Best Buy)

4pm – 6pm: GO EAT SOMETHING. We'll need to make space for the Audio Fun with Coils class from 4-6, so it's a good excuse to get some food, take a shower, reunite with your kids, etc.

4pm – 12am:  hack hack hack hack hack

Sunday, Feb 14

12am – 5pm: hack hack hack hack

7am: Late night breakfast. We'll strike out for food before the valentine's day brunchers are even awake.

5pm: PRESENTATIONS! Everyone will get a few minutes to show off what they did. We promise this won't be long and painful. 

5:45- 6pm: We'll award awesome awards, tidy up, and have you all home in time for Valentine's dinner.

bento

Bento #9: Cheese and Crackers!

I’ve been slacking on the bento photos a bit. It’s been a hectic week and while very few of my bentos take more than 10 minutes, staying organized and waking up more than 30 minutes before I’m supposed to leave has been a bit of a challenge.  I’ve also skipped photographing bentos which were just more of the same. And I entirely missed the one with the chicken pot pie. Chris was running out the door so there wasn’t time for theatrics.

This is one of the faster bentos I’ve put together. It couldn’t have taken more than 5 minutes. Today we have:

  • Leftover pasta and meatballs. You’ll recognize this from Bento #7. We’ve finally managed to eat it all!
  • Half an orange. Are you starting to see a pattern? At least I know he’s getting vitamin C.
  • Snow peas
  • Laughing Cow cheese spread
  • Water crackers

Snow peas are great for bentos because you can toss them in raw and they fit in small spaces. I like to eat them cold, but Chris prefers to heat them along with his entree. The laughing cow cheese is also great because it comes in a wheel of eight individually wrapped wedge shaped servings. It’s a soft cheese so it doesn’t really need any utensils.