Hacker News new | past | comments | ask | show | jobs | submit login
I have chosen the wrong flight dates because your date picker is broken (twitter.com)
239 points by bfoks 5 months ago | hide | past | web | favorite | 199 comments

I ended up booking two flights recently because Kayak sent me a "booking failed" email after I tried once, it failed, then tried again, and it worked. Then an hour later I got an email from Kayak saying my flight booking had failed. So of course I booked another flight. They would NOT admit the slightest wrongdoing. Never using them again.

I work on a hotel OTA and this and similar situations consume a disproportionate amount of our dev time, and I believe it should. So much travel software relies on third parties and problems with eventual consistency (read timeouts) mean that often either the customer is told their booking failed when it succeeded, or it fails after payment is taken.

We try to ensure that our support tools make these situations, and the resolutions, as clear as possible to our customer agents.

Ultimately, we are on the hook for this booking so it's in our interest to get it resolved for the customer so they are happy. Our stats show that this only happens to 0.5% of bookings, but if they aren't handled well, they take up a much larger amount of support time and then end up with an unhappy customer.

Over the last few years I've come realise that this is a fundamental cost of building travel software. You can't gloss over these problems or push them back on the customer, otherwise you simply won't have any customers left.

0.5% is 1 out of 200 bookings. That's a pretty high failure rate!

If you're never using them again, why not do a chargeback? (Apparently services like Uber or Airbnb ban you if you do this, so it's "mutually assured destruction"). Or call the airline and tell them how Kayak messed up.

I find it hard to believe there is any combination of words you can say to an airline company to successfully refund a non-refundable ticket.

It can be done. I've cancelled non-refundable flights for medical reasons. There is also a 24 hour period where you can cancel your flight, which I believe is by law.

Summary: https://www.consumerreports.org/consumerist/all-major-u-s-ai...

Full text here: http://www.dot.gov/sites/dot.gov/files/docs/Notice_24hour_ho...

As far as I know, the 24 hour cancellation rule is not international. I think it is mostly applicable to North America. If this was an international flight, it is possible that the law did not apply.

European airlines have different policies regarding cancellations, often based on the type of fare you select. Sometimes you get a full refund, other times only the taxes and fees.

The rule is very simple - it applies to any flight originating in the United States.

It applies to american-based airfare companies so if you book with kayak, orbitz, expedia, priceline, etc then there's a 24 hour cancellation period

I'd love to get a source on that for the next time I encounter this situation.

It's easy to find: https://www.transportation.gov/airconsumer/notice-24hour-res...

Edit: I should add that I don't know if this specifically applies to Kayak, etc. I'm not sure if that's what you were specifically looking for.

" There is also a 24 hour period where you can cancel your flight, which I believe is by law."

AFAIK, only if you book with an airline direct.

It's even worse than that. My brother-in-law, who doesn't speak much English, accidentally selected the wrong option at a check-in kiosk in Las Vegas and was upsold some kind of "premier" ticket option that let him board a flight first for the low low price of $42.

After he realized he made a mistake he sought out the airline staff and they told him he had to go to some website which showed that he had checked in, but not the extra charge or option. Eventually he made his way to a service desk at the airport and they told him to call a number after he landed on the other side.

The "customer service" representative then informed him that since he had already taken the flight, he couldn't get a refund.

I helped him file a complaint with the airline explaining the English and the lack of help from airline staff and the confusing remediation directions he received. They responded very quickly informing him that he would not be refunded but to please fly again with them.

Did he accept and realize the advance boarding?

My read is that he probably screwed up and could've asked more questions at the kiosk. In addition, you're a supportive BIL!

He accepted, thought about it, then went directly to the airline staff for help. They basically told him to phone/web/email and ignored him.

The kiosk was one of those touchscreen things so nobody to ask when he was making the mistake.

It is ultimately his mistake, but at the same time, they're keeping >$40 he accidentally spent so he could board an aircraft 3 minutes early. It's kind of silly.

Many airlines (ex. United Airlines) allow refunds within 24 hours of purchase, regardless of general rules of the ticket.

I think this is legally required in the US, if you book directly with the airline. This is a solid reason to never book through the flight aggregators.

Expedia provides the same cancellation period as well. It saved my butt once last fall when I clicked on the wrong month in the calendar. Plus I have used it for other flight cancellations with them.

It's also required in the EU. It happened to me with British Airways

AmEx provides me this benefit when I book through them.

They legally have to. Always amazes me to see airlines boast of their 24 hour refund policy that they don't actually have any choice over.

I mean, clearly a lot of people don’t know it’s the law, so it doesn’t hurt advertising it as a perk. Especially if the other guys don’t advertise it.

This was also the strategy of ep 1 of mad men — lucky strike’s “it’s toasted” slogan — if you say it first, then despite all tobacco being toasted, it looks like everyone else is just copying you.

Depends on jurisdiction. https://www.gov.uk/online-and-distance-selling-for-businesse... might be handy for UK citizens as a starting point.

Did it once in Russia. There’s a law requiring a refund if passenger is sick.

If it is for a ticket originating from the US you can cancel and get a refund as long as it is within 24 hours of booking the ticket, and the ticket is at least 7 days out

I believe that "non-refundable" and "as-is" are going the way of the dodo with the millennial generation. It seems past generations were much more willing to accept large corporation policies than the current ones.

I'm curious what makes you think this. I think millennials have sat back and allowed hospitality & travel companies to get away with much more than ever.

