Better late than never

So in 2005 I said I’d travel to two different continents that year. Well, in 2007, just one year late; I’ll be visiting Europe and Asia. Earlier today I booked a ticket to London. I’ll be attending the Future of Web Apps conference and speaking about various Web 2.0’isms at The London Knowledge Lab.

I leave October 1st and come back on the 7th. If you’re going to be in the area and are so interested please do contact me and we’ll get a pint (or ten).

Yet Another iPhone Review

I won’t spend a lot of time covering the things I like about the iPhone as they’re echoed just about everywhere else on the internet. I’ll briefly cover what I like, cover what I don’t like in a bit more detail and sum up my feelings at the end.

  • The screen is jaw droppingly gorgeous.
  • This is hands down the best iPod Apple has produced yet.
  • The multi-touch screen is absolutely a revolutionary input device that cannot be described, but must be experienced.
  • The mail application and web browser are fully functional and work great. For example, my designer sent me a PDF mockup via email, which I opened on my iPhone without issue (multi-touch zooming worked on the large PDF, which was sweet).
  • Clicking on a link to a YouTube video launches the YouTube application and starts playing the video.
  • EDGE isn’t as slow as people make it out to be. Stocks, weather, maps and iPhone optimized websites load up in a respectable manner. Forget about watching a YouTube video though.
  • When moving the text cursor around it zooms in just above your finger because you’d never be able to see where the text cursor is otherwise. Additionally, it auto-capitalizes after punctuation.

There are quite a few things that I don’t like about the phone, which is typical for first generation Apple hardware. It’s clear that the operating system was rushed and that there are bugs, but I fully expect updates to be pushed out in short order.

  • My biggest complaint is that the keyboard is corrective rather than predictive. In other words if I type “tomo” it might suggest “tomb”, but wouldn’t predict I was typing “tomorrow”. I can’t stress how annoying this was coming from a predictive text phone.
  • The software is buggy. I’ve had to even go so far as to reboot it to get things back on track. Again, this will be fixed soon I’m sure.
  • No landscape keyboard sucks for people with big meaty fingers like me.
  • No IM application is jaw droppingly retarded. Another thing I expect to be pushed in an update in short order.
  • EDGE is slow. I know I just said it was acceptable, but it’s only acceptable for some things. I’ll upgrade immediately after a 3G version is available.
  • I dearly miss my scroll wheel from the regular iPod. Sure flicking stuff is fun to look at, but the navigation aspect of the scroll wheel blows the gestures away. For instance, I flick down to an artist, click play and then have to hit a tiny little arrow to go back.
  • Navigation to commonly used tasks is tedius. Just getting to the phone’s keypad takes 3-4 taps. I have no idea what they could do to fix this, but it seems cumbersome to switch around between apps. What would be hot (maybe) is to have a Alt+Tab type feature similar to switching windows in Safari on the iPhone.
  • You can’t open links in new windows in Safari.
  • If Safari is this great platform for developing iPhone applications why the hell didn’t they include some sort of basic JavaScript framework, CSS, images, etc. as an SDK for creating said applications to look, feel and act like regular iPhone applications? Either release it publicly or, better yet, build it directly into the version of Safari on the iPhone.
  • No games. Seriously? This will be best user interface for solitair anyone has ever seen.
  • The SMS utility isn’t very snappy to load.

I think that just about covers it. Overall, it’s better than any phone I’ve ever used. I fully expect the software kinks to be fixed periodically over the coming months and 3G phones within a year. Post any questions in the comments and I’ll besure to reply.

Don't say I didn't say I told you so

I’ve had, shall we say, heated debates with a few of my friends about the stability of Ruby on Rails. After hearing about the way Ruby on Rails handles database interactions I was fairly convinced that it would make serious scaling a huge pain in the butt. Today, by way of an interview of a Twitter developer, comes the answer I’ve been expecting:

Running on Rails has forced us to deal with scaling issues – issues that any growing site eventually contends with – far sooner than I think we would on another framework.

All the convenience methods and syntactical sugar that makes Rails such a pleasure for coders ends up being absolutely punishing, performance-wise. Once you hit a certain threshold of traffic, either you need to strip out all the costly neat stuff that Rails does for you (RJS, ActiveRecord, ActiveSupport, etc.) or move the slow parts of your application out of Rails, or both.

It’s also worth mentioning that there shouldn’t be doubt in anybody’s mind at this point that Ruby itself is slow.

