Live data from Hacker News

How we used Node.js to build real-time award flight search

blog.milewise.com

21–30 of 39 posts

Re: How we used Node.js to build real-time award flight search

#22
post #20

One comment: I typed in an email/password and right away it is asking me for my airline credentials but it isn't explaining what it is that the site wants to do with them or if it will store my info and collect information from now on. I'm curious about the site, but I thought twice about entering my info and skipped it. Just saying you might want to explain what it is you are doing to make people more comfortable. E…

Great feedback - we weren't sure whether at this point people would have a clear idea from the homepage of what we were doing w/ the info and they'd just want to get on with things, or if they'd want more contextual explanation. This is definitely an area for metrics and user testing, but probably better for us to err on the side of caution =)

I mean, I'd like to think you were going to provide me some great service.. but then that means I could register a domain name and put up a slick looking homepage and start collecting passwords :)

Just a side note, but do you use some other collection API such as Yodlee or are you maintaining your own data scrapers for all the airline sites?

Re: How we used Node.js to build real-time award flight search

#23
post #16
post #10

Earlier quoted context omitted.

Don't want to turn this into a Node.js/Python flame war (we love Python as well here at MileWise), but regarding asynchronous Python code: It's more just an annoyance of the language. Specifically, anonymous functions are must easier in JavaScript, so it was just easier to write read and write maintainable code. In Python, you are limited to only passing in simple lambda functions (although deferreds do get around th…

>> It's more just an annoyance of the language. Specifically, anonymous functions are must easier in JavaScript, so it was just easier to write read and write maintainable code. That's pretty specious. You can easily write a function defined inside a function that you can pass by just naming it. "Anonymous" functions are just syntactic sugar. Furthermore, writing a new python named function is easier (fewer chars) to…

This is getting ridiculous. These guys were busy launching a product, not trying to write a balanced comparison of the pros and cons of every evented framework out there.

Node worked better for them, what's the problem?

Re: How we used Node.js to build real-time award flight search

#25
post #20

Earlier quoted context omitted.

Great feedback - we weren't sure whether at this point people would have a clear idea from the homepage of what we were doing w/ the info and they'd just want to get on with things, or if they'd want more contextual explanation. This is definitely an area for metrics and user testing, but probably better for us to err on the side of caution =)

I mean, I'd like to think you were going to provide me some great service.. but then that means I could register a domain name and put up a slick looking homepage and start collecting passwords :) Just a side note, but do you use some other collection API such as Yodlee or are you maintaining your own data scrapers for all the airline sites?

Aw shucks you've uncovered our master plan.

We have our own account scrapers augmented with a partner API from AwardWallet for the more esoteric programs (CVS Rewards anyone?)

Re: How we used Node.js to build real-time award flight search

#26
post #25

Earlier quoted context omitted.

I mean, I'd like to think you were going to provide me some great service.. but then that means I could register a domain name and put up a slick looking homepage and start collecting passwords :) Just a side note, but do you use some other collection API such as Yodlee or are you maintaining your own data scrapers for all the airline sites?

Aw shucks you've uncovered our master plan. We have our own account scrapers augmented with a partner API from AwardWallet for the more esoteric programs (CVS Rewards anyone?)

Interesting... I'd like to talk to you more offline. If you want to chat, shoot me an email, andrew at ishiboo dot com.

Re: How we used Node.js to build real-time award flight search

#28
post #8

they'd do much better with twisted (python) than tornado. using Deferreds is nothing like opening keys with a beer bottle -- it makes a lot of sense. and as a former ITA Software employee, i can scoff and say they aren't actually doing anything resembling flight search. they're just scraping websites and APIs. node.js might be fine for that, but so is anything else. at that level it's more a matter of preference than…

There are deferreds in node as well.

They aren't part of the core API like they are in Twisted, is this correct?

Re: How we used Node.js to build real-time award flight search

#29
post #10

Could you describe the difficulties you encountered with Tornado and asynchronous Python code?

Don't want to turn this into a Node.js/Python flame war (we love Python as well here at MileWise), but regarding asynchronous Python code: It's more just an annoyance of the language. Specifically, anonymous functions are must easier in JavaScript, so it was just easier to write read and write maintainable code. In Python, you are limited to only passing in simple lambda functions (although deferreds do get around th…

While it doesn't help you for the other issues you mentioned, I have found defer.namedCallbacks to make Twisted code much simpler to read.

Re: How we used Node.js to build real-time award flight search

#30

Earlier quoted context omitted.

Great use case for Twisted, Erlang, Ocaml/Lwt, Lua, Python/Gevent too.

Great point! I bet that now thanks to your razor wit, dcaylor will think twice before saying something nice about node without also saying something nice about every other programming platform.

Node gets a lot of attention despite not doing much of anything new, sometimes it can be helpful to point this out. I was not rude or insulting about it, unlike others.
Post reply on HN