Monday, 28 March 2011

NS api - hij is er!

Al enige tijd gingen er geruchten dat er een NS treinreizigers-api zou komen. Voor mijn Android-app SnelTrein deed ik wat onderzoek naar de concurrentie. Daartoe gebruikte ik mijn Desire Z op mijn eigen wifi accesspoint, via een oude hub verbonden naar de router. Door de computer daarna aan de hub te koppelen is het mogelijk het netwerkverkeer vanaf de telefoon af te luisteren (ik deed dat op mijn Ubuntu machine met WireShark). Wat blijkt:

Als u nu naar http://webservices.ns.nl/ gaat dient u een wachtwoord in te voeren. Helaas voor de NS gebruikt hun applicatie geen https, waardoor het wachtwoord dat de Android applicatie gebruikt ook af te luisteren is. De gebruikersnaam "android" en wachtwoord "mvdzig" worden open en bloot verstuurd en zijn ook gewoon bruikbaar vanuit uw browser.

Vervolgens kunt u een XML bestand downloaden url's als:


Dat dit handig is hoef ik u niet te vertellen. Enigszins jammer is wel dat ik een parser heb geschreven om alle informatie van de normale m.ns.nl website te lezen, en dat kostte wel even tijd.

Tuesday, 1 March 2011

Design Pattern: Pagination with useful hovering indicators

Lots of websites that have catalogs use pagination. This makes sense, as it makes the content fit on the screen and it saves resources on the server.

Personally, I hate pagination. I much prefer sites where you can scroll down and new content is automatically loaded. Smart, sexy, elegant. But suppose the items are ordered by price and the first 200 items are outside of the user's budget. Suddenly pagination makes sense as the user wants to skip a lot of items. The thing is, the user has no clue on which page the items that he/she can afford start, so most users will use a simple binary search that takes them on average O(log n) time.

This is quite irritating. Each step takes about 3 seconds (click, fetch the page, inspect prices) and there are log n steps, where n is the number of pages. I thought this process could be greatly improved by showing the price range on each page in a popup hint simply by hovering.

Implemented at: www.datnarrenschip.com

As you can see: the users can hover over the page numbers to see the price of the first and last product on that page. Quite useful and impressive, IMHO. Built with simple css and jQuery. I find that on average, the preferred price range is found within 2 seconds.

I suggest you use it for your own projects, and if you do, post a comment! I'd love to hear. There are no patents as far as I know and I certainly didn't get one ;) Don't forget that your users will probably want to sort on multiple fields, in which case you probably want to show different hints for  each field.