Archive for September, 2006
An open letter to FlyBE on usability
Last night I booked some flights with your web site and must say I’m rather disappointed with the experience. We needed to book two return flights with one going out on a different day but both returning on the same flight, and ideally next to each other.
It is a little disappointing that to book two different flights that you have to book each one separately despite obviously being possible on the phone or with non-airline sites such as Amazon. To avoid booking one and finding the other not available and being left with useless tickets we decided to book each using a different computer so that we could try and make sure it went through at the same time.
Our first issue was that once you have chosen your flights there is no indication of the dates again until the payment has been processed. Other sites seem to have no problem displaying a "current itinerary" down the side at every stage yet with yours this place is instead full of such great things as "You saved £10 booking online!" in giant text and other less important details than a reminder/confirmation of what I have chosen thus far.
The next page, that of your details, then completely omits GUERNSEY as a country forcing us to choose UNITED KINGDOM. For a business that used to be called Jersey European it seems you have forgotten that the Channel Islands are not and have never been part of the UK. Would it be that hard to get it right? After all you’ve even got VATICAN CITY listed although I doubt you get many bookings from it’s residents.
The next part automatically includes travel insurance – which is of course completely unnecessary if you are booking on credit cards or have a travel policy but it there it is and switched on as default. This adds to the whole spiraling-supplements experience that seems to be FlyBe.
Also here is a "I’m a UK resident" check-box. What do I select being from Guernsey? Do I tell the truth and uncheck it or leave it checked as you forced me to choose UNITED KINGDOM as my country?
An option here lets me choose my seat for an extra £5.00. There is no indication of course that it is £5.00 PER PART not per booking so for return trip will be an extra £10. The conditions also make it clear that you can renegade without refund on this arrangement if you feel it’s not safe or that you didn’t make it to the front of the queue within the allocated check-in time.
We struggled through and elected to pay the £2.50 per-person-per-leg-per-hold-item charge. If there’s one thing that’s really annoying about commercial flights it’s the time it takes to get into your seat while people try to stuff over-sized items in their overhead lockers, other people’s overhead lockers then under the seat in front of them. With a supplement on hold baggage I can only assume it’s going to get worse.
Finally, the payment screen and one that seems okay apart from the fact that you’re about to pay for something you can’t get a refund on and there is no final confirmation as to what it is you are buying in contrast to every other e-commerce site I have ever used.
In order to ensure we both got our flights we clicked okay at the same time.
One completed, the other came back with a card error despite the details were okay. I can only assume your system was not happy about processing two different transactions with the same credit card details.
Hitting "retry" to return us to the previous payment screen led us to a page saying our booking was now invalid as that level of seat had gone and now only more expensive ones were available.
Joy, we get to do it all over again for one of our tickets.
Luckily for us we managed to get the second booking through, albeit at a more expensive price.
Using your site is like playing Russian roulette.
[)amien
Extending GridView to access generated columns
ASP.NET’s GridView is a useful control and one of it’s best features is it’s ability to generate the columns automatically from the data source given.
The problem however is that these generated columns are not exposed as part of the Columns collection or indeed available at all so you can’t hide or manipulate the selected columns.
One simple scenario might be that you want the first column to be a “View” link to drill down into the row displayed. Whilst you can add the column to the GridView before data binding you can’t actually pull out the information needed from another columns to construct the URL.
By sub classing GridView you can obtain this functionality with some caveats.
Version 1: Auto generated columns added to the Columns collection… with caveats.
using System;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
public class GridViewEx1 : GridView
{
private DataControlFieldCollection originalColumns;
public GridViewEx1() : base() {
}
public void RecordColumns() {
originalColumns = new DataControlFieldCollection();
foreach(DataControlField column in Columns)
originalColumns.Add(column as DataControlField);
}
public void ResetColumns() {
if (originalColumns == null)
RecordColumns();
else {
Columns.Clear();
foreach(DataControlField column in originalColumns)
Columns.Add(column as DataControlField);
}
}
protected override ICollection CreateColumns(PagedDataSource dataSource, bool useDataSource) {
ResetColumns();
ICollection generatedColumns = base.CreateColumns(dataSource, useDataSource);
foreach(DataControlField column in generatedColumns)
if (!originalColumns.Contains(column))
Columns.Add(column as DataControlField);
return Columns;
}
}
This version provides some compatibility with existing code/expectations in that the autogenerated columns are part of the Columns collection after the DataBind.
Should you call DataBind again however as well as wiping out the changes to the generated columns (they are, after all re-generated) any additional columns added to the collection after the first DataBind will also be lost as it does not track which are added by the programmer and which automatically.
Version 2: All bound columns exposed as BoundColumns, user ones as Columns.
using System;
using System.Data;
using System.Collections;
using System.Web.UI.WebControls;
public class GridViewEx2 : GridView
{
private DataControlFieldCollection boundColumns = new DataControlFieldCollection();
public GridViewEx2() : base() {
}
public DataControlFieldCollection BoundColumns {
get { return boundColumns; }
}
protected override ICollection CreateColumns(PagedDataSource dataSource, bool useDataSource) {
ICollection generatedColumns = base.CreateColumns(dataSource, useDataSource);
BoundColumns.Clear();
foreach (DataControlField column in generatedColumns)
BoundColumns.Add(column as DataControlField);
return BoundColumns;
}
}
After the DataBind you will have full access to the generated columns as part of the BoundColumns collection.
[)amien
The Scam: Winning a lottery you didn’t enter
The stream of spam, scams and phishing attempts increases day after day. Reporting phishing and spam inside gMail is all well and good but it doesn’t help anyone outside GoogleMail nor solves the issue at heart.
I can only assume the recent increase in scamming and phishing is because either:
- It’s so successful more and more scammers are taking it up
- There are less gullible people to go around and so they are fighting to find who’s left
But how gullible are people to believe these emails? I somebody came to your front door and announced:
Hi, I’m from bank X! Can you just fill in your account details and passwords on this piece of paper for me. It’s ‘due to security concerns’ and look, it’s legitimate – there’s a bank logo at the top of the page.
Who on earth would believe them? And yet it works on-line even though lately the phishers aren’t even trying to fake an SSL or even obscure the URL.
Here’s another lottery scam to arrive in my inbox complete with comments. For those not aware the scam operates by convincing people they have won money in a lottery they never entered.
Once you claim your winnings you find there are fees, duties, taxes followed by an endless list of excuses and expenses. You may even be invited to claim the prize yourself at which point you could find yourself kidnapped and held for ransom.
What a win indeed.
FROM THE DESK OF THE DIRECTOR: INTERNATIONAL PRIZE AWARD DEPT WINNING NOTIFICATION FOR CATEGORY “A” WINNER ONLY
Ah, the “International Prize Award Dept”. With a name like that how can anyone doubt their integrity.
ATTENTION!
Just in case you fell asleep since starting the message…
We are pleased to inform you of the result of the last final annual draw of our LOTTERY INTERNATIONAL Programs. The online cyber lotto draws was conducted from an exclusive list of 25,000,000 e-mail addresses of individuals and corporate institutions,picked by an advanced automated random computer search from the internet.No tickets were sold.
Hold on, no tickets were sold? Wow, they must have a mysterious benefactor who just keeps wanting to give away money then.
How advanced would a computer be to pick an email address from 25 million email addresses?
After this automated computer ballot, your e-mail address emerged as a winner in the category “A” with the following numbers attached Ref Number: GP 14-M-146-04,Batch Number: 573891545-NL/2006 and Ticket Number: PP 3802 /8707-01.
No less than three different long reference ‘numbers’…
You are therefore to receive a cash prize of $2,500,000.00. ( Two Million Five Hundred Thousand ) from the totalpayout.
Thanks for clarifying a 7 digit number was because I can’t read numbers that big. Clarifying the currency might have been more useful, what with the $ dollar sign being used all over the globe.
CONGRATULATIONS!!!
Made from all capitals and three exclamation marks so you know it’s real.
Your prize award has been insured with your e-mail address and will be transferred to you upon meeting our requirements, statutory obligations, verifications, validations and satisfactory report. To file in for the processing of your prize winnings, you are advised to contact our Certified and Accredited claims agent for category “A” winners with the information below:
Apparently my email address is now an insurance broker.
I wonder who certified or accredited their claim agents and in what. It certainly wasn’t in use of the English language.
MR.JERRY LAWSON Phone:+31 xxx xxx xxx
Email: jerrylawson2@yahoo.de
Ah, the international country code for the Netherlands, home to the lottery scam. A company that gives away millions of dollars operates of course from an individual Yahoo address – and one in Germany no less. I mean they couldn’t possibly afford a $10 a year domain name of their own.
Forwarding a copy to abuse@yahoo.de to get it shut down….
You are advice to provide him with the following information: Names: Telephone/Fax number: Nationality: Occupation: Age:
Sounds suspiciously like the start of an identity-theft set-up. Two scams for the price of one?
You are to keep all lottery information confidential, especially your reference and ticket numbers. (This is important as a case of double claim will not be tolerated).
Translation: Keep quiet, we don’t want your less-clueless friends pointing out this is a scam.
Members of affiliated agencies are PROHIBITED from participating in this program.
Affiliated with who? Law officials perhaps. I thought I’d already won anyway…
Furthermore, should there be any change of address, do inform our agent as soon as possible.
What? You never asked for my address so why would you care if it changed.
Congratulations once more from our members of staff and thank you for being part of our Promotional Program.
Thanks, I can’t quite describe how it feels.
regards,
Walter Jones.
Cheers Walt. Hold on who’s Jerry Lawson then?
Lottery Coordinator.
I guess Scum doesn’t have the same ring.
Check out the 419 Eater for more information on these sorts of scams.
[)amien
Rojo – how not to publish updates to your site
Rojo has been my favourite on-line reader for a while despite the annoyances and quirks but this weekends ‘upgrade’ got me wondering how incompetent the team behind it is and what exactly Six Apart have purchased.
There were a couple of problems before the upgrade – the one most users would have seen is the crazy unread counts which are almost always wrong – but you can learn to live with that.
The second problem was Rojo failing to pull feeds in – if you drill down and there’s nothing to read you are given the “This feed is failing” message which tells you zip about what they think is wrong.
In the case of DamienG.com’s RSS feed I was told by their support staff this was because they couldn’t connect to my server. GrinGod created a feed to my site’s Atom feed that *was* still updating so that excuse was shot down quite quickly.
It’s not just me either – major big blogs such as blogs.msdn.com would sit for hours with the same message before springing back into life.
Then came this weekends upgrade.
I have some experience with publishing code to commercial sites. This is the sort of plan we use:
- Install and configure secondary set of servers
- Load software to be tested onto those servers
- Let internal testers loose on them
- Let trusted end users loose on them
- Run load testing software to ensure performance
- Repeat until it passes
- Schedule the switch with the appropriate teams
- Make an announcement
- Switch over to the new servers
But the team at Rojo went with a different approach. As far as I can tell here was theirs:
- Take current servers off-line with a notice
- Load software for 20 hours
- Bring servers back on-line
I certainly don’t see testing on that plan.
Even basic developer-level testing should have spotted that the lower “Mark Page Read” link is missing a javascript: prefix rendering it a useless link to a 404, the fact that the “Mark Feed Read” isn’t refreshing the page along with “Add Mojo” too.
“Show unread only” may as well read “Show nothing” as that’s what it’s doing.
These aren’t boundary conditions but primary use-case scenario’s that are failing.
To cap it all now every single feed has disappeared in the last half-hour.
It has been reported that Rojo have raised at least $3.5 million in venture capital so why their software development process looks like an inexperienced developer publishing from his laptop is anyone’s guess.
[)amien