Thursday, January 29, 2009

austin usability, seriously?

Welcome to austin usability, the least usable usability site I've seen in a long time. If you go to the page, you're instantly greeted with a popup that blocks you from using the site.
Nice.

When you're shopping for a usability company, what do you care about the most? I hope you answered "journalists' opinions of the company":


Here's their "what we do" page:


I like my version better:

Goddammit Google Reader

This just started happening today but now I can't fucking use Google Reader. First this dialog comes up:Ok, I don't really care why it doesn't work, just give me a way to make it work.  Maybe the settings will be useful:

Awesome, you just sit there are 0% forever. Maybe if I click Account settings...
Fuck! The fucking "go online" button just hangs the whole app.

What the fuck, Google? Argh.

Monday, January 26, 2009

Google App Engine argh

I have written and hosted my latest site: PixPlz using Google App Engine. I don't really recommend GAE to anyone unless you really, really value using a free service.

Here's a list of minor limitations you might run into:
  • no aggregate queries
  • no image handling
  • hard to port
  • index building
  • bizarre errors from simple commands
  • must sort on inequality filter first
  • random 1000 limits
no aggregate queries
This one is pretty frustrating if you ever like to gather statistics about a single damn thing your app is storing. I would like a total of the number of times all my images have been voted on, but if I try to loop through every image (which appears to be the only way to do it) I quickly run into Google's 5 second page timeout limit.

no image handling
I know that technically, there's an image library, but it doesn't do a damn thing if you actually want to handle images. Say someone uploads an image: want to know the filetype? Read the individual bytes to determine it. Want to know the dimensions? Yeah, read the bytes. You can do a few write-only changes like resizing, but you can't read any attributes about the image you're manipulating.

hard to port
Other people have written about this, but eventually I'll want to get away from GAE, and it gets harder and harder the more code I write.

index building
Want to query some data in a new way? Cool, just write the query, test it on your dev machine and push to production. Oh, wait, you have to sit and stare at a progress indicator for an indeterminate amount of time before you can actually use that query. This took over 5 minutes for 100 photos:
bizarre errors from simple commands
When I got up to about 150 photos, I started getting timeout errors from this GQL query:
photos = db.GqlQuery('SELECT * FROM Photo')
photos.count()

Yes, counting 150 photos is difficult for BigTable to accomplish, and results in an timeout error about 1% of the time.

must sort on inequality filter first
I wanted to make a page that showed the top rated girls, but not one that had maybe one or two "yes" votes, and were thus at 100% falsely. Simple, right? You just query for all the photos that have more than 5 votes and sort them by score. But wait, you have to sort by votes first, then score, giving you a useless top 10 board of mostly the oldest photos (because they have the most votes) thanks BigTable!

random 1000 limits
Can't return more than 1000 elements from a query, can't offset more than 1000 elements into a result set, can't handle uploads or any variables in memory bigger than 1MB. Google touts how well App Engine scales, but I can make any system scale if I just don't let you do anything with it.

Thursday, January 8, 2009

ShoutNow

This sign up process is great way of indicating the steps you'll need to take, and that you'll need to pay at the end. (I really hate sites that never mention payment until you've filled out multiple pages of forms, only to be hit with a card card info screen)

from ShoutNow

Square Master

Look at this clever use of space:

Image from danbourque.com (the maker of Square Master)