A case for using Tamil in ilugc communications

July 17th, 2010 masivakumar 1 comment

In Indian Linux Users Group - Chennai mailing list, one member sends emails in Tamil. There are protests from a few. They want him  to stop or tag the mail as [Tamil] and provide English translation. The argument is that there are list members who do not understand Tamil, it is rude to them to write in Tamil.

Adapted from a chat discussion with another list member

Many other list members are held back due to language constraints. Let us have a place for them to participate. I did not want to argue more in the list as the co-ordinator decided to rule that mails in Tamil should be tagged.

1. In apartheid South Africa, the established practice (in public places, clubs, restaurant) was whites only. Blacks were excluded.

2. It will grate the whites eyes to see black skin among themselves. If the blacks want they can go and create their own club. Nothing wrong with that, but it is Black country, these guys took over power early and want to prolong it.

Are we not in the same situation, flaunting our advantage of English proficiency to dominate a public mailing list.

Who are we to insist the Tamil should be accompanied by translation, and a tag? Many students in the list can not understand English. Can we insist that all English mails should have a Tamil translation? and tagged as [English]

It is humiliating to be forced to tag a mail for language. Is it second rate or inferior to communicate in Tamil? It is elitist and chauvinistic on the part of a small minority to keep the majority out. why technology can not be discussed in Tamil?

Voting among whom? Do you want to give voting to all potential participants from Chennai colleges? All those who are excluded so far, because of language barrier. Many even dont bother to subscribe, because of language of communication. It is not a sin, not being able to communicate in English.

Let us have a separate list, where we can communicate in Tamil without demeaning ourselves. I will not write in Tamil if I am forced to tag and translate everything I write.

Language is just a medium of communication, then why not communicate in Tamil in which majority of 1000 odd members in the list would be more comfortable? Why the loud minority make the rules. the silent majority can not argue they are excluded from the discussions, because it takes place in English.

The world is out side our offices. There are lakhs of students who are excluded. We need to reach them. What is best for that we would do. I do not want to break list guideline, that is why not writing in Tamil to the list.

But, I understand and support Amachu’s stand for all the reasons explained above. You are thinking that the stand is for fanatical reasons. Just step back for a minute and try to understand the other’s point of view. Get into his mind, what makes him behave so? In his mind how he is justifying himself? He is not telling himself that I am a Tamil fanatic, correct? What is his thought process, just think.

I respect and admire people like Amachu. They have their own ideals and fight for it. One of my friends whom I admire a lot, always wears Veshti and chappal even when going to corporate offices. Someone can blame him that he is breaking rules and etiquette. He breaks rule going into Dishnet office in Veshti where everyone is required to wear pant/shirt, tuck-in, belt and tie with shoes. The dishnet people can accuse him of breaking rules and not following etiq.

Categories: Society Tags:

RSS feed

July 13th, 2010 masivakumar No comments

We have a discussion forum in leatherlink.net. Wanted to create a RSS feed of the articles posted to the forum and make the items available in the front page of leatherlink.net. Feeds from blog - with Wordpress and knowledge base - with Mediawiki are already added.

For forum which is homegrown, we can simply connect to the db which is hosted in the same server and query for the stories in forum. However, creating a RSS feed will enable us to provide the feed in the forum using which users can access content from other feed readers.

A. Reading the feed.

Took the parser class availabe at http://www.the-art-of-web.com/php/rss/ which has a condition to retain a reference to their parent site in the file. No problem there. # Original PHP code by Chirp Internet: www.chirp.com.au # Please acknowledge use of this code by including this header.

B. Creating the feed.

This is related to how our data is structured and can not be taken right off the shelf from someone else’s code.

1. This tutorial takes us through creating database tables, and an elaborate class with functions to get details of feed, followed by details of item and a function to call both functions to generate output. We are interested in the format of rss feed, not the implementation.

2. There was a simpler code provided by sgthayes

“I use this piece of code to create the rss-feeds on my sites. I want to share this with you all as I have learned a lot from these boards and want to give something back.” True spirit of open source - creating and sharing. This is also a bit of overkill for me.

