S02E04: Hotel Tonight

27 Jan 2012

Chris Tosswill talks to Hotel Tonight CTO Chris Bailey about

  • 0:15 All about Hotel Tonight
  • 3:30 Testing and feedback at HT
  • 4:50 HTML5 vs. Native
  • 8:00 HT's Rails stack (open sourcing to come!)
  • 10:15 Backing up your data with Rails
  • 11:15 HT is hiring!
  • 13:00 Using Scala and Clojure
  • 13:30 Coffeescript
  • 15:00 Rails and the asset pipeline
  • 16:20: Interfacing with hotels for rates

Links About Chris Bailey




Chris Tosswill: Hello, this is Chris Tosswill with Engine Yard’s Cloud Out Loud. Today I am interviewing Chris Bailey, the CTO of Hotel Tonight, we will be discussing mobile development on Rails, and whatever else comes up,. Hi Chris.

Chris Bailey: Hi how are you doing?

Chris Tosswill: Pretty good. So could you give our listeners a little background on what Hotel Tonight is?

Chris Bailey: Sure, so Hotel Tonight is a mobile only, last minute, or same day hotel booking application. So, we are on iPhone, Android and your booking hotels for tonight. So you are checking in tonight, we take distressed hotel inventory and make it available in an awesome app. Check out our app, it’s beautiful, it’s fast, it’s super easy to use. You can book a room in four taps. It’s very stylish and pleasant to use. I use it a ton myself actually, so I’m one of our more frequent bookers. Yeah, we’ve been around for about a year and growing like crazy.

Chris Tosswill: Is it available in most major cities?

Chris Bailey: Yeah we’re in about thirty cities right now and continue to expand and will be going global as well, so yeah just keep pushing.

Chris Tosswill: Your inventory instances is app only, I think that is something that is important for people who aren’t familiar with what your application does. You mean that you cannot go to your website and rent the rooms. They have to do it via phone.

Chris Bailey: Right

Chris Tosswill: Why is this?

Chris Bailey: So, we saw an opportunity to deal with last minute booking in a better way and primarily on mobile. Mobile and last minute is a fifteen billion dollar market and there’s really no leader there right now. We are probably the most predominant company there at the moment, maybe the only company doing it really well.

When you are booking for tonight, maybe you’re out at the bar with your friends or you went to a wedding and you planned to drive home, but now you want to keep the night going, something like that, or, it was a last minute business trip and things were really hurried. You are probably on your mobile. Maybe you are sitting in the back of a cab or you’re at a bar, anything like that. You want a simple, easy to use thing. You are not at your computer where you have all this leisure time to maybe surf through the usual online travel agency bit where you are seeing a hundred hotels and you need to figure out how to filter, etc. So, we are aiming to have this really streamlined fast process and really pleasant enjoyable process to use for booking.

Chris Tosswill: So for a given area, I mean you just list a certain number of hotels like in New York City, or San Francisco, empty rooms or - ?

Chris Bailey: Right, right, we list three hotel choices per location. Now in certain locations like San Francisco or New York, we have multiple – you know think of it as neighborhoods. So, it’s like in New York it’s Uptown, Midtown, Downtown, right. So we will show you three per each of those. But part of the point there is if you are sitting in the back of a cab or something, you don’t have time to scroll through a million lists. You want to see a nice list that is easy to figure out right away. So we categorize the hotels, we have stellar prices and then we have great photos and other information. So, you can make a choice really quickly and not have to sift through a million results and all that.

Chris Tosswill: Sure, what are some of the practices that Hotel Tonight does to ensure usability of the allocation? Do you like user testing on a regular basis, or what sort of things do you do that causes you to promote such a seamless activity.

Chris Bailey: Sure, we do some user testing. We take that very seriously both internally and in our testing. We pay really close attention to a lot of feedback, as well as we have an awesome customer support department. We are 24/7, and you can call us and you will get a human that will help you out and really go the extra mile. We actually measure that and have this net promoter score. It is something that is used in the industry and I believe ours is well over point eight right now, which is like above Apple. So, through that, as well, we also get tons of feedback and we process all that. We look at every piece of feedback and we are getting tons.

