<?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>Dominique Stender</title>
	<atom:link href="http://www.st-webdevelopment.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.st-webdevelopment.com</link>
	<description>Good software is only the beginning...</description>
	<lastBuildDate>Wed, 14 Apr 2010 17:50:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Successful offshoring part 4: Independence</title>
		<link>http://www.st-webdevelopment.com/management/2010/04/successful-offshoring-part-4-independence/</link>
		<comments>http://www.st-webdevelopment.com/management/2010/04/successful-offshoring-part-4-independence/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 17:50:37 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[independence]]></category>
		<category><![CDATA[module]]></category>
		<category><![CDATA[offshore project]]></category>
		<category><![CDATA[offshoring]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[preparation]]></category>
		<category><![CDATA[project planning]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=365</guid>
		<description><![CDATA[An article about the importance of independence in offshore projects. Each office must be responsible for independent features in order to keep efficiency high and to reduce the amount of friction. ]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-431" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/03/985076_76688133-small.jpg" alt="" width="220" height="230" />In this series on successful offshoring we already spoke about <a title="Successful offshoring part one: Time(zone) management" href="/management/2010/03/successful-offshoring-part-1-timezones/" target="_self">time(zone) management</a>, the important <a title="Successful offshoring part two: The coordinator" href="/management/2010/03/successful-offshoring-part-2-coordinator/" target="_self">role of the coordinator</a> and <a title="Successful offshoring part three: Preparation" href="/management/2010/04/successful-offshoring-part-3-preparation/" target="_self">advisable steps during the preparation phase</a>.</p>
<p>Next in my discussion on how to do offshoring successfully is independence. You have to make sure the development team in the offshore location can work as independently as possible.</p>
<p>Like the earlier articles it is equally important to deal with the subject of independence in the planning phase of a project, but also each and every day of its lifetime. <span id="more-365"></span></p>
<h4>Large enough backlog</h4>
<p>It may seem obvious but a good start into independence is to make sure that there is enough work. Specifically, ensure there is enough work even when a few of the tasks require clarification or face issues that can't be resolved without the support from another office. Examples are an external system not being accessible due to firewall issues, a synchronization that failed, etc.</p>
<p>You don't want your developers to be idle as soon as a minor glitch is encountered. As we learned in the first part of this series waiting for a clarification can easily take the better part of a working day if you are <a title="Successful offshoring part one: Time(zone) management" href="/management/2010/03/successful-offshoring-part-1-timezones/" target="_self">working across time zones</a>.</p>
<p>Naturally in the end of your sprint (if you do Scrum), your iteration or when you reach your next milestone all the tasks that are assigned have to be completed. The reality will be that you need to take into account the effort for clarifications and keep that in mind when you plan your sprints / iterations / milestones. So this is not a matter of being lax. It is a matter of being realistic.</p>
<p>Encourage your team to adopt an agile way of thinking. Encourage them to stay productive by switching to another task if another one is blocked.</p>
<h4>Assign whole modules, split vertically</h4>
<p>Aside from ensuring enough work you can increase the productivity by assigning independent modules. In order to do that you have to understand the difference between a horizontal and a vertical split and know the implications.</p>
<p>Each application probably contains backend code, business logic and database access code, certainly a GUI of some sort and maybe external interfaces.</p>
<p>A vertical split would be to assign the implementation of one whole feature of the application to one office - including the GUI, the business logic and everything else related to that feature - and another feature to another office.</p>
<p>A horizontal split would be to assign the GUI implementation to one office and the implementation of the backend to another office.</p>
<blockquote><p>Note: Let's say you split horizontally. Any change in the business logic (done in office one) might break the GUI (done in office two). Now office two doesn't know if their GUI is breaking because of a change in the business logic that office one didn't inform about yet or because of a bug. Communication is required. Communication that takes time.</p>
<p>To complicate the matter further, office two can't fix the issue in the business logic even if it is clear as day that it is a bug because they are not responsible for the code! They might not even have sufficient permissions to that module in the revision control system!</p></blockquote>
<p>It is important that each such module can be fully implemented and tested independently. So take the effort and divide your project vertically. You may think it is not possible but usually it is. Maybe it will take some effort but that effort will pay off soon.</p>
<h4>Small support-work is possible but less efficient</h4>
<p>Resist the temptation to do all the 'serious' work in the main office while assigning only service tasks or bugfixes to the offshore location.</p>
<p>This approach might lead to the unfortunate situation that the offshore office doesn't have a holistic view on your application or product. If the global picture is missing you risk a lot of harm by developers fixing a bug in module A but breaking modules B, C and D in the process because they didn't know those were related.</p>
<blockquote><p>Remember: Your offshore team knows a lot less about what happened in the workshops with the client than you do. They were not there. They only know what you told them.</p></blockquote>
<p>You might think that the developers in the main office are 'better' or otherwise more experienced than those offshore. My advice is to fly offshore for at least a month and spend a lot of time analyzing the situation from their side. Chances are that you discover impediments that you didn't see from the main office or that didn't seem that dramatic. Work on those first.</p>
<p>Removing these impediments will be easier and less expensive than to have your 'better' staff in the main office support the offshore staff continuously. You might even risk to disgruntle your main office staff if these impediments remain unattended.</p>
<h4>Your view?</h4>
<p>The aspects I discusses in this article certainly are only the top of the iceberg that threatens to sink your ship. Let me and my dear readers know what other obstacles and issues you encountered in terms of working independently and how you solved them. I'm happy for every single comment.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/management/2010/04/successful-offshoring-part-4-independence/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pen &amp; paper Scrum &#8211; 10 days edition</title>
		<link>http://www.st-webdevelopment.com/agile/2010/04/pen-paper-scrum-10-days-edition/</link>
		<comments>http://www.st-webdevelopment.com/agile/2010/04/pen-paper-scrum-10-days-edition/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 13:09:12 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[KISS]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[template]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=422</guid>
		<description><![CDATA[New templates for ten day sprints to use in Scrum with pen &#038; paper.]]></description>
			<content:encoded><![CDATA[<p>True to the spirit of continuous improvement I just created new printout templates for a <a href="http://www.st-webdevelopment.com/wp-content/uploads/2010/04/SprintBacklog.v1.1-10days.pdf">Sprint Backlog</a> and a <a href="http://www.st-webdevelopment.com/wp-content/uploads/2010/04/SprintBurndownChart.v1.0.pdf">Sprint Burndown Chart</a> for ten-day sprints with <a title="Original article on Scrum with pen &amp; paper" href="/management/2010/01/scrum-pen-paper/" target="_self">pen &amp; paper Scrum</a>.</p>
<p>Hope you find them as useful as I do.</p>
<p>If you're irritated about what pen &amp; paper Scrum is refer to the <a title="Original article on Scrum with pen &amp; paper" href="/management/2010/01/scrum-pen-paper/" target="_self">original article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/agile/2010/04/pen-paper-scrum-10-days-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Successful offshoring part 3: Preparation</title>
		<link>http://www.st-webdevelopment.com/management/2010/04/successful-offshoring-part-3-preparation/</link>
		<comments>http://www.st-webdevelopment.com/management/2010/04/successful-offshoring-part-3-preparation/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 07:34:53 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[co-location]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[communication diagram]]></category>
		<category><![CDATA[direct communication]]></category>
		<category><![CDATA[kickoff meeting]]></category>
		<category><![CDATA[offshoring]]></category>
		<category><![CDATA[preparation]]></category>
		<category><![CDATA[project kickoff]]></category>
		<category><![CDATA[project preparation]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=363</guid>
		<description><![CDATA[I discuss several aspects of successful preparation for an offshore project. This includes personal kickoffs, streamlining communication and interpersonal aspects.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-416" title="globe" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/04/globe_200h1.jpg" alt="" width="201" height="197" />In this third article in my series on successful offshoring I will discuss the preparation of a project that involves a team at a co-location and present several steps to ensure a smooth start.</p>
<p>I give you some measures to keep the project on track and inform you about early warning signs.</p>
<p>If you missed the initial articles which handled the added complexities of <a title="First article about successful offshoring" href="../management/2010/03/successful-offshoring-part-1-timezones/" target="_self">time(zone) management</a>, or the second one talking about <a title="Successful offshoring part 2: the coordinator" href="/management/2010/03/successful-offshoring-part-2-coordinator/" target="_self">the role of the coordinator</a>, I recommend you click one of the the links and start there.<span id="more-363"></span></p>
<h4>Preparation</h4>
<p>You will want to make the project as well prepared, clear and free of uncertainties as possible. Yes, you always try to do that even when you're not offshoring. Here you have to try even harder.</p>
<p>The communication overhead in a co-located project is incredibly high to begin with. A week more spent on clarifications will save you a lot of trouble, time and hence, money.</p>
<blockquote><p>Just remember: Your offshoring partner did not sit in those workshops with your customer. They are not on the phone with the customer. You know a lot more than your partner from offshore. It will be impossible to give them all the info you have but make sure you try real hard. Have a formal kickoff meeting (with physical presence!) and a workshop or two in the beginning.</p></blockquote>
<h4>Start face to face</h4>
<p>It is a very good idea to bring your project manager, consultant and coordinator to the co-location for a couple of weeks during the start of a new project. A reasonable time frame is six weeks for a multi months project.</p>
<p>Make sure your management / consulting team arrives at the co-location a few days prior to kickoff to have enough time to settle down, get rid of jet lag and initial health issues due to change of climate, hygiene and food.</p>
<p>Plan time for the teams (main office and co-location) to get to know each other on a personal level. Go out at least once before kickoff. Dinner, bowling, cart racing... almost anything goes.</p>
<h4>Setup checklist</h4>
<p>Of course, there also should be enough time to set up the working environment prior to kickoff. Verify and re-verify everything. This includes but is not limited to</p>
<ul>
<li> the required documents are on location, in the correct language and up to date</li>
<li> development environment is functional</li>
<li> a revision control system such as Subversion is set up, accounts are configured, known and working</li>
<li> a bug tracking system is set up, accounts are configured, known and working</li>
<li> a deployment system is available and visible from all locations</li>
<li> a mailing list is generally a good idea</li>
<li> for long term projects setting up a wiki makes perfect sense</li>
<li> hand out lists of phone numbers with every person on the project being on the list</li>
<li> do the same for the instant messenger of your choice</li>
<li> make sure the offshore team sits together to facilitate mouth-to-mouth communication</li>
<li> a few webcams are great to keep the team(s) connected and personally involved</li>
</ul>
<h4>Focus</h4>
<p>In an ideal world the project manager and consultant of a project are assigned to it to one hundred percent and do not have any obligations outside of that. If you can achieve that, perfect. In fact, you should try real hard to achieve that if you start a new project at a co-location.</p>
<p>A not-so-ideal world results in project manager and consultant being involved with more than one project. This is the common scenario. During the start phase of a new project in an offshore location this imposes a great risk. The return flight is booked and changing it brings a lot of complications, so time is incredibly precious. Make sure your manager / consultant pair has no other obligations during the time they spend offshore with their team.</p>
<blockquote><p>Here's a simple trick to ensure no one intervenes while you as a manager or consultant are in the offshore office: Be on vacation. At least officially. Do whatever is required as per your company's process to be on leave. Assign a vacation replacement. Inform your (other) customers. Make it very clear to the colleagues of the other teams that you will not be available except for disaster recovery. Stick to it.</p></blockquote>
<h4>Structure your communication</h4>
<p>Even with small teams it is quite easy to end up with a communicational mess. I mean a situation where everyone is using instant messaging, mail, the bug tracking system and the phone simultaneously. The results: Information becomes redundantly stored in multiple communication channels. Only a part of the team is informed. Efficiency goes down.</p>
<p>Spend some time in the beginning of the project to craft a communication diagram. Develop the diagram together with your team to make them involved in it. The diagram has to have two design objectives: First and formost it has to streamline and unify communication. Second, it makes communication transparent.</p>
<p>Maybe it makes sense to assign a 'communication lead' from within the offshore team. That'd be the person that centralizes all statuses, issues and clarifications and takes the initiative to resolve them with the main office. If you're doing Scrum, that'd be your offshore ScrumMaster. The benefits are several. One, there is one person offshore who has the global picture. Two, the other offshore members can continue working (on other tasks) while issues are resolved. Three, for the management / consulting / coordination team in the main office the communication becomes much more efficient and less redundant.</p>
<h4>The second start - remote</h4>
<p>So now your project head has spent a couple of weeks at the co-location and the project started well. The communication is clear and efficient. Things run generally very smooth when your manager / consultant pair take flight and leave for the main office.</p>
<p>Be prepared for an immediate slump of efficiency.</p>
<p>It's easy to wrongly assume that things will continue to run as smoothly as they did initially, when face-to-face communication was the norm. Reality is that they probably won't.</p>
<p>Be on the lookout for a general reduction in communication. There is no save assumption that this would be ok. Instead, communication should go up, both in frequency and duration. If it doesn't, find out why as soon as possible and remove the impediment.</p>
<p>Do not believe that a team member who does not communicate is productive. Maybe he is, but chances are that he is stuck.</p>
<p><a title="Time zone management in offshore projects" href="/management/2010/03/successful-offshoring-part-1-timezones/" target="_self">Mind those time zones</a>. Ensure that any clarifications, issues and problems in the offshore project are resolved before you involve yourself in local projects.</p>
<h4>Summary</h4>
<p>The list of topics to cover under 'preparation' is endless. Largely it involves communication. Be aware of the fact that you will not be able to fully know what is going on at the other location and have tools and measures in place to compensate for that.</p>
<p>I'm sure I didn't cover every aspect. If you're stuck at a certain point or you've encountered different issues than the ones I discuss above, use the comments to inform me and my readers! For a more personal discussion feel free to get in touch with me through the <a title="my contact form" href="/contact/" target="_self">contact form</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/management/2010/04/successful-offshoring-part-3-preparation/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Successful offshoring part 2: The coordinator</title>
		<link>http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-2-coordinator/</link>
		<comments>http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-2-coordinator/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 01:22:07 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[co-location]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[coordinator]]></category>
		<category><![CDATA[offshoring]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[team management]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=361</guid>
		<description><![CDATA[Second article in my series on how to effectively work with an offshore partner. This article covers the responsibilities of a coordinator and how to enable him to be effective.]]></description>
			<content:encoded><![CDATA[<p>This is the second article in a series on successful offshoring. If you missed the first article which handled the added complexities of <a title="First article about successful offshoring" href="http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-1-timezones/" target="_self">time(zone) management</a>, I recommend you click the link and start there.</p>
<p>Here I will discuss the role of the coordinator and what its responsibilities are (and are not). What to look for in the person filling the role but also how to enable this person to do a good job.<span id="more-361"></span></p>
<h4>Pick a good coordinator</h4>
<p>Fact is, you need a dedicated coordinator with great social skills, management capabilities and thorough technical expertise to make offshoring a success.</p>
<p>There will be clarifications. There will be complications and missing pieces of information that no one did foresee. For all of these you'll need a solution as soon as possible in order to keep productivity high. <a title="First article about successful offshoring" href="http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-1-timezones/" target="_self">Mind those time zones</a>!</p>
<p>This is why you really want to assign one of your best employees to the position of coordinator.</p>
<h4>Enable your coordinator to be successful</h4>
<p>First, he has to be willing to do the coordination, he must believe in the whole endeavour and be willing to travel to the co-location every other month. If he doesn't believe in it and in him making it happen, you risk creating a self fulfilling prophecy and the project might fail. Also, coordination done purely from a distance is futile, so the will to travel is mandatory.</p>
<p>Second, you have to reassign all of his previous responsibilities to other people. The initial months of setting up will require all his efforts. It needs time for the offshoring "engine" to run in - during that time you will want the full attention of your coordinator on the endeavor. When the projects start to run smoothly he'll probably be able to take back a few of his earlier duties, but to expect that he will be able to do so from the start is an illusion.</p>
<p>Third, he will need to have the power to make decisions on his own.</p>
<p>Avoid to make him the responsible puppet. Give him power.</p>
<h4>Chose the lesser pain</h4>
<p>Yes, assigning one of your top employees to the coordinator and freeing him of all other duties is expensive and potentially complicated. You'll probably need to hire new staff. Other seasoned members of your staff may have to take the burden of extra work for quite a while. Customers might get slightly irritated when you remove your coordinator from their project.</p>
<p>It will hurt. A bit. For a short period of time.</p>
<p>Assigning a lesser qualified employee to the offshoring endeavor would hurt you much more. So will giving an excellent employee not enough time or power to do his job well.</p>
<p>Projects would be delayed or - god forbid - fail because the coordinator doesn't see the gaps or is not empowered to close them. Customers might get really unhappy and may pick another contractor. Your employees may burn out. A general negative image of the offshoring partners and developers may form among your own staff.</p>
<p>That'd hurt much more, much longer.</p>
<h4>Coordinator without active project involvement</h4>
<p>I argue that the coordinator should not be part of any specific project team. His major job is to keep the projects running smoothly and to identify areas that need improvement. He needs to have the birds eye view on all projects. Experience tells me that you miss the global scope quite fast if you are actively involved.</p>
<blockquote><p>Note that it is irrelevant whether the coordinator is responsible for one or for five projects. Active personal involvement will make him lose his global scope.</p></blockquote>
<h4>Responsibilities</h4>
<p>He needs to watch the teams spirit. Does communication between the locations happen frequently and soon enough? Are people happy or hesitant to use the phone? Does each side of the team see the other side as an equal partner? Do people know each other personally - at least a bit -  across the locations? If communication is good the battle is almost won.</p>
<p>He needs to aim for clarity. Are all tasks and work items understood and without doubts? Does the offshore team know who to contact? Do they know what will happen next week and how the project status is in general?</p>
<p>He needs to ensure efficiency! If hardware or software are inadequate or the working environment as a whole is not suitable this constitutes a bottleneck that needs to be removed. Are people working smart? Do they know how to use the tools they have efficiently?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-2-coordinator/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Successful offshoring part 1: Time management</title>
		<link>http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-1-timezones/</link>
		<comments>http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-1-timezones/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 02:53:07 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[co-location]]></category>
		<category><![CDATA[offshoring]]></category>
		<category><![CDATA[outsourcing]]></category>
		<category><![CDATA[time management]]></category>
		<category><![CDATA[time zones]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=349</guid>
		<description><![CDATA[First article in a series on how to effectively work with an offshore partner. This article covers the aspects of working across time zones, common pitfalls and how to avoid them.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-378" title="globe" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/03/globe.jpg" alt="" width="226" height="150" />Globalization in the software industry not only means global competition and broader markets, it also means outsourcing work to offshore locations.</p>
<p>Offshoring is hard. There are many mistakes to make, some obvious (in hindsight), some not so. Do not expect an immediate success. If you have the strength to sit through the initial months, it can be a good solution to compete, grow and react flexibly to changing environments.</p>
<p>Being largely involved in offshoring and on-site coordination myself, I'll present you with some of the success factors that proved to be most critical in my own environment.</p>
<p>This is the first article in the series, make sure you come back in a couple of days for more on the topic!<span id="more-349"></span></p>
<h4>Mind those time zones</h4>
<p>Working across timezones becomes an issue really fast. In my case, I deal with a rather small time difference of 3.5 hours in summer and 4.5 in winter (daylight savings...). The good news is that we actually have the luxury of sharing office time in both locations. This improves the overall condition tremendously. But let's take a closer look:</p>
<div id="attachment_351" class="wp-caption aligncenter" style="width: 517px"><img class="size-full wp-image-351" title="Timezone difference Germany-India" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/03/timezones-de-in.png" alt="" width="507" height="35" /><p class="wp-caption-text">Timezone difference between Germany and India</p></div>
<p>The above graphic visualizes the typical office hours. Red cells mean "no way, no one will be in the office", gray cells indicate "people are slowly coming in" and white cells assume general availability. Lunch time (typically starting at 1pm in India and 12am in Germany) is also marked gray.</p>
<p>So even with only 4.5 hours of time difference you have only around 4 hours of office time left where you can be sure the other part is also present. Sounds obvious at first but let's discuss what this means with a few scenarios.</p>
<h4>Pitfalls and how to avoid them</h4>
<p>If you're in Germany and you find a mail asking for clarification in your inbox, you'd better reply before you leave for lunch or else it might already be too late for India to react.</p>
<p>On the other hand, if one piece of information is missing for you in India, you'd better write that request before you leave in the evening - Germany has almost four hours left to analyze and reply. Let's play this through: If Germany doesn't respond to that mail before they leave in the evening India will spend at least 5 hours the next day without that information. That's a lot of potential and money wasted.</p>
<p>Any conference calls <em>must </em>be scheduled during German morning, otherwise your Indian staff will work late and that will affect efficiency in the end.</p>
<p>Those are just a few examples of daily activities that need more consciousness in terms of time management. You get the idea.</p>
<p>So what's the solution? Awareness of course. But that is easier said than done. One thing that will help is to adopt a practice from the military: Think and communicate in <a title="The wikipedia on Zulu Time" href="http://en.wikipedia.org/wiki/Zulu_time" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Zulu_time?referer=');">Zulu time</a>. In essence Zulu time is Greenwich, UTC+0. No matter where you are in the world, if you communicate meetings in Zulu time, everyone will know what you mean and will know immediately if that's ok for them or not. It takes a few days to get used to the concept that your office hours are 3am - 12:30am UTC if you're in India, but after that it works like a charm.</p>
<p>By the way: You can set a <a title="Add Additional Time Zone in Microsoft Outlook Calendar" href="http://www.groovypost.com/howto/microsoft/outlook/add-additional-time-zone-in-microsoft-outlook-calendar/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.groovypost.com/howto/microsoft/outlook/add-additional-time-zone-in-microsoft-outlook-calendar/?referer=');">second timezone in your Outlook calendar</a>.</p>
<h4>Other experiences and solutions?</h4>
<p>What is your experience with working across time zones? Did you encounter other issues not covered in my post above? How did you solve them? I'd be happy to read your comment!</p>
<p>For detailed discussions or requests feel free to <a title="Contact me" href="/contact/" target="_self">contact me personally</a>.</p>
<p>Make sure you also read the <a title="Successful offshoring: The coordinator" href="/management/2010/03/successful-offshoring-part-2-coordinator/" target="_self">second article in this series about the on-site coordinator and how to enable him</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/management/2010/03/successful-offshoring-part-1-timezones/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ownCloud &#8211; centralize your data and keep control</title>
		<link>http://www.st-webdevelopment.com/general/2010/03/owncloud-centralize-data-with-control/</link>
		<comments>http://www.st-webdevelopment.com/general/2010/03/owncloud-centralize-data-with-control/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 16:01:18 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[online storage]]></category>
		<category><![CDATA[ownCloud]]></category>
		<category><![CDATA[SaaS]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=342</guid>
		<description><![CDATA[ownCloud solves your "centralized data storage vs. security" dilemma by adding a personal server companion to your KDE Desktop/Netbook/Mobile. You can use it to store your files in your personal cloud storage and access it from all your devices.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-343" title="ownCloud" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/03/owncloud-logo.png" alt="" width="200" height="99" />I'd like to point your attention to the <a title="ownCloud homepage" href="http://ownCloud.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/ownCloud.org?referer=');">ownCloud project</a> my friend Frank is running which just <a title="ownCloud - beta announcement" href="http://blog.karlitschek.de/2010/03/owncloud-development-started.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/blog.karlitschek.de/2010/03/owncloud-development-started.html?referer=');">announced </a>the release of its first beta this weekend.</p>
<h4>What is ownCloud?</h4>
<p>I'll let Frank answer that himself:</p>
<blockquote><p>You can use it to store your files in your personal cloud storage and access it from all your devices. It will also support versioning, backuping, sharing, syncing and other server based functionalities which are useful additions to KDE applications.</p>
<div>ownCloud is the central exchange point for my data and a companion for different KDE powered devices using the AGPL license.</div>
</blockquote>
<p>So there you go. Your own online storage with connectivity to virtually all your gadgets. The benefits are obvious: You don't give your data away as it will still be on your own hardware. That alone is a big improvement over most other online storage systems. I hope my favorite <a title="Tools for a mobile office" href="http://www.st-webdevelopment.com/management/2010/03/tools-mobile-office/" target="_self">mobile office applications</a>, namely the <a title="Files - iPhone file storage" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a>, <a title="QuickOffice - iphone office suite" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">QuickOffice</a> and <a title="iThoughts - mindmapping for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts </a>applications for the iPhone will support ownCloud once it has reached a certain stage.</p>
<h4>Help a good idea to grow!</h4>
<div>
<p>Currently the <a title="ownCloud homepage" href="http://ownCloud.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/ownCloud.org?referer=');">ownCloud </a>project is in beta stage and is looking for PHP and Qt developers for support. So if you're interested read Franks <a title="ownCloud - beta announcement" href="http://blog.karlitschek.de/2010/03/owncloud-development-started.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/blog.karlitschek.de/2010/03/owncloud-development-started.html?referer=');">full announcement</a>, check the <a title="ownCloud mailinglist" href="mailto:owncloud@kde.org" target="_self">mailinglist</a> and the <a title="ownCloud sourcecode" href="http://gitorious.org/owncloud/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/gitorious.org/owncloud/?referer=');">sourcecode</a> and sign up!</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/general/2010/03/owncloud-centralize-data-with-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tools for a mobile office</title>
		<link>http://www.st-webdevelopment.com/management/2010/03/tools-mobile-office/</link>
		<comments>http://www.st-webdevelopment.com/management/2010/03/tools-mobile-office/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 02:05:23 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Management]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[Bookmarks]]></category>
		<category><![CDATA[Files]]></category>
		<category><![CDATA[Instapaper]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iThoughts]]></category>
		<category><![CDATA[Mindmapping]]></category>
		<category><![CDATA[mobile office]]></category>
		<category><![CDATA[Office]]></category>
		<category><![CDATA[Quickoffice]]></category>
		<category><![CDATA[Storage]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=322</guid>
		<description><![CDATA[A short discussion on the mobile productivity apps I use on my iPod, including an office suite, mindmapping software, generic file storage / browser and offline bookmark reader.]]></description>
			<content:encoded><![CDATA[<p>I'm constantly trying to boost my productivity. For me that includes to enable myself to write ideas down instantly. In the present age of the smartphone, the question is no longer which device you should use to write down notes on the go but instead it is: Which applications should I use?</p>
<p>In this article I will present my current tool set of choice for the iPhone.<span id="more-322"></span></p>
<h4>Word processor and spreadsheets</h4>
<p><a title="The Quickoffice iPhone app" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">Quickoffice</a> (<a title="Get the Quickoffice iPhone app on iTunes" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=310723177&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=310723177_amp_mt=8&amp;referer=');">iTunes</a>) is pretty much what is claims to be. You get a Word editor and a spreadsheet application. Both natively work with Microsoft Office formats (old and new) and that is all I need.</p>
<p>The user interface for both applications is easy to learn and while the lack of keyboard and mouse does slow you down when editing spreadsheets, the app makes good use of gestures and multiple-tap events.</p>
<p>What I found to be missing however is the possibility to set headlines and other formats. Note that they are displayed and preserved correctly. You simply can't add new ones. The usual text decorations like bold, italic and the like work smoothly though.</p>
<p>You can up and download documents through a WebDAV interface. The <a title="The MobileMe online storage service" href="http://www.me.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.me.com?referer=');">MobileMe </a>iDisk online storage is also supported but that isn't for me - I value the privacy of my data.</p>
<p>Strangely there doesn't seem to be a straight forward way to copy a file. You have to open the original, make a subtle change and 'save as...'.</p>
<p>Overall Quickoffice let's me get my work done and does it in a rather effective manner, for an ok price.</p>
<p>Aside from the 'pure' office functionalities Quickoffice supports a number of other file formats including images and .pdf, for which it provides readers/viewers. While rounding things up nicely, these readers lack some of the oomph that the Files app provides, see below.</p>
<h4>Mind mapping</h4>
<p>I can't exist without mindmaps. To me they are <em>the </em>organizing and structuring tool of choice. On the computer I use <a title="The Freemind mindmapping software" href="http://freemind.sourceforge.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/freemind.sourceforge.net/?referer=');">Freemind</a>, because it is open source and it's many keyboard shortcuts make creating and editing a mindmap really fast.</p>
<p>There are many mindmapping tools for the iPhone but I believe <a title="iThoughts mindmapping app for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts</a> (<a title="Get the iThoughts mindmapping app for the iPhone" href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294144368&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=294144368_amp_mt=8&amp;referer=');">iTunes</a>) is a clear winner here. It supports virtually all major mindmapping formats and makes clever use of drag and drop on the iPhone. Nodes can be individually styled and highlighted with icons - important for me for additional grouping and priorisation.</p>
<p>Once again, files can be up and downloaded through a WebDAV Interface or through an online storage service, in this case <a title="The box.net online storage service" href="http://www.box.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.box.net/?referer=');">box.net</a>.</p>
<p>Same as above, mobile storage doesn't work for me and I believe it shouldn't be an option for any business use. Your data simply isn't save.</p>
<h4>Generic file storage</h4>
<p>The <a title="The Files storage app for the iPhone" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a> application (<a title="get the Files storage app for the iPhone" href="http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=285578660&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=285578660_amp_mt=8&amp;referer=');">iTunes</a>) is a WebDAV accessible storage medium on your iPhone. Think of it as a WiFi stick.</p>
<p>You can set up a quota how much space on the device Files can take up and security is provided through an access password.</p>
<blockquote><p>Note: It can savely be assumed that the content of the storage remains unencrypted, the password most likely serves only as access prevention.</p></blockquote>
<p>What I like about Files is that it supports reader functionality for most common formats, including .pdf, office formats and an image viewer much like the Photo application from Apple.</p>
<h4>Offline bookmarks</h4>
<p><a title="The Instapaper offline bookmark service" href="http://www.instapaper.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.instapaper.com/?referer=');">Instapaper.com</a> provides you with a simple service: You can bookmark websites to read them later, categorize them, tag them, you name it.</p>
<p>What makes Instapaper stick out of their competition is the good integration. Granted, a browser bookmarklet is nothing special anymore, neither is an iPhone app. Make the <a title="The Instapaper offline bookmark iPhone app" href="http://www.instapaper.com/iphone" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.instapaper.com/iphone?referer=');">iPhone app</a> (<a title="Get the Instapaper offline bookmark iPhone app on iTunes" href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288545208&amp;mt=8" target="_blank" onclick="pageTracker._trackPageview('/outgoing/itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288545208_amp_mt=8&amp;referer=');">iTunes</a>) communicate with one of the most frequently used Twitter clients (Twitteriffic) and make that communication both ways and you have created a huge amount of added usability right there. This is what Instapaper did. Tweet your latest finds right from the <a title="The Instapaper offline bookmark iPhone app" href="http://www.instapaper.com/iphone" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.instapaper.com/iphone?referer=');">Instapaper app</a>. Push articles from the people you follow into your Instapaper list without changing the app.</p>
<p>This is what I do - each morning during breakfast I add all potentially interesting links from Twitter to Instapaper, update the archive in the Instapaper app and I'm ready to go, able to read those articles whenever I want and indepepdent of network availability.</p>
<h4>Summary</h4>
<p>With <a title="The Quickoffice iPhone app" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">Quickoffice</a>, <a title="iThoughts mindmapping app for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts</a> and <a title="The Files storage app for the iPhone" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a>, there are three applications that bring their own storage logic and their own WebDAV interface.</p>
<p>It would be great if <a title="The Quickoffice iPhone app" href="http://www.quickoffice.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.quickoffice.com/?referer=');">Quickoffice</a> and <a title="iThoughts mindmapping app for the iPhone" href="http://www.ithoughts.co.uk/iThoughts/Welcome.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ithoughts.co.uk/iThoughts/Welcome.html?referer=');">iThoughts</a> could team up with the guys from OliveToast (creators of the <a title="The Files storage app for the iPhone" href="http://olivetoast.com/Files/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/olivetoast.com/Files/?referer=');">Files</a> app) to utilize their storage for easier maintenance.</p>
<p>A very similar cooperation is already in place between <a title="Website of Amidio, creator of professional music apps for the iPhone" href="http://amidio.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/amidio.com/?referer=');">Amidio</a> and <a title="Website of Intua, creator of professional music apps for the iPhone" href="http://www.intua.net/products.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.intua.net/products.html?referer=');">Intua</a>, both creators of top notch music creation and sequencing applications for the iPhone. You can record a sample in one app, i.e. <a title="The Hexatone music app for the iPhone" href="http://amidio.com/index.php/iphone-music-apps/jr-hexatone-pro" target="_blank" onclick="pageTracker._trackPageview('/outgoing/amidio.com/index.php/iphone-music-apps/jr-hexatone-pro?referer=');">Hexatone</a> or <a title="The Noise.io synthesizer app for the iPhone" href="http://amidio.com/index.php/iphone-music-apps/noiseio-pro-synth" target="_blank" onclick="pageTracker._trackPageview('/outgoing/amidio.com/index.php/iphone-music-apps/noiseio-pro-synth?referer=');">Noise.io</a>, then fire up <a title="The Beatmaker sequencer app for the iPhone" href="http://www.intua.net/products.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.intua.net/products.html?referer=');">Beatmaker</a> and load that sample through a common storage to sequence it with other samples. Recently that was simplyfied even further: Now you can copy-paste samples between the apps using the iPhone copy-paste logic.</p>
<p>Doing this for the office apps would greatly increase productivity.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/management/2010/03/tools-mobile-office/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Thoughts on HipHop for PHP</title>
		<link>http://www.st-webdevelopment.com/php/2010/02/thoughts-hiphop-php/</link>
		<comments>http://www.st-webdevelopment.com/php/2010/02/thoughts-hiphop-php/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 17:26:39 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[accelerator]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[facebook]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=321</guid>
		<description><![CDATA[An overview of the PHP-to-C++ transformer HipHop for PHP that was recently announced by Facebook. I give an analysis of it's potential along with the requirements and possible limitations.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-327" title="HipHop_logo_white" src="http://www.st-webdevelopment.com/wp-content/uploads/2010/02/HipHop_logo_white.png" alt="" width="213" height="278" />It has been almost two weeks now since Facebook announced <a title="Announcement for the HipHop for PHP code transformer" href="http://developers.facebook.com/news.php?blog=1&amp;story=358" target="_blank" onclick="pageTracker._trackPageview('/outgoing/developers.facebook.com/news.php?blog=1_amp_story=358&amp;referer=');">HipHop for PHP</a>. The source code is still not available because apparently they've ran into some compilation issues, according to <a title="HipHop for PHP on GitHub" href="http://github.com/facebook/hiphop-php" target="_blank" onclick="pageTracker._trackPageview('/outgoing/github.com/facebook/hiphop-php?referer=');">their GitHub</a> status. So in essence, not much is known about HipHop for PHP but I want to try to give my thoughts based on the small amount of information we have and my experience with similar technologies.</p>
<blockquote><p>Please note that the bits and pieces of information come from various sources and things may or may not be exactly as we think they are.</p></blockquote>
<p>In order to understand what HipHop for PHP does it is important to understand how PHP itself gets executed. In this article I will give a rough overview of the PHP execution process and make a few educated guesses in what aspect HipHop for PHP differs from there.</p>
<p>Based on the little information available online I'll discuss how HipHop for PHP is suitable for large businesses and what might turn out to be obstacles that are yet to remove.</p>
<h4><span id="more-321"></span>The PHP execution process</h4>
<p>PHP code can not be executed directly, a property it shares with all other scripting languages such as Python, Ruby and JavaScript. What makes PHP executable is the Zend Engine, and it does so in a two stage process.</p>
<ol>
<li>The scripts are parsed and analyzed, checked for syntactical and semantical errors and if all goes well the application is transformed into byte code.</li>
<li>Since the byte code is still not executable on a CPU, it is interpreted further into machine code (that is CPU dependent) and then executed.</li>
</ol>
<p>For most PHP applications the first parsing stage takes most of the total time. The second execution stage is comparatively fast. So in order to speed up a PHP application, most code optimizers hook into the Zend Engine after the first stage has been completed and save the generated byte code into a cache. In a consecutive call to the webserver the cache will be fed back into the Zend Engine, thus skipping the entire first stage of the execution process.</p>
<p>There are quite a few products on the market that behave in such a way. Zend itself offers the <a title="Zend Optimizer" href="http://www.zend.com/en/products/guard/zend-optimizer" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.zend.com/en/products/guard/zend-optimizer?referer=');">Zend Optimizer</a> (now part of Zend Guard), there is <a title="eAccelerator PHP optimizer" href="http://eaccelerator.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/eaccelerator.net/?referer=');">eaccelerator</a> and <a title="APC, the Alternative PHP Cache" href="http://pecl.php.net/package/APC" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pecl.php.net/package/APC?referer=');">APC</a>, which comes as a PECL package.</p>
<h4>The execution process with HipHop for PHP</h4>
<p>What sets HipHop for PHP apart from these three (and no doubt other) accelerators is that it does not act as a cache. Instead, HipHop for PHP will transform your PHP application into C++ code and compile that directly into a binary which is executable.</p>
<p>In that sense, HipHop for PHP is probably very similar to <a title="Roadsend PHP" href="http://www.roadsend.com/home/index.php?pageID=compiler" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.roadsend.com/home/index.php?pageID=compiler&amp;referer=');">Roadsend PHP</a> which also generates executable code from PHP, albeit not by transforming it into C++ first.</p>
<p>In essence, HipHop for PHP will get rid not only of the first stage of the usual execution stage, but also of a big part of the second stage, namely the interpretation of byte code into machine code. Generally I believe it is safe to assume that HipHop for PHP has the potential to run an application much faster than any of the previously mentioned accelerators, simply because there is less for to be done at runtime. Time will tell.</p>
<p>For detailed information on the internals of HipHop for PHP make sure you watch the <a title="Video of the HipHop for PHP announcement" href="http://www.ustream.tv/recorded/4409735" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.ustream.tv/recorded/4409735?referer=');">Facebook Technology Tasting</a> video on ustream.</p>
<h4>Possible limitations</h4>
<p><strong>The requirements</strong><br />
The <a title="HipHop for PHP requirements" href="http://wiki.github.com/facebook/hiphop-php/building-and-installing" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wiki.github.com/facebook/hiphop-php/building-and-installing?referer=');">requirements to run HipHop for PHP</a> are available online. Nothing out of the ordinary at first sight. The page claims that HipHop for PHP is tested on <a title="The CentOS Linux distribution" href="http://centos.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/centos.org?referer=');">CentOS </a>and <a title="the Fedora Linux distribution" href="http://fedoraproject.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/fedoraproject.org/?referer=');">Fedora</a>. Both are venerable distributions, no doubt. But both also come without vendor support which may or may not be a problem for your organization.</p>
<p>Granted, companies who's codebase can actually benefit from HipHop for PHP will no doubt have a team of excellent system administrators which maintain Linux in their sleep. But those companies might also be in the situation that their customers demand a Linux distribution with commercial support, such as SLES, RedHat etc.</p>
<p>So this is more an organizational issue rather than a technical. That being said it is not clear yet whether or not packages will be released by other Linux distribution vendors once HipHop for PHP is out. If at all, it probably won't happen soon.</p>
<p>Coming back to the requirements for HipHop for PHP, it requires customized packages of libcurl and libevent, which again may or may not be an issue for your environment. Here I see the same organizational issue, but also a possible technical issue - you might be in the situation that you need the original libcurl or libevent for some other software on the server. Only a practical test will tell.</p>
<p><strong>Unsupported language constructs</strong><br />
As with most PHP caches and compilers, a few PHP language constructs are not supported. Most commonly known is the eval() construct which is simply not available in C++. Personally I believe that eval() is a bad thing to begin with and you can get around it in almost every cases. Sadly many PHP frameworks such as <a title="TYPO3 content management system" href="http://www.typo3.org" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.typo3.org?referer=');">TYPO3</a>, many <a title="PEAR - the PHP extension and application repository" href="http://pear.php.net" target="_blank" onclick="pageTracker._trackPageview('/outgoing/pear.php.net?referer=');">PEAR</a> packages, <a title="Drupal content management system" href="http://drupal.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/drupal.org/?referer=');">Drupal</a> and <a title="The Joomla content management system" href="http://www.joomla.org/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.joomla.org/?referer=');">Joomla</a> make use of eval().</p>
<p>If you're intending to run one of these through HipHop for PHP you might need to wait for an update from the community, patch it yourself, or remove the code from the system if you don't need it. In any case this is a time consuming task.</p>
<p>Aside from eval() a few more language constructs may not be supported or may not benefit from the compilation in terms of performance, such as call_user_func_array() and other 'dynamic' constructs like dynamic variables, dynamic includes or built-in functions like function_exists(), class_exists(), get_declared_classes() etc.</p>
<p>HipHop for PHP is no different from other caches and compilers in these regards, so please don't make that affect your choice. Just be aware that things might not be as easy as you'd like them to be.</p>
<p><strong>No Apache?</strong><br />
This is speculative at this point but the <a title="Running HipHop [for PHP]" href="http://wiki.github.com/facebook/hiphop-php/running-hiphop" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wiki.github.com/facebook/hiphop-php/running-hiphop?referer=');">Running HipHop</a> page on GitHub seems to indicate that HipHop for PHP will not make use of the Apache webserver but instead come with its own webserver. My assumption is that this means we'll have to handle HipHop for PHP through Apache, much in the same way that we frequently do with Tomcat. This is not necessarily an issue.</p>
<h4>The potential of HipHop for PHP</h4>
<p>Despite the limitations I mentioned above, I believe HipHop for PHP has the potential to take PHP much further into the enterprise environment than many of the existing solutions. If it can deliver what it promises it is definitely something we will take a very close look at to give our eCommerce framework a serious performance boost.</p>
<p>Very high on my wishlist is to run the transformation process from PHP to C++ but skip the compilation. If that's possible I see the chance to make debugging compile errors much easier.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/php/2010/02/thoughts-hiphop-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Scrum with pen &amp; paper</title>
		<link>http://www.st-webdevelopment.com/management/2010/01/scrum-pen-paper/</link>
		<comments>http://www.st-webdevelopment.com/management/2010/01/scrum-pen-paper/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 02:22:08 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[KISS]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=291</guid>
		<description><![CDATA[Dominique Stender hands out a set of no more than five .pdf print-out templates to enable you to get started with Scrum quickly and based solely on pen&#038;paper, thus not requiring the purchase of any tools.]]></description>
			<content:encoded><![CDATA[<p>A friend of mine recently asked me if I'd know any good freeware tools for use with Scrum. Well, I told him, I don't have any first hand experience with freeware Scrum tools but there certainly are a few.</p>
<p>However in the case that you're just starting with Scrum I would argue that you might be better off without tools. All tools force you into some kind of process that works for somebody else, but might not be optimal for you.</p>
<p>So instead of jumping to a fancy tool that comes with all the bells and whistles instantly, I'd recommend starting as low-tech as possible, learn the basics and discover your individual needs. After that you are enabled to get the Scrum tool that does exactly what you need it to do.</p>
<p>How do you start low-tech? Use pen and paper.<span id="more-291"></span></p>
<h4>Experience over tools</h4>
<p>Scrum as an agile methodology has a very shallow complexity. It doesn't require many artefacts in the forms of documents, lists, reports or charts.</p>
<p>The artefacts defined in Scrum are the <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/ProductBacklog.v1.1.pdf">Product Backlog</a>, <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBacklog.v1.1.pdf">Sprint Backlog</a> and a <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBurndownChart.v1.0.pdf">Sprint Burndown Chart</a>. Personally I find two more "artefacts" to be extremely useful: <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/UserStory.1.2.pdf">User Story Cards</a> and one set of <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/PlaningPokerCards.1.1.pdf">Planning Poker Cards</a> for each team member.</p>
<p>No more than three documents plus two helpers for all your project management needs. Sounds like thin ice? Believe me, I know how you feel but hear me out.</p>
<p>I started off doing Scrum in a waterfall environment, using tools that where developed for waterfall projects. It gave me the advantage of familiarity with the tools (false security?) but at the price of bad usability and cumbersome overhead.</p>
<p>Only since my ScrumMaster Certification I see the benefit of using low-tech "tools" like pen and paper. It is faster, more fun, breeds involvement and identification, can be distributed without permission and data security problems and most important: You will get a much better understanding how Scrum actually works.</p>
<p>Granted, the "high-tech" tools mandatory for my company are still in use, but I already wrote an <a title="My article on Attempting Scrum in a SDLC environment" href="/agile/2009/12/attempting-scrum-sdlc-environment-pt-2/" target="_self">article how to utilize SDLC tools best for Scrum</a> so let's keep that aside for a moment.</p>
<p>Doing Scrum "hands-on" with pen and paper is easier than you might think. There are no complex metrics or calculations to perform. You will see that your planning meetings get a totally different dynamic if you work with a stack of user story cards and pen &amp; paper. People interact physically with each other rather than staring at the pale image of the projector.</p>
<h4>The Product Backlog</h4>
<p>My <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/ProductBacklog.v1.1.pdf">product backlog template</a> is as simple as it gets. One column with the user story number, to make identification easy. A title and a complexity column is all that is filled out in the beginning, usually by the product owner.</p>
<p>In the planning sessions the team will use its planning poker cards to agree upon a complexity which we fill out together in the second column to the right.</p>
<p>Last not least I added a column for dependencies. This will contain the user story number(s) that need to be completed before the one at hand can be filled out.</p>
<h4>The User Story Cards</h4>
<p>The title of a feature in the product backlog serves only as a short summary of the feature itself. It will not explain the task, only give it a name.</p>
<p>User stories fill that gap. My <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/UserStory.1.2.pdf">User Story Card template</a> is half of an A-4 size paper, print it on a duplex printer (so that page 2 of the template is printed on the back) and cut it in half.</p>
<p>The head of the front page of the user story contains the user story number and the priority, both also found in the product backlog. Another header entry, the estimation is left empty. Here we will the required time (not points!) for the task, in the sprint planning meeting.</p>
<blockquote><p>Note that I estimate the features in the product backlog in story points through planning poker, but the tasks of a sprint in hours. One user story is usually comprised of several tasks. The "estimation" value on the user story card is the sum of hours for all tasks of this story.</p></blockquote>
<p>The main part of the front of the user story card is pretty much standard, it has to be filled with the role of the user ("as a ..."), a feature description ("I would like to ...") and the purpose of the feature ("in order to...").</p>
<blockquote><p>For example "<em>As a</em> logged in user <em>I would like to</em> be able to edit and store my delivery address <em>in order to</em> have it pre filled in the shopping basket."</p></blockquote>
<p>In short, the front of the card will give a good overview of a feature. The back contains additional notes and the acceptance criteria as given in the planning meeting.</p>
<h4>The Planning Poker Cards</h4>
<p>Planning poker is easy to perform but I find it notoriously difficult to describe. I will leave it to the ever helpful Wikipedia to give a good run-down of <a title="The Wikipedia on the process of planning poker" href="http://en.wikipedia.org/wiki/Planning_poker#Process" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/Planning_poker_Process?referer=');">the process of planning poker</a>.</p>
<p>I can provide you with a template to cut out your own set of <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/PlaningPokerCards.1.1.pdf">Planning Poker Cards</a>. Bring a stack of uncut prints to your next meeting along with a bunch of scissors and cut them out together. Play your first couples of rounds on non-critical features or even features that do not exist in reality.</p>
<h4>The Sprint Backlog</h4>
<p>In the sprint planning meeting I bring the product backlog along, which has the complexity column already filled out. It contains the complexity in terms of story points, derived through planning poker.</p>
<p>During sprint planning the team picks features from the product backlog that have the highest priority to the product owner. The priority is usually based on business value so it makes perfect sense to finish the most valuable features first.</p>
<p>The user story that belongs to a product backlog feature is read aloud and a discussion starts. Questions are raised and clarified. This continues for a couple of minutes until the feature is commonly understood. Then, the team breaks the feature down in smaller tasks, which are written into the sprint backlog.</p>
<p>The <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBacklog.v1.1.pdf">sprint backlog template</a> once again contains the user story number to easily identify and group the tasks. The sprint backlog also contains a column for the name of the task and a whole lot of columns for numbers.</p>
<p>In the sprint planning session we discuss the overall complexity of each task of a feature and estimate an amount of time (in hours). This value is being written into the "Est." column, marking the initial estimation.</p>
<blockquote><p>Note that some teams prefer to estimate both product backlog features and sprint backlog tasks in story points (planning poker) while others prefer to estimate both in time. You'll have to find out what works best for you.</p></blockquote>
<p>The other columns marked "owner" and "1" to "15" are not filled out yet. During the sprint the team members will pick tasks for them to implement, and write their name into the "owner" column as soon as they do so.</p>
<p>Every evening before leaving the office the team members do a re-assessment how much time on their current task <em>is left </em>and write that into the column marking the Nth day of the sprint.</p>
<p>Let me say that again: The columns "1" to "15" contain the amount of time <em>that is left</em>. It is irrelevant how much time someone spent on a task. The criticality of a delay derives from too much work remaining.</p>
<h4>The Sprint Burndown Chart</h4>
<p>Finally there is the <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/SprintBurndownChart.v1.0.pdf">sprint burndown chart</a> which will display the amount of work <em>remaining </em>on an every day basis.</p>
<p>At the end of the sprint planning meeting the sum of time in the "Est." column of the sprint backlog is transferred to the "day 0" column in the sprint burndown chart.</p>
<blockquote><p>Note that the vertical axis doesn't have numbers assigned to it. Those vary wildly depending on team size, velocity and sprint length. Fill it out yourself.</p></blockquote>
<p>During the sprint I will take the sprint backlog every morning and update the sum of time at it's bottom. This number is X'ed on the corresponding "day N" column of the burndown chart and the joining X's connected. Done before each daily scrum this is a good information radiator telling everybody how well the progress is without even talking about it.</p>
<blockquote><p>It is a good idea to draw a line of "ideal progress" onto the burndown chart as well. This is a straight line, starting at the sum of values of the "Est." column in the sprint backlog, going straight to zero at the column of the last sprint day. This way you can easily real progress with ideal progress.</p></blockquote>
<h4>Conclusion</h4>
<p>So there you are, a <a href="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/PenAndPaperScrum.zip">complete set of templates</a> for your pen &amp; paper based Scrum management needs. For your convenience I've also prepared a .zip file of all .pdfs that will also contain a set of Office 2000 compatible .doc and .xls files of the same templates.</p>
<p>Give it a try.</p>
<p>You can always come back to technical solutions or add a column here and there if you think you'll need them. The KISS principle applies. Keep it simple. I haven't really found a need for more columns in my projects yet. But your mileage may vary.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/management/2010/01/scrum-pen-paper/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The CAPTCHA arms race</title>
		<link>http://www.st-webdevelopment.com/general/2010/01/captcha-arms-race/</link>
		<comments>http://www.st-webdevelopment.com/general/2010/01/captcha-arms-race/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 13:50:25 +0000</pubDate>
		<dc:creator>Dominique</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[CAPTCHA]]></category>
		<category><![CDATA[OCR]]></category>
		<category><![CDATA[reCAPTCHA]]></category>
		<category><![CDATA[SPAM]]></category>
		<category><![CDATA[text regognition]]></category>

		<guid isPermaLink="false">http://www.st-webdevelopment.com/?p=262</guid>
		<description><![CDATA[A discussion on various CAPTCHA methodologies and their success rate. Inspired by a paper by Jonathan Wilkins where he describes how the famous reCAPTCHA algorithm was broken.]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-272" title="captcha" src="http://www.st-webdevelopment.com/wp-content/uploads/2009/12/captcha.jpg" alt="captcha" width="190" height="400" />CAPTCHAs... we have all seen them. <a title="The Wikipedia on CAPTCHAs" href="http://en.wikipedia.org/wiki/CAPTCHA" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/CAPTCHA?referer=');">CAPTCHA</a> means <em>Completely Automated Public Turing test to tell Computers and Humans Apart</em> and is a family of techniques to make sure a user (typically on a website) is indeed a human being and not a program trying to act like one.</p>
<p>When you leave your comment on this blog you will be asked to type in two words which are displayed as distorted graphic. Most bulletin boards and free mail providers ask you to do the same before they allow you to create an account.</p>
<h4>CAPTCHA 101</h4>
<p>The reason behind is the same most of the time: Preventing SPAM. Spammers use forums, blog comments and contact forms to post their ads. They use bots (quite similar to the bots that update the search index on Google, Yahoo and all other search websites) to automate that process.</p>
<p>So the idea of CAPTCHAs is to present a task to a website visitor that is difficult to solve for a machine, but easy to solve for a human. The graphical CAPTCHA is the most commonly used one.</p>
<p>There are other CAPTCHA variants such as audio-based ones or image recognition based CAPTCHAs. I've even seen a simple math question as CAPTCHA.<span id="more-262"></span></p>
<h4>The arms race</h4>
<p>In December 2009 <a title="Website of Jonathan Wilkins" href="http://bitland.net" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bitland.net?referer=');">Jonathan Wilkins</a> announced that Googles' most prevalent CAPTCHA method, reCAPTCHA has been broken. It is now possible to identify the words presented by reCAPTCHA with an accuracy of around 20%. For spammers that is good enough. WIth a 20% sucess rate, every fifth attempt will result in a successfully placed ad. Mr. Wilkins argues that even a success rate of 1% is good enough since the resources used by spammers often are not their own, thus their utilization is free (think bot nets).</p>
<p>This is bad news for everyone. I really hope Google updates its reCAPCTHA algorithm to a variant that is harder to solve by machines. For the record, I also use reCAPTCHA here in this blog.</p>
<p>Update: As of December 31st 2009 reCAPTCHA seems to be updated. Google responded quite quickly. So far I can already say that the number of spam posts I get in this blog has reduced drastically, albeit not come to a stop. Anyways, thanks for a quick response Google!</p>
<p>This situation is critical because spammers do not need to be particularly good at breaking CAPTCHAs. If one out of five CAPTCHAs can be broken and spammers still make a living out of this the CAPTCHA itself is useless in the sense that SPAM will enter your system.</p>
<p>Jonathan Wilkins has a <a title="Paper on Strong CAPTCHA Guidelines by Jonathan Wilkins" href="http://bitland.net/captcha.pdf" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bitland.net/captcha.pdf?referer=');">.pdf paper</a> where he gives guidelines for the creation of strong CAPTCHAs. It is a really interesting read even if you're not involved with CAPTCHA development  directly.</p>
<h4>Which is the best solution?</h4>
<p>Well I guess your mileage may vary.</p>
<p>For now I will stick to <a title="The Wikipedia on the reCAPTCHA project" href="http://en.wikipedia.org/wiki/ReCAPTCHA" target="_blank" onclick="pageTracker._trackPageview('/outgoing/en.wikipedia.org/wiki/ReCAPTCHA?referer=');">reCAPTCHA</a> [<a title="the official homepage of the reCAPTCHA project" href="http://recaptcha.net/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/recaptcha.net/?referer=');">official homepage</a>] although it is broken and I need to remove a few unapproved comments every day. I like <a title="The idea behind reCAPTCHA" href="http://recaptcha.net/learnmore.html" target="_blank" onclick="pageTracker._trackPageview('/outgoing/recaptcha.net/learnmore.html?referer=');">the idea behind the project</a> so I'm willing to accept the minor annoyance that it currently imposes.</p>
<p>Text-recognition CAPTCHAs such as reCAPTCHA require strong OCR solutions and to my personal surprise, that is still a field what needs a lot of improvements. So even if reCAPTCHA becomes to cumbersome for me, I'll stick to another visual CAPTCHA method.</p>
<p>Audio CAPTCHAs are not recommended by Jonathan Wilkins because he argues that the field of speech regognition is more advanced than that of OCR. Aside from their security, I don't want my visitors to do something unfamiliar, and listening to an audio file to fill out a form certainly is.</p>
<p>I like the idea of asking a simple question, such as "What color is an orange?" or "What is 3+5?". Not sure about the security though. The latter one can be <a title="Google calculate" href="http://www.google.com/search?q=What+is+3%2B5%3F" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/search?q=What+is+3_2B5_3F&amp;referer=');">automatically solved</a> by Google itself for example. However, I'm half way convinced that this is an approach that has a bright future.</p>
<h4>Promising examples of what might be next</h4>
<p><strong>SQUIGL-PIX</strong><br />
On the reCAPTCHA website you can find a link to the <a title="SQUIGL-PIX CAPTCHA solution" href="http://server251.theory.cs.cmu.edu/cgi-bin/sq-pix" target="_blank" onclick="pageTracker._trackPageview('/outgoing/server251.theory.cs.cmu.edu/cgi-bin/sq-pix?referer=');">SQUIGL-PIX</a> project, apparently the latest project by the reCAPTCHA guys. It presents you with three images and asks you to outline a certain object. Only if you outline the object correctly (after chosing the correct image) the CAPTCHA is solved.</p>
<p>Give it a try. It is fun, easy (for us) and I sure hope it is hard for machines.</p>
<p><strong>CAPTCHA The Dog</strong><br />
Another interesting approach is <a title="Captcha the dog website" href="http://www.captchathedog.com" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.captchathedog.com?referer=');">Captcha The Dog</a>. You are presented with nine images total and have to pick the one that shows a dog while all others show a cat. You have to pick the single dog several times (from different picture sets) and click 'ok' once there are only cats.</p>
<p>The idea is brilliant and the basic reasoning behind it is the same that makes SQUIGL-PIX good: Object recognition instead of text recognition.</p>
<p>Captcha The Dog goes one step further and allows you to use your own set of images, tapping on the financial feasibility to break <em>your individual </em>set of images. There is even a <a title="Captcha The Dog Wordpress plugin" href="http://wordpress.org/extend/plugins/captchathedog/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/wordpress.org/extend/plugins/captchathedog/?referer=');">Wordpress plugin available</a> but I have to give a <strong>warning</strong>: According to the installation page the plugin requires allow_url_fopen and allow_url_include both to be active. Sounds like trading one evil for another. XSS anyone? Too bad, the idea is great.</p>
<p><strong>3D image rotation</strong><br />
The third approach I'd like to present is proposed by <a title="Blog by Taylor Hayward" href="http://taylorhayward.posterous.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/taylorhayward.posterous.com/?referer=');">Taylor Hayward</a> and apparently does not have a name. It asks you to identify an object appearing in <a title="3d images for CAPTCHAs" href="http://taylorhayward.posterous.com/3d-images-as-a-captcha" target="_blank" onclick="pageTracker._trackPageview('/outgoing/taylorhayward.posterous.com/3d-images-as-a-captcha?referer=');">two rotated 3d renders</a>. You are presented with one control image, and a set of nine randomly rotated images out of which one is the (rotated) control image. I found it hard to imagine so go see the blog - it'll be much more clear.</p>
<p>Once again, the method relies on object recognition. Great idea.</p>
<h4>"Do not try this at home"</h4>
<p>When you google for "<a title="google search for &quot;php captcha library&quot;" href="http://www.google.com/search?q=php+captcha+library" target="_blank" onclick="pageTracker._trackPageview('/outgoing/www.google.com/search?q=php+captcha+library&amp;referer=');">php captcha library</a>" you find literally thousands of home grown 'solutions' for secure CAPTCHAs. Once again I can only urge you to read <a title="Paper on Strong CAPTCHA Guidelines by Jonathan Wilkins" href="http://bitland.net/captcha.pdf" target="_blank" onclick="pageTracker._trackPageview('/outgoing/bitland.net/captcha.pdf?referer=');">Jonathan Wilkins paper</a> on secure CAPTCHAs before you use one of them. The bottom line probably is that they will not work very well for you because their authors try to obfuscate the letters in a way that poses no or only very limited issues to OCR software.</p>
<p>Just assume that if Googles' solution to CAPTCHA is broken, yours will get broken too once the incentives to try are high enough for the bad guys.</p>
<p>That being said, developing your own approach while sticking to Jonathans guidelines will most likely be an interesting spare time project.</p>
<h4>Possible benefits</h4>
<p>Believe it or not, I really see possible benefits coming out of this arms race. As the spammers' tactics to solve CAPTCHAs improve, the good guys are forced to improve their generation of CAPTCHAs. After some time, the newer CAPTCHAs will also be broken. The cycle continues.</p>
<p>Naturally, the only way for the good guys to verify that the new version of a CAPTCHA is indeed more secure than the old is to think like a bad guy and try to break your own CAPTCHAs.</p>
<p>This might - and I believe it surely will - lead to better OCR software, better audio recognition and in general a higher standard in 'intelligent' algorithms that are able to solve every day problems.</p>
<p>Audio recognition might help the deaf to read what people say, by other means than lip reading. A universal translator (famous in Star Trek) is not completely out of scope either, although it is still really far away.</p>
<p>Text-recognition is highly in demand on mobile devices. If a program can identify highly distorted characters from a CAPTCHA, I'm sure the same ideas can be applied to read hand writing.</p>
<input id="gwProxy" type="hidden" />
<input id="jsProxy" onclick="jsCall();" type="hidden" />
]]></content:encoded>
			<wfw:commentRss>http://www.st-webdevelopment.com/general/2010/01/captcha-arms-race/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