3. Take a simple rss feed layout and write the code. Here’s an example of a minimal RSS 2.0 feed:

<?xml version=”1.0″?>
<rss version=”2.0″>
<channel>
<title>Example Channel</title>
<link>http://example.com/</link>
<description>My example channel</description>
<item>
<title>News for September the Second</title>
<link>http://example.com/2002/09/01</link>
<description>other things happened today</description>
</item>
<item>
<title>News for September the First</title>
<link>http://example.com/2002/09/02</link>
</item>
</channel>
</rss>

4. We need to create a string as above and return from our page to serve RSS feeds.

a. Do it in a function
b. Do it in 3 steps.
c. First step adds everything (xml, rss, channel) before the items.
d. Second step fetches list of items from db table and adds item tags to the string
e. Then close the channel and rss tags and return the string.

function createRSSfeed($items_asked)
{
$output=”<?xml version=\”1.0\”?>
<rss version=\”2.0\” xmlns:atom=\”http://www.w3.org/2005/Atom\”>
<channel>
<title>LeatherLink Forum for news and events</title>
<atom:link href=\”http://leatherlink.net/lkalam-forum/rss.php\” rel=\”self\” type=\”application/rss+xml\” />
<description>Discussion on news and events related to leather and leather products industry </description>
<link>http://www.leatherlink.net/lkalam-forum/index.php</link>”;
global $db, $discussion_php_locale, $LANG, $forum_stories_table;
$db->query=”SELECT title, intro_text, to_char(creation_time,’dMY’) as date, story_id FROM $forum_stories_table ORDER BY story_id desc limit $items_asked;”;
$db->runQuery();
$forum_posts_array=$db->returnArrays();
$items_count=count($forum_posts_array);
for ($i=0;$i<$items_count;$i++)
{
$output.=”<item>
<title>”.htmlentities(StripSlashes($forum_posts_array[$i][”title”])).”</title>
<description>”.htmlentities(StripSlashes($forum_posts_array[$i][”intro_text”])).”</description>
<guid> http://www.leatherlink.net/lkalam-forum/article.php?story_id=”.$forum_posts_array[$i][”story_id”].”</guid>
<link> http://www.leatherlink.net/lkalam-forum/article.php?story_id=”.$forum_posts_array[$i][”story_id”].”</link>
</item>
}
$output.=”</channel></rss>”;
return $output;
}

This is in an include file
5. In rss.php

$items_asked=($_GET[”items_asked”])?$_GET[”items_asked”]:5;
echo createRSSfeed($items_asked);

6. To let Firefox show rss feed icon in address bar add the following lines to the head part (not the body) of your HTML pages:

<link rel=”alternate” type=”application/rss+xml” title=”John Bokma RSS” href=”/index.rss”>

7. Now the trouble shooting part.

The feed was not showing up, “not a valid element”. The whole page stops with the error. Got the validation service at http://validator.w3.org/feed/ to tell me what is the problem.

The trouble was html elements in description element. You are not supposed to have any html elements in description. The intro text part include html tags for formatting. That is where htmlentities function came into picture. Now it works.

8. Finally, get the whole thing validated at http://validator.w3.org/feed/

There is more to do. But it is a beginning.

Categories: Technology Tags:

Javascript - The Good Parts

July 12th, 2010 masivakumar No comments

Google Tech Talks have some interesting and insightful talks by jambavan’s of IT sector. Here is one such talk by the author of JSON data interchange standard. Powerful stuff

Categories: Technology Tags:

Technology choices for a web application in 2010

July 6th, 2010 masivakumar No comments

There is a lot of choice in terms of technology for web application development.

  • Which operating system?
  • Which webserver?
  • Which database?
  • Which scripting language?
  • Whether to use a framework?
  • For which browser?
  • How to handle Javascript?
  • How much AJAX to use?

Here, I would like to go out and choose definite choices. It is based on my knowledge (reading) and experience. We make our choice and go on with the real task of building the application.

எண்ணித் துணிக கருமம். After this stage, we will not look back on anything.