Then, all of us are users ourselves. At this point, I am using it almost weekly, this feedback goes directly back into the products, and we really look at that stuff closely.

Chris Tosswill: That’s fantastic. The app was Android and iPhone and native on each or have you looked at HTML5 or did you discuss that space a little bit? I know it’s extremely –

Chris Bailey: Sure, so mobile development for Native versus HTML5 or something in between, that’s definitely one of the hottest topics and debates in the mobile development space right now. For us, we actually use both, but we definitely feel that for consumer apps, that apps are the way to go assuming that can cover the platforms that you need. It definitely depends on an app-by-app basis, but we have seen better performance, better integration with Native hardware support like Geolocation. We have had much better results out of the Geolocation doing it natively than through HTML5.

And then the app is snappier, it works well off line and we can do all sorts of cool little touches in a much nicer way. Like if you use our iOS app, at the end of the booking process we don’t do the normal thing where you just press a button to complete your transaction. Instead, we have this cool thing where you trace our logo, the H-bed as we call it. So, you trace that to complete your booking and it’s this kind of cool little – almost feels like you’re playing a game at the end and it just makes it a lot more fun. That’s something that Native we can do natively a lot better than we can do through HTML5 or something like that.

But, we also use HTML5 web apps we have a mobile web app for booking if you are a consumer and where we have been really using it now, is for our extranet site, the business side of things. We have a much more diverse set up of mobile devices that are using that, like BlackBerry’s and the usual iPhone, Android and various other phones. So, for that we used HTML5, we built this mobile extranet, and that has really taken the travel industry by storm. We have gotten great press out of it. Our hotel users love it. It’s been a really big deal and we had a lot of fun building that.

It’s filled with Coffeescript and you know some custom CSS and HTML5, those types of things. Super fast, very streamlined, works great for that particular application. So, it gives us really broad platform coverage as well. That’s kind of showing one of the things we do best, which is we are really trying to innovate in this travel space and nobody else has done something like that, the mobile extranet. We are the first people to do a mobile real time booking platform as well as we try to innovate, UI wise as well. We really go for beautiful applications. Our iPhone app we think is one of the best-looking apps around. Probably one of the best-looking apps in the App Store. I’m obviously biased on that, but I feel pretty strongly that it is a pretty awesome app. So, we are really trying to innovate there as well.

So depending on your application, we like Native for a consumer apps and On Device being offline all that kind of stuff. But HTML5 is a great solution if you have something like really broad platform coverage that you need, or some other rapidly iterating on an application as well. That is one of the other reasons we did that for our mobile extranet. We weren’t a hundred percent sure what we wanted at the time we built it, so doing an HTML5 app let us iterate really quickly on that and take it in different directions depending on what results we saw.

Chris Bailey: I assume you have some sort of internal API that powers that’s holding. What is sort of the infrastructure that you run your application on?

Chris Tosswill: Right, so we are Rails Shop. I have been using Rails for long time and it’s worked great for us. Fairly standard Rails Stacks or Rails 3, MySQL, a lot of the usual gems like Devise and other commonly used gems, plus a few things that we have brewed up on our own. We are actually working on open sourcing some of the stuff that we have done. We are starting to put a little bit out there now. Our GitHub account has a few of the things that – mostly things that we forked so far and made changes to. But we are working on releasing some of our own stuff as well.

Chris Bailey: So you found that Rails is performant enough to back-up all your app requests?

Chris Tosswill: Yeah, actually it’s been great for us. We run on a fairly low number of servers I think and we have seen some huge traffic spikes when we have done various promotions and other things. So, that’s actually great, because you get this real world experience of seeing what does ten or twenty x traffic mean. We have seen that level of increase on some of these promotions. So, we know, oh, we have tweaked a couple of data base indexes and what not and bam, we are handling – you know like the last time this happened about I think twelve to fifteen x traffic. And we didn’t have to do much in terms of adding servers or any of that. We just could run as we worked.

