Pantsland

See Protected Content - be the Googlebot

I’m sure most of us have had the problem - search for something with Google, see a search result appear that is exactly what you’re looking for, only to find that when you click through to the page you get told that you must log in to see the content or (gasp!) pay to see it in full. Well, there is a simple way around this: pretend to be Google!

Sites like these detect when Google is crawling their site and show the full content, but don’t give regular people the same luxury. Sites generally detect this by looking at the user agent, which is a string that identifies what kind of browser/device is requesting the page. Therefore, if we change our user agent string to match that of the Googlebot (the system Google uses to find content on the web), we can see the content that was indexed to make the search result we found.

There are various ways to change the user agent that your browser is reporting, including the great User Agent Switcher extension for Firefox, or the IE7Pro plugin for Internet Explorer 7.

Whichever way you go about it, you want to change your user agent string to:

Googlebot/1.0 (googlebot@googlebot.com http://googlebot.com/)

You may have to restart your browser for the change to take effect, but after that you should be able to go back to the site you were trying to access and see exactly what Google does - the content!

On Joining Cuil

As I announced on Twitter, I have recently joined Cuil as Senior UI Developer. While there are many reasons I chose to come on at Cuil in favor of other opportunities, there is one factor that really won me over: the people.

Cuil has a very flat management structure, and as such everyone has to be very good at a variety of things. There are some incredibly talented people here at Cuil, including ex-senior Google, Internet Archive, and IBM employees (our VP of Engineering was the architect of Google’s large search index, TeraGoogle). Not only is everyone smart, but they are all focused on a very exciting goal, and moving toward it in logical and defined steps. We all share a vision, and that isn’t to be a direct competitor to Google right now - ask anyone here, we know we aren’t there yet, but we have some amazing technology that is set to really change things with time.

I strongly believe that Cuil is the evolution of search. This doesn’t just extend to the magazine-style search results presentation we use now, nor the interesting relevancy and multimedia data we’re splicing into search results, but also to the very cool things that are on the road map. I’m in a very good position to direct the next generation of information presentation, I have a ton of ideas, and am very excited about the future.

Technology, people, and ideas - three things that all add up to a very exciting opportunity.

First ObsoleteSkills Cartoon

It started as an idea from Robert Scoble.

I then made it an open wiki.

And today, the first ever cartoon based on ObsoleteSkills.com has been published in the Tampa Tribune.

First ObsoleteSkills cartoon, published in the Tampa Tribune

First ObsoleteSkills cartoon, published in the Tampa Tribune

I wish a little that it was a funny cartoon, instead of one that is supposed to make you think, but either way I’m still pretty happy with how it turned out. As a side note, the main character is supposed to be based loosely on me.

Tools For Agile Development

I’ve been doing web development for many years now, and over time I’ve discovered a few tools that make my life easier. I’ve used these in personal projects and recommended them to others, and I thought I’d share them here. While I’m a web guy, most of these can quite easily be used for other types of projects as well.

To begin, tools for managing the development process:

Beanstalk (SVN)

SVN is an obvious requirement for any company doing development. The problem is, SVN takes time to set up and maintain properly, and smaller companies just can’t afford to spend this time taking care of it. Beanstalk provides a simple solution to the problem with off-site SVN server hosting, but the real beauty is not in just the stock SVN server - Beanstalk have a great web interface to enable you to manage your repositories and users/permissions, as well as see the latest activity in any repository and browse the source tree. The web UI also allows you to easily diff revisions and download files at specific revisions, and you can configure Beanstalk to send you emails for every commit in pretty HTML format with a full diff. With it’s reasonable pricing and great features above and beyond standard SVN, you really can’t go past it.

16bugs (Bug Tracking)

16bugs has a few bugs itself, but overall it is a great, simple, ‘web 2.0′ style bug tracking system. 16bugs has a fairly basic feature set when compared with some of the more mature products like Trac, but its hosted, web-based nature makes it a snap to maintain.

Google Sites (Wiki)

Google Sites provides a great, simple wiki solution. Sites was created out of Google’s purchase of Jot, and while I prefer the layout of the Jot version, Google Sites is almost as good. Both products take care of the core feature set for a wiki. I’ve used MediaWiki and PmWiki for various purposes in the past, but they can be a pain to set up and I’ve really only used the most basic features of them, which Google Sites easily takes care of.

The key thing you will notice about the above is that they are all hosted solutions. In a small, fast-moving company or for personal purposes, hosted solutions are often the best option to cut down on the time needed to maintain the various systems. Had I not already vested myself in the above, I would have loved to have checked out Assembla, which groups all these things into a single product (SVN, wiki, and Trac for bug management). Though if I did go with Assembla, I’m sure I would miss Beanstalk’s great web UI.

Now, a couple of tools for the development itself:

Aptana Studio (IDE)

Originally based on Eclipse, my IDE of choice for the web is Aptana Studio. Aptana Studio was built for developing AJAX web applications, includes code highlighting and completion for HTML, Javascript, and CSS, and has plugins for PHP and Ruby on Rails. Plugins are also available to ease development for AIR applications and the iPhone.

MacFUSE (Remote Access)

Google’s MacFUSE, cutting through the highly technical descriptions, is a way for you to mount a bunch of file systems on your Mac computer. I use it to mount remote file systems on development machines via SSH, meaning I can work within my home directory on the server as if it was just another locally connected hard drive. This is invaluable when you don’t have a totally self contained local development environment, saving you the effort of having to transfer files back and forth to the server.

In a similar situation? What are your tools of choice?

How to Make a Full-Screen iPhone Web App

There has been a fair amount of talk lately about a feature introduced in iPhone firmware 2.0 and above that allows a developer to make a web application, once saved to a user’s iPhone home screen, run in a full-screen mode without the Safari toolbars. AppleInsider wrote about it, with a fantastic demo available on the website of the WebApp.net framework.

While there has been a lot of talk about the result of this technique, I haven’t seen anywhere that describes exactly how to make your application run full-screen (sans buried deep in the Apple Developer Connection documentation). It’s actually incredibly simple, just add the following code into the <head> of your site:

  1. <meta name="apple-mobile-web-app-capable" content="yes" />

Once you’ve done this, when someone saves your application to their home screen it will subsequently start without the Safari chrome. Make sure that if you do this your application has adequate navigation and plenty of feedback during loading, as users won’t be able to use the Safari back/forward buttons nor see the standard loading bar.

Documenting the Hacks: CSS Browser Targeting

I think I’m somewhat of a rarity in the world of web developers - I actively use and certainly approve of CSS hacks to target and fix certain browsers. Of course, I don’t condone their use unless it is absolutely necessary, and in most cases good, standards compliant CSS should alleviate most issues before they occur, but when there is a need I think these hacks can be a great way to fix issues while still keeping your CSS logical and concise. The caveat to this is that all hacks need good comments to describe what is going on for future reference, whether that be your own or that of another developer. Also, always keep in mind that hacks can break when new browser versions are released, so always keep an eye out and use them sparingly.

I’ve always found it hard to find a good reference for these hacks. There are many sites that talk about an individual hack, but finding a single place that goes through targeting all the different browsers has been hard. This post hopes to solve that - more for my own use, but hopefully other developers can find it useful as well. What follows are the hacks that I use, which I believe to be the most logical and simple ones out there. In every case, #selector represents the element you want to apply a rule to (this can be either an ID or a class), and property and value represent any normal CSS property.

Read the rest of this entry »

Inserting Items in a Sorted List with jQuery

I hit an interesting problem the other day - take a list of sorted items (in this case, an ordered list of names) and insert a new item in the correct position in the list with Javascript, preserving the sort order. It turns out that this isn’t so hard to do with the help of a little jQuery (and almost as easy without it).

The problem breaks down to:

  1. Put the existing items in the list into an array
  2. Push the new item into the list
  3. Re-sort the list, then work out where the new item ended up
  4. Insert the item into the document at that position

The code I ended up with looked a little like this:

  1. var newItem = "Item to insert";
  2.  
  3. // Grab all the existing items
  4. var sortedList = new Array();
  5. $(‘#list li’).each(function(i, item) {
  6.         sortedList.push($(this).html().toLowerCase());
  7. })
  8. var initialLength = sortedList.length;
  9.  
  10. // Add the new item and sort the list
  11. sortedList.push(newItem.toLowerCase());
  12. sortedList.sort();
  13.  
  14. // Then find where the item ended up
  15. var i = $.inArray(newItem.toLowerCase(), sortedList);
  16.  
  17. // If the item ends up at the end of the list, just append it
  18. if(i == initialLength) {
  19.         $(‘#contacts-list’).append("
  20.                 <li>" + newItem + "</li>
  21.         ");
  22. // Otherwise, insert it before the element it’s replacing
  23. } else {
  24.         $($(‘#list’).children("li")[i]).before("
  25.                 <li>" + newItem + "</li>
  26.         ");
  27. }

Obviously, there are some inefficiencies in the code, but it’s something pretty good to start with to adapt to your needs.

Aggregate Opinions on uTag

Launched at Startup Camp Australia last weekend, uTag is a new service aimed at rewarding users for the value they pass onto their online social networks. At its core, it is a URL shortening service - the difference is that uTag place a banner ad frame on top of the redirected website, sharing revenue with the user that originally posted the link.

This sounds simple enough, but what do the members of these social networks think of being advertised to though the links they click? I asked my Twitter followers whether they would unfollow someone monetizing their links through the service, and these are a small selection of the responses I received:

Navarr: @bck: I would unfollow them if they became spam. If they were relevant, and had context, and just fit in, then its all good. And as long as it wasn’t just outright spam. Ads are the driving force of the internet. I recognize this.

rgillettpr: @bck they would need to continue with links the way they were, not increase the noise just to get $$ for it

lindsayevans: @bck probably wouldn’t unfollow, but wouldn’t click on their links any more either

rgillettpr: @bck if i started seeing way more links from that person, and if they didn’t seem like links that person would usually send, would unfollow

shauntrennery: @bck A good idea would be if Google have some type of API that would allow ut.ag to search for ads relative to the tweet. That could work.

The two main concerns overall were that the user continues their current trend of link posting, and that the ads were context sensitive. No one raised the issue of people making money off another’s work, and instead focused on rewarding the user that posted the link for their work in finding it. This is somewhat the same as how ‘guides’ on Mahalo and other link aggregation kind of sites get paid - they didn’t make the content, but they add value to it by indexing it and revealing it to others.

Personally? I don’t expect to get rewarded for linking to other people’s content, since I don’t see that posting a link in my stream is adding enough value to justify that. As such, I can’t see myself using the service, but at the same time I wouldn’t not click a link that is shortened with uTag just because it is using uTag. What it will do is reduce the chances of me ‘blind clicking’ to links without a description - at the moment, I’ll click through to a link that someone posts just out of curiosity, but I wouldn’t do this if it was a uTag link without adequate description. I do believe that in their current form, the ads are slightly too intrusive, but at least there is a close button on them (though it can get hidden depending on the size of your browser window).

Overall, this system is exactly how About.com does things, though in most cases they are adding far more commentary to the links than can be had in the limited space that most social networks allow. I see the use in uTag as a monetizing service for bloggers more than through social networks like Twitter and Facebook.

Why It’s Cool Not to be an A-Lister

Obviously, despite all the talk of long tails, quitting blogging, and all the other issues flying around lately, there are a hell of a lot of perks to being an A-List blogger, or indeed an A-List anything. One huge perk of not being an A-List blogger occurred to me the other day, however - being able to actually use all these cool new services how they were intended.

Take services like Twitter or Friendfeed, for example. Scoble and Calacanis et al. have these huge following/follower counts, and while I know there are a certain number of positives to this, these top users don’t ever get to use these services for what they are intended to do. These guys don’t actually use Twitter for sending out status updates to friends, and I doubt they ever make any lasting friendships out of them.

While Brightkite is floundering a little of late, it is another perfect example of this A-List effect. Could you imagine Scoble and his 30,000-odd followers actually using Brightkite for seeing where friends are and meeting up locally? No, instead their phone/web interface would be flooded with updates that they more than likely don’t care about.

Having these crazy number of relationships on these services basically turn them into great big science experiments. While this has its use, I’m happy sticking to using them for their original puporse.

But I guess that is the true beauty of these things - you can use them however it makes you happy.

United States Visa Process - Australian E3

When the opportunity to move to the United States first came up, the number one potential issue in my mind was obtaining a working visa. The U.S. Embassy website makes the process seem incredibly complex, and the only first-hand accounts of the visa application process made it sound very hard and daunting. Plus, these accounts were from people that had their University degrees, which the Embassy says is a requirement, but I didn’t even have this (though I did have a lot of work experience).

I am writing this to let people that are thinking about going through the process for an E3 visa know that while there are a lot of forms to fill in, the process is overall very painless. The actual interview session, which is the part most people are most worried about, took no more than two minutes.

What follows are the tips and processes that I followed. This is by no means legal advise, but is what I did to successfully secure my working visa. Read the rest of this entry »

About

Brad Kellett is Senior UI Developer at Cuil and all-round technologist, with interests focused around web development and user experience. [Read More]

Twitter

  • Mmm, having my first tea at the new office. Finally got around to bringing all my tea stuff from the old office. 4:39pm
  • @MikeRapin But when I update the original doc in iWork, I have to re-share it as a new doc, I can't push it up as a replacement to the last. 2:50pm
  • Seriously, is there no way to update an iWork doc you've already shared on iWork.com? You have to make a new doc? 2:25pm
  • @thingles You can buy iWork 09 now, iLife 09 comes late January 12:22pm
  • And the inline comments on sections of the document are even more useful 11:15am
  • iWork.com is cool, would be nice to edit online too, but being able to download in multiple formats is very useful. 11:13am