How-To: Google Voice Inbound/Outbound Without a Computer

Update (July 25, 2010): SIP Sorcery has disabled new account registrations as of today. If you don’t already have an account then you’re out of luck. More information here.

Quick History

Many of us have been using GrandCentral long before it was called Google Voice and have enjoyed many of it’s features. One of the unfortunate side effects of the increased visibility that Google’s acquisition brought to the service was the swift shut down of the SIP connectivity we were using to initiate calls. There were other workarounds using Gizmo5, different IPs, but all the tricks were eventually killed off in May 2009. Shortly thereafter Gizmo5 allowed users to make free outgoing calls by integrating Google Voice into their service but it was hampered by a 3 minute call limit. As they say, necessity is the mother of invention. The current workaround came through two different projects that utilize Google Voice via JSON and XML requests: Google Voice for Python (pygooglevoice) and SipSorcery’s Google Voice App.

Purpose

This tutorial will show how to make inbound/outbound Google Voice calls using only a SIP client whether it’s a computer-based softphone like Ekiga, a mobile phone-based softphone such as Fring, a hardware 3G/Wi-Fi SIP phone like my Nokia E71, or an analog telephony adapter like the Linksys PAP2T-NA that allows regular house phones to use VoIP. Any SIP software should be able to use this method of interacting with Google Voice. I put this together after Gizmodo and Lifehacker recently posted tutorials that had the incoming part of Google Voice working but neither showed how to get outbound calls working without a computer. I’m pretty sure this tutorial will also work for people that do not have a US phone number needed to verify a new Google Voice account as long as things are set up in the order below.

Acknowledgments

I’m doing nothing more than to take screenshots to illustrate a process that has been created by a number of very intelligent people who should be recognized for the their hard work:

There are many more people that I’m certain I haven’t listed. Feel free to e-mail me if I’ve made an omission that needs to be rectified.

Disclaimer

This post is for educational purposes only and is not meant to replace your regular telephone. Read this document through in its entirety before attempting anything. If you choose to follow this tutorial then you do so at your own risk and take full responsibility for any and all consequences. I cannot be held liable for any damages. In other words, if anything terrible happens to you because of this tutorial then you’re on your own. Do not use this configuration for anything other than leisurely tinkering and certainly not for emergency calls. You’ve been warned!

Requirements

SipSorcery Account Creation

  1. Create a SipSorcery account by pointing your browser to: http://www.sipsorcery.com
  2. Click Click for SIP Sorcery Portal. Note: You must have Microsoft Silverlight installed!
  3. Click Create New Account
  4. Fill in the fields with your information. Make sure you put in your real email address (a confirmation email will be sent), choose a security question, and set the correct timezone. Once completed, click Create Account.

  5. If everything was created successfully then you’ll see this message about confirming your email address.
  6. Head over to your email account and confirm your email address by clicking the link. Once completed, you’ll see the following message.
  7. At this point you can login to your newly created SipSorcery account by pointing your browser to: http://www.sipsorcery.com. Then click Click for SIP Sorcery Portal. Enter in your username and password. You’ll should see something like this:
  8. We’ll come back to SipSorcery later. Let’s set up our SIP softphone next.

SIP Softphone Set Up

