1. send in a resume, with a cover page.
2. Next is a little bit of back and forth emailing, establishing a time for a phone interview.
2. Next there's an over the phone interview with a "brain teaser" and a couple of general questions. I was notified during the phone interview that they wanted an in-person interview.
3. In-person interview with some on-the-spot programming (real simple stuff -- look for sql injection points, iterate over x searching for y), followed by some really difficult "brain teasers". There was then some discussion on where the company currently is, followed by where the company is wanting to go. After that was just a lot of chitchat with the senior developer. I greatly enjoyed my time interviewing. I'd say we spent about an hour for the actual interview, and then another two hours just getting to know eachother (obviously wasn't planned). I was notified on the spot that I was hired.