The criteria are

  1. Free(dom) software
  2. Reliability
  3. Security
  4. Features
  5. Free (cost) software
  6. Support community
  7. Suitability for web development

Overriding consideration above all is my familiarity with these tools. If I have not used something, I can not choose that.

1. Operating System:

It is going to be Linux and go with CentOS for the server. Why CentOS?

CentOS is the stable, secure, tested distribution for servers. It is derived (almost completely, except for the logos and names)  from Red Hat Enterprise Linux. RHEL goes through several rounds of quality control by Red Hat and it is the most reliable Linux distribution. CentOS is a free (no cost) derivation of RHEL.

2. Webserver

Apache httpd.

It is by far the leading webserver in the world. We do not even want to consider other alternatives.

3. Database

Considering only free alternatives, quality of software and developer community, go with PostgreSQL.

Feature set, reliability and developer community of PostgreSQL might be an over kill for simple web applications, but any critical application we want to develop, PostgreSQL is the choice of database.

4. Server-side Scripting

There are many equally appealing choices for scripting. Being a web application, we go with PHP. PHP is made for web development and with version 5, PHP is a serious development language.

5. There are many frameworks for PHP. PHP on its own can be used to build our own framework relatively easily. Since application logic would be written in PHP, it is recommended to build our own framework rather than choosing one of available frameworks.

6. Browser

Develop for Mozilla Firefox and test in Google Chrome, Internet Explorer, Opera and Konqueror (Safari).

Use XHTML which is the standard, strict HTML and code accordingly.

7. Javascript and CSS are not supported uniformly across browsers. It it useful to go with a framework to handle this.

For Javascript, the undisputed leading choice is Jquery which has taken the web development community by storm within a short period. Today it is the javascript framework of choice. It takes care of all browser quirks and make javascript development organized and productive.

After considering YUI3 as stylesheet framework, looked around and decided on elastic css framework. http://elasticss.com/

Categories: Technology Tags:

Technology for site redesign

June 30th, 2010 masivakumar No comments

need several technology components for web development. A web application relies heavily on server side scripting and database drive information management. A heavy dose of html/css/javascript – ajax/jquery/pdf on the client side is required to make it user friendly and useful.

Leatherlink.net also needs the same components, but with slight different emphasis.

  • We want more focus on HTML/CSS/Javascript
  • Use AJAX, Jquery
  • Use pre-built libraries from leatherlink application suites and modify heavily
  • The site and its contents should be accessible and and usable in mobile browsers. Focus on standards compliant mobile browsers.
  • Check mobile browser compatibility of jquery.
  • Get some hight quality images and icons for use. Take help in designing them.
  1. Be right at the balanced middle between boring content (static), and annoying content (a lot of activity).
  2. Present to users what they expect, when they want more bring in more information seamlessly.
  3. Do not expect user interaction where the intent can be surmised from other actions.
  4. Avoid unnecessary animation and effects.
  5. Users should be able to easily find information they are interested in and get more and more of the same without much effort.
  6. Users should be facilitated to share information, knowledge and and experience without much effort.
Categories: Corporate, LeatherLink, Technology Tags:

Leatherlink.net redesign

June 30th, 2010 masivakumar No comments

Our company’s website leatherlink.net has been changed not less than half a dozen times in its existence of about 9 years. Half a dozen major design changes, I mean. Minor updates are in hundreds.

Now I am contemplating yet another redesign for the site. The theme for the site always has been to provide information to leather industry professionals and companies and offer IT services for information management. Commercial content should take a back seat giving way to community generated content of general interest.

Now, let us clarify and relook at the objectives and goals of leatherlink.net website.

1. A corporate visiting card where products, services, clients, management and contact us are made available. When we refer someone to our website, they can get a feeling that, “yes. This company has a presence online”

That is not enough. This should be removed from home page in a separate section. corporate.leatherlink.net ?

2. We added screenshots, demo movies, access to trial versions of our software applications. These are also for only a narrow set of users, those who are interested in using our software services.

