Half-Elf on Tech

Thoughts From a Professional Lesbian

Tag: essay

  • Blocking IPs – Don’t

    Blocking IPs – Don’t

    Here’s the thing. I don’t think blocking an IP address is a good idea.

    Will it prevent spammers from registering on your site? Yes. But much like CAPTCHA, I think it does more harm than good.

    See, IP addresses are numerical labels assigned to each device (e.g., computer, printer) participating in a computer network that uses the Internet Protocol for communication. Big words. Shorter version: The IP address is the phone number. DNS is Caller ID. When you dial ‘Home’ on your cell-phone, the phone translates that into a number and dials, right? Well on the internet, you say “I want to go to ipstenu.org” and it’s DNS that says “Okay, my big bad directory says that’s 67.227.208.52 so here you go!” (actually it says “You want extension on 67.227.208.52” if I can stretch that metaphor).

    The IP address for websites is pretty static. Just as most of us don’t want to change our phone numbers and teach all our parents new contact info, we don’t want to have to update all the DNS servers in the world with our new IP address. It’s a pain in the ass, it takes up to 72 hours to propogate to everyone (usually less), but that still means there’s a period of time where people can’t get to your website.

    This is all over-simplified, but you get the gist.

    Here’s where it gets weird. In order for the internet to know who YOU are and send you back the website you asked for, it has to assign you an IP address. And this changes. A lot. Most ISPs (the people who give you access to the net for moneies) have a ‘range’ of IP addresses which numbers less than the number of people they have who pay for internet access. In order to make sure everyone can get on, when you connect to the net, you get a new IP. Back in the day of dial-up, every time you dialed in, you had a new IP. This was normal, and was one of the many reasons no one bothered to block by IP. All the idiot had to do was reconnect. These days, my IP changes about once a week or so, and I have no idea when or why, but it does. That doesn’t bother me.

    Lately, I’ve gotten complaints and requests to make Ban Hammer or Register IP MS block people by IP address. And after playing with that a bit, I’ve decided I won’t. Not because I can’t (it’s really not that hard, and actually, Ban Hammer already does it for Single Site WordPress by accident), but because I don’t think it adds any value. The IP address can change too easily to make this a useful tool, and the odds are I’m going to accidentally block someone who should be able to access the site!

    This is not to say I don’t block IP addresses at all, just that I don’t do it the way people seem to want to go about it. Maintaining my own blacklist of IPs is insane, and stupid. I don’t need to waste my time clicking and banning spammers or auto-register bots. Instead, I block IPs using one of two tools that was designed to look for bad behavior. I detailed all this in Spam / Splog Wars. That’s how I stop spammers and it works.

    So no, I will not be wasting my time telling you how to edit my plugins to block people from the IP level. There are perfectly good ways of doing this that work without you having to field complaints from innocent users.

    Block the bots, not the people.

  • Don’t Fear Wandering Off Topic

    Don’t Fear Wandering Off Topic

    Sometimes when you’re debugging, you haven’t the foggiest idea how someone managed to screw something up so badly that they got this particular error. Naturally they’ll tell you that they didn’t do or change anything, and sometimes they’ll even be telling you the truth! It’s at that point I try to teach my guys that it’s okay to wander off the script and start talking about anything else, in order to learn how the person thinks.

    Everyone’s thought process is different. Some of us learn by reading, some by watching, some by doing, and others by listening. There’s no one perfect way to solve a problem, but that doesn’t stop managers from trying to codify the how-tos into a script to follow. We’ve all been there, where we’re told to reboot our PC to solve a modem problem. There is no secret shibboleet call to get you to the smarter people.

    I will say that the reason the scripts exist is because they do work. I couldn’t begin to tell you how many help tickets are solved when I ask ‘Are you using the default password of changeme?’ Heck, even telling people ‘Reboot.’ is correct sometimes. That’s the thing, though. SOMETIMES. You have to learn how to tell when ‘sometimes’ is now and when it’s not. For example. I add a user to a domain group on Windows. Our setup of Windows XP systems pull down domain group info (and all permissions allocated therein) on login. User says the permissions that come with the group aren’t working. I tell them ‘Reboot so XP can apply the settings. Sometimes it gets persnickety.’ They reboot, we’re done. But notice, I know how and why the problem occurred, and I can explain it to the user.

    But. Sometimes you get yourself down the rabbit hole with a crazy problem. “Hi! Every time I add a file, it locks the system.” Okay, time to sort out what’s getting locked. What’s not cleaning itself out, what’s acting ‘weird.’ Does it work for you? It does. Interesting. What’s HE doing? Let’s ask. “I’m using a home grown script to add files.” Oh. Betcha that’s it. I actually spent three days and a call to the vendor trying to debug a problem like this because the guy refused to accept that HIS script was POSSIBLY screwing things up. Actually he didn’t even mention the script until I started chatting about workflows and productivity and he mentioned, in passing ‘Yeah, we had to write a script because it took too long.’

    This isn’t about how when you ask for help, be specific and tell them exactly what you’re doing in as clear and simple a way as possible. This is about how, when you’re talking to someone, it’s totally okay to wander off topic and ask something off the wall. “Are you using Firefox beta 4? You are? Did you know that there are problems with that and TinyMCE?” Sure the question sounded hella random, but it was the debugger’s brain pinging off the wall at a memory.

    When you’re helping people, remember that they learn differently from you as well. As much as people tout ‘thinking outside the box’ as a call to innovation, I think that’s not what they mean. What they mean is being willing to take a chance, a risk, and make a stab in the dark at a possible answer. A genius is the one who looks at a moldy cheese sandwich and thinks ‘What the hell is IN that green stuff?’ A genius is the one who says ‘It’d be easier if could clone a server.’ A genius is the one who both thinks and applies the thought to something.

    When you’re stuck troubleshooting, wander off topic. Be willing to think of the crazy things and voice them aloud. Be willing to say ‘I doubt this has anything to do with it, but what happens if you do this…’ Be willing to ask the ‘stupid’ questions. Go ahead and talk about Bad Wiener day. The scrunchy joke may make you remember something totally off the wall.

  • When to Code

    I used to say “Don’t hack core, make a plugin. Don’t make a plugin when you can edit your functions.php. Don’t edit functions if it’s a one-liner in your .htaccess.” The concept behind it was that people tend to over-complicate things by over-coding. I don’t say that much anymore, since I’ve found that plugins are more useful than functions a lot of the time, and really those are theme specific. But I maintain my basic argument that the simple way may be the best way.

    No software design is perfect, and much of picking the software you use comes down to personal preference, at the end of the day. I worked through Y2K in desktop-software, testing it and validating its usage. One of the many things I learned was that personal preference will kill you, and spending a lot of time customizing an interface to be perfect for you is time wasted. At work, I use the bog standard Windows XP install. I have no customization on my desktop, fonts or display, save to make the screen resolution something easy on my eyes. The rest of the time spent making it ‘pretty’ is wasted for the purpose of work. My desktop is my desktop. The software I install is as much customization as I ever get.

    I also don’t generally customize my fonts in applications. Again, this is time wasted, and minutia I will have to remember later on when I inevitably re-build my computer from scratch. The only ‘customization’ you should be doing is adding in that which is required to use the software (user name, server name, passwords). And all of those should be saved in a config file, call it a day. The exception to this rule is how I customized Putty, but again, I saved the configuration in a putty.reg file (I know, I know) and when I have to reinstall it, I re-load that. Anything I want to customize must be easy to re-apply, both technically and mentally. I don’t want to spend an hour farting around trying to remember ‘what was that setting…’

    Similarly, when I look at wanting to do something on a website, I take the time to determine if this is a one-off change for one moment, or something I want to repeat. I think about how the change is going to affect the overall workflow of my day-to-day functions. Will this improve everything or just make today easier. Can I apply it to many things, or is it specialized and localized. Most importantly, do I need to recode to do it, or can I utilize something that already exists.

    It’s not a factor of being lazy, though like everyone else in the world, I am. It’s a factor of reinventing the wheel. Many times I end up writing from scratch, but other times I’ll sit and think ‘You know, this works about 90% of what I want. I’ll just change it.’ Now, as a good little coder, I fork my code when I do that, or split entirely and make something with a new name. I don’t ever hack core. If I can’t do it in a hook (be that a function or a plugin) or a config tweak or a customization, then something’s wrong with what I’m trying to do. Or possibly the way I’m trying to do it.

    Sometimes I find the best solution is to accept the limitations and make it the best I can within them. That’s always a fair cop too. But I never presume there’s only one way. I’ll chase the rabbit down the hole, through the tunnel and out the other end multiple times, in order to come up with the best way, not just to fix the problem I’m having today, but to make sure I fix it for everything, without impacting anything, and that it’s the right solution for the long run.

    This process usually begins with writing down, in plain english, what I want to do. Then I study the source code to find out where to change it. At this point, I stop coding again, and go into the documentation. On WordPress I review the trac tickets related to this portion of code, and for vended software I actually read their documentation and support sites. You see, now I want to know if I can sort out why they do things this way.

    For example, if I wanted to make the new WordPress 3.1 admin bar show up for all users (like the BuddyBar on BuddyPress) and have the login option (like the WordPress Admin Bar on WordPress.com), I could do this via hacking the code easily. But. In reading JaneForShort and Nacin’s comments in trac and on IRC, I followed their logic as to why this isn’t available out of the box. After all, these guys have access to the code on WordPress.com, so they could have lifted it whole sale. While I can see value in having it available, it would include too many options for a first-round change in 3.1. Maybe this will start to slide over in 3.2, but for now, the idea is to get the world used to it, so your options are on-or-off, and that’s it. I then wrote a new plugin, pretty much a raw duplicate of the admin bar code, that disabled their admin bar and ran mine instead for tests.

    Perfect? No, but it lets me test what I want without hacking core. Right now, I can see exactly why you don’t show the bar for logged off users: it’s ugly. This is something I knew going in, though, because I took the time to understand why the code was done the way it was. Do I agree with it? Yes and no. I agree that, as a short term goal, it was better to fix what was in and add more later. I don’t think this should be the end of it all, and I’m sure it won’t be. Growth and change are inevitable in most things.

    The real decision is if I want to implement my code now, or wait till 3.1 is out and then posit it as a change on trac. In the end, I’m playing with it on my desktop instead of anything else. I want to see where the thought processes for 3.2 takes things, and I want the time to clean up my code. It might be a passing fancy right now for both me and WordPress. It might be something I go “Oh! Shiny!” and change my mind on. But I have the time because this is something to interest me and it’s not a need.

    That’s the real crux of the matter: wants versus needs.

    Knowing the difference between a want (like shiny flash graphics) and a need (readability) helps me determine if the change I want to make is worthwhile. Knowing how to look at my desires and separate them from the demands is imperative when you’re writing code or building a house. You may want all the cool bells and whistles, but you have to take the moment to strip them out and get to the basics. There are always basics to fall back on, and ignoring them due to the blindness of bling will hurt you in the long run. Don’t let your customer base pull you from that track either. Sure, they want all the features the competitor has, but pay attention to the downsides of that, and educate them. If they’re right? Of course you should listen, but it’s your job to teach the customer to have realistic expectations. Yes, you can remove the /blog/ stub from your MultiSite installation, but there are risks. Be aware that the shiny removal may not solve every problem you’re having.

    When do you code and when do you say ‘This is what it is’? There’s no right answer. But knowing how to think through it and apply your mind to the entire problem, not just the ‘this is what I want now’ but also the ‘and this is the big picture’ will help you in every aspect of your life. Listen to the wants, respond promptly to the needs. We would like a jacuzzi tub in the bathroom, but all we need is a shower. Don’t let the fancy spigots distract you.

  • Basic Troubleshooting Is Still a Must-Have Skill

    Basic Troubleshooting Is Still a Must-Have Skill

    How low is too low?

    I wish I could say that lately I’ve noticed people asking ‘dumber’ questions on support forums, and while I do firmly believe the world’s IQ drops significantly between Thanksgiving and New Years, that’s not the problem here. People aren’t getting dumber. The problem is that the better people get at making software, the lower the technical requirement becomes.

    Look at email. Back when it was elm or pine, you had to really know what you were doing to get in and send mails. Then we got a couple GUIs, and you could keep all your emails on a floppy disk (which we all had a million of, thanks to AOL), carrying them around from computer to computer, Mac or PC. Everything to do with computers has this curve: First only the hard core programmers can do anything. Then the tech-savvy users, who are usually friends of programmers, get in on it. Then the smart kids who play with stuff. Then their family. Then everyone. Then your grandmother.

    By the time your grandmother gets around to things, it’s easy to use, easy to understand and friendly. This is, inherently, a good thing! To make the transition from geek toy to something usable that will change the world, you must make the entry barrier low enough for anyone with a reasonable amount of brain-power to use it. Twitter’s a great example of this. It’s easy to sign up, easy to use, easy to understand. Like anything else, you can get overwhelmed by the data influx, but that’s true of all technology. The telephone, for example, suddenly brought in the ability to have your dinner interrupted. It brought change where everyone has a phone. Of course, now we all have cell phones, but the idea remains the same.

    So when I look at support forums and people are having trouble installing software on servers via FTP, I put my head in my hands. Sometimes this stuff is supposed to be hard. We can all use phones, but we can’t all fix phones or even build them. And that’s okay! We all have skills. Twitter would probably be something hellish to install on your own website, but to utilize their site? Not so bad! And again, that’s okay.

    If you want to host your own website, you’re going to have accept this fact: You will need to be a smart, technical savvy, person.

    There. I said it. Yes, you can totally be too uneducated to run a website. Here, I’ll go all the way! You CAN be too dumb for WordPress!

    But let me stress this one more time: IT’S TOTALLY OKAY TO BE TOO STUPID TO RUN YOUR OWN WEBSITE!

    See, people get hung up on this. They forget that there’s a huge difference between running a website and posting news to your site. The line between a webmaster and a blogger is blurry for a reason, and that’s what’s causing all these headaches. Back in the day, if you wanted to run your own site, you had to be a webmaster. Now? Not so much.

    A webmaster is generally someone who thinks ‘Oh, sure, FTP, SSH, and SQL, no problem.’ They may prefer something like phpMyAdmin versus command like mySQL calls, but the most important thing is that they’re comfortable troubleshooting. A webmaster is the person who looks at an error, immediately looks it up (if they don’t know it off the top of their head), goes to forums, skims posts, reads what others have tried, and is willing and able to try things like a reverse DNS check. A webmaster makes backups so, at worst, they’ve only lost a day of work.

    A blogger is a writer. A creator. Someone who can make content. A blogger looks at a sunset and creates a haiku. A blogger takes a photo of a naked man on a bicycle. A blogger tells you the drama of returning an unwanted present, or about how her son wants to wear a dress on Halloween.

    And still, every day, I see people who don’t understand .htaccess asking for help with errors on their websites. I see people who complain they can’t auto-update their site from the inside, because FTP is too hard. I see people complain the magic 5-minute WordPress install is too hard. And I think that, perhaps, we’ve lowered the bar too much. If we’re at the point where the non-technical people are complaining it’s too hard to do something that is, by it’s nature, a technical thing, then we have a problem.

    This problem is compounded by webhosts who, in order to make money, want to make it ‘easier’ for you to run a blog, so they have auto-installers. They lower the bar. Then we have web-apps (like WordPress) which let you install, from within the app, plugins and themes. This means that someone could create a site just like this one, without ever touching FTP or SSH. That also means when things go wrong, and they will, you’ve got someone stranded, crying that this ‘easy’ application sucks, you’re terrible, and whyyyyy meeeeee!

    Every single person who’s ever worked support just started nodding their head and reaching for a drink.

    So here’s the deal. Yes, you can become smart enough to run your own website, but before you jump into it, think about how long it took you to get comfortable with your computer. How long was it before you could email, link videos, and save MP3s? Do you know how to make folders in your email app? Do you know that emailing 200megs to someone will piss them off? Did you need a book, or someone to sit by you and teach you all this? Are you comfortable googling errors and applying fixes? More to the point, are you willing to get your hands dirty and make mistakes?

    If you want to run a website community, you may need to break down and hire someone to do the heavy tech lifting for you. Just like you would want to hire someone to create cool art, or decorate your house. Sometimes you just need to grab an expert. Remember you can’t get something for nothing. Either invest the time and money in learning, or in someone who already knows it all and can support it for you.

    Apropos of all of this, Google has a new site called Teach Parents Tech. Lowering the bar. Again.

  • CAPTCHA Isn’t Accessible

    CAPTCHA Isn’t Accessible

    I’m just going to start this with a possibly startling fact. PWNtcha can break 90% of known CAPTCHA algorithms. If that doesn’t tell you why they’re totally useless, then I don’t know what will.

    It’s no secret that I detest and will not use CAPTCHA on any site I build. I have a math-test on one site where I get a lot, but that’s as far as I’m willing to get into that world. People often ask me why I hate it, and I tell them that it doesn’t work and it’s bad for accessibility. The fact that it doesn’t work is proven by PWNtcha pretty well, but the concept that it’s bad for accessibility seems to be lost on a lot of people.

    Screenshot from Star Trek episode 'Wink of an Eye' where Kirk is ordering dinner from the computer CAPTCHA stands for Completely Automated Public Turing test to Tell Computers and Humans Apart. In the begining, it was a great idea. The computer world had just started to try and make AI, and the first attempts at that on the Internet was to put little bots out that talked to people, asking and answering questions. That, in itself, is pretty damn cool, I agree. With working AI, we’re one step closer to ‘Computer, I’d like a bottle of Chateau Picard’s chardonnay, chilled to 68 degrees Fahrenheit, and play some Barry White at volume level 3.’ (illustrated to the right). AI is a great concept. But. What we actually got was people thinking ‘Wouldn’t it be cool if I made something that listened for key phrases and told them about my cool product?’ Basically, spam.

    An early defense against spam was that you had to enter a CAPTCHA code, which showed a picture with letters and numbers, and you entered those letters and numbers into a text field. The magic CAPTCHA verified they were the same and let you in. Pretty cool, right? Except that if there was a way for CAPTCHA to compare the image to the text you entered, then there had to be a way to reverse engineer that so a spam bot could read and enter the same code. Ever since then, it’s been an ongoing fight to make a better mousetrap.

    See, a human can easily read CAPTCHA like these:
    captcha examples that don't matter, suffice they're readable by most sighted people

    But the best ones, the ones that can’t be solved by computers, the ones that even PWNtcha says will last for a long time, are ones I look at and wince:
    captcha examples that don't matter, suffice they're totally unreadable by most sighted people

    Clearly if you make it good enough that a computer can’t crack it, you make it harder for a human to be able to understand it. In that one moment, anyone who has limited vision can’t access your site. Which means you’ve lost a visitor. If this is your business, you’ve lost revenue. And if you think there aren’t a lot of people that this will keep out of your site, think about how many people you know with some form of dyslexia. Think about how many people over the age of 40 (the age at which most of us need reading glasses) visit your site. Even if you run a trendy under-30 store, grammy may want to buy junior a new hip shirt. And don’t even pretend that older people don’t matter. Remember how long ago you were in College? Yeah, you’re getting older too, buddy.

    So they don’t work, they keep real people out of your site, and did I mention you probably don’t need it? I’ve been running ipstenu.org for a very long time (on Internet time – it’s been over a decade). I’ve had less than 20 spam posts show up on my site. None since I turned on comment approval (where I must approve your FIRST comment, but after that, you’re free to post). Akismet has caught about 50k spam posts. Bad Behavior’s caught even more (100k at last gasp) and only two ‘real’ people have ever complained about being caught (one had a virus, one had a bad firewall at school). Sure, if you’re Yahoo, you might need it, but did you know the ‘unreadable’ examples I used above were from Yahoo? Yeah. Google has a pretty basic, easy to read one, and so does Twitter. Facebook has too many, and they’re annoying. They actually probably don’t need them, either.

    Turn off your CAPTCHA. Your users will thank you.

    Continued Reading
    Inaccessibility of CAPTCHA – W3.Org
    It’s Official: Captchas Are Bad for Business – The ZURBlog
    Why you should never use a CAPTCHA – Online Aspect
    CAPTCHA Effectiveness – Coding Horror

  • I’m not a coder and I need HELP!

    IT may be for rockstars but really, the trick to getting the best help from your techs is simple. Be honest, think about what the questions we ask you mean, be direct, and explain what you mean. Seriously. That’s all we need. Every time someone says ‘It doesn’t work’ or posts a reply in a forum ‘Me too’, we cry a little. If you’re vague, or don’t use normal terms, we may get a little pedantic on you, but the reason is that we need to make sure you have the problem we’re thinking you have before we tell you how to fix it.

    Be Honest

    The number one reason why something ‘magically’ breaks is because you changed something. This is often seen, from the end-user perspective, as an at-fault change. “I changed this, it broke, therefore it’s my fault.” And in the business world today, no one wants to be at-fault. It’s an ego thing, but it’s also a responsibility thing. Here’s a secret for you. The IT people don’t care whose fault it is. Seriously. We just want to fix the problem and make sure it doesn’t happen again. That’s all we want. So when we ask you ‘Did you make any changes?’ just tell us ‘Yeah, I modified my profile to have this line.’

    Sometimes YOU may not make the change. Sometimes you may have the server or someone else make a change. Sometimes the change seems, to you, totally un-related. It doesn’t matter. Tell us. “I didn’t change anything with IE, but I did install a new twitter app.” That may be the cause! Unrelated software sometimes is written poorly, or weirdly, or just in a way that conflicts with your other software.

    If you’re using a CMS like Drupal, WordPress or Joomla, plugins often break things in insane ways you never predicted. And server upgrades can cause conflicts with older code on your installs. Always pay attention to what’s going on with your server.

    Think about what the question we ask you means

    When we ask you if you changed anything, think about that for a moment. It’s like ‘Did you change your oil?’ That’s a pretty simple yes or no answer. But what does the question ‘What did you change?’ mean. Well pretty much it means ‘What’s changed?’ But it also means ‘What were you TOLD to change and you didn’t change?’

    The other day, I had a weird situation where someone had modified their profile a month ago to have a line to let them do something else. This was seen as inefficient, and the server guy fixed the server and told them ‘Remove any changes you made or things may break.’ They did not. Fast-forward a couple weeks and my monthly process failed. I asked if they changed anything. They said, honestly, they had not. I talked to the server guy who said ‘Well, they SHOULD have changed this…’ We changed it, it worked. Strictly speaking, they were honest, but they didn’t think about the question. They got hung up on that at-fault point. “WE didn’t change anything,” they said in email and I replied ‘Yes, but you actually were told to change that. It’s not a big deal, it’s an easy fix, but next time, remember to make the recommended changes, or at least document why you didn’t make the change. It’ll make it faster for me to debug.’

    That was singing to the wall, though. The guy was let go the next day.

    Be Direct

    This does not mean ‘Be an asshole.’ And in fact, I subscribe to Wil Wheaton’s rule: Don’t be a dick. What it means is don’t beat around the bush. I don’t need to know that you’re logging in from home and it’s distracting. I don’t need you to IM me and ask ‘How are you?’ You don’t care, and neither do I. What we care about is this: What’s the problem?

    I get a lot of IMs at work (which is why I don’t use IM at home, by the way) with people saying ‘Hello! How are you?’ and we waste about 10 minutes ‘chatting’ about stuff no one really cares about. I get that you’re trying to be polite, but you’re calling the help desk. The other problem is when someone says ‘Do you have a minute to help me?’ Honestly, rarely, but since I don’t know what you’re talking about, I can’t tell you if I have the time, so I have to say ‘Depends. What’s the problem?’

    Here’s an example of a poor IM/phone conversation with tech support (this is, by the way, an actual conversation I had recently):
    User: Hi!
    Tech: Hello, this is Jane, how may I help you?
    User: It’s Tom.
    Tech: Hello, Tom. How may I help you?
    User: How are you?
    Tech: Fine, thank you. How may I help you?
    User: Do you have a minute?
    Tech: Depends on the problem. How may I help you?
    User: I’m having a problem.
    Tech: Yes, with what?
    User: With your application.
    Tech: What’s the problem.
    User: It’s not working right.
    Tech: Okay, can you be more specific?
    User: It’s my password.
    Tech: Okay. What, specifically, is wrong with your password?
    User: It doesn’t work.
    Tech: Does it give you an error message?
    User: Oh, yes!
    Tech: And the error says….?
    User: Something about the password being bad.
    Tech: Can you try to login again and read the error, out loud, to me?
    User: Sure. Okay, it says ‘Your password is incorrect and your account has been locked out.’
    Tech: Ah. Okay, I’ll unlock your account and set your password to 123456 – Once you log in, you’ll be asked to change it.
    User: Boy, that took a long time!

    Look at how long that was. Want to see the GOOD version of the same conversation?
    User: Hi, Jane, it’s Bob. I’m having a problem with your Foobar application. When I try to login, it says my password was incorrect and I’m locked out. Can you help me?
    Tech: Sure thing, Bob. I’ll unlock your account and set your password to 123456 – Once you log in, you’ll be asked to change it.
    User: Thanks!

    Look at how much faster that went because Bob was direct and to the point. He got his problem fixed really quickly because he came prepared. And if the Tech had been busy, he could have easily transfered the call, or opened a ticket, or done a variety of things.

    Oh and for the record, I answer the phone: Company name, this is MY NAME. How may I help you?

    Explain What You Mean

    In my previous example, Bob got to the point and explained what the error was right away. This falls under ‘Explain what you mean.’ The phrase ‘It’s broken’ has lost all meaning, if it ever had any. And due to the complex nature of computers, even if your problem as simple as a botched password, we really do need you to explain ‘When I try to log in, the software says my password is invalid.’

    If you have a weird error, take a screenshot. They are rarely a bad idea, and can sometimes streamline a problem from ten minutes of talking ‘Okay, where is the icon?’ into a quick ‘Oh! Yeah, I know that one.’ If you get an error message, use the exact error with the exact verbiage, in your support request. Also remember to put your screenshots in a generic format. While PDF, RTF and DOC (and DOCX) are mostly universally readable, XPS is not. PNG is also a great one. Anything that is readable only by proprietary software is a bad idea, even if you know the other person has that software!

    Also be descriptive about what you’ve already done to trouble shoot. Don’t say ‘I did everything I could find online!’ That’s vague. Say things like ‘I tried to reset the admin password via SQL, email, PHP, and the emergency script.’ That’s descriptive and tells us what we can skip! On the other hand, don’t get all pedantic. Likely it doesn’t matter if you logged in from home or from work if your email crashes every time you read an email from Bob. On the other hand, if you can get to a website from home and not work, the odds are location does play a factor. While you should be descriptive, think about relationships between what information you’re providing and what your problem is. Later on, you might be asked ‘Does this work if you try it at home?’ But we probably won’t ask if it works on your Mac, if it’s a Windows Only application. Again, think about the questions and the relationship.

    Don’t get mad when you’re treated like a noob

    If you’re a user, sometimes when you provide a limited amount of information, techs default to the lowest common denominator. If you ask a question which we think is pretty standard, is answered in the FAQs (or by 5 minutes in Google), we tend to assume you’re new at all this, and pitch you the simple answer. This means you DON’T get told how and why something works, just how to do it. This means you may get what looks like a flippant response. This does not mean we, techs, think you’re an idiot. It means we can’t tell, from your post, if you’re a BOFH or a bean counter. So we assume bean counter and if you reply ‘Yeah, I did all that.’ well it’s your own damn fault for not telling us what you did in the first place.

    I try not to treat people like rank newbies, but. But. Sometimes I get a question that is mind-numbingly obvious with ten minutes of looking. Asking for help should be the last resort for some people. Like if you’re running a blog on your own server, you need to learn how to help yourself. On the other hand, at work, you should call for help when the software breaks. Someone is paid to fix it, and you should utilize them. Of course, if the techs have made a quick FAQ ‘if you get this error, you need to delete this temp file’ you should read it and try it.

    How to write a good help request

    So you’ve read all that and you want some examples?

    For your help desk at work, it’s pretty simple:

    I’m using software FOOBAR and when I try to do BAZ I get the following error: . I’ve included a screenshot. I was able to do BAZ yesterday, and I have not installed any new software.

    I’m a new user of FOOBAR and I can login, but when I click on BAZ, nothing displays in my right hand menu pane. Included is a screenshot.

    I need to use FOOBAR. How do I get it installed on my PC?

    Not too hard, eh? At work, generally people know if you’re an end user, a developer, or a programmer, and can skew support thusly. For public support forums, however, we have no idea so here’s a good idea:

    I’ve been using FOOBAR since version 2 and I recently upgraded from 2.9 to 3.0. Now when I try and add a new BAZ, I get an access denied error with the following output. I’ve disabled all my plugins and re-copied the files up. Same problem. I’m using a linux server and I have PHP 4.

    Variations of that rarely go amiss. Also remember on CMS support forums, most of the people there are volunteers, so calling them names will get you shunned, if not banned. On free forums (WordPress, Drupal, etc), you’re NOT a paying customer, so don’t expect to be treated like one.

    Do you have advice for the best ways to handle support requests, as a tech or a user? Sing out in the comments!