I knew ActiveRecord was a pile of crap from the minute I read in their documentation that it was “only” 50% slower than going straight to bare metal. Combine that with the fact that you can’t connect to more than one database server, force indexes or do other various MySQL-specific DB foo and you’ve got a recipe for disaster once you hit a certain amount of traffic.

My First Week at Digg

The new sign at the Digg office

So I made it down to San Francisco in one piece. After spending a week in a hotel I’m now up in Concord, CA staying with Jeremy.

Tomorrow I start my second week at Digg. I can’t really talk about what’s going on or what I’m doing, but I’m surrounded by lots of geeky people and back in the thick of Silicon Valley, which is always interesting. As expected, things are exciting and there’s ton of potential everywhere.

One thing that will take some getting used to at Digg is that there are people who handle servers and such, which is new to me. At all my other jobs I was the PHP Developer/MySQL Administrator/Systems Administrator. At Digg I just say “Hey, Time, I need a DB.” or “Hey, Ron, can you upgrade GD?”

I don’t think I’ll be blogging about work very much as we have people who do that as well, but suffice it to say I’m excited about the job, city and possibilities.

Dear Tech Support

Dear Tech Support,

Last year I upgraded from Girlfriend 7.0 to Wife 1.0. I soon noticed that the new program began unexpected child processing that took up a lot of space and valuable resources. In addition, Wife 1.0 installed itself into all other programs and now monitors all other system activity.

Applications such as Poker Night 10.3, Football 5.0, Hunting and Fishing 7.5, and Racing 3.6 I can’t seem to keep Wife 1.0 in the background while attempting to run my favorite applications. I’m thinking about going back to Girlfriend 7.0, but the uninstall doesn’t work on Wife 1.0. Please help!

Thanks,

A Troubled User

Dear Troubled User,

This is a very common problem that men complain about.

Many people upgrade from Girlfriend 7.0 to Wife 1.0, thinking that it is just a Utilities and Entertainment program. Wife 1.0 is an OPERATING SYSTEM and is designed by its Creator to run EVERYTHING!!! It is also impossible to delete Wife 1.0 and to return to Girlfriend 7.0. It is impossible to uninstall, or purge the program files from the system once installed.

You cannot go back to Girlfriend 7.0 because Wife 1.0 is designed to not allow this. Look in your Wife 1.0 manual under Warnings-Alimony-Child Support. I recommend that you keep Wife 1.0 and work on improving the situation. I suggest installing the background application “Yes Dear” to alleviate software augmentation.

The best course of action is to enter the command C APOLOGIZE because ultimately you will have to give the APOLOGIZE command before the system will return to normal anyway. Wife 1.0 is a great program, but it tends to be very high maintenance. Wife 1.0 comes with several support programs, such as Clean and Sweep 3.0, Cook It 1.5 and Do Bills 4.2.

However, be very careful how you use these programs. Improper use will cause the system to launch the program Nag Nag 9.5. Once this happens, the only way to improve the performance of Wife 1.0 is to purchase additional software. I recommend Flowers 2.1 and Diamonds 5.0! WARNING!!! DO NOT, under any circumstances, install Secretary With Short Skirt 3.3. This application is not supported by Wife 1.0 and will cause irreversible damage to the operating system.

Best of luck,

Tech Support

Google Search Appliance GB-1001 Review

A couple of months ago Brad came to me to discuss problems with the search on our site. Since our site features a ton of text it’s imperative that users can easily find documents in a quick manner. Up until recently we had been using MySQL’s FULLTEXT feature, which I’ve covered extensively in articles and at conferences. FULLTEXT simply wasn’t scaling in the manner in which we needed it to. As a result, I set out looking for something that would.

I think it’s rather telling that MySQL themselves do not use this feature to index their own site, instead using Mnogo Search. While looking for a solution for us I decided against open source solutions for two reasons.

  1. We would still, essentially, be rolling our own search solution, which would still have to be maintained and supported internally. With two full time developers (including myself) this simply wasn’t an option. We needed a “Plug and play” solution.
  2. Support is non-existent for ht://Dig, but is available for Mnogo Search, however this still left us configuring, installing and supporting hardware.

This left us with two options: a hosted solution (ie. atoms.com) or an appliance (ie. the Google Search Appliance). In the end we went with the GSA GB-1001 for a few reasons.

  1. Even with the hefty price tag of $30,000 (USD) it was still cheaper than a hosted solution.
  2. It’s supported for two years and, after the two years is up, we still get to keep the hardware.
  3. Since we host it internally we can quickly change the XSLT stylesheets, etc. without having to call up an ASP to make changes.

So the GSA arrived and there was much rejoicing. Until we booted up the machine and noticed that it had arrived with a dead hard drive. Google says that it’s perfectly okay if a single drive fails and that they normally don’t replace a GSA with only a single dead hard drive. Okay, that’s fine, but the thing arrived with a dead hard drive. For that much money I would think it should arrive in pristine working condition.

To top off my frustrations the box locked up twice within a 24 hour period. Obviously, I wasn’t putting this thing into production anytime soon. Come to find out this locking business is a known issue with a working patch. I flat out asked my Google rep why it wasn’t shipped with the patch and they said it was because it only affected some of the GSA’s. Great. In the end we shipped our GSA backed after they shipped out a replacement.

The second one arrived with four working hard drives, but also suffered from the locking issue, which Google quickly patched by logging in via SSH. SSH? Yes, the Google Search Appliance runs RedHat Linux.

So what exactly does the GSA run on? Well I’ll list the specs out for you.

  1. Quad 2.66GHz Intel Xeon
  2. 12GB of RAM
  3. Five 250GB Western Digital EIDE drives (Two 250GB RAID1 mirrors on a 3ware ATA RAID card and one hot spare)

In other words it’s a really beefy linux box (in a really dorky looking yellow case). Of course the box is all locked up so you can’t look on the inside and I wasn’t looking to void our support and warranty by opening the box.

So how does it perform? Well, after much tweaking of the XML interface, it’s pretty amazing. According to Google the GB-1001 will index 500,000 documents and is capable of performing 300 queries per second.

After the initial problems with the GSA I have two major complaints with it. The first is that the support is inadequate. For $15,000 per year I expect support to be better than email-only Monday through Friday during business hours. The second is that it didn’t ship with a SOAP interface. The main Google site has one, why doesn’t the GSA? Sure I can get the response back in XML, but a SOAP interface would have been much appreciated.

Other than those two issues and a few minor quirks I give the GB-1001 a high score. If you’re simply doing a site-wide search I don’t think you’ll find a more brain dead simple solution.

Stealing WiFi Access

There has been much talk in the news recently about stealing WiFi from your neighbors. I have a middle of the road point of view on this that I think most of my fellow geeks will agree with. There is much confusion as to what is okay and what is not okay. To help clear up some of this confusion I’ve created a simple grid that you can now reference whenever you come across a WiFi hotspot.

  All Good Totally Uncool
Is it an open access point?  
Is is protected by WEP, etc.?  
Is it located in a coffee shop?  
Are you using it for illegal activities?  
Are you splitting the bill with your neighbor?  
Are you just using it for email while your connection is down?  
Are you sniffing traffic or browsing their network neighborhood?  
Is the SSID NETGEAR and the password “admin”?  
Did you sniff traffic to obtain passwords in order to access the hotspot?  
Is the SSID named “FBI Headquarters” or “CIA HQ”?  

I look at it this way; if you knowingly leave your access point open to the world then it’s perfectly okay for me to use it, however, I should respect your kindness and not use it for malicious activities of any kind. The exception to this is what I call the “Idiot WiFi Hotspot”, which is like picking on the retard during recess. If someone is too stupid to at least change the admin password then they have no idea what’s going on with their WiFi and, while taking advantage of this idiot might be tempting, it’s just not very cool. The only exception to the IWFH rule is is if your connection is down and you want to check your email or read the news.

If you had to sniff packets or crack a WEP key to gain access to a hotspot then you’ve just broken the law and are a total douche bag. I liken this to someone breaking into your cable box and siphoning free HBO.

We’re not talking quantum physics here people. If you knock on someone’s door and they either don’t answer or the sign says “Closed” then you don’t just come on in. Use common sense and the handy reference table above and you most likely won’t be arrested for stealing WiFi.

IE 7 Beta Overview

Well, Microsoft finally released it’s beta of the highly anticipated Internet Explorer v7. And the tech community rejoiced let out a collective groan. As exhibit A I’d like to introduce this this screenshot of the new browser UI. As exhibit B I’d like to introduce this screenshot of the RSS feature. Now, there are a few good things in this release.

  1. Tabs. Finally.
  2. RSS. Finally.
  3. Search. Finally.
  4. Phishing detection, which I think Microsoft should surely be commended for. Though I think the word “phishing” should be replaced with something less tech-centric that my mom would understand.
  5. They’ve added the ability to manage browser add-ons, which evidently wasn’t supported in previous versions.

My problem with this list is I find myself saying “So what?”. Firefox, Opera and Safari have had all of these features, except for phishing detection, for years (NOTE: Firefox has an anti-phishing plugin, but does not ship an anti-phishing feature by default). I find myself wondering if this is too little too late. Either way, Microsoft should ahem be commended for making these changes. They’re late to the party, but at least they came. As can be expected from someone who pretty much hates Microsoft products I do have a few complaints.

  1. Why the hell did the move the menu bar below the tabs? They’ve actually gone against their own UI recommendations. They should clearly put this back at the top of the window.
  2. No stop or refresh buttons? I don’t need a 500 pixel-wide location bar, but I do need a stop and a refresh button.
  3. What the hell is up with the phantom tab to the right of the tab? It opens new tabs, I get that, but it should be turned into a “New Tab” button next to the “X” for closing tabs.
  4. I can’t aggregate feeds? I assume this will be fixed before it launches.
  5. IE 7 still isn’t acid compliant and still doesn’t fix many of the CSS rendering bugs in IE 6. As someone who makes a living banging his head against various IE bugs I seriously hope they fix this before it’s finally released.

As a web developer I’m pretty pissed that the rendering bugs haven’t been fixed and the browser still isn’t compliant with even CSS1. Meanwhile, CSS3 is being proposed and CSS2 is getting wider support in Safari and Mozilla/Firefox. I would have liked nothing more than IE7 to come out and be fully CSS3 compliant. You would be reading a very different post if it had.

Overall, I give this beta a C. Why? Because Microsoft has done the bare minimum. They haven’t done anything ground breaking here and they didn’t even bother to fix the existing rendering problems. Unlike others, however, I’ll wait to pass my final judgement until the final release has hit the streets, which I think will be around when Windows Vista is released.

iTunes Favorites from a list of Bands

Maybe I’m late to the party, but I’ve finally figured out a way to build Smart Playlists in iTunes that include only my favorites from a pool of bands. Since iTunes restricts to you all or any of the search terms you can’t say something like “All of the songs that are rated three stars or more and where performed by any of the following bands: The Thrills, The Killers or Franz Ferdinand.” Well, I’ve figured out how to make this work.

  1. Create a new Smarty Playlist and have it match any of the Artist names you want (ie. The Thrills, The Killers and Modest Mouse). Name your new playlist and save it (ie. “Thrilling Killer Mice”).
  2. Create another new Smarty Playlist and choose all of the criteria should be met. Set Playlist is insert name of first playlist and then click the plus to add another criteria. Set this second criteria to a range of stars that suits your fancy. Save this new playlist.

It was killing me for quite some time that I couldn’t group bands by their specific sounds and also have the playlist reflect my ratings. This way the first playlist stores all of the songs by all of the like sounding bands and the second playlist reflects songs from that pool of artists that I like.

Of course, the first playlist is for reference only. When you add another album by a band in one of your various pools the first playlist will update and, when you rate songs on the new album, your second playlist will update. It’s kind of like inheritance in iTunes playlists.

10 year old Microsoft "wizard"

I’m sure everyone has pretty much heard about the 10 year old Pakistani girl who passed the Microsoft Certified Application Developer. I’m sure this was no small feat for a 10 year old girl living in a third world country and I’m not going to comment on this. The funny part of the article is that, upon meeting Bill Gates, she read him a poem “celebrating his life.” The guys on Slashdot couldn’t resist speculating what the poem’s contents where. Here are some of their guesses.

There once was a man from Nantucket
Who told all the world to suck it
Selling insecure code
He sure was a chode
And his ethics could not fill a bucket

There once was a programmer named Gates
Who never could get any dates
So he bought MS-DOS
Became his own boss
And now he just masturbates

I stole stuff from Jobs.
And now I own Microsoft.
Holy crap I’m rich.

That’s some funny stuff for sure. By the way, the last one is haiku, so it’s not necessarily supposed to rhyme.

While many might scoff at someone passing a Microsoft developer exam, I have to point out that this girl was 9 when she passed the exam. The most complex thing I had figured out at 9 years of age was my Nintendo. Meanwhile, this girl is programming in C#, which is a strict typed language. Meaning it requires her to know the difference between an int, float, etc. Impressive.