These should also be in a separate layer under a subdomains tms.leatherlink.net, foms.leatherink.net, salesdais.leatherlink.net, gloview.leatherlink.net etc

3. We have information in

  • BSG Wiki, where there are articles about technical and business information handled in BSG LeatherLink. This might benefit and attract some readers.
  • BSG Blog. These are personal articles by BSGians to share their knowledge. This might also be of interest to some people.
  • There are links to BSG LeatherLink email system and Issue Tracker system. These are of interest to BSGians and those customers who get access to these systems.

This can be further removed from the front page, probably to a subdomain – corporate.leatherlink.net

4. Then, there is content of general interest

  • Community Knowledge base – there are articles about leather usage and technical information. This can be a major attraction to the site.
  • Community Blog – Here users are encourage to create an account and write about issues affecting leather and products section. This is another invite
  • Community discussion forum – This is a slightly different version of current affairs discussion. Users can share a news about leather industry and others can comment on it.

The later 3 should form the initial landing page of the website.

  1. Front page to have tabs for each of the above three community interest content.
  2. There should be a link to corporate.leatherlink.net on the top edge of the page where corporate visiting card information are provided.
  3. Provide a drop down applications menu next to the corporate.leatherlink.net link where user can select to go to tms.leatherlink.net etc.
  4. We can give appropriate subdomain links directly to users. For example, when referring a prospective client for tms, just mention tms.leatherlink.net as our website.
  5. The top edge should also have a constant link to the home page (front page).

All contents of blog, knowledge base and discussion forum should be made available in a frame on the front page itself.

The links on the top edge should be repeated at the bottom of the page for quick access from all pages.

Categories: Corporate, LeatherLink Tags:

Branch for llinkbdl and changes

June 21st, 2010 masivakumar No comments

A. BDL
1. git branch llinkbdl

2. git checkout llinkbdl

3. git add application/.htaccess application/images/tanaliz1.png application/images/tanaliz2.png includes/global_files/global_pgsql.inc

4. git commit -m “Blue Diamond specific changes to htaccess, logo and global_pgsql.inc”
Created commit f59c7cd: Blue Diamond specific changes to htaccess, logo and global_pgsql.inc
4 files changed, 4 insertions(+), 4 deletions(-)
mode change 100755 => 100644 application/images/tanaliz1.png
mode change 100755 => 100644 application/images/tanaliz2.png

5. git commit -a -m “Deleted files” application/images/logo.jpg
Created commit 7cbdce9: Deleted files
3 files changed, 209 insertions(+), 207 deletions(-)
delete mode 100755 application/images/logo.jpg
delete mode 100755 application/images/prime_logo.jpg

Categories: Default Tags:

LLink Process KB development - 1

June 21st, 2010 masivakumar No comments

1. nano /home/leatherlink/.ssh/config
Host leatherlink.net
Port 7822

2. git clone bsglink@leatherlink.net:git-repositories/llinktms.git llinktms

3. cd llinktms/application/

4. git clone bsglink@leatherlink.net:git-repositories/llinkreports.git reports

5. nano .htaccess
php_value include_path “/home/leatherlink/technical/llinktms/includes/”

7. cd ../technical/db_changes/newsystem/

8. psql leatherlinkdb

\i 01-schema-creation.sql
\i 02-default-data.sql
\i 03-company-data.sql
\i 04-user-data.sql

9. git branch process-kalam

10. git checkout process-kalam

11. sudo /etc/init.d/httpd restart

12. sudo nano lib/php.ini
(set short-tags on)

13. cd llinktms/application/
chmod a+rw menu/
chmod a+rw menu/menu-index.txt

14. sudo nano lib/php.ini
(set error +E-deprecated)

15. error_reporting = E_ALL & ~E_NOTICE& E_DEPRECATED
sudo /etc/init.d/httpd restart
error_reporting = E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR

Categories: Technology Tags:

Web Application Stack setup - work flow

June 19th, 2010 masivakumar No comments

Following instructions in the knowledge base, installed PG 8.4.4, Apache 2.2.15 and PHP 5.3.2 in a desktop system. To use that as the development system henceforth.

http://leatherlink.net/bsg-kbase/index.php/Installation_Instructions

A. Postgresql

1. tar xvjf postgresql-8.4.4.tar.bz2

2. cd postgresql-8.4.4/

3. /configure –with-tcl

a. configure: error: readline library not found
sudo apt-get install libreadline5-dev

b. configure: error: file ‘tclConfig.sh’ is required for Tcl
sudo apt-get install tcl
sudo apt-get install tcl-dev

4. make

5. sudo make install

6. sudo mkdir /usr/local/pgsql/data

7. sudo chown postgres:postgres /usr/local/pgsql/data/

8. sudo su postgres

9. /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/

10. /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data start&

11. /usr/local/pgsql/bin/psql template1

12. /usr/local/pgsql/bin/createuser leatherlink

13. exit

14. sudo cp contrib/start-scripts/linux /etc/init.d/postgresql

15. sudo chmod a+x /etc/init.d/postgresql

16. sudo /etc/init.d/postgresql restart

17. nano /home/leatherlink/.bashrc
export PATH=/usr/local/pgsql/bin:$PATH

18. export PATH=/usr/local/pgsql/bin:$PATH

19. psql template1
CREATE DATABASE leatherlinkdb;
\c leatherlinkdb
CREATE LANGUAGE plpgsql;
CREATE LANGUAGE pltcl;
\q

psql does not show help message on connecting. Type help to get that now. Looks a little weird first time :-)

B. Decided to go for apache (httpd 2.2.15 instead of 1.3.xx)

1. cd ..
2. tar xvjf httpd-2.2.15.tar.bz2
3. cd httpd-2.2.15/
4. ./configure –enable-so
5. make
6. sudo make install
7. sudo /usr/local/apache2/bin/apachectl  start
8. sudo /usr/local/apache2/bin/apachectl  stop
9. sudo cp /usr/local/apache2/bin/apachectl  /etc/init.d/httpd
10. sudo /etc/init.d/httpd restart

C. PHP

1. cd ..
2. tar xvjf php-5.3.2.tar.bz2
3. cd php-5.3.2/
4. ./configure –with-pgsql –with-apxs2=/usr/local/apache2/bin/apxs –with-curl=/usr –enable-calendar –with-curl –enable-dba –enable-ftp –with-zlib-dir –enable-soap –with-regex=php –with-openssl –with-gmp

a. configure: error: xml2-config not found. Please check your libxml2 installation.
sudo apt-get install libxml2-dev

b. configure: error: Cannot find OpenSSL’s <evp.h>
sudo apt-get install openssl
sudo apt-get install libcurl4-openssl-dev
(http://linux.goeszen.com/missing-openssl-evp-hmac.html)

c. configure: error: Unable to locate gmp.h
./configure –with-pgsql –with-apxs2=/usr/local/apache2/bin/apxs –with-curl=/usr –enable-calendar –with-curl –enable-dba –enable-ftp –with-zlib-dir –enable-soap –with-regex=php –with-openssl –enable-bcmath

5. make

6. sudo make install

7. sudo cp php.ini-development /usr/local/lib/php.ini

8. /usr/local/apache2/conf/httpd.conf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch “\.phps$”>
SetHandler application/x-httpd-php-source
</FilesMatch>

AllowOverride All

9. sudo /usr/local/apache2/bin/apachectl restart

Categories: Default Tags:

Application from the cloud

June 14th, 2010 masivakumar No comments

Barriers to go for an ERP system are many.

1. We need to buy expensive servers!

2. We need to maintain steady power supply.

3. We need to have competent system admin to take care of the servers

4. We need to pay huge licensing fees for the ERP software

5. Maintaining and keeping the ERP software update is an expensive affair.

For leather industry, the majority of companies can not ever go for an ERP software at the above model. But, the need for collecting data and getting insightful reports for management decision making is all the more acute now.

Is there a way to get these benefits without looking at a pile of money as investment? The answer is a definite YES.

ERP in a box will ensure these.

Categories: Default Tags: