Author Archive

Am I using google chrome?

Well, a picture is worth a thousand words, and here’s a glimpse of what happened when I visited orkut.com using gogle chrome:

Click on the picture to view full size (570KB)

orkut on chrome


Interface translation in symfony – tool for teams

I mentioned in my previous post how we decouple the translation dictionary completely from the source so that a change in any text does not affect the templates. That has helped us a lot in several large projects.

Another issue which we frequently encountered when multiple people worked on the same project is conflicting and merging of the dictionary files. Since these files have sequential numbers in each <trans-unit> block, if multiple people want to add translations, these suquential numbers almost overlap and have to be rewritten manually while checking in.

So we decided to generate these symfony interface translation dictionary files using a script. So here’s what we do:

  •  put the translations in a properties file: Create one properties file for each language. So for English we create “translations.en.properties”. This has translations like:

USERNAME_LABEL=Username
PASSWORD_LABEL=Password

This ensures that even when multiple people add translations to these files (using a source control like CVS or SVN) there are no issues.

  • Also put the following file createXML.php in the same i18b folder.   
  • Now you can simply call this script from the command prompt to generate the xml dictionary.

php createXML.php > messages.en.xml

That was pretty simple to do. There are some enhancements this requires, like it should by itself generate all translation files based on the properties files available. But thats for when i get more time to work on it.


Passwords in clear text

I just received a newsletter from a social network site (brijj.com) and was surprised how they had embedded my username and password in clear text. It speaks volumes on how seriously they take security. I think when storing passwords all sites should go by few rules:

  • Do not store passwords in cleartext. Never ever.
  • Use any encryption technology, preferable a 1-way hash so that nobody can decipher the password.
  • If you break the above rules, which several sites do, at least do not send out passwords in emails without being asked for. That’s the worst you can do.

Everyone should realize that people tend to use same passwords for several sites and accounts so sending out passwords in clear text not only compromises the user’s account at your site but possibly at other places as well.

1 Comment more...

STPI incubation facility in Bangalore

We recently came to know about the incubation facility that STPI provides to new startups looking for a cost effective and worry free infrastructure. This is really suitable for new units who have not invested in their existing infrastructure and plan to get their own office (leased/owned) in a year’s time. Apart from the infrastructure they also help with HR, legal and accounting functions at extra cost.

It did not turn out suitable for us since we have already invested in our own infrastructure. But had we been aware of this facility when we started, we would have definitely opted for it.

You can contact Remali.R at STPI Bangalore for further information.


Employees in startups

Anuj Khurana has some great pointers of what the employees in a startup should be doing and expecting.

I specifically like points 4, 5 and 7:

  • The company’s success is your success, and vice versa
  • Always remember it’s your company
  • Self-drive and self controlled

Read the full post here


Interface translation in symfony

Symfony provides interface translation using the XLIFF standard. While using the XLIFF standard here is good, it has one pain point. The pain point becomes apparent when the need arises for changing/editing the phrases. If the phrase is used in several templates, you need to search all the templates and change there as well as in the dictionary.

For example, lets say we define a simple label like “Username” in the dictionary and in several templates. The dictionary will look like:

<?xml version="1.0" ?>
<xliff version="1.0">
  <file orginal="global" source-language="en_US"
    datatype="plaintext">
    <body>
      <trans-unit id="1">
        <source>Username</source>
        <target>ユーザー名</target>
      </trans-unit>
    </body>
  </file>
</xliff>

And in all templates that use the label “Username” we will use the following to translate it based on user’s culture:

echo __('Username');

This is good, but lets say down the line we decide to use the label “User Id” instead of “Username”. To do that we need to update all the templates and the dictionary. This becomes cumbersome if you have a large number of templates that reference this label. If you notice, the cause of the problem lies in the fact that we have used the actual text itself to identify the i18n phrase within all templates.

To get around this problem, what we did was to use a code to identify the phrase and use that in the template. And we provide a dictionary for each of the supported language. So in this case we create an English and Japanese dictionary both. But what about the source language, you would ask. Well, thats a hack: we ended up providing a non existent ISO code. Based on the comment from Dennis, we use English as the source since translation happens even if source and target languages are same.

So here is what our English and Japanese dictionary look like:

<?xml version="1.0" ?>
<xliff version="1.0">
  <file orginal="global" source-language="en_US"
    datatype="plaintext">
    <body>
      <trans-unit id="1">
        <source>LABEL_USERNAME</source>
        <target>Username</target>
      </trans-unit>
    </body>
  </file>
</xliff>

<?xml version="1.0" ?>
<xliff version="1.0">
  <file orginal="global" source-language="en_US"
    datatype="plaintext">
    <body>
      <trans-unit id="1">
        <source>LABEL_USERNAME</source>
        <target>ユーザー名</target>
      </trans-unit>
    </body>
  </file>
</xliff>

And the phrase in the template looks like:

echo __('LABEL_USERNAME')

So now if you want to change the English version of the phrase, you simply update the dictionary and no need to change the templates.


Quizzing in a connected world

Few days ago I played an interesting quiz. You should try it when you have time. I enjoyed solving it. Once done, though I was feeling happy to have solved it, I was not satisfied. Why, because I was wondering as to who really solved it, me or the search engine?