Hotels and car rentals now have non-refundable rates, something that didn't exist 10 years ago. Many hotels add resort fees, extra service fees, charge $7 for a bottle of water, etc., that they never would have tried 10+ years ago. Airlines have long had non-refundable fares, but penalties have increased tremendously. Anecdote: a friend of mine booked a weekend trip in 2009, the return flight was Sunday 12:30 am. When I pointed out to her that was essentially Saturday night, she got on the phone to change her ticket to the last flight out that same Sunday. $40 change fee. Today that would almost surely be $100+ on any US-based airline.

All these extra fees aren't aimed at millennials specifically, but I sure don't see them resisting enough to have any of these companies reverse or reduce some of their fees in response to consumer complaints or dissatisfaction.

Because this generation knows how to raise hell on social media if they've been legitimately wronged.

This actually works.

I was flying AirAsia to Sulawesi last year, and 2 days before my flight the tsunami hit. Hotels destroyed, tourists evacuated from the island.

Even though they're trying to get people off the island, AirAsia refused to refund or even rebook my flight because it was nonrefundable.

Filed a chargeback, and got a response from AirAsia via the credit card issuer offering a refund if I would withdraw the chargeback.

Never again.

This has happened with me and Sri Lanka airlines (tricky to book when they block VPNs, you are in China and they have a google captcha.). I ended up with two tickets, one via their website, one via Vayama. I complained and Sri Lanka airlines reimbursed me. Even got a free business class upgrade when I checked in :-)

That sucks. No transactions ? I think companies like Kayak can get way with loose consistency guarantees and just push the onus on the user or have some money saved to reimburse you. You should file a dispute with your CC.

Seriously, UI components are hard. Even a lowly button is difficult to get right, where ”right” means ”whatever smart people have converged on after 30 years of GUIs”. Anything more complex than a button is much much harder. There are a lot of things wrong with the whole ”web app” concept but to me maybe the most important is everybody trying to implement their UI widgets from scratch. And I say this as someone whose job used to be writing and maintaining a webapp UI framework.

Right, but you don't need "smart people to converge on" an agreement as to whether or not the 2nd of February is a Thursday. That would seem to be pretty well-defined.

Yeah every other travel site seems to at least show you the proper date range. Let's not make excuses for shitty work, a date picker component isn't an NP Complete problem.

It is not.

Though, it’s interesting to note that once when I took a date picker component and attempted to morph it into a full-blown MacOS calendar, with calendar appointments that slot into different time slots and don’t overlap, I found that that is an NP-Hard bin packing problem.

My comment was not meant to be an apology of any sort at all. Quite the opposite! Not all datepickers are as broken as this one, but that doesn’t mean the situation where everyone keeps reinventing things is a good one.

>Let's not make excuses for shitty work, a date picker component isn't an NP Complete problem.

...how would one even define a complexity class for date picker components?

Well it's likely the client/server time-zone mismatch was the cause here. It could be that everyone at AirAsia, or even the majority of passengers, saw the right dates, and this edge case was simply not considered.

Assuming a timezone mismatch, it wouldn't always show up because the date would have to cross a midnight boundary for the days to be different. Even if we assumed the servers used Malaysia time rather than UTC, that leaves 8 hours in a day where North American travelers could see the right day.

Time zone shenanigans or not, it has nothing to do with UX. 2/2 is not on Thursday, anywhere in the world, period. This is simply an obvious bug and a lack of customer service, not some UI failing because UI is "really hard".

Are you aware that dates does not get influenced by timezones, right? And not only that: Thursday was January 31. Friday was February 1. Saturday was February 2.

They got it wrong by 2 days.

Feb 2 0019 is Thursday. Off by 2000 years.

I like how you think ;-)

More seriously, that would be a Y2K bug that took close to 20 years to discover, which I think is basically impossible.

We need to find out the date the original poster actually entered to make the booking. They may have entered 2/2/19. Perhaps the code for the calendar interpreted it literally (as year 0019) while the code to display the date string did a conversion for Y2K.

> Are you aware that dates does not get influenced by timezones, right?

Yeah, but the situation is worse than that. Weeks boundaries are influenced by a locale. What is the first day of the week? Sunday? Monday? I know that in russia a week starts with a monday. I know also that in en locales it is not the case, I was never able to understand english calendars, so the very first thing I do is fixing locale to see a "proper" calendar which I can understand.

Notice that there are no hints where is sunday and where is monday, you make a decision what is what based on data layout in a two-dimensional grid. For example, I read the screenshot in the tweet as Feb 2 is a Friday, not Thursday.

This leads me to a hypothesis what happened with AirAsia. They messed up locale dependant calculation of a week boundary. Like they added 1 instead of subtracting it, or maybe they applied the locale dependant shift of a week bondary twice, or made some other software bug like that.

They have weekday labels, just click through on Twitter to see the uncropped image

Well defined, Gregorian? You're kidding right?

Sure it's "defined", but it's full of hacks to deal with whims of fancy.

Even the day of the week calculation is borderline moronic.

Very much this. I work on a "web app" with all custom components, even the most basic input is a custom component... everything about it sucks. Keyboard navigation sucks and is redone poorly, dropdowns are godawful, styling them is no joy.

I don't know what our way out of this is. Everyone imagines their own UX and wants this or that thing to behave differently from everything else out there on the web. We'd have more usable webpages (and web apps) if we didn't spend most of our time reinventing the button... over and over and over

If Web Components don't save us, nothing will.

Thankfully I'm pretty bullish on them (especially customized built-in elements.) The future is bright.

I've heard about this but I'm not so sure. From my limited experience, the customization is as bad or worse than say React components. And then there's the whole shady/shadow DOM. And from my experience the way that components are currently used, "slots" can get you in a lot of trouble. This is without mentioning the severe fragmentation in that space (polymer vs skatejs vs stencil vs ....)

Shadow DOM v0 was kind of a mess (the fragmentation you mention), but v1 kinda washed all that bad taste away and is a pretty sane API. I don't see libraries building on a feature as "fragmentation," however.

Slots are a powerful feature that has to be used carefully. But it's a great API foundation for a lib (which is a tendency for web platform drafts, ex. WebGL and Web Audio.)

Customization is just CSS, I'm not sure about the comparison to React. For Shadow DOM styling, we're almost at the point where the last big problem (selective and scalable piercing styles) are getting solved.

In any case, the world is better with Web Components than without. Combine them with ES Modules and you have an great ideal for the web platform to strive towards.

I do hope to see them picked up. I'd like to see the next Bootstrap/Foundation/Material UI framework be web components, that'd be a sight

to me maybe the most important is everybody trying to implement their UI widgets from scratch

I see stopping efforts to roll one's own UI components unnecessarily as a rite of passage for a developer.

I think rolling your own datepicker is an important rite of passage. So is learning why you shouldn't use your hand-rolled component in production.

Agree, IMHO virtually always one should pick HTML5 components or something that is very mature, otherwise a lot of care is needed for something that works everywhere.

On the other hand, the guy is aware of the concept of a date picker and misuses a third party website's calendar for his own. This is a bit naive.

Admitting you made a mistake and making it right isn't hard if you care about your customers.

Assuming that Air Asia's customer support's purpose is to care about customers, rather than enforce policy.

It seems the more legacy a business is, the more defensive and less proactive its customer service remit becomes (e.g. insurance and telecom).

UI components might be hard, but typing <input type="date"> into a HTML document is not hard, and it's enough for the browser to do the right thing here. This screwup was entirely self-inflicted, a consequence of ignoring the well-known best practices of authoring semantically-meaningful web documents, forms and apps.

Regarding input type="date"

> Recommendation

> While convenient where it works, the failure mode of type="date" and its associated date and time types is very poor. This makes it a risky choice that could leave users struggling to meet validation criteria.

[0]: https://www.smashingmagazine.com/2019/01/html5-input-types/#...

I remember desktop Chrome ‘implementing’ date input a few years ago by using the number input’s spinner. If you press up the date goes to 0000-01-01. It was worse than useless because you can’t even polyfill in a JS datepicker since the usual feature detection would detect Chrome as having support for date input.

That's currently only supported by 86% of browsers. A few years ago when they might have designed it, that number as much lower.

See https://caniuse.com/#feat=input-datetime

If it's a "best-practice", I honestly don't know any large, consumer-facing websites that just use input type=date, mainly because that UI sucks in most cases.

Even in this case putting the dollar amounts in the dates, which is a very useful piece of information, would need a custom date control.

Is that even a web browser? If you look at the full screenshot, (I'm not 100% familiar with iOS) it looks like an app launched from the app store?

That’s almost certainly an app; a web app would require quite a bit of configuration to look like that. It might be running a web view internally, though.

For better or worse, 99.9% of the web uses custom datepickers, if not for other reason than the fact that <input type=date> is not supported by all the browsers out there.

Sometimes the client want different look and behaviour for componet, not Just the simple HTML5 input

As evidenced by this example: in such cases, the client is probably wrong. They'd be better off letting the user agent display the date picker that the user is used to.

Don't conflate the simple fact that there is an outright bug here with the presumption that the browser's date picker would be a better choice.

Even in the event that a browser ships a buggy date picker, at least it would be buggy on every website. The user then has a chance of understanding the bug and working around it to input the correct date.

OK, I'll use another tactic. Show me a single high-traffic travel website that uses the browser's default date picker. Travel websites are usually optimized out the wazoo because small increases in conversion rates make all the difference in this competitive business. Are you saying all those sites (the ones without bugs) are wrong?

The user is responsible for their browser. If they choose to use something that doesn't implement the spec and your site breaks, they sabotaged their own experience. That's very different to you sabotaging their experience.

Most users aren’t _choosing_ their browser, in fact they probably don’t even know what a “browser” is, relative to the “web” and the “internet”. If they’re using even a somewhat modern desktop/phone/tablet and things don’t Just Work it’s probably your fault, not theirs.

This type of mindset is not conducive to creating a successful business. Or creating good websites in general.

Good UI is hard, but it's also a solved problem since at least 25 years and idiots keep reinventing "solutions" the wrong way over and over again. I see developers frequently make mistakes that Windows 95 got right.

Yes, this was my point. Desktop environments have standard sets of battle-hardened components for good reasons.

No, you're all making them hard. It was no problem to book a flight in 2005.

I purchased tickets on the AirAsia website recently, and I am confident that at least on Firefox, their date picker for the passenger's date of birth has an off by one bug. At least in my case, customer support was able to change the date.

Edit: I am confident because I purchased multiple tickets with multiple passengers and also had someone double check that I filled out the info correctly. All the date of births ended up being one day later than they should have been.

Sounds like a time zone round trip issue. They’re likely using timestamps (say epoch millis) to represent dates and converting it incorrectly on display.

This mistake is quite easy to make in JavaScript. Dates are internally milliseconds since epoch but if you construct a date by giving year, month, day, you get midnight in the local timezone which may well be on a different day from midnight in UTC, so if you send back a unix timestamp or (trying to be clever) use UTC functions to get a date from a Date object, you may likely get an off by one error.

Another consequence of this is that JS Date objects don't understand the concept of timezones, and only allows you to output dates in either the client timezone or UTC. This makes it extremely hard to, for example, display the arrival time of a flight in the destination timezone.

Intl.DateTimeFormat[1] is a godsend for this.

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...

Sounds like a fundamental misunderstanding about the difference between a birthdate and an instant on a timeline.

Not a misunderstanding, I'm sure they understand birth dates. But that the date picker selects the current time by default, and doesn't make that visible to the user.

There should be no time component to a properly-stored birthdate. One doesn't observe a "January 1 in Australia" birthday on December 31 in New York. Systems that presume a birthday to be other than a year+month+dayofmonth get themselves into the sort of trouble described in this thread. Birthdays well in the past, however, might need more information on the observed calendar/chronology in use in the subject's locale.

OTOH, if you need "instant of birth" then definitely get a time and timezone. Plus, converting to UTC and discarding the timezone observed at the place and political circumstance of birth would likely be a mistake.

My point is that no one "misunderstands" this. Everyone knows a birthday encompasses an entire day. This is a bug, not a misunderstanding.

I feel you're being pedantic. The misunderstanding is not around the concept of a birthday, yes--it's due to the use of a time-having datetime datatype for this purpose, in UI and/or application server or database layers, the latter of which ought to reject datetimes as nonconforming inputs.

Birthdates are complicated. It's quite possible for you to tell someone your birthday and be "wrong" because of the timezone you are in. Or for you to be more or less "years" old than your birth date indicates because of timezone differences between where you were born and where you are now. Rarely matters. Simple mistake in code to forget that a birthdate should be treated as having no timezone.

Depending on time of birth it could have been you that was off by one

Might be even worse, a lot of systems only have some sort of DateTime object that automagically includes a time component (no real way to specify date-only except just using a plain string) and automagically tries to correct it based on some sort of cascade of system settings, configuration variables, application configuration, and user configuration. On a web app, those things probably exist at least on the client, server, and database, each potentially making their own attempt to 'fix' the data.

Working with dates in code is unnecessarily hard so naturally the results tend to be bug-ridden more often than not.

Even just labelling the days would help.

There's room for confusion with unlabelled days even when it's "right", though. The author says "Since when is Feb 2 on a Thursday", but I assume that's because he's used to a Sunday->Saturday layout on a calendar, whereas for me I'd assume the 2nd were a Friday based on that position as I'm used to Monday->Sunday calendars.

(Update: OK, the days ARE labelled - incorrectly. You have to click on the screenshot on Twitter to see the full screenshot. Keeping this comment here for posterity only ;-))

