Programming, Random!, SEO, Tips & Tricks

Quick and painless geo-location

Hey all,
I wanted to post up a quick tip for you all, since I often hear people asking about how they can implement geo-location in their landing pages.

Alot of people recommend MaxMind or some other geoIP database, but really, thats a pain in the ass…there is a much easier way to do it.

On your landing page, just include the following in header.

<script type=”text/javascript” src=”http://www.google.com/jsapi”></script>

This script will calculate your visitors location for you….and all you have to do is pull the ClientLocation variable!
For example, if I wanted to display a popup with the users city:

alert(google.loader.ClientLocation['address']['city'])

Seriously, its THAT SIMPLE.

Have fun!

Programming, Random!

building a personal web dashboard

Hey all,

I’ve recently undertaken a personal project that I hope will make my day-to-day activities on a the web a bit more efficient. I’ve always dreamed of having the perfect home page for myself; one that had all my most crucial data at a glance. Unfortunately, all the services I’ve tried have fallen short (*cough* netvibes *cough*). So, I’ve decided that enough is enough; I am going to build my own dashboard.

The dashboard will take quite a few cues from the interface of The STAT Codex, in so far that it will be window/panel based and entirely modular, but it will be customized to my needs.

At the very least, I want the dashboard to pull the following data:

  • email module (gmail and others, just reading, sending can open up  a new window in the email client.)
  • twitter module (multiple accounts…send and receive tweets)
  • a twitter favorites module that allows my to follow the favorited tweets of various twitter accounts
  • instapaper module for items to be read
  • remember the milk  module for to-do items
  • major site statistics module (only for my most active web properties)
  • new incoming backlinks module
  • paypal module for showing paypal balance and recent transactions
  • google calendar module
  • log monitor module (would tail the server logs for most active web properties)

What else would you add to the list? What data would you love to have at a click on your home page?

Announcements & News, Tools & Applications

Introducing STAT – Search Tracking & Analytics Tools

Hey everyone!

Today is a very big day for me, because today is the day when I get to start telling everyone about our latest creation: STAT – Search Tracking & Analytics Tools.

STAT is a comprehensive suite of search analytics tools geared towards the needs of search marketers. Make no mistake: STAT is not another SEO tool, it’s an analytics tool, and it is truly one-of-a-kind.

STAT is ideal for researching competition, tracking organic rankings in the major three search engines (Google, Yahoo, Bing), and monitoring incoming backlinks and indexed pages. Further, with the ability to monitor changes to SERPs in real-time, you can identify algorithm changes when and where they happen. STAT archives past SERPs and audits them in the background to determine key search metrics that affect your rankings. Best of all, STAT does all of this in a drag-and-drop window based interface; it is a web application that looks and behaves like any of your run-of-the-mill desktop applications. Because of the intuitive nature of the platform, using STAT is easy and you can hit the ground running.

After a year of being available only to larger search agencies, I’m proud to announce that STAT is now open to the general public on an invite-only basis. If you want to signup, visit STAT – Search Tracking & Analytics Tools and I’ll send you an invite ASAP.

I could talk ad infinitum about how amazing this platform is, but really, it’s best if you experience it for yourselves. To take it for a test drive, visit STAT and click on the link for a demo.

Programming, Theory, Tips & Tricks, Uncategorized, ruby/rails

Amazon S3 bucket limit

theybestealinmybucket

So, today I learned that Amazon S3 limits the amount of buckets you are allowed to have at any one time. This was a HUGE pain in the ass for me, as I just rewrote my S3 caching libraries to separate my caching into daily buckets.

headesk

The idea I had was that I would keep 30 days worth of buckets before automatically shuffling all those buckets into long term archival at the end of each month.

You see, Amazon S3 doesn’t allow for folders within buckets (not technically, I’ll get to that later), and I think it’s bloody ridiculous for me to store the ~15 millions xml cache files I need daily access to in just one massive bucket. So, I thought my plan to create daily buckets was pretty damn good. Apparently Amazon disagrees, as hey have set a limit on the number of buckets I can have associated with my account (FYI, I have ~90 buckets right now and that’s where the limit is).

So, I’ve been looking into my options, and I have decided that I’m going to have to go back to my original set up of storing all 15 million (and growing) xml files in one bucket. As some of you may know, S3 GUIs like S3Fox are able to show sub-folders within buckets, so I figure I will go this route. My first step was to take a crack at the Ruby S3 library from Amazon (not the AWS gem, which is crap for multi threaded environments) to see how I can create folders within buckets. Turns out, you can’t. At least, not out of the box. You see, AmazonS3 doesn’t actually SUPPORT sub-folders within buckets.

Stupid, right? I know.

So, how does S3Fox do it? It turns out they create virtualized folders by creating a special object that acts as a folder, then you access your stored objects by appending that folder object name to the actual file key. For a directory named “/foo”, you would create an object with the key “foo_$folder$”. Then, to get a directory listing of all files stored under the foo path, you just query S3 for objects with keys that start with “/foo”, and you ignore any objects that end with “_$folder$”.

I’m about to waste my day setting this up, and I’m none to happy about it. It seems like a hackish and shitty work around for an obvious service flaw. I’m sure there is some technically-reasonable answer for why Amazon has set an arbitrary limit for buckets and also why they don’t allow you to create folders, but I don’t know what it is. Anyone have any answers?

Hat-Tip the Dead Programmer Society for the code to create virtualized folders in S3.

SEO, Theory, survey-says...

Survey Says: Ipsos Reid presentation to BC Hydro on Social Network Marketing

UPDATE: I’ve had to remove the presentation due to a DMCA complaint. *sigh*

I wanted to share some interesting tid-bits with you all from a recent Ipsos Reid presentation (June 18th) on Social Network Marketing.

This presentation was made to BC Hydro, the major Power authority in British Columbia (that’s in Canada, dummy).

The average Canadian:

  • 5.4 hrs/week spent on Social network sites, about 1/3 of total Online time.
  • LinkedIn captures 70% of the share of Social Networking in the workplace.
  • The stuff teens do online is very different from adults, and VERY limited: socializing, music, and gaming.
    • 88% of Adults use the internet to visit a new or informational website, versus only 44% of teens.
    • 68% of Adults have clicked a website advertisement versus 28% of teens.
    • 70% teens are weekly social network users, versus 36% of adults

Highlights:

  • Advertising budgets are not aligned to where people are spending their time – online expenditure lags significantly behind traditional mediums
  • 58% of Canadians receive 51+ unsolicited commercial emails a week (17% don’t even know)
    • 64% of people don’t open ANY unsolicited emails
    • of the people that do open unsolicited emails, 53% do so out of curiosity, 28% because they thought it was legitimate
  • Permission-based (opt-in) emails are still one of the best ways to market to your websites audience. Be diligent about collecting them
  • 77% of Canadians are registered to receive some kind of opt-in email (2008 average number of sites registered with: 15.3)
    • Top 3 reasons for opting-in: Personal Interest (42% ), Entertainment (38%), New and Information (32%)
    • It’s worth noting that E-Commerce and Retail is the 7th most common reason (27%)
  • Activities resulting from opting-in to an email list:
    • 60% entered an advertiser’s contest
    • 52% visited the advertiser’s website
    • 17% purchase or received products at a later date
  • 68% percent of Canadians are willing to provide their email address depending on reasoning

I’ve uploaded the full presentation for you all, which can be viewed here: