When I migrated from Google Reader to Feedly I noticed that a handful of my feeds stopped working. Since I have about 300 feeds, I didn’t want to click through each one to see which ones aren’t working any more. I built a script to do it instead. In the process, I found a lot of old feeds whose sites have since been closed down. It was nice to do some house cleaning. I built the script specifically for Feedly, but it will probably work for any other feed reader that allows exports to OPML.

To use the tool, follow these steps:

  1. Log in to your Feedly account.
  2. Go to http://cloud.feedly.com/#opml and copy the code from the page.
  3. Go to http://tools.otherchin.com/opml, paste to the text box, and submit.
  4. Profit!

In a previous post, I talked about how to transfer a Google Analytics account from one User Account to another. It’s not possible to transfer Properties in an account without transferring ALL of the Properties in the account. In this post I’ll talk about what you should do if you have Properties in the account that you don’t want to transfer.

What we’ll do is just give the user non-administrator access to the analytics. This isn’t ideal, but it’s the best we can do. Here’s how:

  1. Log in to Google Analytics.
  2. Click the “Admin” button at the top-right.
  3. Click the Account the website belongs to.
  4. Click the Property you want to give access to. If you skip this step, you’ll probably do something you didn’t want to
  5. Click the Profile (or “All Web Site Data”) that you want to give access to.
  6. Click on the “Users” tab
  7. Click “+ New User”
  8. Enter the person’s email address and select “User” as the role.

The next time they log in they’ll be able to see the data for that website only and none of the other websites that you have in your Account. Like I said earlier, this has some drawbacks in that you are still the admin and could revoke their access at any time. I recommend that the new owner create a new Account/Property/Profile in their own Google Analytics account and change all of the analytics codes in their website to the new code. With this method, they’ll have full control of their analytics, but still have access to the historical data.

It is possible to transfer Google Analytics accounts from one user account to another. This is important, because when somebody takes ownership of a website they won’t want to lose that valuable analytics data.

First, let’s go over some terminology. Since there’s a deep hierarchy, it’s important to know what’s what. Throughout this article, I’ll capitalize these terms so they’re easier to identify.

  • User Account – This is your Google account.
  • Account – This is the account that you will be transferring.
  • Property – This is the website.
  • Profile – This is a view of your analytics data.

Google Analytics account terminology
View your accounts by logging in to Google Analytics and clicking the home button. In this screenshot, I’ve circled an Account that has one Property that has one Profile. You might have multiple items.

You will be transferring the entire account, along with all properties that belong to it. If you see websites listed in that account that you do not want to transfer, you shouldn’t proceed with this tutorial! There is no way to split them up. I wrote a separate post for what you should do in this case.

If everything beneath the Account is okay to transfer, follow these steps:

  1. Click the “Admin” button at the top-right.
  2. From the list click the account you want to transfer.
  3. Click the “Users” tab.
  4. Click the “+ New User” button.
  5. Enter the new user’s email address, select “Administrator” for the role, and then check “Add User”.

That’s it! If all went well, when the new user logs in to Google Analytics, they will see the account and all of the data. After they’ve confirmed that it’s all working, for security they should remove your email on that same “Users” tab.

There’s a lot of stuff to do when transferring a website, so I compiled a list of things to not forget. This list takes the point of view of transferring a website that was purchased from somebody else, although a lot of the items still apply.

  1. Initiate the domain transfer. Each registrar has a slightly different process, so check with them to find out how to make the transfer. This process takes at least five days, so I like to do this first. If you want to minimize the total amount of time it takes for the complete site transfer, you should do this right after step 9. The domain is one of the most important assets in a site purchase, so I prefer to do this first-thing.
  2. Set up the web host that the site will be moving to. I use HostGator, which has been a pretty good PHP/WordPress host. I have a reseller account so all of my websites are completely sectored off from each other. This makes managing the sites very clean and easy.
  3. Transfer the files from the old host to the new host.
  4. Transfer all the databases (if any) from the old host to the new host.
  5. Transfer all email accounts from the old host to the new host. If applicable, transfer ownership of the Google Apps account.
  6. Set up AdSense for the new site. Remember to create ad units for all ads on the site and to update all ad codes. Also, create AdSense custom channels.
  7. Transfer ownership of Google Analytics account or set up a new account. Remember to update the Analytics code if you’ve set up a new account.
  8. Test the new website and fix any issues. You can hard-code the domain and IP in your computer’s hosts file so you can see the new site without the rest of the world seeing it. Just remember to remove it when you’re done!
  9. Change the DNS for the domain to point to the DNS servers of the new host
  10. Transfer ownership of Facebook, Twitter, and all other social media accounts.