In todays connected world that has so much information available on the internet, solving a quiz is no longer a feat. Instead of trying to ponder over adwork through the quiz questions, I was clicking happily on the results the search engine had spit out. And on the more difficult ones I was trying to analyze which search results are more relevant. So much for instant gratification. Had it been 6-8 years ago, it would have taken me a few hours to finish it, or maybe even more. But at the end of it, I would have felt satisfaction and real happiness. And in the process I would have probably remembered the answers to all questions for the rest of my life. But on the bright side, I am getting better at searching and finding relevant informaion faster on search engines ;)


Starting a company in Bangalore

During the year and a half of TechJini’s existence, we have learnt several things about starting and running a company in Bangalore. I am putting together our experiences in this post so that it can be helpful to others.

Register the company

The World Bank has a very detailed and comprehensive list of things to be done when you want to start your company. It covers most of the statutory requirements of starting a company in Bangalore. Many of these services are available online, so it makes life simpler. For those that are not available online, it is advisable to go through a Chartered Accountant.

It is advisable to get your company registered before you commence operations. Else it can create problems when you receive payments and don’t yet have a bank account in the company’s name.

Open a bank account

We chose citibank as our company bankers after we spoke to several banks. They offered better personalized service, were easily accessible and had the necessary features we were looking for. Since current account have no interest, choose a bank that offers easy ways to park/withdraw your surplus funds into/from short term funds which are mostly risk free and earn a good interest rate of 6% p.a.

Accounting and statutory compliance

Since Tally is the most commonly used accounting software, I would recommend to buy a license and start using it from the beginning. This avoids any accounting nightmares when you try to create your balance sheets at the eleventh hour. If you are not from an accounting background, it is best to hire a part-time accountant who can visit your premises and update your accounts every week or every fortnight. You can find such a person by locating any Tally coaching institute in your locality. They charge anywhere between Rs 1500 to Rs 3000 based on the amount of work.

There are several statutory and back office requirements like payroll, filing PT returns, advance tax, TDS returns, ROC returns, VAT/CST returns etc that require knowledge, time and effort. I did this myself the first year, but found that it is better to hire a professional for these while I can focus on our core business. Thus we met few CAs and finally contracted one of them. For a monthly fee, they handle all things including accounting, payroll, TDS, ROC, IT , PT etc (except the audit). They charge upwards of Rs 10,000 per month based on the number of employees.

Liability of employee behaviour
Another aspect to remember is that the company should formulate and get every employee (including the founders) tosign a Term of Employment or Company Policy documents. These documents outline several things including (but not limited to)

  • employee’s acceptable behavior
  • state that if the employee indulges in any unlawfully activity, the company shall not be liable
  • the employee shall not use any IP from this company or anywhere else unless authorized

This becomes even more critical for IT startups since cyber laws are still evolving and these documents go a long way in proving that the employer takes preventive measures to protect the law. You can contact any lawyer who specializes in Cyber Law and he can assist you with the drafting of a policy.

Premises and utilities

We chose an office that was close to both the founders’ residences. This greatly improves productivity since we do not waste time and energy commuting to the workplace. Since we are a startup, we chose an office that offered us the best value for the money. Also ensure that there are few eateries in vicinity. Make sure you verify other things like, water availability, parking space, capacity of electricity connection etc.

If you are an IT startup, get at least 2 internet connections. We have BSNL and Tata Indicom. We have had bad experience with both of them, but Airtel (which is the best in terms of uptime) is not available in our locality.

Resources

I am sharing the contacts/resources that may save you time. Feel free to let them know you heard about them from us.
Chartered Accountants

  • Dilip Kumar (9341218974) – Apart from CA functions, provides accounting, payroll, statutory compliance services
  • Krishnananda Nayak (26578391) – Also provides all CA and other services.
  • L. Krishna Moorthy (26789535) – CA and tax consulting. We get our personal returns filed from him.
  • Ashim Dey Bhowmick – Provides all functions of CA and also back office services

Lawyers

Please share any thing we missed via the comments.


Cheer Your Favourite Team in World Cup 2007

Cheer My TeamWith a few free days on hand and the ICC Cricket World Cup around the corner, we here at TechJini thought why not make use of the time and create something for the World Cup. Thus CheerMyTeam was born. The features were driven by two factors, 1. We are cricket fans and 2. We wanted to use some libraries/technologies. So after deciding the features, we spent about 4 days creating it. Here is what you can do on the site:

  • Get a widget that you can place on your site/blog to show support for your country (See the widget in action below at the end of this post)
  • Vote for and cheer your favourite team
  • Vote for and cheer your favourite players
  • View latest World Cup public photos from flickr and videos from youtube
  • Take part in discussions
  • View live score (thanks to vcricket)

Thats all we had time for although we wanted to do much much more. After all you cannot do much on a diet of beers and pizzas ;)

The widget (for India) is below. You can get the widget for your country.

If you have any feedback/suggestions/brickbats about the site, please leave a comment.


Wanted: Indian Innovators for web 2.0

As more and more companies bring out great products in the web 2.0 arena, it becomes evident that innovation is all around. Except here at home. I was looking at this cool mashup of Google Maps with the physical locations of all web 2.0 companies, and one hting to notice is that there is not a single company from India.

India has more than 50% of global market share for IT sourcing and more than 30% in the ITES sector. Give that fact it is indeed surprising and disappointing that there are very few innovations happening from India, and probably none in the web application area.

Leave a comment if you happen to know any web 2.0 startup from India.


  • TechJini Solutions

  • © Copyright 2009 TechJini Solutions Private Limited. All Rights Reserved
    iDream theme by Templates Next | Powered by WordPress