Wednesday, July 30, 2008

How to Disable Table Name Case Sensitivity in MySQL

MySQL metadata is case sensitive by default on Linux. That is if you have a table my_table, in lower case, then
select * from my_table
will succeed while
select * from MY_TABLE
will fail with some sort of table doesn't exist message.

If you want both statements to succeed, you need to put the following line
lower_case_table_names = 1
in your /etc/my.cnf or wherever you keep your MySQL configuration. Be sure to add the system variable to [mysqld] section of the configuration file.

Wednesday, July 23, 2008

Login Credentials and Third Parties

In my preparation for the move to Mac realm I looked at Plaxo as a potential vehicle of migrating my contacts from Outlook. Registration being complete, Plaxo promptly asked me to provide my Gmail password so that it could get to my address book, presumably. That was the end of the evaluation.

Asking for login credentials for a third-party service is plain bad. Whatever you say about not storing the password on your servers etcetera - I don't care about it. And when I see http in the address bar for a page that's about to collect my login information it just raises my eyebrows. Right, my password is about to travel the Internet in clear text.

For those starting a web 2 aggregator service - use OAuth. Please.

Friday, July 18, 2008

Enterprise Participation in the Open Source

In an interesting post
The solution for Google is to either adopt a more open stack in parallel to what they currently use, or to open source their internal technologies (as Facebook and Yahoo! are doing) in the hope that they will spread and gain adoption from more developers.
In fact, the above statement can be applied to any enterprise IT shop. All big shops I worked for rely on more or less sophisticated custom component libraries and application frameworks. While there is nothing wrong with a custom approach, oftentimes such libraries and frameworks are built to work around bugs and functional limitations in existing open source projects. E.g. I've seen quite a few components that wrap log4j.

An alternative approach that appeals to me is to get involved in the respective open source community and contribute your modifications and extensions to the underlying project. There are several benefits of such as approach:
  1. The custom in-house code becomes focused on the business domain and specific infrastructural issues providing a competitive advantage.
  2. The commodity infrastructure becomes more robust as quality open source projects tend to evolve and improve faster than their branched or wrapped in-house counterparts.
  3. New developer ramp up time decreases as the amount of the custom code they need to learn decreases.
Historically the only way of getting a competitive edge in an IT-centric business was to build your products on top of an in-house technology stack. The times are changing. The abundance of quality open source components allows for diverse opportunities. Utilization of open source in the enterprise becomes a commonplace. Remember to contribute to open source projects as it is good for YOUR projects and YOUR company in the first turn.