Posted on Dec 22, 2009

Limit App Engine to Minified JS and CSS

Call me paranoid or call me efficient, but I don’t like non-minified CSS and Javascript accessible in a production environment. It’s one thing setting up your web application to use minified files when it’s rolled out , but I’d prefer that the originals aren’t available at all – and yes, part of that is me not wanting to make it too easy for people to snoop through my code (though I do release a lot as open source anyway).

In any event, this proved a little tricky when using Google App Engine for LocationFu. Google’s deploy process has the option of excluding certain application files from being sent up, but it can’t exclude any files that sit within a directory marked as a static path. The solution is simple, but took me a while to figure out. Previously, I had my static path set up like so in my app.yaml file (note that this is for Python App Engine):

- url: /static
static_dir: static

That will map any file starting with /static into the static directory in the app tree. Instead, you can map individual files, and limit the extensions you want to serve:

- url: /static/(.*?)
static_files: static/\1
upload: static/(.*\.(gif|png|jpg|min\.css|min\.js))

That tells App Engine to grab the file name requested and map it into the static directory, while the upload parameter includes a regex to match only selected file extensions (.min.js, but not just .js, for example). This won’t stop your app from serving any file while running on the local development server, but when pushed to production, your JS and CSS files will only be accessible in minified form.

Posted on Aug 27, 2009

Sync Google Calendar/Contacts to Everywhere with Exchange

I see it all the time – some new blog post detailing how to sync your Google calendar and contacts to somewhere, usually to the iPhone, using some new 3rd party service or crazy trick. Many people suggest NuevaSync to sync directly to the iPhone, or using CalDAV to get your calendars to iCal so they can be synced through iTunes.

Fact is, they are missing a key feature of Google apps that lets you sync to a lot of places, including the iPhone, directly and with push updates – Google supports Microsoft Exchange for both contacts and calendars.

With the Exchange support, you can get push updates to any device or application that supports Exchange, including Outlook on the desktop and the iPhone with v3.0 software and above. It doesn’t get around syncing to iCal (unless you’re already on Snow Leopard, which supports Exchange out of the box), but it’s damn good for mobile devices.

Here are the instructions for setting it up on the iPhone, and you can use the server settings from there to set up any other device/app that supports Exchange.

Posted on Jun 26, 2009

Review of the Fever RSS Reader

Fever List View

Fever List View

The premise of Fever is simple: your current RSS reader is full of unread items that you’ll never get through, you can’t keep up with the volume, and you don’t want to add more subscriptions for fear of compounding the problem. Clearly, Fever is aimed at RSS ‘power users,’ and people with only a few subscriptions should probably save themselves the effort and stick to a simpler solution like Google Reader or NewsGator. That said, can Fever really live up to the premise of saving you from second inbox overload?

Continue Reading

Posted on May 9, 2009

Cuil: We Get Over It

Note: Opinions expressed here are my own, and not that of my employer, Cuil.

Google is full of creative, smart, and innovative people, but above all else, they are a fantastic PR machine. Sometimes it’s because of a carefully executed PR plan; sometimes it’s just because they are such a household name; either way, anything the giant does becomes news.

There is discussion at the moment about Google stealing the up-and-coming competition’s thunder, and I’d be lying if I didn’t feel the same at times. Take Cuil’s recent launch of timelines, followed just a few weeks later with Google’s News Timeline launch, and inclusion of it’s experimental timeline result view into the normal search results days later. We tweaked our related searches to make them better, then Google did the same thing a short time later (there are others doing related searches as well, it’s just a good idea).

But you know what? We get over it.

Competition is good for the industry, and we welcome it from competitors big and small. Google wouldn’t be the successful company it is if they didn’t notice what was going on around them and react accordingly. Any company looking to catch up to Google is doing the exact same thing.

Cuil is largely written off in the press, so we never expect to get the same reaction when launching new features. That’s not going to stop us: we’re going to keep innovating and trying to make discovering information easier and more enjoyable. If Google wants to implement some of our ideas, they can go right ahead – the difference is in the execution, and every search engine needs to learn that ideas are only half the equation. You need to take these ideas and make them into features that average people enjoy using. We try to create a human-focused search engine, easing exploration, instead of being a dull list that amounts to a popularity contest.

We’re not as big as Google yet, but we’re still here, and we’re not going to stop bringing a fresh perspective to search.

Posted on Apr 12, 2009

Things in America That Australia Needs

I’ve been living in the United States for almost a year now, and there are a few services that I use very regularly that would do fantastically well if someone were to bring them to Australia. It’s been a while since I’ve been home, so someone could have started these already, but here is the list of things that should really be in Australia:

  • Craigslist: This is the No. 1 thing I’d miss if I moved back home. Fast, easy, super simple online classifieds. In Australia, you have to turn to eBay or Trading Post, which aren’t nearly as quick and easy. There is a Sydney Craigslist category, but that’s as far as it goes – the beauty of Craigslist is in the refined localization.
  • Threadless: Yes, almost my entire wardrobe is made up of Threadless shirts. Sure, you can get them shipped, but it takes forever and can be costly.
  • Amazon: The entire online department store scene in Australia is horrible, bring Amazon in please.
  • Google Voice: I could care less whether it’s from Google or not, but the GrandCentral/Google Voice model is a winner and should absolutely come down under.
  • PhoneTag: Short of a full Google Voice style system, voicemail-to-text services are almost as awesome.
  • Fandango: Online movie ticketing just makes sense. Buy online, pick up at the theatre with a swipe of your card.
  • Public WiFi: It’s starting to pick up in Australia, but there is a heap of public WiFi in the States. Not all of it is free, but at least it’s there at a pinch if you need it.
  • Hulu: I don’t use it all the time, but online video streaming is great. NetFlix to the Xbox 360 and other TV-connected gear is a great idea too, I just hate NetFlix’s implementation of it.
  • Mint: This is by far the best way to manage your money. Awesome on every level, from the elegant and information-rich web interface, to the handy SMS notifications and savings tips via email.

And a few offline things that rock too:

  • Unlimited bus transport for $1.50: Muni might be dirty, but the price rocks, especially with unlimited transfers for four hours.
  • ZipCar: Car sharing is awesome. I hear that it’s just starting in Sydney, but it needs to be everywhere.
  • At home snail mail postage: you can just leave letters in your letterbox, and the postman grabs them when he does his rounds
  • Bikes on public transport: more a San Francisco thing than a general USA thing, but CityRail needs bike cars like Caltrain has.
  • Bike lanes: San Francisco still doesn’t have enough, but it at least has some bike lanes. These are sorely missing in Australia, and really do encourage people to leave the car at home.

Obviously, this list isn’t exhaustive, but could someone please bring them to Australia? Thanks, I appreciate it…

Posted on Dec 23, 2008

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!

Posted on Dec 19, 2008

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.

Posted on Oct 20, 2008

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?

Posted on Jan 3, 2008

Twitter Stats on Google Code

I have created a Google Code page to house the source for Twitter Stats. Both the web version and the command line CSV-output version are available through a straight download or SVN.

While the other contributors and I don’t have a problem with derivative works (the code is released under the GPLv2 license), we would appreciate it if you instead thought about contributing back into the project. If you would like to contribute code, make a wiki page or contact me to become a member of the project so you can check-in using SVN. If you do choose to use some of the code in your own projects, please provide prominent attribution and a link back to the Google Code page and/or the web version of the script.

The code is pretty hideous at the moment, and there are quite a few bugs to work out, but please bear with us – we will be making enhancements and bug fixes very soon.

Posted on Nov 13, 2007

Cautious Android Excitement

Like many, I have been watching the news related to Google, among other’s, announcement of the Android mobile platform and the Open Handset Alliance. Until today’s release of several videos demonstrating the UI and parts of the system itself, there was not a lot of meat to get excited about. Now, I am filled with cautious optimism over Android.

After viewing this video in particular, one can see that at this point in the development cycle, it appears as though Google is looking to pull in the best features of Windows Mobile and the iPhone UI. On first inspection, Android looks most like Windows Mobile, especially the home screen. Once the device is in use, however, a very ‘smooth’ quality reminiscant of the iPhone can be seen. The browser especially is obviously modeled off Apple’s efforts, though there is a lack of finish at this early stage.

The most interesting and exciting part of Android is the level of openness. The iPhone is a great product, but like many Apple releases, it is basically Apple’s way or the highway. Sure, Apple has now announced an SDK for third party applications, but it is an afterthought, rather than Google’s release of an SDK months before devices are in the hands of customers.

Don’t get me wrong, I love my iPhone, but should Android provide the same slick UI elements on an open platform, I will switch in a second. Many features demonstrated on Android so far are available on other handsets, such as Google maps, but with Google’s announcement of a $10 million competition for the best applications, I am looking forward to seeing what can be done. Particularity, I am keen to see where developers go with the built-in OpenGL support. Already Google has shown some pretty cool features, though, like Street View in the Maps application.

What I am really curious about is where this leaves the Apple/Google relationship. Google is basically releasing the best competitor to the iPhone, despite Eric Schmidt serving on Apple’s board, and Google taking a large part in the development of the iPhone. I was surprised at Google’s involvement with the development of the iPhone originally, considering its love of all things open, and this proves my point in a way.

Indeed, if Android shapes up to be the open version of the iPhone as it is appearing as at this early stage, there might just be an iPhone for sale out of my place.