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)
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)
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:
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.
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.
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:
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.
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.
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:
Read the full post here
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.
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
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)
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
Lawyers
Please share any thing we missed via the comments.
With 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:
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.
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.