Supported by IT Buy, 10,000 products online every day

Why I hate Smile internet banking

I’ll chime in here with my grumpy old man speech.

The online offering from Smile is a joke;

1 – its non-standards compliant (might not matter to most people but as a web designer myself its important that sites are compliant so that people with alternative methods of rendering a site, screen readers for instance, get a consistent result). It uses little (rubbish) images for links instead of an actual anchor element, buttons are images and not browser implemented buttons for form submissions and so on and so on.

2 – it looks awful, whoever designed it should be shot. Whilst I accept they want to use their signature colour there are more subtle ways than using pink on white or white writing on a pink background..its virtually unreadable in parts, linked with the tiny default text size. Those nasty image links for the menu on the left hand side are laughable and look like a child created them…they shouldn’t be images anyway but some sort of styled unordered list with hover over styles (see above)

3 – it lacks some of the most basic functions that you would expect and are not hard to implement.
- search transactions either within the narrative or by date
- rename a money transfer so the reference makes sense to the recipient. You cant even remove one for gods sake! So if I set up a transfer to a friend to pay for a holiday in 1999, the next time I want to pay them for something the reference will still say holiday 1999 and I cant change it!!! Why..!!! I cant delete it and recreate one with a decent narrative either so I have to create another one and pollute my screen with multiple payment setups to the same person! Its insane that they make you do this.

4 – If you pay a bill and select one of the pre-defined recipients (in my case good energy for my leccy bill) it doesn’t tell you on the screen when you select it what bank account and sort code THEY think good energy is using. They recently changed and I have no idea if smile have changed the details…so I create it manually and so the whole pre-defined list becomes a waste of time.

5 – links that are not images are not highlighted in any way…so for instance you click on current account from the main home screen to view your account but it is not underlined nor does it give any indication its a hyperlink.

6 – if you click the back button on your browser it logs you out. At least try to deactivate it with javascript first and popup a warning. If the disable fails then log the person out. Annoying!

7 – No further details available for any of MY transactions. I cant click on a transaction and find out what time it was made or what the narrative was and so on.

8 – Did I mention that you cant even search or filter by date or narrative or type of transaction…I mean for gods sake, I have to trawl through every statement one by one manually looking for a transaction, way to really utilise the power of a database!

9 – If I get a new switch card the old one still appears in my list of cards to use with the little authorisation reader…at one point I had 4 cards up there only one of which was active…I had to contact customer support to get them removed…why the hell are they not removed anyways….??

I like banking with Smile, I like knowing my money is used wisely in ethical investments, I like their customer support and they are pretty quick in fixing things, BUT this web application is like a dinosaur I dont know who is responsible for it but I would be ashamed if I wrote it.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • Slashdot

Security questions, what’s the point?

I was called today by two organisations who wished to verify my identity by asking me to tell them personal information or pieces of my security information.

Does this make sense to you?

We are told over and over again to protect our passwords, security information and personal details and yet I am expected to reveal some of these over the phone to an unknown person from an unknown company. Sure they tell you they are from the bank but they could just as easily be from Nigerian Scams Inc, though the poor English would probably give them away!

Do not reveal any personal or security information over the phone just because someone asks you to. If its important tell them to write to you or give you an extension number from the organisations main switch board. You can then verify you are indeed calling who you expect and can then identify yourself using your personal data safely.

When I mention that it seems nonsense to tell your customers to always be vigilant and protect their data then expect them to give it up so easily the operator at the other end invariably answers;

“Well how am I supposed to confirm its you?”

Without first addressing the more inportant question of how do I know its the bank calling!

Please stop this practise all you banks and hospitals and doctors, you are re-enforcing exactly the sorts of behaviours we are trying to grow out of.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • Slashdot

Magento and IceCat Connector from bInTime – Not working

Hey all,

Many people use Magento as a shop front end, its a CMS based on Zend that is geared towards shop fronts rather than blogs or intranet sites. It is based on an EAV architecture which most developers will hate but perhaps was the best solution to providing a completely ‘free’ and open design for describing whatever data you happen to want to sell or promote. An EAV architecture is very different from a standard normalised database and is hated and loved in equal measure!

Icecat has developed into the leading provider of product data online. In contrast to people like CNET, some of there content is available for free via their XML and REST services. You can sign up easily enough for a free account at http://icecat.co.uk and start experimenting straight away. There are hundreds of vendors on the free list and you are welcome to extract all sorts of useful data about these vendors products, including specification, PDF data sheets and good quality images. As I have been responsible for parsing, scraping and collecting data for tens of thousands of products myself I can appreciate what a mammoth undertaking this must have been and I praise Icecat for providing such a useful subset of their info for free.

Combining these two enables you to quickly develop and launch a fully featured website with very little actual hard work. Get your products imported into Magento with suitable SKUs and manufacturer names, install the plugin from bInTime and you are off. All your product pages will display the lovely info from icecat.

Thats the plan anyway but it doesnt work out like that, partly due to errors in the documentation and partly due to the way Magento is setup and has been changing over time and partly due to errors that I think have sneaked into the plugin.