Note: You may use any SIP softphone, hardphone, or analog telephony adapter of your choosing. The basic setup instructions will be the same for all of these devices. I’ll use Ekiga because it’s a free download. If you’re not using Ekiga then skip down to step 13 for the SIP phone configuration information.

  1. Download Ekiga for Windows by pointing your browser to: http://ekiga.org/download-ekiga-binaries-or-source-code
  2. Once downloaded, install the application with the defaults. Note: You’ll see a second installation wizard for GTK which needs to be installed in the same default manner. Once it’s done, it’ll exit back to the main Ekiga installation wizard.
  3. Start Ekiga. A window will pop-up called Ekiga Configuration Assistant (1 of 8). Click Forward on the bottom right.
  4. Enter your name. Click Forward on the bottom right.
  5. The panel is for those who want to create an Ekiga.net SIP account. We don’t need it for our configuration so we’ll skip it by clicking the checkbox at the bottom. Click Forward on the bottom right.
  6. This panel is for those who want an Ekiga outgoing call account. Again, we don’t need it for our configuration so we’ll skip it by clicking the checkbox at the bottom. Click Forward on the bottom right.
  7. This panel is for choosing your internet connection type. Pick LAN if you have a sufficiently fast broadband connection. Click Forward on the bottom right.
  8. This panel is for choosing the audio devices Ekiga will use for VoIP calls. The defaults should be fine in most cases. Click Forward on the bottom right.
  9. This panel is for choosing a webcam for video calling. If you one then pick it. If you don’t have one then don’t worry about it. Either way we won’t be making video calls in this configuration. Click Forward on the bottom right.
  10. The final panel is to confirm your settings. Click Apply on the bottom right.
  11. The Ekiga’s main window should pop-up now. Click the Edit menu. Click the Accounts option.
  12. In the Accounts window click the Accounts menu. Click the Add a SIP Account option.
  13. Fill in the fields Edit Account window as follows:
    1. Name: Your name
    2. Registrar: sip.sipsorcery.com
    3. User: Your SipSorcery Username that you created in the last section
    4. Authenticated User: Leave it blank
    5. Password: Enter your SipSorcery password that you created in the last section
    6. Timeout: 3600
    7. Make sure the checkbox next to Enable Account is ticked.

  14. Click OK.

  15. If you typed in everything correctly then you should see Registered displayed under Status for your new account. If not, then edit your account settings. Click Close to return to the main Ekiga window.
  16. That’s it our Ekiga softphone set up is now complete. Next we need to get an incoming phone number from a VoIP company.

Incoming SIP Phone Number

Note: Several companies offer US phone numbers for free incoming VoIP calls. I will use IPKall but you may get a free number from SipGate or IPComms.net. If you don’t use IPKall then the configuration is slightly different. Instead of following this section, you’ll need add the login credentials for the provider on the SIP Providers tab in SipSorcery. This is done by clicking on SIP Providers -> Add on the top box called SIP Providers. Enter your SIP provider’s Name, Username, Password, Server Address, tick the Register box, and leave the Register Contact field alone (it should be your SipSorcery address), and click Add. Once you’ve successfully completed this step SipSorcery will show a message in the bottom box called SIP Providers Registration confirming that you’re credentials work. Substitute your alternate provider’s phone number wherever I put in the IPKall phone number in the remaining sections.

  1. Get an IPKall phone number by pointing your browser to: http://www.ipkall.com
  2. Click *Sign-Up*
  3. Enter in the following information:
    1. Choose your account type: SIP
    2. Choose Area Code for your IPKall Number: 425 (explained below)
    3. SIP Phone number: Your SipSorcery Username
    4. SIP Proxy: (ex. sip.fwdi.net): sipsorcery.com
    5. Email Address: Your Email Address
    6. Password: 4-digit numerical pin
    7. # of Seconds to ring before hanging up: 120

  4. Enter in the ReCaptcha and click Submit.
  5. This next page is a confirmation screen. Save the information so you can log back in later. Your new IPKall number will be emailed to you.
  6. Check your email and write down your phone number for the following steps.
  7. If you would like to test your set up so far, then call your IPKall phone number another phone. Your Ekiga client should ring on your computer. Once you pick up you should be able to hear your voice through your computer.

Note: IPKall only gives phone numbers in the state of Washington. This doesn’t matter because no one will be using this number besides Google Voice to forward your calls. IPKall numbers expire if they aren’t used for 30 days so the numbers are put back into the available pool. Many Google Voice accounts that are no longer used still reference expired IPKall numbers therefore Google Voice won’t allow you to use them as your forwarding number. I’ve had the best luck with area code 425. If for some reason Google Voice does not allow you to use an IPKall number then log back in to IPKall, delete your account, and recreate another for a new number using the above instructions.

Google Voice Account Creation

  1. Create a Google Voice account by pointing your browser to: http://google.com/voice
  2. Pick your Google Voice phone number by entering an Area code, city or zip code and/or a Word, phrase, number. Click Continue once you find a phone number you like.
  3. Confirm your Google Voice phone number (write it down), enter a 4-digit numerical pin (twice), read and accept the terms and conditions, and click Continue.
  4. Add a forwarding phone number by entering in your IPKall phone number from the previous section. Leave the Phone Type as Home. Click Continue.
  5. If Google Voice did not accept your IPKall phone number because it is in use by another account then you must read the note at the end of the previous section. In a new browser window or tab you’ll need to delete your IPKall account and create another one to get a different number. Then return to the Google Voice window or tab to reenter your forwarding number.
  6. If everything went smoothly then Google Voice will ask to confirm your forwarding number. Note down the two-digit code. Make sure Ekiga is running and switch to the Dialpad tab. Click Call me now.
  7. Wait for Ekiga to ring, answer, and enter the code on the Ekiga dialpad using your mouse. Once the recording says your phone has been activate hang up. The browser window will have a message confirming your Google Voice number. Click Finish.
  8. Now click Settings (top right) -> Voice Settings -> Calls. Turn off Call Screening. Google will ask you to confirm this change, do so. Finally, click Save Changes.
  9. You can now test your Google Voice number by calling it from another phone. Ekiga should ring on your computer. If so, congratulations inbound calling works! Now we need to setup outbound calling in SipSorcery.

Outbound Google Voice Calls

Outbound calling with Google Voice without a computer requires some clever magic with a SipSorcery dialplan. We will set that up next.

Note: You will need to enter in your Google Voice username and password into the SipSorcery dialplan. Some people have their reservations about this step but it’s a choice that’s best left up to you. I’ve been using Aaron’s SipSorcery for a very long time and I trust him as do many others. However, if that’s not enough then you can always create another Google Voice account with a throw-away email address and password. The choice is yours (see disclaimer above).

  1. Go to SipSorcery by pointing your browser to: http://www.sipsorcery.com
  2. Click Click for SIP Sorcery Portal. Note: You must have Microsoft Silverlight installed!
  3. Login with your username and password.
  4. Once logged in, click Dial Plans.
  5. Click the default dial plan. Erase sys.Log(“hello world”) that’s in the dial plan so it is blank.
  6. This is Mike Telis’ Simple Dial Plan.
    # Copyright(c) 2010 Mike Telis
     
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    # http://www.apache.org/licenses/LICENSE-2.0
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
    # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    # License for the specific language governing permissions and limitations under
    # the License.
     
    # Click "View raw file" in the lower right for the best copy/paste view
     
    AREA_CODE = '717'                  # my area code
    GV_USER   = 'username@gmail.com'   # my GV e-mail address (user@gmail.com)
    GV_PASS   = 'GV password'          # my GV password
    CB_NUMBER = '1aaaxxxyyyy'          # my 11-digit SIP number (only one)
     
    SPEED_DIAL = {                     # my speed dial numbers
     '1'   => '19879879876',          # Mom
     '123' => '12345678901',          # Work
     '45'  => '17479876543',          # Gizmo BFF
     '411' => '8004664411',           # Google 411
     '266' => '4153767253@podlinez.net',     # CNN Headlines
    }
     
    begin
       sys.Log "** Call from #{req.Header.From} to #{req.URI.User} **"
     
     if sys.Out    # if outbound call
       num = req.URI.User.to_s        # Get a string copy of the number to dial
     
       num = SPEED_DIAL[num] || num   # Substitute with speed dial entry, if any
     
       case num
         when /@/ then sys.Dial num   # URI dialing
         when /^[2-9]\d{6}$/          # Local call, 7-digit number
           num = '1'+ AREA_CODE + num # prefix it with country and area code
         when /^[01]?([2-9]\d{9})/    # US number with or without country code
           num = '1' + $1             # add country code and truncate number to 10-digit
         when /^(011|00|\+)(\d{10,})/ # international number
           num = '+' + $2             # GoogleVoiceCall works with '+' prefix only
     
     
         else sys.Respond 603, 'Wrong number, check & dial again'
       end
     
       sys.Log "Calling #{num} via Google Voice"
       sys.GoogleVoiceCall GV_USER, GV_PASS, CB_NUMBER, num, '.*', CB_NUMBER =~ /^1747/ ? 7 : 1, 30
     
     else          # sys.Out
       sys.Dial "#{sys.Username}@local"
     end
     
    rescue
     sys.Log("** Error: " + $!) unless $!.to_s =~ /Thread was being aborted./
    end

    Select all the code in the box above, copy it to the clipboard, then paste it into the SipSorcery Dial Plan area (the large black box) like this:

  7. Scroll to the top of the black box where you just pasted the Simple Dial Plan so we can edit a 4 specific fields.
  8. The lines we’re going edit are the following (do not edit anything else in the script):
    1
    2
    3
    4
    
    AREA_CODE = '717'                  # my area code
    GV_USER   = 'username@gmail.com'   # my GV e-mail address (user@gmail.com)
    GV_PASS   = 'GV password'          # my GV password
    CB_NUMBER = '1aaaxxxyyyy'          # my 11-digit SIP number (only one)
  9. Change 717 to the area code of your Google Voice number. Leave the apostrophes in place only edit the 3 number in between!
  10. Change username@gmail.com to your Google Voice login email. Leave the apostrophes in place only edit the email address in between!
  11. Change GV password to your Google Voice login password. Leave the apostrophes in place only edit the numbers or letters in between!
  12. Change 1aaaxxxyyyy to your IPKall number. Leave the apostrophes in place only edit the numbers in between!
  13. Just to be clear: leave the apostrophes in place and only edit the 4 lines above. Nothing else! Once done, click Update.
  14. If you took too much time, then the dial plan update will fail. To fix this problem you’ll have copy your edited dial plan to Notepad, log out and relogin to SipSorcery, go back to the default dial plan, clear the box, and paste in your edited dial plan.
  15. If everything worked then you should see the following message:
  16. That’s it! Now go to Ekiga and dial “266.” If your dial plan is entered correctly then you should be hearing CNN headlines through your computer speakers. Hang up and try calling a US phone number and it should work. If it’s not working then go back and recheck all the steps.

After logging out from Ekiga you can use your SipSorcery login credentials in another computer-based softphone, a WiFi/3G phone’s SIP client, or a analog telephony adapter like the Linksys PAP2T-NA. I’ve used this configuration in all three scenarios and it works perfectly.

SipSorcery is a very powerful application but not a full PBX. The simplest usage scenario is to use SipSorcery to login to several SIP accounts on the SIP Providers tab so that you can receive calls from all of your other SIP accounts. There are several more complex use cases out there to do things like picking the cheapest VoIP provider to route outbound calls. Your imagination (and dial plan skills) is the limit so browse the SipSorcery forums to see what others are doing. If you want even more control over your VoIP calls such as menu systems for incoming calls and other great things then check out Ward Mundy’s The Incredible PBX. It can incorporate several Google Voice lines in different area codes and much more.

How-To: Access Free IPv6 Usenet Servers

Internet Protocol version 6 (IPv6) is the successor to the currently used IPv4. Outside of geek circles I seldom hear of people talking much about IPv6. Unfortunately IPv6 hasn’t enjoyed broad deployment for reasons beyond the scope of this post. Several large web destinations exist today that allow access over IPv6 but they also available over IPv4. It wasn’t until some tinkering in my free time with IPv6 that I realized there are free Usenet servers available only to IPv6 users. If you’re like me then your internet connection is of the IPv4 type putting the IPv6-enabled internet out of reach. Lucky for us a simple solution exists called tunneling.