The thing is, the screenshot _has_ labeled days. The calendar helpfully labeled February 2 as a Thursday.

Not the screenshot I'm looking at from the link. [ADDED: Ah, you have to click through on the twitter image. Yes, it's just flat-out wrong.]

you need to click it, otherwise it only shows a portion of the screenshot. above "February 2019" there's a menu bar with days on it (which is incorrect).

Wow, that is extremely bad UI from twitter to crop image like that.

Their cropping uses deep learning for the crop[1], but I often notice that screenshots are clipped weirdly. It makes me wonder if their training set was all photographs.

[1] https://blog.twitter.com/engineering/en_us/topics/infrastruc...

Twitter is known for horrible UI, so nothing new there.

Neither was I, but turns out sturgill is right. If you click on the image in the tweet it expands to a fuller version that shows the calendar is, indeed, totally screwed :-D

You also fell victim to a broken UI: the one that clips a screenshot and doesn't let you know that there's more to it!

It's worse then that!

Keep in mind that I open all links in a new private windows except for few services for which I stay logged in.

On twitter, clicking sometime opens a new link, sometime shows the full version of an image. Trying to right clicking all the time doesn't work, because it doesn't do anything when it is a small image that needs to be disaplayed in its full version - because they change the click behaviour via javascript.

To those confused: the new Twitter UI (you have to opt-in) displays the calendar without cropping.

Are you viewing it cropped or something? There’s definitely weekday labels above the dates.

Click through

That sounds like l10n gone seriously wrong -- maybe they literally wrote something like translation_helper(0) in that header which translates to Monday in $asian language and Sunday in English.

The bug looks like it occurs because the date picker aligns days/dates from 2017. February and March both begin on a Wednesday in the screenshot. I don't have iOS to test, but if this is the case, a flight for 1st Jan 2020 will incorrectly be aligned under Sunday instead of Wednesday.

Pretty poor bug

This, I don't think it's an issue of week-start-conventions.

That calendar picker seems clearly somewhere between confusing and outright broken. [ADDED: Just broken. Click through and they do have incorrect days labeled.] But there are at least two conventions: Sun->Sat and Sat->Fri (or Mon->Sun); the US tends to be the former and Europe the latter.

They should label the days to minimize confusion--I come close enough to messing up reservations as it is--but there isn't really a universal standard for the layout of weeks.

> ... the US tends to be the former and Europe the latter.

Australia is the latter, and so is most of Asia, and .. well, it's probably just bits of the USA that likes to have Sunday as the first day of the week. Date pickers in many US-originating software assume this, which is insanely frustrating for those of us not in the USA / not expecting / not wanting this.

> Australia is the latter,

Australian here. I was taught Sun is the first day of the week.

Where were you educated, may I ask? Do you recall if this was encouraged at school or in the home?

(Did you ever wonder why 'weekend' included only one day at the end, along with one day at the start, of a week?)

Growing up I never saw a (physical) calendar that had Sunday as the first day. It's only the past ten years or so they seem to crop up more, almost exclusively online.

I suspect the relatively recent incidence is from shipped-in American culture of course. Similarly I'm seeing increasing occurrence of "February 5th, 2019" rather than the standard Australian / British format of "5th of February, 2019" (noting these sequences aligns with mm/dd/yy and dd/mm/yy preferences for US and rest-of-world respectively).

> Where were you educated, may I ask?

Country Victoria. :)

> Growing up I never saw a (physical) calendar that had Sunday as the first day. It's only the past ten years or so they seem to crop up more, almost exclusively online.

Hmmm... thinking about it a bit, it shouldn't be too hard to locate historical sources of calendars over the years (scanned in, etc). "Pin up girls" (etc) were popular in places like mechanical workshops, and I'm fairly sure there would be hobbyist collectors out there with collections online. Cultural heritage kind of thing. :)

Interesting. Suburban Sydney here.

I did a brief trawl through historical calendars on the ebay, most dating back from the mid 1960's, most from NAB or other large institutions. Surprisingly I noted that they showed Sunday as the first day of the week.

So now I'm trying to remember what calendars we had in the house growing up, and how that fits with locale settings on most OS's assuming that Australians have Monday as the first day of the week.

Checked here on our macOS (High Sierra) build server. In the system locale settings (set to "Australia") it has the first day of the week as Sunday. Which is what I'd expect, as that's the first day of the week I was taught and am used to. :)

Note - I don't think that's as change I made, as I doubt I've gone into these settings before. Not 100% sure though.

Very interesting. GMail uses Monday, but I'd have changed that a decade or so ago had it been otherwise. I checked on kde calendar (something I've never run before) and it's using my en_AU locale - and it's picked Monday. But http://demo.icu-project.org/icu-bin/locexp?d_=en&_=en_AU suggests the CLDR identifies AU as 'Sunday as first day of week', which is highly alarming. Do you know if MacOS uses CLDR, or would it be picking up Apple's assumption about AU locale preferences? (Do you have colour or color settings in your control panel?)

Wasn't sure what CLDR is ;), though a quick search online turned up a relevant sounding Wikipedia article:


In that, it mentions macOS does use it.

The macOS "System Preferences" (system wide control panel) does have a colour settings area. No mention of CLDR, it's more about the locally connected displays and their display gamut (eg Adobe RGB, sRGB, etc).

To be clear, I was wondering if the regional preferences for AU meant their colour settings spelled colour with an ou not just two o's.

I think we can probably chalk this up to my insulated childhood, and a subsequent cultivated intolerance to Sunday-first calendars.

Ahhh. The System Preferences spelling of colour is ... "Color". Looks like it's hard coded, not picking up the correct spelling for Oz. :/

And yeah, no worries. :)

>Even just labelling the days would help

>I assume that's because he's used to...

Perhaps you should actually look at the screenshot instead of assuming?

The column February 2nd is in is clearly labeled as Thursday. There's no room for ambiguity there.

It's a bug. #stopuserblaming

It is. However, the screenshot they posted on twitter did not show the relevant part of the image unless you clicked through.

What's even more sad about the Twitter thread is that AirAsia Support is responding to everyone that commented in the thread. The responses must be automatically generated and triggered by any one of the comments... Something is definitely wrong with their system.

It seems simply employees got the task of dealing with it. But not doing anything would seem bad, so ... they reply as if every new subthread would be a genuine "bug report".

Amazing instance of how not to do teh twitter if you are a corporation.

Charge back? "I purchased a flight leaving on a) Thursday b) Feb 2. Product did not meet requirements."

To play devil's advocate: this is tool for helping you to search for a product. The official transaction happens at the end when they show you the date, time, airports, costs, etc. all on one page and you click "approve". (Presumably, the date was correct there.) One can certainly argue that their sales process was misleading (if only due to incompetence on their part), but that's a slightly different complaint than they saying they didn't deliver the product you agreed to purchase.

Yes, that's an argument a lawyer might make, but I disagree with the premise: Any reasonable interpretation of "agreeing to purchase" takes into account the entire dialogue between the merchant and customer, in which case the merchant told the customer two different things, and the customer reasonably didn't notice that one was different. There's no reason to assume about which version the customer agreed to.

If both parties thought it was a different date There was no "meeting of minds"

Can't wait for airlines to add another confirmation screen to the checkout process. Please type "Yes I want this flight and I double checked the dates are correct" to proceed.

You mean: "I purchased a flight leaving on the 3rd Sunday in February".

But this should be the last resort. You should try and resolve it with customer service first. You should publicly complain about something like this anyways, so you might as well until after that doesn't resolve it before making a charge back.

You would be surprised how often my US credit card has saved my a... from insane European customer service.

Hello Wizzair :-)

Could you elaborate a bit on what went/goes wrong with wizzair? (We fly with them about once a year, and so far no problems.)

I bought a Wizz "membership", promising a 10 US$ discount on all flights. Somehow I was not able to apply this membership to flights I bought after the first booking since it took them some time to internally activate it. The discount was only granted for the first two flight legs.So I bought a total 6 flight legs for 500 dollar total but based on my membership the charge should have only been 450 dollar.

I emailed them and they said that they overcharged me and asked for a 50 USD voucher since I wanted to buy extra check-in luggage anyway. They told me that my membership can not be applied to the selected flights. I emailed them screenshots, showing them that NOW I could apply the discount if I bought again but they did not accept. "Decision final."

I felt this was fraudulent, so I did a backcharge of all the charges. First the CC company settled with me, then with them, then after threatening legal action the CC voided all charges. I booked the flights with major airlines for basically the same price later (I am all major alliances gold status :-) ).