You can get the documentation from Magentos site along with the actual plugin (you’ll have to register). I wont go over the default setup steps as the documentation covers that.

As far as I can make out in its current form (Version 2.2.2) running on Magento 1.4.2 it just wont work out the box as it will not be able to recover your items part number or SKU.

Icecat works by returning an XML document if you give it a valid SKU and Vendor/manufacturer name to chew on, but the code in the plugin will never get the right data as it stands. This line is to blame;

$query = $connection->select()->from(‘eav_attribute’,'attribute_id’)->where(‘attribute_code = ?’,'mpn’)->where(‘entity_type_id = ?’, $entity_type_id);

The keypart is the hardcoded value ‘mpn’, the upshot is that it is looking for the entity named ‘mpn’ which is not by default defined in the Magento attributes list so it wont exist for your newly created shop unless you have already added it as an attribute, so the script wont return any valid SKU to send to Icecat and you wont get any shiney new information displayed. Unhelpfully the error alerts also seem to be broken in this version so you dont actually get any errors either!

If you define a new attribute called ‘mpn’ and populate it with the correct SKU and have also already defined ‘manufacturer’ as an attribute and populated that it will work – wohoo. This is assuming that you have also set these two attributes in the relevant boxes on the Icecat configuration page within Magento.

If you already have a different attribute which is your part number, mpn or sku then no matter what you select in the configuration menu it is still looking for ‘mpn’ cos thats whats in the code. So if you already have some other attribute then you will have to alter the line above in the file located at httpdocs / app / code / local / Bintime / Icecatimport / Helper / Getdata.php to the attribute name you have used. IT will then work – wohooo again.

Hold your horses though, if like us you had already used the system value ‘sku’ as our unique part numbers (its included in the default attributes and is a special sort of attribute because it has to be unique and is used throughout the system to identify the item, it belongs to Magento as it were), switching the hardcoded value ‘mpn’ above to ‘sku’ fails to pull up a valid sku as well. I dont know enough about the EAV structure to tell you why, but I suspect the actual attribute sku is held in a different table to user defined ones or non system attributes.

If you want to use the ‘sku’ attribute of the products, which makes perfect sense to me, this is available at anytime on a product page using the code;

$_product->getData(Mage::getStoreConfig(‘icecat_root/icecat/sku_field’));

and oddly enough this code is in place in the plugin but is commented out, it looks something like this in the helper module at httpdocs / app / code / local / Bintime / Icecatimport / Helper / Getdata.php

// $sku = $_product->getData(Mage::getStoreConfig('icecat_root/icecat/sku_field'));
 $entity_type_id = $this->getEntityTypeId();
 $connection = Mage::getSingleton('core/resource')->getConnection('core_read');
 $query = $connection->select()->from('eav_attribute','attribute_id')
->where('attribute_code = ?','mpn')->where('entity_type_id = ?', $entity_type_id);
 $attribute_id = $connection->fetchOne($query);
 //echo $attribute_id;
 // var_dump($attribute_id);
 //die();

Lots of commented testing code still left in there..which in this case istn a bad thing! So if you want to use your existing sku attribute with the icecat plugin just tpye this in at the end of the code block above;

$mpn = $_product->getData(Mage::getStoreConfig('icecat_root/icecat/sku_field'));

And as long as you have sku and the user created attribute manufacturer defined and selected in the configuration menu all should be well.

Happy Icecat scraping!

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • Slashdot

hMailserver and HTML email

hMailserver is a free, but not open source, email server for windows servers. Its simple and fairly comprehensive and can do most of what you might need for a webserver.

Though HTML emails are way outside the scope of the original specification for emails, people are used to them and clients demand them, even though they can increase the chances of being spammed and are open to all sorts of abuse! So they are here to stay.

I was having an issue with HTML formatted emails over a certain length. It would send out the right headers but none of the clients I used to read the emails would display them as HTML but as plain text with none of the tags rendered.

It turns out that if you send an HTML formatted string over 1k in length without any line breaks or carriage returns something weird happens inside hMailserver and it fubars the resulting email. Its probably some sort of encoding issue within hMailServer when it is saving/retrieving the email. Anyways if you add regular carriage returns the problem goes away and as its HTML the carriage returns and other whitespace dont affect the rendering.

This is in version 5.3.3, it is rumoured to be fixed in 5.4 but I have not yet installed it.

Cheers.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • Slashdot

Integer division in MSSql

Hi all,

Just thought I would write a quick note about integer division in MSSql and wht you dont get the, prehaps, expected results when working out fractions or percentages.

Simple test case;

SELECT 2/3

this will result in 0 not 0.666666. This is because it is viewing 2 and 3 as integers and so is doing integer division. You can get around this by casting one of the numbers as a float;

SELECT CAST(2 AS FLOAT)/3

which will give you the, probably, required result. The engine is not rounding the result to the nearest integer, I think the correct term is truncating or perhaps not even that. It knows that 2/3 has a fractional remainder but its not concerned because it is performing integer division so any fractional remainder is simply ignore and 3 goes into 2 0 times. For multiplication this doesnt matter as no two integers when multiplied results in a fraction.

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Technorati
  • Slashdot