Chris Tosswill: Make sure you had the right sort of tweaks and the right optimizations and – awesome.

Chris Bailey: Right, you know we are set up to be able to scale on demand as well so as it happens we use Engine Yard and Engine Yard in Cloud and we can easily add in new instances whenever we want. We have done that in the past in response to certain things. So, it makes it very easy.

Chris Tosswill: Would you in terms of if a mobile developer is looking towards building that location, you said you strongly suggest at least looking at backing up your app with data through a Rails application or - ?

Chris Bailey: Yeah, I think it’s great. I mean I think if you like Rails then there is really no reason not to use it there. I mean I think it depends on the developers and all that type of thing. But, I think Rails is a great choice. It’s really fast, elegant, and easy to use and developers really like writing their apps in Rails, so it works great and you know it served our needs really well. It’s very easy to build APIs with it. You know you could use a Sinatra or those kinds of things as well, but I think you start to run into walls in the real world apps with that fairly quickly, when you get into apps that are more significant.

So, I tend to like Rails for darn near anything other than pretty small little toy app type things.

Chris Tosswill: Yeah, so that’s why I am assuming you guys pick that just because of already existing experience, you’re like this is the logical choice.

Chris Bailey: Right, I’ve used Rails on several other apps and for I don’t know five years maybe, six years now.

Chris Tosswill: Very cool. Is there anything else you specifically would like to comment, or - ?

Chris Bailey: We are also hiring, of course. It seems like everybody is, but we are looking for Rails people, Full Stack Rails, you know hardcore back-end folks as well.

We are doing a lot of really interesting projects coming up on our back end, managing the hotels data analysis and its sort of like bidding systems, rate arbitrage, some really interesting stuff on the back-end there.

As well as, we are looking for Android developers, Lead Android developers, as well as regular sort of day-to-day Android developers, and then JavaScript, CoffeeScript people. If you want to build cool HTML5 apps, do lots of stuff with CoffeeScript, JavaScript, different JavaScript frameworks and really building JavaScript applications, not just a bit of jQuery here or there but real JavaScript based applications. And finally, of course, iOS people. We are always looking for great iOS developers as well, so would love to have you.

It’s a great team, really cool office near Second and Mission and great culture in the company. One of the best things about that is that all of our developers are really product builders, so they are heavily involved in product development as well. We don’t have the usual sort of product managers and project managers. You aren’t just handed a spec and told to go build some code. You are directly involved in guiding all the features and product development that we do at Hotel Tonight. It’s a great place to work.

We were just talking this morning about Scala and Clojure. One of our developers has done a bunch of stuff in Scala so he has been playing with that. I spent a fair bit of time looking at Clojure for a little while and did like a couple of book reviews for Manning and that kind of stuff about it. I find it really interesting. I have always sort of enjoyed Lisps. I have never implemented anything in production with one but I think it’s really cool stuff.

Now actually, that gets to one other thing that is interesting that we use. We are a big time CoffeeScript. So, our mobile web app is all in CoffeeScript. A lot of our original iPhone app was in CoffeeScript and then we really don’t write JavaScript anymore. We are pretty much, ninety-nine plus percent CoffeeScript these days. So, other than jQuery or something like that that we are using, that we didn’t write.

Chris Tosswill: How do you find the debugging CoffeeScript, is it a drawback?

Chris Bailey: Yeah, honestly I don’t even think it’s an issue. I know people make a deal out of it. You know maybe you don’t have line numbers but JavaScript and CoffeeScript compiler produces is great. It’s super easy to read and so if you are in a situation where you are debugging in your browser and you got line numbers or you are walking through stuff, that’s just as easy to walk through and you need to know JavaScript, no matter what, right. So, even if you are writing Coffee Script, you still have to know JavaScript.

So, I just have never had an issue with the debugging thing. It’s just not a problem. I really don’t consider that a reasonable argument against CoffeeScript.

Chris Tosswill: It’s a major savings of time in terms of the syntax of CoffeeScript or - ?

Chris Bailey: It is just a lot more fun to write CoffeeScript. It’s nicer to look at. It also gives you some nice conventions too. Sure, you can build classes and do all your object-oriented stuff in JavaScript, no problem right. But, what it does give you is a single documented approach for building classes, or some of the scoping abilities have actually been really nice for some of the pieces that we use as well. So, our developers love it and it’s just a big win for us.

Chris Tosswill: It’s awesome. So, are you doing 3.0 or 3.1 for Rails?

Chris Bailey: We’re still 3.0. We are working on 3.1. We have a large Asset Pipeline of our own. We use Jamit right now so we’ve been kind of starting to look at, well do we move to 3.1 and do we switch over to Asset Pipeline or what would that buy us versus our existing Jamit solution. I’ve used Jamit for a long time, yet another tool out of from Jeremy Ashkenas and the great stuff those guys are doing. So, we don’t necessarily have to switch to Asset Pipeline if we moved to Rails 3.1, when we move to Rails 3.1, but you know we might as well at least look at it and see what the pros and cons would be versus our current setup.

Chris Tosswill: Sure and in another completely different direction, your application – you must be interfacing with a lot of legacy systems in terms of where all the actual hotel listings come from.

Chris Bailey: Okay so that’s actually a really interesting piece. Really we aren’t. So this is something that is confusing to a lot of people. They see our iPhone app, our Android app or whatever, and they think oh they’re just pulling rates from some hotel theater, whatnot. Actually, we have direct relationships with every hotel we work with and we negotiate rates directly with each of those hotels. So, we have an entire back end extranet that the hotels themselves log in to, they can put in their inventory, their pricing, and you know the rates that they want to give us. Then our own internal folks manage the hotels with that as well. But, that means that we don’t have to do a lot of rate harvesting from API’s or third party sources.

Now, where we do get into third party services and things like that, is for delivering bookings, some inventory updating. It depends a little bit on the hotel. So, we can take inventory updates through certain systems and these range, actually, it’s kind of fascinating. Probably the most advanced ones are SOAP API’s and the least advanced ones are kind of some crazy HTML form type things that – well it works for them and we have implemented it and it seems to work but it is sort of amazing in this day and age how that works. But we use a variety of mechanisms to deliver bookings and reservations; however, you want to look at that.

Chris Tosswill: That’s interesting that you are circumventing the problem of going straight to the desk.

Chris Bailey: Well, the other piece of that is it helps us be real, real-time and we are truly a real-time system in the sense that there is no lag from the point of the hotel updates their inventory or their price to it getting into our system. It’s immediately reflected and that’s certainly not true of a lot of the other online travel agencies.

And then for the other cases that can lead to overbookings and things like that, not so with us. In addition, we are guaranteed all of the rooms that we have. So, we don’t generally have to deal with an overbooking situation.

Chris Tosswill: So you actually say, these rooms are for you apps.

Chris Bailey: They are allocated to us, yeah.

Chris Tosswill: That’s fantastic

Chris Bailey: It’s great. It means it’s really reliable it’s up to date. Like as a user you don’t have to worry about that room not actually being available to you and just makes for a much better experience. Chris Tosswill: So please give me sort of a ballpark, I mean how many people are actually using your application on some sort of time frame?

Chris Bailey: We don’t publish our exact numbers for that, but what I can say is that we are growing – over the last several months we have been growing roughly fifty to a hundred percent per month. Kind of crazy, yeah. It’s a lot of fun actually to see the growth and that growth is both in customer sign-ups but that’s also in bookings, revenue, and that sort of thing as well.

Chris Tosswill: Awesome, cool, this was a great interview, thank you very much Chris.

Chris Bailey: Thank you

Chris Tosswill: I wish you success with Hotel Tonight.

Chris Bailey: Thank you very much, thanks for having me.