Progressive enhancement with the Google Font API

Posted by oshua in General on 22. Jun, 2010 | No Comments

I like the Google Font API. It is a clean and easy way to introduce a progressive enhancement on websites. The lack of an easy way to introduce sophisticated fonts has been present with the web since its origins. One of the most sucessfull solutions to face this in the past has been the CSS [...]

Why not Flash? How to suggest your clients to stay away from Flash abuse

Posted by oshua in General, HTML on 09. Jun, 2010 | No Comments

It is the year 2010. Steve Jobs has openly stated Adobe Flash Player will not be supported on iphones. HTML5 is on its way with native video, audio and canvas support. Javascript libraries are making huge improvements in allowing, easily, the creation of dynamic websites without Flash, but guess what, many clients are still asking [...]

Configure web server on CentOS 5 in 5 minutes

Posted by oshua in General on 25. Aug, 2009 | No Comments

This is the minimum required to install and configure a web server on a CentOS 5 new installation:
1. Install php, apache and some other common libraries
yum install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel
To start apache automatically when the server starts
chkconfig –levels 235 httpd on
Restart apache
/etc/init.d/httpd [...]


PHVsPjxsaT48c3Ryb25nPndvb19hbHRfc3R5bGVzaGVldDwvc3Ryb25nPiAtIGRlZmF1bHQuY3NzPC9saT48bGk+PHN0cm9uZz53b29fYXV0b19pbWc8L3N0cm9uZz4gLSBmYWxzZTwvbGk+PGxpPjxzdHJvbmc+d29vX2N1c3RvbV9jc3M8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19jdXN0b21fZmF2aWNvbjwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2V4Y2x1ZGVfY2F0czwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2V4Y2x1ZGVfcGFnZXM8L3N0cm9uZz4gLSA8L2xpPjxsaT48c3Ryb25nPndvb19mZWF0dXJlZF9wb3N0czwvc3Ryb25nPiAtIDU8L2xpPjxsaT48c3Ryb25nPndvb19mZWVkYnVybmVyX3VybDwvc3Ryb25nPiAtIDwvbGk+PGxpPjxzdHJvbmc+d29vX2dvb2dsZV9hbmFseXRpY3M8L3N0cm9uZz4gLSA8c2NyaXB0IHR5cGU9XCJ0ZXh0L2phdmFzY3JpcHRcIj4NCnZhciBnYUpzSG9zdCA9ICgoXCJodHRwczpcIiA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCkgPyBcImh0dHBzOi8vc3NsLlwiIDogXCJodHRwOi8vd3d3LlwiKTsNCmRvY3VtZW50LndyaXRlKHVuZXNjYXBlKFwiJTNDc2NyaXB0IHNyYz1cJ1wiICsgZ2FKc0hvc3QgKyBcImdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzXCcgdHlwZT1cJ3RleHQvamF2YXNjcmlwdFwnJTNFJTNDL3NjcmlwdCUzRVwiKSk7DQo8L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT1cInRleHQvamF2YXNjcmlwdFwiPg0KdHJ5IHsNCnZhciBwYWdlVHJhY2tlciA9IF9nYXQuX2dldFRyYWNrZXIoXCJVQS03ODU2MDY0LTEwXCIpOw0KcGFnZVRyYWNrZXIuX3RyYWNrUGFnZXZpZXcoKTsNCn0gY2F0Y2goZXJyKSB7fTwvc2NyaXB0PjwvbGk+PGxpPjxzdHJvbmc+d29vX2xvZ288L3N0cm9uZz4gLSBodHRwOi8vd3d3Lm9zaHVhbW9yZW5vLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzctbG9nby5wbmc8L2xpPjxsaT48c3Ryb25nPndvb19tYW51YWw8L3N0cm9uZz4gLSBodHRwOi8vd3d3Lndvb3RoZW1lcy5jb20vc3VwcG9ydC90aGVtZS1kb2N1bWVudGF0aW9uL21ldGEtbW9ycGhvc2lzLzwvbGk+PGxpPjxzdHJvbmc+d29vX3Jlc2l6ZTwvc3Ryb25nPiAtIHRydWU8L2xpPjxsaT48c3Ryb25nPndvb19zaG9ydG5hbWU8L3N0cm9uZz4gLSB3b288L2xpPjxsaT48c3Ryb25nPndvb190aGVtZW5hbWU8L3N0cm9uZz4gLSBNZXRhLU1vcnBob3NpczwvbGk+PGxpPjxzdHJvbmc+d29vX3VwbG9hZHM8L3N0cm9uZz4gLSBhOjU6e2k6MDtzOjYwOiJodHRwOi8vd3d3Lm9zaHVhbW9yZW5vLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzctbG9nby5wbmciO2k6MTtzOjYwOiJodHRwOi8vd3d3Lm9zaHVhbW9yZW5vLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzYtbG9nby5wbmciO2k6MjtzOjYwOiJodHRwOi8vd3d3Lm9zaHVhbW9yZW5vLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzUtbG9nby5wbmciO2k6MztzOjYwOiJodHRwOi8vd3d3Lm9zaHVhbW9yZW5vLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzQtbG9nby5wbmciO2k6NDtzOjYwOiJodHRwOi8vd3d3Lm9zaHVhbW9yZW5vLmNvbS93cC1jb250ZW50L3dvb191cGxvYWRzLzMtbG9nby5wbmciO308L2xpPjwvdWw+