Have you ever typed in the wrong password? Did you ever try 3 or 4 times before getting it right? Did that frustrate you?
Usability guru Jakob Neilson is recommending that web designers stop using the password input box as it presents a common usability problem, without really increasing security.
More importantly, there’s usually nobody looking over your shoulder when you log in to a website. It’s just you, sitting all alone in your office, suffering reduced usability to protect against a non-issue.
Neilson’s argument is valid: password boxes do reduce usability. However, typing your password in clear text may present somewhat of a culture shock for most web users. I once typed my password in the “user id” field of Gmail’s login screen, and got worried for a moment, even though there was no one around. Even though passwords masks may not increase security, it represents security for many people.
Neilson suggests that the designer may add a “hide my password” checkbox option on the login screen for highly sensitive applications such as bank accounts. However, I think it would be more apt to add it to all login screens which show passwords in clear text – at least for now, and until we (web users) break the association of security and password masks.
A few clever designers have come up with semi-solutions to the password mask usability problem.
Chroma Hash by Matt Thompson allows you to determine if two password are the same (password and confirm password fields) by displaying a colored code beside each field.
Stefan Ullrich’s iPhone-like password input allows you to see a typed character for a split second before masking itself.
Nicole Sullivan of Yahoo is on a mission to promote a new way of coding CSS – an object oriented fashion. In theory it makes sense: the cascading qualities of CSS are similar to object inheritance, and there is need to have a standard coding practice defined.
Are the days of spaghetti CSS code coming to an end? Only time will tell.
Counting the number of records in a table or query is a pretty common task for developers. To count the amount of rows returned in a recordset, the syntax is:
SELECT Count(*) FROM tablename
The code is simple enough, but some people look at the * (asterik) and feel uncomfortable. A developer is always looking for ways to improve performance; it’s understandable to think you can get a performance boost with the following code:
SELECT Count(1) FROM tablename
After all, the asterik is usually used to select all columns in a table, and one should never select columns which are not going to be used. So why select Count(*)?
There are 2 reasons you should always use Count(*) rather than Count(1):
1. Performance
SQL Server Query Optimizer interprets the Count(*) differently from SELECT *. So when it sees Count(*) it automatically follows the quickest execution plan. Using Count(1) may cause the query optimizer fail and thus slow down your application.
2. Results
Count(*) will count all the records in the recordset, while Count(1) will count all non-NULL records in the recordset. So in some rare cases, Count(1) may give you unexpected results.
If it seems to you that everyone is using PHP and MySQL now, well… that’s because everyone is. PHP and MySQL rank number 2 and 3 respectively on Elance’s most-wanted skill chart published March 3rd 2009. Graphic design topped the list for the second straight month.
Companies and consultants are looking for and getting help building world-class websites, hiring experts in PHP (#2), MySQL (#3), HTML (#6), CSS (#8), XHTML (#17 – up ten spots), Joomla (#19) and AJAX (#25).
Other web technologies didn’t fare so well. ASP.NET fell 7 points to #52, and ASP fell 8 points to #74. Javascript fell 10 points to #28… however DHTML, which is essentially Javascript, jumped 27 points to #71.
Web Content, WordPress, and Blogs all ranked higher than SEO, indicating that perhaps people are realizing that good content is the key to high search engine ranking.
Here is a great overview of modern web design by Nate Koechley, front-end engineer of Yahoo. It covers using semantic HTML, progressive enhancement and unobtrusive javascript, among other things.