In this ‘how to’ I’ll explain how to get a simple tunnel set up on a Windows 7 machine to access three free IPv6-only Usenet servers. I’m using a 32-bit clean install of Windows 7 Starter with no major changes to the OS other than disabling UAC and not having installed any virus scanner. Both are no-nos for production machines. I’ll be using gogoNET’s free tunneling software and the open-source SABnzbd+ Usenet client. Other options exist for both but the basic concepts will be the same.

As always, make sure you back up your machine before attempting this because I am not responsible for any disasters by following these directions. Lastly, don’t use this information to do anything illegal or abuse the generous providers giving away these free services.

Part 1: IPv6 Client Setup

  1. Direct your browser to gogo6‘s website. You will need to register with gogo6 (its free) via their Ning-based social network.
  2. Once you’ve created the account and logged in to the above download page you’ll need to download the appropriate “gogoCLIENT – Basic version” (either 32 or 64 bit) for your platform. Ignore the other downloads on that page.
  3. Run the “gogoCLIENT – Basic version” file you just downloaded. You’ll need to agree to the license to continue the installation.
  4. Don’t change any options on the “Choose Components” screen. Click NEXT.
  5. Don’t change the Destination Folder on the “Choose Install Location” screen unless you know what you’re doing. Click INSTALL.
  6. During the install Windows 7 may pop up a “Would you like to install this device software?” dialog box when its time to install the gogoTUN tunnel driver. It is up to you whether you choose to click the box next to “Always trust software from “gogo6 Inc.” — I did. Then click INSTALL. It may take a few minutes to complete on slower machines.
  7. On the final screen leave the box ticked next to “Launch the gogoCLIENT utility” and unclick “Show README.” Then click FINISH.
  8. You will now see the gogoCLIENT Utility on your screen.
    screen1
  9. Click CONNECT without changing anything.
  10. If everything went correctly you should see a successful connection message similar to the one below.
    screen2
  11. To be sure everything is working correctly navigate in an IPv6-enabled browser like Firefox http://ipv6.google.com. If you see the Google search page with an animated Google logo then you’ve succeeded in connecting to your first IPv6 website. Congratulations!
  12. For more advanced users: You can obtain credentials from gogo6 that can be put into the client which gives some benefits but I’ll leave that to the reader to figure out.

Part 2: Installing and Configuring SABnzbd+ Usenet Client

  1. As stated earlier, I’m going to use SABnzbd+ but you’re welcome to use the Usenet client you prefer.
  2. Go to the SABnzbd+ download page and grab the latest beta version of the Windows Installer.
  3. Once downloaded, run the setup file. You must agree to the license to continue. Click I AGREE.
  4. I dislike icons on my desktop so I untick the “Desktop Icon” option on the Choose Components screen. Click NEXT
  5. Don’t change the Destination Folder on the “Choose Install Location” screen unless you know what you’re doing. Click NEXT.
  6. Then click INSTALL on the “Choose Start Menu Folder” page.
  7. On the final screen untick “Show Release Notes” and click FINISH.
  8. A browser window should come up with the address: http://localhost:8080/sabnzbd/. This is how SABnzbd+ is accessed. Bookmark it in your browser.
  9. Click CONFIG.
  10. Click SERVERS
  11. Fill out the first server as below:
    Host: newszilla6.xs4all.nl
    Port: 119
    Username: < Leave Blank >
    Password: < Leave Blank >
    # Connections: 2
    Timeout: 120
    X Enable
    O SSL
    O SSL
    O Optional

    Where X is a ticked tickbox and O is a black tickbox.

  12. Click TEST SERVER. If the server is working and you filled in everything correctly this should pop up a box that says “Connection Successful!” If not, then recheck all your settings. If everything is fine then move on to the next step and read the note below about free servers.
  13. Click SAVE CHANGES.
  14. A new blank box should be next to the box you just filled out. Fill out the second server as below:
    Host: news.ipv6.eweka.nl
    Port: 119
    Username: < Leave Blank >
    Password: < Leave Blank >
    # Connections: 2
    Timeout: 120
    X Enable
    O SSL
    O SSL
    O Optional

    Where X is a ticked tickbox and O is a black tickbox.

  15. Click TEST SERVER. If the server is working and you filled in everything correctly this should pop up a box that says “Connection Successful!” If not, then recheck all your settings. If everything is fine then move on to the next step and (if you haven’t already) read the note below about free servers.
  16. Click SAVE CHANGES.
  17. The third server requires a free login. Open a new tab in your browser and navigate to: http://www.xsnews.com/ipv6/. Click the link that says “deze pagina” and type in your email address. This should result in you getting an email shortly with login credentials.
  18. Go back to the tab with SABnzbd. A new blank box should be next to the two boxes you just filled out. Fill out the third server as below:
    Host: reader.ipv6.xsnews.nl
    Port: 119
    Username: < Put the user name you just got in your email >
    Password: < Put the password you just got in your email >
    # Connections: 2
    Timeout: 120
    X Enable
    O SSL
    O SSL
    O Optional

    Where X is a ticked tickbox and O is a black tickbox.

  19. Click TEST SERVER. If the server is working and you filled in everything correctly this should pop up a box that says “Connection Successful!” If not, then recheck all your settings. If everything is fine then move on to the next step and (if you haven’t already) read the note below about free servers.
  20. Click SAVE CHANGES.
  21. Note: Usenet servers tend to be as reliable as their cost. If these free servers are down then give it some time and hopefully they’ll come back up. At this time, only newszilla6.xs4all.nl is working for me. If you can’t wait then you can always buy an account over at GigaNews.

That should do it for the basic configuration of both IPv6 and SABnzbd+. There are many more things that can be done with some time and Google by your side. Now find or make a NZB file from http://binsearch.info and upload the NZB file to SABnzbd and watch it download over IPv6. It won’t be very fast but it should give the average user a taste of IPv6 and Usenet. There are some great Linux distro NZB files only a few clicks away so knock yourself out.

My Twitter Refollow Policy & Other Odds and Ends

Hard on the heels of @RayBeckerman‘s Twitter refollow policy, I’ve decided to pen my own. Twitter is a great tool for spreading information in short bursts but it has been hampered by the large amount of marketing, self-promotion, bots, and adult-content promoters. I have a finite amount of time per day so any extra time spent in one area means making a sacrifice somewhere else. Therefore, I aim to maximize my Twitter return on investment (TwiROI).

Let me first share how I use Twitter:

  1. I filter through hundreds of websites that post thousands of pieces of news, commentaries, studies, and other media on a broad range of topics (collectively referred to as “posts” from this points forward). The end result is a somewhat manageable amount of items that I can read. I further reduce this set of posts into potential tweets.
  2. My tweets are structured in a predictable way:
    • The type of post comes first followed by a colon. For example: “News,” “Politics,” “Opinion,” “Research/Study,” etc.
    • The headline is next. If I can’t fit the headline within the character limit or it’s ambiguous then I may modify it but I try to avoid this as much as possible.
    • A link to the post through a URL shortener comes next followed by a hyphen.
    • In this space I may include include a short comment. There are times when I let the headline stand for itself by omitting a comment.
    • Finally, I include hashtags to ease the search for content. I may also go back and add hashes to key words within the headline.
  3. Due to obligations in real life, I schedule my tweets at no more than a 15-minute interval instead of sending them out in real-time. I break this rule when there is some breaking news or event upon which I can share articles and/or thoughts.
  4. Any content I tweet, even if I include a comment, is to never be considered an endorsement of the message, opinions, beliefs, or mission of that person, group, organization, business, government, etc. In fact, I will tweet items that are spread along the full spectrum from “completely agree” to “completely disagree.” Therefore, all a tweet means is that I considered the information worth a set of eyeballs but nothing more. I prefer my readers to take the information and make up their own mind.
  5. I enjoy and encourage discussion but my replies will be delayed. I try my best to check Twitter when I can and respond where it is appropriate but it can take several hours. When I do respond my replies are almost always in real-time.
  6. I have been known to retweet noteworthy tweets using the classic RT format (or the “via” format). If the tweet is too long then I may use the newer (and much-hated) API-based RT method Twitter introduced. I try to avoid retweeting too much as I don’t like to duplicate content.
  7. I encourage fellow tweeters to send me articles, blog posts, etc. that they find interesting and/or important. I will do my best to read it and if it is appropriate (and I have permission) then I may RT it my readers.
  8. I read every linked article. If I have not read it then I will not tweet it.
  9. I may post tweets that I categorize as purely personal. These refers to linkless tweets that are random comments or observations on whatever I’m doing (or have done) in real life. This may include pictures and other media.
  10. I will never send sponsored tweets.
  11. I read tweets through highly filtered lists due to “bandwidth/time” constraints. This means that I cannot promise to read every single tweet every person sends out. However, chances are that if we converse then I will read your stream and occasionally respond.

Here are my rules (apologies to Ray for stealing most of them) on how to not be refollowed:

  1. Your Twitter account is primarily about selling products (teeth whitening, car insurance, real estate, SEO, etc.), promoting yourself, promoting your business, promoting your products, or promoting your religion (with the expectation that I become a convert).
  2. Your Twitter account is primarily used for company PR that manned by an employee or an automated bot. I don’t have a problem if you’re providing another means for customers to provide feedback or to help use your business services but if you’re advertising then I’m not interested. If you SPAM me (adult-content promoters especially) then I’ll report you to @SPAM so you’re account is terminated.
  3. You want to be my savior, life coach, or show me the path to spiritual redemption.
  4. A majority of your tweets come from a client called “API” (meaning you’re a bot), you steal other people’s tweets in an attempt to make your account look legitimate, or you are trying to make money by allowing business to advertise to your followers. We call this SPAM.
  5. You follow my account with multiple fake accounts with the same basic naming rules (i.e. firstname_lastnameXXX where XXX is a set of numbers) in the hopes of amassing a large following. I do not auto-refollow.
  6. You don’t have a real Twitter picture of your face, you don’t link to a blog or a homepage that you run or have contributed to, or your description is generic. If I can’t identify that you are a real person then chances are I won’t be following you.
  7. I’m not interested in adult-content. If your picture is not something I’d feel comfortable showing to my 5 year old cousin then I won’t follow you. If a majority of links on your page are to an adult site then again I won’t be following you.
  8. Your account has tons and tons of #followfriday (#ff) tweets with nothing more than a list of people’s @ nicknames. I’m not interested in sorting through such tweets. Giving your readers a recommendation for a person is just as important as to why you’ve suggested them. This is why #followfriday was created. Also, please don’t retweet another person’s #ff tweet. It’s tacky.
  9. You tweet frequently about how to make money, get more followers, or achieve as much success as you. I’m South Asian so (like most South Asians) my parents will serve in that role in some way for a long time whether I ask for it or not. Love you mom and dad!
  10. Your account has only a couple of tweets but you’re following several hundred (or thousand) people and are slowly collecting followers (aka disproportionate follow/followers ratio). Chances are you’re a bot or a company planning on spamming people. (Thanks to @plasticmadness for this rule. She’s someone I follow on Twitter.)
  11. You follow a hit-and-run policy where you follow a ton of people, collect followers, and then unfollow everyone following at some later point to make yourself look like a popular celeb with a very high follow/followers ratio.

Read more

Next Page →