<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webgyani</title>
	<atom:link href="http://webgyani.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://webgyani.com</link>
	<description>A cognitive perspective on web</description>
	<lastBuildDate>Wed, 10 Feb 2010 17:30:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simulated chaining in JavaScript</title>
		<link>http://webgyani.com/2010/02/simulated-chaining-in-javascript/</link>
		<comments>http://webgyani.com/2010/02/simulated-chaining-in-javascript/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 17:30:54 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://webgyani.com/?p=115</guid>
		<description><![CDATA[Kyle Simpson (aka @getify) has written an excellent post on chaining in JavaScript and how you can take it to the next level. Here is a little excerpt from the original post:
Just so we’re all on the same page, “chaining” is this wonderful functional property of languages like JavaScript (which treat a function as a first-class citizen). It essentially amounts to making a function call, and the return value from the function is itself either another callable function, or more often, an object that has functions which are directly callable
Check out the article http://blog.getify.com/2010/02/simulated-chaining-in-javascript/
]]></description>
			<content:encoded><![CDATA[<p>Kyle Simpson (aka @getify) has written an excellent post on chaining in JavaScript and how you can take it to the next level. Here is a little excerpt from the original post:</p>
<blockquote><p>Just so we’re all on the same page, “chaining” is this wonderful functional property of languages like JavaScript (which treat a function as a first-class citizen). It essentially amounts to making a function call, and the return value from the function is itself either another callable function, or more often, an object that has functions which are directly callable</p></blockquote>
<p>Check out the article <a href="http://blog.getify.com/2010/02/simulated-chaining-in-javascript/">http://blog.getify.com/2010/02/simulated-chaining-in-javascript/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2010/02/simulated-chaining-in-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 things a frontend engineer should know</title>
		<link>http://webgyani.com/2010/01/10-things-a-frontend-engineer-should-know/</link>
		<comments>http://webgyani.com/2010/01/10-things-a-frontend-engineer-should-know/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 17:24:38 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://webgyani.com/2010/01/10-things-a-frontend-engineer-should-know/</guid>
		<description><![CDATA[Frontend engineering as it stands today is a bit of vague and unspecified territory, it’s still not clearly understood may be because of the lack of clarity around stuffs a frontend engineer does. To simply put, frontend engineering means understanding the browsers best, the work of a frontend engineer is what you see when you do “view source”. So, how can you become a frontend engineer? In this post I’ll list down some of the things that a would be frontend engineer should know about. Frontend engineers write software using HTML, CSS and JavaScript, and yes I meant ‘writing software’, because if you look at modern day web applications like Gmail, Yahoo! Mail, Google Wave all are complex applications which involves significant amount of JavaScript, CSS, HTML and other technologies. So basically it means a frontend engineer should be specialized in HTML, CSS and JavaScript. 
 
Below are the list [Continue... <span class="meta-nav">&#8594;</span>]]]></description>
			<content:encoded><![CDATA[<p>Frontend engineering as it stands today is a bit of vague and unspecified territory, it’s still not clearly understood may be because of the lack of clarity around stuffs a frontend engineer does. To simply put, frontend engineering means understanding the browsers best, the work of a frontend engineer is what you see when you do “view source”. So, how can you become a frontend engineer? In this post I’ll list down some of the things that a would be frontend engineer should know about. Frontend engineers write software using HTML, CSS and JavaScript, and yes I meant ‘writing software’, because if you look at modern day web applications like Gmail, Yahoo! Mail, Google Wave all are complex applications which involves significant amount of JavaScript, CSS, HTML and other technologies. So basically it means a frontend engineer should be specialized in HTML, CSS and JavaScript. </p>
<p> <span id="more-114"></span>
<p>Below are the list of things that I would expect to see in a would be frontend engineer:</p>
<p>&#160;</p>
<ul>
<li><strong>Semantic and non-semantic markup</strong> &#8211; Understanding the differences between semantic and non-semantic HTML is a key area in web development, in HTML we have different tags with different semantic meaning, a frontend engineer should know which tag to use when, it’s not a good practice to use &lt;DIV&gt; tag to display paragraphs even if both &lt;P&gt; and &lt;DIV&gt; visually look similar. </li>
<li><strong>Rendering modes</strong> – Every browser for the sake of backward compatibility has implemented two types of rendering modes, and browser’s use DOCTYPE tag as the rendering mode switcher. It’s important to know about rendering modes because they drastically affect the way browsers render a webpage. Primarily, there are two rendering modes “Standards mode” and “Quirks mode”, some browsers even have “almost standards mode”. In “standards mode” browser will try to display a webpage in the most efficient way possible, where as in “quirks mode” browser will display the page in a backward compatible way. </li>
<li><strong>Structure, presentation and behavior</strong> – These are the key design elements in building websites. The structure (HTML), presentation/styling (CSS) and behavior (JavaScript) should be separated out, which helps make you page modular and maintainable. Remember it also speeds up your site, because the presentation and behavior layer will likely be cached by the browser, which results in faster downloads. Use meaningful markup with Class and Ids as the possible hook for adding styling and behavior. Never use inline event handlers in your HTML, instead use Unobtrusive JavaScript to attach event handlers, which helps keep the markup clean. </li>
<li><strong>Ability to hand code your HTML</strong> – There are some WYSIWYG editors out there in the market, but I would recommend not to use any one of them, instead learn to write HTML by hand coding, because this will give you the ability to create a visual picture of your page layout in your mind, if you continue this practice after some time you will notice that you can almost tell how many DIVs you need to create a particular layout just seeing that design. Remember that all those big web applications out there were created by hand coding HTML and CSS, once you are proficient writing HTML then you can use some code auto-completion utilities to speed things up a little bit. </li>
<li><strong>CSS and browser quirks</strong> – The CSS stands for ‘Cascading Style Sheets’, here ‘Cascading’ means a way to determine which CSS rules are going to apply on a particular element. So it’s important to know how <em>Specificity</em>, <em>Order</em>, <em>Inheritance</em> and above all the <em>Box Model</em> are being calculated. Some browsers have terribly wrong implementation of some CSS standards so it is important to have the knowledge regarding browser workarounds, there are CSS hacks and fixes available for some browsers most notably Internet Explorer, which you can use or you might consider using <em>conditional-comments a</em>s a way to include special style sheet for that depending on your needs. Another thing in this context is the knowledge regarding ‘<a href="http://www.google.co.in/search?q=hasLayout" rel="nofollow" target="_blank">hasLayout</a>’ concept in IE6/7, this concept is one of the main reasons behind CSS bugs in above mentioned browsers. </li>
<li><strong>JavaScript Language</strong> – Learn this language, it’s no toy language anymore and it’s not even distantly related with Java excluding the naming similarity. It is an Object-oriented language with <em>prototypal inheritance</em> pattern. This is the language which drives modern day web applications, since the advent of Ajax this period has seen a tremendous growth of JavaScript. I believe that the way <strong>HTML 5</strong> is heading this language is going to be one of the most important programming languages in the next decade. JavaScript was designed in a hurry, so there are some rough edges and some incorrect implementation, hence it’s important to know the good and bad parts of the language. In modern web applications JavaScript interacts heavily with DOM(Document Object Model), so having a good understanding of DOM methods, traversal techniques, DOM manipulation are necessary. I recommend picking up <a href="http://www.amazon.com/Professional-JavaScript-Developers-Wrox-Programmer/dp/047022780X" rel="nofollow">Professional JavaScript for Web Developers</a>. </li>
<li><strong>JavaScript and CSS Frameworks</strong> – Once you are well familiar with all the above concepts, it’s time to pick up few JavaScript and CSS frameworks. Nevertheless, the JavaScript Frameworks that you should check out are <a href="http://jquery.com/" rel="nofollow" target="_blank">jQuery</a>, <a href="http://developer.yahoo.com/yui/" rel="nofollow" target="_blank">YUI</a> and <a href="http://www.dojotoolkit.org/" rel="nofollow" target="_blank">Dojo</a> etc. and for CSS Frameworks there are <a href="http://wiki.github.com/stubbornella/oocss" rel="nofollow" target="_blank">OOCSS</a>, <a href="http://960.gs/" rel="nofollow" target="_blank">960.gs</a> and <a href="http://www.blueprintcss.org/" rel="nofollow" target="_blank">Blueprint</a> etc.. Even though you can go through with those libraries, I would recommend you should go through their source code whenever possible, this will give you a lot of insight into what’s happening and how those libraries have organized their code, you’ll learn a lot, I guarantee. </li>
<li><strong>Website Optimization</strong> – This is a very important point, and you just cannot ignore it&#160; anymore. Latency is one of the main reason behind slow websites, but you can do very little about it, so focus on areas where optimization can give you significant result. Learn how to cache your assets using proper HTTP headers, serve your assets using Gzip, optimize images (there are some good tools around one example is <a href="http://github.com/kristoferbaxter/SmallerMaker" rel="nofollow" target="_blank">SmallerMaker</a> ), know how browsers do parallel downloading, consider using ‘Lazy Loading’ techniques, load scripts on-demand/on the fly when required and use CSS sprites where suitable(although you can take a peek at <em><a href="http://www.stevesouders.com/blog/2009/11/16/cssembed-automatically-data-uri-ize/" rel="nofollow" target="_blank">Data URIs</a></em>). For more info check out <a href="http://www.stevesouders.com/" rel="nofollow" target="_blank">stevesouders.com</a>. </li>
<li><strong>Staying up-to-date</strong> – The frontend technologies are changing almost everyday, so it’s very necessary to stay up-to-date, you got to keep an eye on the stuffs happening around JavaScript, HTML 5, CSS3 and other best practices, which will help you gather information and knowledge upfront, which you can later use in your work. </li>
<li><strong>Communication and co-ordination</strong> – Last but not the least, this is a very important job that a frontend engineer has to do everyday with his peers, managers and creative designers. He/she has to communicate well in terms of what can be possible in the browser, how changing something can improve or degrade accessibility or performance. I have seen designers often like to design interfaces by pouring every bit of their creativity and aesthetic sense, which is a good thing definitely, but in a real world implementing those interfaces using HTML/CSS is sometimes impossible, hence it is the frontend engineer who should actually communicate with the designers about what can be done and what can not. In some cases he/she often has to push back some features which might introduce too much complexity or impact the performance of the application as a whole, and while doing so I would expect that a good frontend engineer to come out with alternate solutions in a constructive way. As frontend engineers sit somewhere between middle-tier, creative and product management, so their efforts are directly related with these people, communicating and coordinating properly will definitely serve well. </li>
</ul>
<p>&#160;</p>
<p>&#160;</p>
<p>Well if you want to be a frontend engineer make sure that you know stuffs I mentioned above, these are just the beginning by the way, there are a lot of things that you will learn eventually, but don’t forget to make sure that your base is strong, do a lot of practice, ask questions, read articles and blogs and finally think like a frontend engineer. All the best.</p>
<p>&#160;</p>
<p>&#160;</p>
<p><em>Disclaimer: The use of the word ‘engineer’ is not meant to do anything with ‘Engineering discipline’ at al, I know traditional engineers do a lot of hard work to achieve that academic qualification, as working in frontend also involves similar amount of hard work that’s why the term has been used here to refer the collective effort of those people.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2010/01/10-things-a-frontend-engineer-should-know/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>New JavaScript library to load files on the fly</title>
		<link>http://webgyani.com/2009/12/new-javascript-library-to-load-files-on-the-fly/</link>
		<comments>http://webgyani.com/2009/12/new-javascript-library-to-load-files-on-the-fly/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 14:32:12 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://webgyani.com/?p=78</guid>
		<description><![CDATA[They call it LABjs which stands for &#8220;Loading and Blocking JavaScript&#8221;, it&#8217;s a cool new way of loading JavaScript files on the fly, the project is a handywork Kyle Simpson with the help of Steve Souders, the creator of &#8220;Page Speed&#8221; Firebug plugin, the library seems pretty interesting. See what they say about their library:
LABjs’ primary goal is to replace the “&#60;script&#62; tag soup” in your pages (you know, all that garbage that clutters up your &#60;head&#62; or the end of your &#60;body&#62;) with a simple and expressive API that gives you complete control over the loading and executing behavior of your scripts.
Check out the full detail here http://blog.getify.com/2009/11/labjs-new-hotness-for-script-loading/
Updated: Post updated to include the name of Kyle Simpson the primary author of the library.
]]></description>
			<content:encoded><![CDATA[<p>They call it LABjs which stands for &#8220;Loading and Blocking JavaScript&#8221;, it&#8217;s a cool new way of loading JavaScript files on the fly, the project is a handywork Kyle Simpson with the help of Steve Souders, the creator of &#8220;Page Speed&#8221; Firebug plugin, the library seems pretty interesting. See what they say about their library:</p>
<blockquote><p>LABjs’ primary goal is to replace the “&lt;script&gt; tag soup” in your pages (you know, all that garbage that clutters up your &lt;head&gt; or the end of your &lt;body&gt;) with a simple and expressive API that gives you complete control over the loading and executing behavior of your scripts.</p></blockquote>
<p>Check out the full detail here <a href="http://blog.getify.com/2009/11/labjs-new-hotness-for-script-loading/">http://blog.getify.com/2009/11/labjs-new-hotness-for-script-loading/</a></p>
<p><strong>Updated:</strong> Post updated to include the name of Kyle Simpson the primary author of the library.</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/12/new-javascript-library-to-load-files-on-the-fly/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Three mistakes of Indian IT start-ups</title>
		<link>http://webgyani.com/2009/11/three-mistakes-of-indian-it-start-ups/</link>
		<comments>http://webgyani.com/2009/11/three-mistakes-of-indian-it-start-ups/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 12:07:38 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>

		<guid isPermaLink="false">http://webgyani.com/?p=63</guid>
		<description><![CDATA[Since my seven years of working life I have spent 90% of my time working for start-ups, so here I am describing my experience so far and also putting in my own opinion regarding the issues, it might differ from yours but this opinion is solely mine, you don’t need to be agreed upon with me, if you don’t buy into stuffs I said here, never mind just move on, I will be glad thinking that you spent some of your precious time reading this post. By the way this is a long post so I recommend you to have a cup of coffee or some light drinks with you while you are reading this post  .
The three things that I would like to touch upon in this blog post are below:

Planning and proper understanding of what to build.
Technology and architecture
Employee management

In India start-up software companies begin with a [Continue... <span class="meta-nav">&#8594;</span>]]]></description>
			<content:encoded><![CDATA[<p>Since my seven years of working life I have spent 90% of my time working for start-ups, so here I am describing my experience so far and also putting in my own opinion regarding the issues, it might differ from yours but this opinion is solely mine, you don’t need to be agreed upon with me, if you don’t buy into stuffs I said here, never mind just move on, I will be glad thinking that you spent some of your precious time reading this post. By the way this is a long post so I recommend you to have a cup of coffee or some light drinks with you while you are reading this post <img src='http://webgyani.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> .<span id="more-63"></span></p>
<p>The three things that I would like to touch upon in this blog post are below:</p>
<ol>
<li>Planning and proper understanding of what to build.</li>
<li>Technology and architecture</li>
<li>Employee management</li>
</ol>
<p>In India start-up software companies begin with a very novel idea and most of them are novel indeed, but the number of ideas we have and the number of successful results we get at the end of the day differ a lot. So what are the problems why so many start-ups fail miserably, what are the common mistakes they all make, and how they suffer? To find answer for each of these questions one needs to carefully analyze all the efforts that have been made in order to make that idea a real thing, often we see that entrepreneurs talk about a certain idea which they think is something big and has the potential to change the world, but in reality most of the time those ideas are based on limited market research, inadequate domain knowledge and a lack of practicality which includes very limited understanding of users’ need. Here I am trying to express my views regarding the points mentioned above that any would be entrepreneur should be careful about, because these are the things that matter most if you are in a high-tech industry, which is distinct in every essence than other industries. Innovative idea with proper approach is what makes you stand out among the crowd at the end of the day.</p>
<h2>Planning and proper understanding of what to build</h2>
<p>In start-ups the actual planning started in most of the cases with some ideas and a limited discussion around it, in rare cases it’s being documented, the discussion happens around how many screens are there, who is going to do what and how quickly we can build, if you are in a real hurry and want to earn huge money as quickly as possible then you probably are not a true entrepreneur or you are one of those greedy people to whom only money matters, remember there’s no shortcut to glory, you got to work hard.</p>
<p>Engineering your dream is not just bringing a US bound guy on board without judging his technical capabilities, that whether his expertise aligns with your vision properly or not, you really need a very technical person with a lot of domain expertise in building stuffs that you want, who will work as your advisor and also as one of your trusted partners while building your dream. You need a real engineer in this case.</p>
<blockquote><p><em>Research is to see what everybody else has seen, and to think what nobody else has thought</em> – Albert Gyorgyi</p></blockquote>
<p>I think when you are out to build a start-up, you need to do a good amount of research about your target market, yes I mean it, and it’s a serious thing. You need to do proper analysis. I sometimes wonder that how someone can start building products without analyzing the market, you need to be sure and backed up with statistics that indeed there’s a need for your product, don’t just read some articles and start assuming that there’s a big potentially huge untapped market for your product, watch your steps dude!. A good approach can be to identify some of your target users, engage with them, get their feedback on the problem that you are trying to solve, give them multiple solutions, see which one suits them well. Start with your market before building your product. Try creating product documentation, PowerPoint presentation, and prototypes (it’s a must), get a clear understanding of what you are trying to build, bring your vision into reality slowly and steadily, I know entrepreneurs don’t like the word ‘slow’ but remember “Slow and steady always wins the race”. Having a prototype before you build the actual product is pretty important because it can help you see that how people will interact or use your product, if you don’t find the prototype compelling enough for yourself then think again before investing your fortune.</p>
<p>When you are out to achieve your dream, you should keep in mind that most of the time you have limited resources, so precise planning and careful usage of your resources can yield you pretty satisfactory results, and the most important of all is to have a clear understanding of your goal, and a path to that. “Rome wasn’t built in a day” – so plan an incremental program, be realistic that how much you want to achieve in a certain version, then further break it in multiple iterations, remember the more impatient you are the more the chances to make mistakes which will eventually wash out your dream. Don’t build everything that you have in your mind, instead carefully decide the set of core features, which often is a small set of necessary features, keep them modular so that you can easily pull them in or out, have a good amount of discussion around core features, keep it small and extensible, build the base first. So once you have the first version ready, gather as much user input as you can, ask your friends or anyone outside your company who is not associated with the idea to evaluate your product, consider their inputs because they are the people who are going to use it at the end of the day, incorporate their inputs, keep this practice going until you reach a stable version. Avoid having “too many features”, yes I mean it, having too many features actually confuses the user, so don’t give your users too many choices, don’t even expect them to remember how to use each and every feature that you provide, so having a small set of useful features is good in this case, don’t waste your time building on a lot of features, control your temptation to add as many features as you can or you think can be useful, don’t assume unless you really have the statistics to back you up that those features are indeed necessary. It sounds a cool thing that your application has multitude of features than others, I have seen entrepreneurs brag about it that they have tons of features that their nearest successful competitor doesn’t have, this does not make sense if only 1% of your users are actually using those features. So remember having tons of features won’t help, even if you think you want to have those then build your application like a platform and allow others to build the missing bits on top of it.</p>
<p>Lastly, I would like to say that don’t just copy what others have built, remember copying won’t help, for example if you copy Facebook or Twitter and thus assume that your application will be a great success, then you are simply ignorant, or just don’t understand how web works. It’s like selling a car which has its engine from Ferarri, chassis from Honda and other accessories from different vendors and you think that you have built a great car and people will buy it like crazy, nobody will because it lacks originality.</p>
<h2>Technology and architecture</h2>
<p>The technology defines a product; it is the underlying system which works to make sure that a user of the system performs his desired tasks gracefully without much hassle. The aim of the system should be to aid the user to achieve his target, it should not come into the way of users to do their stuffs, a system should be designed to make a complicated task simple, and it’s of no use if the system itself makes a simple task even more complicated instead of doing the other way round. When designing a scalable architecture you should keep in mind that modularity is your way to go, there should be a clear separation of the parts which makes up the system as a whole, this greatly reduces the maintenance hazards in long term. I understand that when you are building a system there will indeed be dependencies, but there are lots of cool ways you can handle it, read DI (Dependency Injection) or consider picking up “Design Patterns – Elements of Reusable of Object Oriented Software”.</p>
<p>Choosing the right architecture is equally important while designing the system, a wrong choice can put you in big pain at the beginning and a careful consideration regarding the right technology will save you a lot of dreadful nights. Consider a matured Open Source technology backed up by a vibrant community.</p>
<p>Another thing regarding designing the architecture, remember it is not just designing the Database only and if you think database normalization is the only thing then this is the first sign that you are going to be in deep shit sooner than later. The whole architecture depends on the application design, modularity and extensibility, if a system was not designed to be extensible then it’s doomed to be a failure. I have noticed some conceptual problems where people think that the scalability and stability of the system depends mostly on hardware than on software, they think that the more hardware you have the more faster your system will be, which is just as wrong as to think JavaScript is a subset of Java. If your system was designed to be modular then you can plan for better QA, don’t try to finish things as quickly as possible which often results in error and reimplementation of the same, some people try putting more resources to finish things quickly, remember one simple example – “it takes 10 months to have a child, if you put 10 men or women, that does not mean that you can have a child in one month <img src='http://webgyani.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ”. Have a proper review process, reviewing and thus maintaining quality is very important for a system to evolve, and a serious introspection can often find a lot of errors even before writing a single test case.</p>
<p>If you are building a web application, you must have a browser support chart in place while designing the system, if you don’t have one then it is a sheer example of improper planning and a recipe for the disaster. One of the pain-points in modern web development is supporting IE6, do a little upfront research regarding your target users browsing environment, if you think you need to support IE6 then plan accordingly, but please don’t change course in the middle, don’t just decide to start supporting IE6 in one fine morning, you should consider doing the cost benefit study before supporting IE6, if that suits your financial model then go for it else decide upfront what to do. One option that you can follow is “Progressive Enhancement”.</p>
<p>Last but not the least, if you are using some well-established open technologies there you may find some way to customize it, then keep the customization as minimum as possible, never try to use the ability to customize as a tool to change the behaviour of the open system, don’t just unnecessarily add proprietary extensions to it, if you can’t make it work properly, then do a research that how others have done it and what’s wrong in your approach. I have this experience before where I have seen people changing XMPP protocol in such way by adding lots of proprietary extensions to it and that it has eventually become a massive pile of shit and it can no longer be called XMPP and the funny thing is that if you implement XMPP it is normally assumed that the existing XMPP clients can communicate with your system, but in the above mentioned case that system actually broke that compatibility, so the lesson is just don’t do that. Remember what the Zen of Python says “<em>There should be one&#8211; and preferably only one &#8211;obvious way to do it.</em>”</p>
<p>Finally a bit about Application Security, when you are building a system which will store user’s personal data then you must make sure that your system is secure, remember security is an important thing, because users trust your website that you will respect their privacy. Ask your programmers what they know about security, you might be disappointed that how little they know but tell them to learn the best practices. Don’t implement “Security using obscurity”, this does not work. Make sure that your system does not have any “SQL injection” hole, if it’s a web application consider preventing XSS, Session/JS Hijacking scenarios, another example if you are using Flash <em>crossdomain.xml</em>, beware that this can expose your website to variety of attacks.</p>
<blockquote><p><em>Engineering is not making a perfect solution, but doing the best you can with limited resources</em> – Randy Pausch.</p></blockquote>
<p>That’s it regarding technology and architecture, a robust application design can benefit you from lot of ways, so take your time to design, do proper research prior to it, hire right people and carefully use your resources.</p>
<h2>Employee Management</h2>
<p>This one is a bit tricky, I wanted to avoid talking about it but without this it looks like incomplete, so let’s read on. In start-up companies initially you will see people digging into technologies, learning new things, trying to do stuffs that they always wanted to do, almost half of them are the right set of people that you need, not everybody wants to work for a start-up by the way and those who work have at least the mindset to work for a start-up, so keeping those people motivated and nurturing them is the only way to build a start-up workforce as I think. Start-ups are known for “Open Environment”, “Flat Organizational Structure”, which is very crucial for the growth, and this structure needs to be maintained all along till your company is a start-up. Don’t try to bring hierarchy in your “twenty” people company, geeks often find hierarchy very annoying.</p>
<blockquote><p><em>Let the programmer be many and the managers few &#8212; then all will be productive</em> &#8211; Tao of Programming (<a href="http://www.textfiles.com/100/taoprogram.pro">http://www.textfiles.com/100/taoprogram.pro</a>)</p></blockquote>
<p>People usually work hard in start-ups and they deserve recognition for that, so if you see that people are working hard for you then encourage them and give them the recognition that they deserve, don’t just piss them off saying that you stay late in the office so it means you can’t finish your tasks in time, which is in reality a big lie and enough to demotivate that person. Treat your employees properly and if you hire someone then give him some time to get used to the system, plan for some sort of training for new joinees. I saw once that my company hired a young fresher in my team(without discussing with me) and gave him an HTML book to read and the very next day assigned him some bugs to solve, then I had a talk with that guy and learnt that he never had done HTML in his entire life and he then needed to solve those bugs, this incident just made me surprised, this isn’t the way to treat your employees, I saw a lot of dreams into his eyes but I knew that some of them are going to be crashed because he landed up in a wrong place for the very first time in his career, I feel bad for him, so my advice to those entrepreneurs who do this kind of stuffs that don’t just break the dreams that people have think that you have created a start-up to achieve your dream similarly others do have their own dreams, don’t break them, if you can’t help then don’t hire, don’t be a jerk. Here is a small solution that I have come up with if you have freshers working in your company and don’t know whether they are improving or not, then ask them every month that what are the new things that they have learnt in last month, verify their answers, this will make them learn new things, which in turn is a good thing. Plan some sort of tech talks every two weeks, which will create an environment of sharing knowledge. Lastly, the psychological well-being of the employees is very much important for the company’s work culture and long term benefit, forcing them to work hard late night will soon burn them out, which results in quitting, exploitation can’t work for longer period of time, entrepreneurs should understand this.</p>
<p>Okay, that’s it; it has become a long post, if you have come to this very last paragraph then I personally thank you for your patience and the time you took to read this post. All the above things are my thoughts and here in this blog I like to share the stuffs that matter to me. If you think that my concerns are valid ones then I’ll appreciate if you comment, by the way it’s not necessary. Finally, this post was not intended to hurt anyone; I tried to keep it as constructive as possible, with bits of my own experience as examples. I hope you have enjoyed this. Thanks for reading through this once again.</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/11/three-mistakes-of-indian-it-start-ups/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Employee life-cycle at Big IT firms in India</title>
		<link>http://webgyani.com/2009/11/employee-life-cycle-at-big-it-firms-in-india/</link>
		<comments>http://webgyani.com/2009/11/employee-life-cycle-at-big-it-firms-in-india/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 16:00:22 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://webgyani.com/?p=55</guid>
		<description><![CDATA[I have been working in a big company since a month, here I am presenting a chart of the employee life-cycle that I observed during my tenure, I have been actively working and have found out that very few people are passionate about what they are doing, though it sounds pessimistic, but I hope the more I will interact with the people, the more I come to know about their aspirations and goal. Apparently in India software industry is a mess, once you are into it, you found yourself in a world of weird culture where the quality of a product is often below par. It&#8217;s important for developers to understand that the quality and ease of use of a particular product is what makes an end user happy.

&#160;
&#160;
Hope you have liked it  , by the way the above post is not meant to heart anyone&#8217;s feeling, chilax&#8230;
]]></description>
			<content:encoded><![CDATA[<p>I have been working in a big company since a month, here I am presenting a chart of the employee life-cycle that I observed during my tenure, I have been actively working and have found out that very few people are passionate about what they are doing, though it sounds pessimistic, but I hope the more I will interact with the people, the more I come to know about their aspirations and goal. Apparently in India software industry is a mess, once you are into it, you found yourself in a world of weird culture where the quality of a product is often below par. It&#8217;s important for developers to understand that the quality and ease of use of a particular product is what makes an end user happy.</p>
<p><span id="more-55"></span></p>
<p>&nbsp;</p>
<div id="attachment_56" class="wp-caption aligncenter" style="width: 671px"><img class="size-full wp-image-56" title="employee-life-cycle" src="http://webgyani.com/wp-content/uploads/2009/11/employee-life-cycle.jpg" alt="Employee Life-cycle at Big IT firms in India" width="661" height="497" /><p class="wp-caption-text">Employee Life-cycle at Big IT firms in India</p></div>
<p>&nbsp;</p>
<p>Hope you have liked it <img src='http://webgyani.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , by the way the above post is not meant to heart anyone&#8217;s feeling, chilax&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/11/employee-life-cycle-at-big-it-firms-in-india/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google&#039;s plan to kick Microsoft&#039;s arse in a different way</title>
		<link>http://webgyani.com/2009/09/googles-plan-to-kick-microsofts-arse-in-a-different-way/</link>
		<comments>http://webgyani.com/2009/09/googles-plan-to-kick-microsofts-arse-in-a-different-way/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 15:22:07 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Miscellaneous]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[ChromeFrame]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[IE]]></category>

		<guid isPermaLink="false">http://webgyani.wordpress.com/?p=51</guid>
		<description><![CDATA[&#8220;Google yesterday dropped a bomb at Redmond.&#8221;
&#8220;Bomb!!! are you kidding or it&#8217;s just another bad joke from you?&#8221;
&#8220;Wait wait it&#8217;s not, instead it&#8217;s true that Google did drop a bomb but it&#8217;s not similar to normal bomb that you and me have seen in the movies, it&#8217;s a different one&#8230; yes it&#8217;s a different one and it&#8217;s called Chrome Frame. You might be wondering what&#8217;s this, no worry just have a little more patience you will get to know what it is.&#8221;

Nuff&#8217; said&#8230; let&#8217;s explain what it is all about, Chrome Frame is Google&#8217;s effort to kick Internet Explorer in it&#8217;s arse, yes in it&#8217;s arse, in fact in Microsoft&#8217;s arse, this is a simple plugin( yes simple from User&#8217;s point of view) for Internet Explorer(6, 7 and 8), which does a &#8220;cool thing&#8220;, it replaces IE&#8217;s decade old, shitty rendering engine a.k.a Trident with Google Chrome&#8217;s high performance rendering [Continue... <span class="meta-nav">&#8594;</span>]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<em>Google yesterday dropped a bomb at Redmond.</em>&#8221;</p>
<p>&#8220;<em>Bomb!!! are you kidding or it&#8217;s just another bad joke from you?</em>&#8221;</p>
<p>&#8220;<em>Wait wait it&#8217;s not, instead it&#8217;s true that Google did drop a bomb but it&#8217;s not similar to normal bomb that you and me have seen in the movies, it&#8217;s a different one&#8230; yes it&#8217;s a different one and it&#8217;s called <a title="ChromeFrame" href="http://blog.chromium.org/2009/09/introducing-google-chrome-frame.html" target="_blank">Chrome Frame</a>. You might be wondering what&#8217;s this, no worry just have a little more patience you will get to know what it is.</em>&#8221;</p>
<p style="padding-left:30px;">
<p>Nuff&#8217; said&#8230; let&#8217;s explain what it is all about, Chrome Frame is Google&#8217;s effort to kick Internet Explorer in it&#8217;s arse, yes in it&#8217;s arse, in fact in Microsoft&#8217;s arse, this is a simple plugin( yes simple from User&#8217;s point of view) for Internet Explorer(6, 7 and 8), which does a &#8220;<em>cool thing</em>&#8220;, it replaces IE&#8217;s decade old, shitty rendering engine a.k.a Trident with Google Chrome&#8217;s high performance rendering engines ( Webkit for HTML-CSS and V8 for JavaScript), so once you have installed this plugin you can have Chrome&#8217;s super fast rendering engine inside IE. Isn&#8217;t this a real cool thing?? By the way it&#8217;s still in beta and the awesome thing is that it&#8217;s OpenSource. This is what our Alex Russel ( Creator of DOJO JavaScript Library ) has been doing since he joined Google, great job done.</p>
<p>We all know that developing rich web applications these days is a pain if we need to support Internet Explorer but the crude fact is that we can&#8217;t ignore IE because of its market share, which is still more than 60%. And Microsoft is somewhat reluctant or don&#8217;t know what, in pushing new developments for IE, so it has become stagnant for some years and lagging far behind in features and performance than other modern browsers. Microsoft did try to fix this in their effort of developing IE8 which is a better browser than both of it&#8217;s ancestors, but it failed to gain enough momentum. As Microsoft also extended support for IE 6 till 2014 (Win XP support ends in that year), so there was a real or quick need of a solution which can help developers and users to reap the real benefit of modern rich web applications. So here comes the Google Chrome Frame, which is supposed to fill this gap, until Microsoft fixes it&#8217;s browsers or decides to use Webkit and V8 as it&#8217;s rendering engine <img src='http://webgyani.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Recent surveys regarding IE6 market share reveal that almost 70% IE users are not able to upgrade their browsers due to some other reasons for example : old OS, corporate policy, govt policy etc, so this is a nice alternative for them (though Chrome Frame requires Win XP, but it&#8217;s still in beta so lets see) and as far as I guess this plugin was intended for big Corporate Houses who still use IE 6  because they have some in-house applications which only works in IE 6 or may b uses IE&#8217;s ActiveX controls, so this is a answer for them, now if Google can convince those business organizations about this then we might soon have Chrome Frame installed in most of them.</p>
<p>The Chrome Frame blog and developer&#8217;s guide has detailed the installation process and the usage, please check out the below link for more information regarding this:</p>
<p><a href="http://code.google.com/chrome/chromeframe/developers_guide.html">http://code.google.com/chrome/chromeframe/developers_guide.html</a></p>
<p>Finally as a Web Developer/Frontend Engineer I&#8217;d love to see Chrome Frame in all IE6/7 browsers, because this will surely make my life less painful and I&#8217;ll focus more on developing cool applications than spending &#8216;countless hours&#8217; to fix IE bugs. This is a serious attempt from Google to fix the mess, so now let&#8217;s see how much response it gains, by the way I do hope for the best, rest is up to the users and decision makers.</p>
<p>Cheers!!! that&#8217;s why I love you so much Gooooooooogle.</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/09/googles-plan-to-kick-microsofts-arse-in-a-different-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer &quot;Invalid argument&quot; error</title>
		<link>http://webgyani.com/2009/08/internet-explorer-invalid-argument-error/</link>
		<comments>http://webgyani.com/2009/08/internet-explorer-invalid-argument-error/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 08:53:13 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[Blogroll]]></category>

		<guid isPermaLink="false">http://webgyani.wordpress.com/?p=48</guid>
		<description><![CDATA[Recently, I was completely bowled out by Internet Explorer&#8217;s &#8220;Invalid argument&#8221; error, I did a google but couldn&#8217;t find any, so I started debugging my code, after a couple of hours of hair-pulling I did find the cause, and it was an accidental implementation of a PNG fix for IE 6. Let me explain this a bit, we have a &#8220;png fix&#8221; class in one of our CSS files where we have used some IE &#8216;expression hack&#8217; to apply a fix for transparent PNG images in IE6 and somebody by mistake applied that class to an image which is a GIF file, and this was causing the error.
I thought to write about it, in case somebody has the same problem, he/she might find it helpful
]]></description>
			<content:encoded><![CDATA[<p>Recently, I was completely bowled out by Internet Explorer&#8217;s &#8220;Invalid argument&#8221; error, I did a google but couldn&#8217;t find any, so I started debugging my code, after a couple of hours of hair-pulling I did find the cause, and it was an accidental implementation of a PNG fix for IE 6. Let me explain this a bit, we have a &#8220;png fix&#8221; class in one of our CSS files where we have used some IE &#8216;expression hack&#8217; to apply a fix for transparent PNG images in IE6 and somebody by mistake applied that class to an image which is a GIF file, and this was causing the error.</p>
<p>I thought to write about it, in case somebody has the same problem, he/she might find it helpful</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/08/internet-explorer-invalid-argument-error/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>John Resig &#8211; ECMAScript 5 Objects and Properties</title>
		<link>http://webgyani.com/2009/05/john-resig-ecmascript-5-objects-and-properties/</link>
		<comments>http://webgyani.com/2009/05/john-resig-ecmascript-5-objects-and-properties/#comments</comments>
		<pubDate>Thu, 21 May 2009 07:19:22 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[ECMAScript 5]]></category>

		<guid isPermaLink="false">http://webgyani.wordpress.com/?p=46</guid>
		<description><![CDATA[ECMAScript 5 is on its way. Rising from the ashes of ECMAScript 4, which got scaled way back and became ECMAScript 3.1, which was then re-named ECMAScript 5
http://ejohn.org/blog/ecmascript-5-objects-and-properties/
ECMAScript is finally there, read the whole post by John Resig (Creator of  jQuery), and see the changes it brings to the JavaScript development, and the good news is that all major browser vendors agreed to implement this sooner than later. It has a detail description of how we will be accessing objects and it&#8217;s properties with some simple example code, to me this has opened a completely new era for JavaScript programming, though this specification brings real power to JavaScript which also comes with the cost of increased complexity, but as you know in any powerful language complexity is always there, it&#8217;s up to the developer how he/she can reduce the complexity but uses the full power of the language. Lastly, I [Continue... <span class="meta-nav">&#8594;</span>]]]></description>
			<content:encoded><![CDATA[<blockquote><p>ECMAScript 5 is on its way. Rising from the ashes of ECMAScript 4, which got scaled way back and became ECMAScript 3.1, which was then re-named ECMAScript 5</p></blockquote>
<p><a title="ECMAScript 5 Objects and Properties" href="http://ejohn.org/blog/ecmascript-5-objects-and-properties/" target="_self">http://ejohn.org/blog/ecmascript-5-objects-and-properties/</a></p>
<p>ECMAScript is finally there, read the whole post by John Resig (Creator of  jQuery), and see the changes it brings to the JavaScript development, and the good news is that all major browser vendors agreed to implement this sooner than later. It has a detail description of how we will be accessing objects and it&#8217;s properties with some simple example code, to me this has opened a completely new era for JavaScript programming, though this specification brings real power to JavaScript which also comes with the cost of increased complexity, but as you know in any powerful language complexity is always there, it&#8217;s up to the developer how he/she can reduce the complexity but uses the full power of the language. Lastly, I just can&#8217;t wait to get my hands dirty with ECMAScript 5 <img src='http://webgyani.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/05/john-resig-ecmascript-5-objects-and-properties/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building a Better JavaScript Profiler with WebKit</title>
		<link>http://webgyani.com/2009/04/building-a-better-javascript-profiler-with-webkit-%c2%ab-alert-debugging/</link>
		<comments>http://webgyani.com/2009/04/building-a-better-javascript-profiler-with-webkit-%c2%ab-alert-debugging/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 03:31:11 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[profiling]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://webgyani.wordpress.com/?p=39</guid>
		<description><![CDATA[Francisco Tolmasky has implemented cool hack/patch to webkit to solve the JavaScript Profilers displying &#8220;?&#8221; as the name of any anonymous functions, follow the link at the bottom of the post for the full story&#8230;
Here is the little excerpt from that article:
I had the pleasure of showing off some the cool new features we’ve been adding to the WebKit inspector at JSConf last week. It’s no secret that debugging basically sucks in JavaScript, and until recently, it was a little bit worse in Objective-J. Up until now we’ve focused mainly on adding stop gap measures to our own code, but recently we’ve decided to shift gears and attack the problem head on in the browsers themselves. This is why these past couple of weeks I’ve set aside the JavaScript code and instead focused on working with the great guys on the WebKit team on providing a solid debugging experience both [Continue... <span class="meta-nav">&#8594;</span>]]]></description>
			<content:encoded><![CDATA[<p>Francisco Tolmasky has implemented cool hack/patch to webkit to solve the JavaScript Profilers displying &#8220;?&#8221; as the name of any anonymous functions, follow the link at the bottom of the post for the full story&#8230;</p>
<p>Here is the little excerpt from that article:</p>
<blockquote><p>I had the pleasure of showing off some the cool new features we’ve been adding to the WebKit inspector at JSConf last week. It’s no secret that debugging basically sucks in JavaScript, and until recently, it was a little bit worse in Objective-J. Up until now we’ve focused mainly on adding stop gap measures to our own code, but recently we’ve decided to shift gears and attack the problem head on in the browsers themselves. This is why these past couple of weeks I’ve set aside the JavaScript code and instead focused on working with the great guys on the WebKit team on providing a solid debugging experience both in Objective-J and JavaScript in general. We first decided to focus on profiling, since this is an area of considerable interest for a framework&#8230;</p></blockquote>
<p><a href="http://www.alertdebugging.com/2009/04/29/building-a-better-javascript-profiler-with-webkit/" target="_self">Read the detailed article here</a></p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/04/building-a-better-javascript-profiler-with-webkit-%c2%ab-alert-debugging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Mystery Of CSS Sprites: Techniques, Tools And Tutorials &#124; CSS &#124; Smashing Magazine</title>
		<link>http://webgyani.com/2009/04/the-mystery-of-css-sprites-techniques-tools-and-tutorials-css-smashing-magazine/</link>
		<comments>http://webgyani.com/2009/04/the-mystery-of-css-sprites-techniques-tools-and-tutorials-css-smashing-magazine/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 07:27:18 +0000</pubDate>
		<dc:creator>Arnab</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS Sprites]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://webgyani.wordpress.com/?p=29</guid>
		<description><![CDATA[The Mystery Of CSS Sprites: Techniques, Tools And Tutorials &#124; CSS &#124; Smashing Magazine.
CSS Sprites are not new. In fact, they are a rather well-established technique and have managed to become common practice in Web development. Of course, CSS sprites are not always necessary, but in some situation they can bring significant advantages and improvements — particularly if you want to reduce your server load. And if you haven’t heard of CSS sprites before, now is probably a good time to learn what they are, how they work and what tools can help you create and use the infamous technique in your projects.
Read the full article at Smashing Magazine, it contains a ton of links regarding CSS-Sprites, check them out, after that you should have a fair understanding of what it is, and you will be able to optimize your site, which will load faster and also saves a lot [Continue... <span class="meta-nav">&#8594;</span>]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/">The Mystery Of CSS Sprites: Techniques, Tools And Tutorials | CSS | Smashing Magazine</a>.</p>
<blockquote><p><strong>CSS Sprites</strong> are not new. In fact, they are a rather well-established technique and have managed to become common practice in Web development. Of course, CSS sprites are not always necessary, but in some situation they can bring significant advantages and improvements — particularly if you want to reduce your server load. And if you haven’t heard of CSS sprites before, now is probably a good time to learn what they are, how they work and what tools can help you create and use the infamous technique in your projects.</p></blockquote>
<p>Read the full article at Smashing Magazine, it contains a ton of links regarding CSS-Sprites, check them out, after that you should have a fair understanding of what it is, and you will be able to optimize your site, which will load faster and also saves a lot of bandwidth, by the way this will also give users a nice experience. Keep reading&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://webgyani.com/2009/04/the-mystery-of-css-sprites-techniques-tools-and-tutorials-css-smashing-magazine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