Was it worth it? It totally pissed me off. I even did not ask for money back but just for an in-house credit and I hate it when big companies try to play hardball with me. Yes, it was worth it.

On the other hand, a Chinese guy tried to sell me my own bike on a "street bicycle shop" that was stolen a few month before. I yelled at him a little bit and I gave him 100 RMB for repairs he did, bought a big lock-chain from him for another 100 RMB. These "street shops" guy are poor, they have no money. Yes, I could have called the police and fucked him over but it is easy to play hard ball against a poor guy. More fun to play hard ball against a company.

Thanks for the details!

Airlines don't like admitting mistakes, and even less they like reimbursing people.

We tried the membership discount, and it worked as it should. (I bought it with the flight, so it applied instantly. Then I booked for a few more folks. But lately it doesn't make much sense, because it's only valid for one year, and who knows which budget airline will be the cheapest when we actually figure out when and where we want to go.)

Air Asia, like many discount airlines, charges different fees depending on payment method. Paying by bank transfer carries roughly half the fee of paying by credit card. So a lot of people can't do chargebacks.

AirAsia is a flaming disaster. I remember booking a flight out of Bangkok. Well, it turns out that I actually booked a flight out of the once named Bangkok airport, which isn’t actually even in Bangkok.

I complained and the “support” rep said “I hope you learned your lesson.” So I called my bank and disputed the charge, getting a full refund. Apparently they never figured out how to challenge my dispute. I hope they don’t learn that lesson.

I was sufficiently curious about this that I went and checked AirAsia's Wayback machine for this. AirAsia's flights moved around 1st of Oct 2012 from BKK to DMK. For this date, it shows two Bangkok options, listed as "Bangkok (DMK)" and "Bangkok (BKK)"[0]. By January 2013, only DMK is shown, as "Bangkok (DMK)"[1]. By the next year, it's labelled as "Bangkok - Don Mueang")[2].

[0] https://web.archive.org/web/20121001094838/http://booking.ai...

[1] https://web.archive.org/web/20130107034342/http://booking.ai...

[2] https://web.archive.org/web/20140102040509/http://booking.ai...

DMK is very definitely in Bangkok. It’s about the same distance from the city center as BKK is.

Much like the support rep, I also hope you’ve learned to not assume that major, world-class cities only have one airport. Somehow I doubt you’d have made the same mistake in London or New York.

It’s very definitely not AirAsia’s fault that you didn’t check the airport code, and would have happened on any other DMK-based airline.

Their website said “Bangkok”. I’ve traveled all over Asia and Europe without this problem.

DMK (Don Mueang Airport) IS in Bangkok, so yes, the website should say "Bangkok." I will guarantee with 100% certainty that your reservation confirmation and your boarding passes (whether printed or electronic) included the code DMK and not BKK.

There are a lot of things to complain about when it comes to airlines in general, and AirAsia specifically. But not knowing what airport you booked, that's on you.

Their website was correct. Why did you assume Bangkok meant Suvarnabhumi?

If you Google for “Bangkok to Singapore” half of the flights Google will show you are from DMK.

If they’d listed UTP as being Bangkok, then sure, I’d have some sympathy, but referring to DMK as being Bangkok is probably more valid than referring to NEW as New York.

I dont understand, that is one of Bangkoks airports?

Yeah Bangkok has two airports: Suvarnabhumi (BKK) and Don Muang (DMK). BKK is the airport you land at if you are going to Thailand from Europe or North America, etc. (but not necessarily Asia). DMK is the old international airport that mostly serves domestic flights and a small set of international flights to Singapore, Cambodia, Vietnam. Air Asia only has flights at DMK so when they list Bangkok they are correct.

Strictly speaking, BKK (Suvarnabhumi) is not even in Bangkok but another province, Samut Prakan. DMK (Don Mueng) is actually the one in Bangkok.

The split is technically meant to be low-cost vs full service carriers, but it ends up being largely as you describe too

Which airport is that, BMK?

Similar thing in Germany - I used to live close to Frankfurt-Hahn in Germany, which is nowhere close to Frankfurt, it was renamed to Frankfurt-Hahn at the request of Ryanair.

Three times I bumped into people asking in which direction to walk to get in to get into Frankfurt - it's a 90 minutes drive...

I was there when it was just Hahn AB. When Ryanair & Air France took over after the base was closed [0] and renamed it, I knew something shady was going on. Cheap flight, but then a 2 hour bus ride to Frankfurt am Main. I bet people got angry after being fooled.

[0] Which was sad. All the pilots left with their F-16s to go to war, and the base was closed while they were gone, leaving their wives & families to pack up and return to the US.

To add to the list, there was an attempt to change the name of the Stockton Airport to San Francisco-Stockton Regional Airport. About 80 miles from San Francisco.


That is nothing. Try flying to Australia and end up in Canada:


Or flying to Oakland and ending up in Auckland.


I assume you're talking about DMK (Don Mueang International Airport) once called "Bangkok International Airport"

Technically it is in Bangkok, it's the same distance from downtown (Asoke) as it is to the newer BKK (Suvarnabhumi Airport), just north instead of east.

This is especially funny.

DMK, which is presently served exclusively by LCC, is in Bangkok proper.

BKK, however, is NOT in Bangkok proper.

When I booked with AirAsia, it always said "Bangkok - Don Mueang (DMK)" in the booking page.

This is 100% your fault.

Poorly/ambiguously named airports seem like a common theme. They're often named after a nearby major city, despite being inconveniently far from the respective city.