Sorting objects rated using django-secretballot is a little tricky. Simply using order_by causes duplicates. There’s even a warning about it in the Django manual for QuerySet.

I figured out how to rank the objects and avoid duplicates. It’s not that elegant, so if you have a better solution I’d love to hear it.

from django.db.models import Sum

photo_list = Photo.objects.annotate(total_votes=Sum('votes')).order_by('-total_votes')

I use a GUI-less Linux VirtualBox VM for development. I needed an easy way to transfer files back and forth. Seeing as this is the third time I needed to set this up, I figured I should document the steps.

  1. Install VirtualBox Guest Additions on the Linux VM
    • On the host VM, click “Devices”->”Install Guest Additions”
    • cd /media/cdrom
    • sudo mount /dev/cdrom /media/cdrom
    • sudo ./VBoxLinuxAdditions.run
  2. Create the shared folder
    • Open the host VM settings
    • Click “Shared Folders”
    • Click the icon with the plus sign to add a share
    • Select the path on your host system that you want to designate as the commonly shared directory
    • Check “Auto-mount” and “Make Permanent”
    • Click “OK” to save the share
  3. Add your user to the group so you can access the share
    • useradd -a -G vboxsf [username]
    • Reboot

After you do these steps, your share will be available on your host operating system and your Linux guest operating system (and will be there on reboot). You can find the share on your Linux system at /media/sf_shared .

Ever since I first got into PDAs back in 2000, it’s been really important to me to be able to keep track of my contacts’ birthdays. When I got my Pocket PC (basically Windows for PDAs), I loved that it automatically placed birthdays on my calendar. But since then, I haven’t had a solution that would flawlessly do this.

Today, I discovered that Google Calendar does this exact thing! And since I sync my calendar with my Android phone, I get the birthdays placed on my phone’s calendar too. I absolutely love this feature, but it’s sort of obscure to get to. There are instructions on how to do it at Nicholas Overstreet.

One of the critical parts of outsourcing is selecting who to hire. At GrabContent, we get 50-70 applicants for a single job posting. It’s important to decide up front what is important to your business. Doing so will set you up for finding the best match as well as help you avoid wasting precious time.

Before you even fire up the computer, decide on the 3-5 most important attributes of a successful worker in your business. You will attract better matches when your job listing describes what is important in a new recruit. It will also help make filtering through all the applicants significantly easier.

Especially in today’s economy, you’ll no doubt have a lot of people respond to your job opportunity. You need to remember all along the way the things that matter most to your business. One of the things that is important for us is that our writers pay extremely close attention to detail. When we create a job listing, we state in the first sentence that that’s what we’re looking for. Then we proceed to state the exact steps that they need to take to be considered. It always surprises me at how many people don’t follow our directions, even when we’ve stated in the first sentence that we won’t consider anybody who doesn’t follow all the directions. Because we embed a test into the application process, we’re able to weed out in just a matter of seconds about 80% of the applicants.

Be up front with your applicants. For me this means highlighting the advantages of working with your company as well as disclosing the significant disadvantages. Although some might not agree, I like to state a salary range directly in the job posting and outline what it takes to get raises. Sure, this gives the other person a slight advantage in negotiations, but it also reduces the time spent on back-and-forth on every project. This will allow you both to spend more time on what matters most–your product.

I’ll be honest–I haven’t been writing here as often as I’d like. Things have gotten busy with my job and all of the little projects I’ve been working on. But as of this post, I vow to do better!

Back in February, my friend and I started a business that we named GrabContent. In a nutshell, we create custom, search engine optimized articles in order to help our customers improve their websites’ organic traffic. You’re probably wondering why we’re doing this and how we plan to compete against the jillions of other writers in the world. The current problem is that it takes quite a bit of turnaround time when you need large numbers of articles, and you don’t want to sacrifice the quality of the writing. We’ve got a few tricks up our sleeves to solve these problems without charging more.

I won’t reveal our secret sauce, but in the next few blog posts, I’ll talk about some of the things we’ve learned along the way. I’m hoping to be able to talk about how to select writers, what writers can improve on, and how we’re managing our technology back end.

A few months ago, I did a build of the STFW Pidgin plugin for Windows. Recently I started using Ubuntu but found that STFW didn’t work on my system. So I did a 64-bit build of the plugin for Pidgin 2.6.x. Here it is!

To install, just copy that file over to /usr/lib64/purple-2/ . If you don’t have root access, copy it to ~/.purple/plugins/ instead. Then restart Pidgin, enable the plugin, and you’re good to go!

About this blog

I'm Jon Chin. I love technology, food, and learning. I served a mission in the Philippines and loved it. You probably can't type on my keyboard because I don't have qwerty installed--I use Colemak. I'm obsessed with learning about North Korea and abandoned anything.

Photostream