> despite being inconveniently far from the respective city

Perhaps, but not in this specific case, where DMK is no further than BKK. I'd have some sympathy for someone trying to get to London and ending up anywhere other than LHR, LCY, or maaaybe LGW. "London Oxford Airport" and "London Ashford Airport" are particularly egregious.

It's less of a problem nowadays with everyone carrying smartphones, or at least having internet access to vet these things.

But back when maps were on paper and travel agents used for the most trivial of trips, the airport names played a significant role in (mis)informing the traveler.

Ages ago when my elderly parents traveled to San Francisco to visit me, they had AAA book the flight and hotel without checking anything. They expected to land in San Francisco and stay at a nearby hotel with convenient access to the city.

SFO International is in Millbrae, quite a ways south of San Francisco proper. The nearby hotels are in an isolated pocket of industrial space on Old Bayshore Hwy, with no conveniently accessible public transportation unless you like walking on highway overpasses.

It does seem like a useful "lesson" to learn; that airports are often named after the nearest major city. Chicago Rockford International Airport is 85 miles from Chicago, but four miles from Rockford. Yet Chicago is the first city mentioned in its title.

I'm very curious how a bug like this could even happen. At a glance it doesn't appear to be the classic "ISO week-based year" problem discussed on HN a few times before, but somehow the code thinks Feb 1 2019 is a Wednesday... weeks starting with Sun vs Mon wouldn't account for the off-by-2 error seen here.

I looks as if they started their calendar year with January 1st on Sunday. Maybe they just never even bothered to align the dates with the week days.

I’ve been scratching my head about this too. I can’t find a way to introduce such a bug in a date picker. The only one I’m thinking is a off by one when reading the month/year.

For example an API with 0-11 months, and one with 1-12. You’d get info of the wrong month.

Can't be the month, it has the right number of days.

Can't be the year, 2018 and 2020 also don't have February 2 on Thursday.

It can't even be the month but only for the starting day, neither January nor March have their 2nd on a Thursday.

Could've been hardcoded for an older year for a deadline? Never got implemented to use the correct calendar based on the year?

I sure hope not, because in that case that thing has been broken for the whole 2018!

According to that Twitter thread, it has been broken for 2 years.

As another comment pointed out, just try it with a 2-digit year: https://www.timeanddate.com/calendar/monthly.html?year=19&mo...

It's stupid to not have a yyyymmdd format anyway. The American mmddyyyy format causes a lot of confusion.

"session timeout" is the worst thing that can happen when you're trying to book tickets. The whole experience or booking flying tickets is awful and generally takes a lot ot time. When this happens and you need to refill information that's when you book flights for the wrong date. I'm wondering how common this mistake is.

Hm. I ordered a hotel room for today (Saturday, Feb 2) earlier in the week, and was messaged asking what time I would be checking in on Thursday the 2nd. I wonder if the big is in a common industry tool.

Something's up. I got a letter a couple weeks back from my kid's school requesting a permission slip for a theater trip on Thursday Feb 2. Couldn't figure out how they landed on that date.

This gets more interesting... Googling for "Thursday Feb 2, 2019", "Thursday February 2nd, 2019", etc. returns a surprisingly large number of results containing that exact string (but fortunately, far less than the number of results containing "Sat Feb 2 2019"). If it was a widespread issue, we should be seeing more news about it throughout the rest of the month.

As someone else in this thread figured out, Feb 2 0019 was a thursday.

It's pretty ridiculous how long we've been stuck with javascript or dropdown datepickers.

I realize it's subtlety complex to internationalize but it's been a common input on forms for so long you'd assume native browser support would have been present in every browser at least a decade ago. It's baffling to me that you still can't reliably use the input type of date due to lack of support.

To be fair, custom Javascript on a website can do things that are too rare to be baked into general browser behavior, such as adding colors or icons or text to certain dates, date-range validation, disallowed dates, etc.

Is anyone else weirded out by how the AirAsia twitter account is responding to the comments? It looks like automated responses but then signs with an employee name.

This is a discount airline. They employ all kinds of tactics to part money from the customer, excessive credit card fees on top of a lousy exchange rate, very small baggage allowance hidden in the fine print, useless insurance offers, etc.

You should be examining the confirmation screen extremely closely with an airline like this. Go ahead and blame them if you want to, but they make money on price, not reputation, and the market has chosen price over quality of service.

That's too simple a read. There are many many many low-cost airlines in Asia, and AirAsia is rarely the cheapest for any given journey. They are -- however -- pretty reliable, reasonably well organized, and I travel with them regularly on the basis that they're not as cut-throat as some of the other low-cost options.

That depends... to and from Malaysia they are often the cheapest. They also have the newly reduced 7kg carry on rule (from the pretty standard 10kg).

This is all subjective, of course, but I really don't see much of a difference between them and Peach, HK Express, or Scoot.

As a side note, Peach once double charged me for the same flight and wouldn't refund my purchase, saying it was because I used linux, and that is an unsupported OS. I contacted my credit card agency and they told me the best thing was to take the flight and charge it back after I flew, or they might cancel both tickets. You really have to be careful with these types of companies, but in my opinion, it's worth it if you pay attention.

I once tried to book flights on a popular airline website. I used four different web browsers and each one displayed the content differently, all resulting in "unexpected error". The only browser that would work was chrome, it displayed the "missing" field (date of birth)...

I have seen this on Jetstar in Australia recently. Disgraceful.

eBay had a bug sort of like this that prevented posting items for sale for about three years.

"Works on our machines!"

I ran into a similar issue applying for Global Entry. Luckily an appointment at 3am on Saturday suggested the times were in UTC. Nevertheless this was unnecessary uncertainty and anxiety - what about those who aren't familiar with UTC time?

How can we design datetime libraries to prevent these issues? Or at least make it so that error-prone behaviors must be very explicit?

Well, the problem is web apps, or seen another way, lack of good distribution mechanisms for desktop apps.

Write your frontend in Java 8 and you have access to a full blown date/time library that handles all the edge cases and has been well thought out. Do it in JS and you got bupkis.

Wait, their customer facing UI only supports a timezone that virtually no humans use?

That doesn't sound like a datetime library design problem, it sounds like they totally neglected to use a datetime library at all.

When I went to get global entry, there were tons of people showing up 12 hours early.

A few months ago I had to book a round-trip and one-way trip with the same flight for the first trip. Naturally you cannot do that in one go so I book the two things in two different orders.

I made a mistake, during the booking my credentials were automatically filled in the passenger form, I didn't checked and I ended up booking two time the same flight for me, on the same plane, with the same passenger id.

Fun fact, when I check-in for the first ticket, then the second, the website told me that I was already checked-in (which shows that internally the two tickets were seen as one).

I called the support and they reimbursed me the second (one-way) ticket. I had to book another flight the same day which cost me around 300€.

KLM, if you read me, your booking system is really fucked up. I can't understand that with the volume of order and the price of the tickets we don't have a bullet-proof system in place for years already.

More than once over the years, my wife has given herself an ordeal with reserving airfares and hotels and then had to go through website or phone support to try to untangle it. I watched it happen once, and diagnosed it as a crappy website using cookies/local storage for what appears to be a normal HTML form. This recurring flaw makes the reservation system completely unsafe with multiple tabs performing searches in parallel.

She has an almost compulsive habit to go through the booking process, pause on the final review screen with the "submit" button, and research other options in extra tabs before returning to submit the original order. The result is that she is looking at that previously rendered summary, presses submit, and gets a completely different configuration booked because the activity in the other tab contaminated the state of the pathetic web app.

Due to these experiences and others, I mistrust web programmers and try to avoid complex state. I defensively complete all my research, and then I start a fresh booking sequence in a private browser window to directly snipe the selection I desire.

AirAsia used to store passwords in plaintext. I know this because they sent me my original password when I asked for a password reset

This was a couple years ago. I don't know if they've fixed it since.

In the US by LAW you have 24 hours to cancel a non-refundable flight penalty free...not sure why you'd freak out in that case if you accidentally booked the wrong flight or date.

Did you know that only 4% of humans live in the US?

You are getting downvoted but bringing up a good point. A few commenters are talking about US laws when his Twitter profile says he is located in Poland.

Personally I think it's the same thing as assuming everyone is male. Also assuming everyone is a software engineer. etc.

I was heading back home for a month. I went and took my dog to the kennel, bussed down to the airport. Was all ready to go after a couple days getting ready.

Went to check in and realized my flight was 6 weeks in the future. They let me cancel, but a flight that day was hundreds more and I wound up sitting at the airport all day. I triple check when I book flights with google flights now.

It's not a bug, it's they business model. Why do you think that are so cheap and so successful at the same time?

There is some truth to this. A couple years ago I bought three tickets from AirAsia. A week before the flight there was a volcanic eruption which canceled all flights at the destination. They issued me a credit voucher for future flights. Half the credit expired before I next needed to travel to an airport they service.

I still use them because sometimes they are $300 cheaper. And they don't play hardball with luggage weights, unlike some full fare airlines like British ("Your bag is 7.8kg, the limit is 7kg, if you want to carry it on you need to remove five pieces of clothing and put them on yourself").

They rebooked him for the correct dates: https://twitter.com/pugson/status/1091946878072049664

This happens because people need pretty fancy UIs. And companies want to provide these UIs.

We should be using text and structured data for all services by default. Companies should be providing simple, very simple text (or JSON if you want that) APIs by default and people should and could learn to use them.

Web browsers or other apps should and could be packed with nice UIs to browse these APIs.

Optionally, after these default browsable easy-to-use APIs were working, people could translate them into more fancy UIs, but for most things, like booking flights, that wouldn't be necessary at all (who wants a flashy colorful experience when buying tickets?).

Many big companies barely get HTTP correct. (Side-effects on GET… site breakage on back button…) I have very little hope that most could get a more complex protocol working to even a basic degree.

This is what happens when you write your own datepicker library... or crypto library, for that matter

Feb 2 is _clearly_ in the Friday slot in that picture. /s

It's obviously under the "Thu" label when you look at the uncropped picture.

Feb 2, 2019 is a Saturday in any event.

[OT] ...and I had to uninstall twitter to be able to read the linked tweet (because I didn’t want to log in)

> Reads headline


> AirAsia

Oh, yeah not surprised.

Had something similar trying to schedule a phone interview. The confirmation email text gave a time 3 hours before the date picker time displayed on their site. I spoke to them on the phone to manually schedule me and then we ran into a problem where there were no daily saving time zones so I had to give myself a two hour window to be sure.

Assuming people start their weeks on the same day as you do is risky at best, but interestingly this case looks like they corrected the wrong way around, resulting in a week that starts on Tuesday rather than Sunday (or Monday, which it may have been before the 'correction').

Edit: Apparently the image I was looking at wasn't the whole image.

Click through and see the whole image.

Oh, so they actually did indicate the weekdays. Sorry, twitter's crop of the image made it look like they just had a weirdly aligned calender.

Registration is open for Startup School 2019. Classes start July 22nd.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact