<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.1.3" -->
<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/"
	>

<channel>
	<title>looking east</title>
	<link>http://blog.totoshi.com</link>
	<description>discovering asian technology</description>
	<pubDate>Mon, 01 Sep 2008 04:07:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.1.3</generator>
	<language>en</language>
			<item>
		<title>Barcamp Bangkok 2</title>
		<link>http://blog.totoshi.com/2008/09/01/barcamp-bangkok-2/</link>
		<comments>http://blog.totoshi.com/2008/09/01/barcamp-bangkok-2/#comments</comments>
		<pubDate>Mon, 01 Sep 2008 04:07:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asia]]></category>

		<category><![CDATA[community]]></category>

		<category><![CDATA[barcampbangkok]]></category>

		<category><![CDATA[event]]></category>

		<category><![CDATA[geeks]]></category>

		<category><![CDATA[barcampbangkok2]]></category>

		<category><![CDATA[bangkok]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/09/01/barcamp-bangkok-2/</guid>
		<description><![CDATA[Yay, I made it to Barcamp Bangkok 2! It was absolutely great, best barcamp ever: 400+ people, amazing talks and discussions, thai food, free beer, cool T-shirts, and funky stickers. Thank you so much to the organisers and sponsors for making this event happen.
Unfortunately, I forgot to bring my camera, so here just a few [...]]]></description>
			<content:encoded><![CDATA[<p>Yay, I made it to <a href="http://www.barcampbangkok.org/">Barcamp Bangkok 2</a>! It was absolutely great, best barcamp ever: 400+ people, amazing talks and discussions, thai food, free beer, cool T-shirts, and funky stickers. Thank you so much to the <a href="http://www.barcampbangkok.org/event/3/organizers">organisers</a> and <a href="http://www.barcampbangkok.org/event/3/sponsors">sponsors</a> for making this event happen.</p>
<p>Unfortunately, I forgot to bring my camera, so here just a few links:</p>
<ul>
<li><a href="http://www.flickr.com/photos/tags/barcampbangkok2/">flickr</a></li>
<li><a href="http://www.slideshare.net/tag/barcampbangkok2">slideshare</a></li>
<li><a href="http://technorati.com/tag/barcampbangkok2?authority=n&amp;language=n">blogs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/09/01/barcamp-bangkok-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to make money with FOSS?</title>
		<link>http://blog.totoshi.com/2008/08/08/how-to-make-money-with-foss/</link>
		<comments>http://blog.totoshi.com/2008/08/08/how-to-make-money-with-foss/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 06:29:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[china]]></category>

		<category><![CDATA[academic]]></category>

		<category><![CDATA[thoughts]]></category>

		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/08/08/how-to-make-money-with-foss/</guid>
		<description><![CDATA[&#8220;What you say sounds great, but honestly, how can we make money with FOSS?&#8221; This is a question I have been frequently asked since I have come to China. It&#8217;s the kind of question which made think a lot about FOSS and it&#8217;s business model. It&#8217;s a question which seems crucial for China, and since [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;What you say sounds great, but honestly, how can we make money with FOSS?&#8221; This is a question I have been frequently asked since I have come to China. It&#8217;s the kind of question which made think a lot about FOSS and it&#8217;s business model. It&#8217;s a question which seems crucial for China, and since I have been asked so many times, I have been trying to improve my answer by asking other people. However, none of these solutions seemed really satisfying, and whatever I said was met with strong resistance and further questions.</p>
<p>When reading the book <a href="http://oreilly.com/catalog/opensources/book/toc.html">Open Sources: Voices from the Open Source Revolution</a>, I found the following answer to the question by <a href="http://en.wikipedia.org/wiki/Bob_Young">Robert Young</a>:</p>
<blockquote><p>&#8220;That question assumes that it is easy, or at least easier, to make money selling proprietary binary-only software.</p>
<p>This is a mistake. Most software ventures, whether based on free or proprietary software, fail. Given that until very recently all software ventures were of the proprietary binary-only kind, it is therefore safe to say that the IP (Intellectual Property) model of software development and marketing is a very difficult way to make a living. [&#8230;]</p>
<p>No one expects it to be easy to make money in free software. While making money with free software is a challenge, the challenge is not necessarily greater than with proprietary software. In fact you make money in free software exactly the same way you do it in proprietary software: by building a great product, marketing it with skill and imagination, looking after your customers, and thereby building a brand that stands for quality and customer service.&#8221; (<a href="http://oreilly.com/catalog/opensources/book/young.html">chapter 9</a>)</p></blockquote>
<p>The fact that it&#8217;s very difficult to make money with proprietary software is probably even more true for China. In a country in which nobody is actually willing to pay for software, the question should not be: &#8220;How can we make money with FOSS?&#8221;, but rather: &#8220;How can we make money with software?&#8221;. But let&#8217;s first continue looking at the original question. As Robert Young puts it, in some cases using FOSS can even be a competitive advantage:</p>
<blockquote><p>&#8220;Marketing with skill and imagination, particularly in highly competitive markets, requires that you offer solutions to your customers that others cannot or will not match. To that end Open Source is not a liability but a competitive advantage. The Open Source development model produces software that is stable, flexible, and highly customizable. So the vendor of open-source software starts with a quality product. The trick is to devise an effective way to make money delivering the benefits of open-source software to you clients.&#8221; (<a href="http://oreilly.com/catalog/opensources/book/young.html">chapter 9</a>)</p></blockquote>
<p>This is exactly what I tried to say when I tried to answer the question. I told them that FOSS allowed them to start off with a high-quality source base rather than reimplementing everything from scratch, that open source made it easier (and affordable) to build highly customised products, I mentioned that in the West many businesses have been created because of the relative low cost of building software on top of FOSS. However, all these explanations were countered with more questions and strange looks.</p>
<p>Today, I believe that Robert Young does successfully answer the question of how to make money with FOSS. I also think that my answers were not totally wrong, though I simply missed one important fact: That making money with FOSS doesn&#8217;t have to be harder than making money with proprietary software. And thanks to Robert Young, I believe that the real question should be &#8220;How can we make money with software?&#8221;, and more specifically, &#8220;How can we make money with software in China?&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/08/08/how-to-make-money-with-foss/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FOSS in China: Hypotheses</title>
		<link>http://blog.totoshi.com/2008/08/06/foss-in-china-hypotheses/</link>
		<comments>http://blog.totoshi.com/2008/08/06/foss-in-china-hypotheses/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 11:13:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asia]]></category>

		<category><![CDATA[china]]></category>

		<category><![CDATA[academic]]></category>

		<category><![CDATA[thoughts]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[howto]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/08/06/foss-in-china-hypotheses/</guid>
		<description><![CDATA[I have spent a bit over three months in China, trying to find out how FOSS is organised and how it&#8217;s different in China from what we see the West. When I met Basile two weeks ago in Beijing, we have come up with the following hypotheses:

 Language is an impediment. Most FOSS activities take [...]]]></description>
			<content:encoded><![CDATA[<p>I have spent a bit over three months in China, trying to find out how FOSS is organised and how it&#8217;s different in China from what we see the West. When I met <a href="http://www.unige.ch/lettres/meslo/chinois/corps/zimmermann.html">Basile</a> two weeks ago in Beijing, we have come up with the following hypotheses:</p>
<ul>
<li> Language is an impediment. Most FOSS activities take place in English.</li>
<li>There is no culture of innovation in China.</li>
<li>The discussion culture in FOSS projects is too confrontational.</li>
<li>FOSS is still too young in China to be successful.</li>
<li> There is only little support for FOSS in the Chinese software industry. Piracy has a negative effect on the creation of a proper software industry in general. Customers are not willing to pay for software.</li>
<li> Students don&#8217;t learn about FOSS at universities and hence don&#8217;t know about it.</li>
<li>Individuals can&#8217;t make money with FOSS in China.</li>
<li> Chinese government policies are not favourable towards FOSS.</li>
</ul>
<p>These hypotheses are an extension to the ones presented in an earlier entry I have <a href="http://blog.totoshi.com/2008/02/21/open-source-in-asia-2/">posted in February</a>. They are specifically applied to China (because that&#8217;s the country I am currently studying) rather than Asia in general, though I do think that most of them could be applied to other countries like Thailand too.</p>
<p>Despite the fact that these hypotheses are rather negative in their formulation and might have some other shortcomings, I believe that they provide a good basis for further discussions. Also, hypotheses are there to be proved or disproved, they don&#8217;t need to be valid in the first place.</p>
<p>Why am I posting this?</p>
<p>Because I would like to get some feedback. I would love to know if there is something completely wrong with them, if I have totally missed the point, if I have forgotten something important, or anything else you have thought of while reading them. Please let me know :).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/08/06/foss-in-china-hypotheses/feed/</wfw:commentRss>
		</item>
		<item>
		<title>About Modifiability</title>
		<link>http://blog.totoshi.com/2008/08/06/about-modifiability/</link>
		<comments>http://blog.totoshi.com/2008/08/06/about-modifiability/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 09:56:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asia]]></category>

		<category><![CDATA[academic]]></category>

		<category><![CDATA[thoughts]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[community]]></category>

		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/08/06/about-modifiability/</guid>
		<description><![CDATA[Technical objects define in their configuration a certain partition of the physical and social world, they attribute roles to certain types of actors - humans and non-humans - and exclude others, they authorise certain modes of relations between these different actors [&#8230;] in such a way that they participate as a whole to the construction [...]]]></description>
			<content:encoded><![CDATA[<blockquote>Technical objects define in their configuration a certain partition of the physical and social world, they attribute roles to certain types of actors - humans and non-humans - and exclude others, they authorise certain modes of relations between these different actors [&#8230;] in such a way that they participate as a whole to the construction of a culture in the anthropological sense of the term, and, at the same time, they become enforced mediators in all relations that we are maintaining with the &#8220;real&#8221;.</p></blockquote>
<blockquote><p>Madelaine Akrich, <a href="http://halshs.archives-ouvertes.fr/halshs-00005830/fr/">Comment décrire les objets techniques?</a></p></blockquote>
<blockquote></blockquote>
<p>Later in her paper, Madelaine Akrich introduces the term &#8220;script&#8221; to refer to the behaviour of a technical object. The &#8220;script&#8221; is the program which the original developers write in order to define how the object can be used by its users.</p>
<p>For the purpose of studying FOSS in Asia, the technical object would be a piece of FOS software, its behaviour is defined by the source code, and the users are people who are using this software from within the borders of what is defined as Asia.</p>
<p>However, the scope of my master thesis as described above is not complete. FOS software has a specific characteristic which is related to it&#8217;s licensing terms. I don&#8217;t want to enter into FOSS licensing in detail, but I would like to emphasise one interesting aspect of open source software: modifiability. This means, we can take a piece of existing FOS software and tailor it to our needs. Going back to Madelaine Akrich&#8217;s definition of the &#8220;script&#8221;, this means that the &#8220;script&#8221; can be modified by its users. We are thus moving away from the traditional developer-user model to a more distributed open source community development model. In FOSS, users are not stuck with a pre-defined script, rather they are encouraged to change the script according to their needs. This in turn, forces users to think about the software in terms of its utility to an individual.</p>
<p>To be honest, the source code or &#8220;script&#8221; cannot be changed by any random user. Instead, this freedom is restricted to people who are familiar with computer programming. However, FOSS has made it easy for users to give feedback, propose new features, and report bugs. You don&#8217;t need to be a programmer to do this, though you still need to be able to use a computer and run the program.</p>
<p>Implementing modifiability into objects is not new, although the open source movement and its derivatives have been strongly promoted lately. In his book <a href="http://twobits.net/">Two Bits</a>, Kelty investigates the impact of modifiability on culture, he writes:</p>
<blockquote><p> But what is the cultural significance of modifiability? What does it mean to plan in modifiability to culture, to music, to education and science? At a clerical level, such a question is obvious whenever a scholar cannot recover a document written in WordPerfect 2.0 or on a disk for which there are no longer disk drives, or when a library archive considers saving both the media and the machines that read that media. Modifiability is an imperative for building infrastructures that can last longer. However, it is not only a solution to a clerical problem: it creates new possibilities and new problems for long-settled practices like publication, or the goals and structure of intellectual-property systems, or the definition of the finality, lifetime, monumentality, and especially, the identity of a work. Long-settled, seemingly unassailable practices — like the authority of published books or the power of governments to control information—are suddenly confounded and denaturalized by the techniques of modifiability. (page 12)</p></blockquote>
<p>Modifiability is at the core of FOSS. It&#8217;s one of the main reasons why FOSS communities have emerged. It&#8217;s at the base of almost all discussions on mailinglists, forums, IRC channels and FOSS events. The users and developers can decide the future of the software by participating in these discussions. The fact that a FOSS culture has emerged around open source software, proves Madelaine Akrich&#8217;s point that technical objetcts are important elements in the construction of cultures. And, of course, despite it&#8217;s modifiability, FOS software has a &#8220;script&#8221; which clearly defines how it&#8217;s supposed to be used</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/08/06/about-modifiability/feed/</wfw:commentRss>
		</item>
		<item>
		<title>First Beijing Aesthetic Marathon calling for Runners</title>
		<link>http://blog.totoshi.com/2008/07/14/first-beijing-aethetic-marathon-calling-for-runners/</link>
		<comments>http://blog.totoshi.com/2008/07/14/first-beijing-aethetic-marathon-calling-for-runners/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 11:52:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[china]]></category>

		<category><![CDATA[art]]></category>

		<category><![CDATA[beijing]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/07/14/first-beijing-aethetic-marathon-calling-for-runners/</guid>
		<description><![CDATA[I have participated in the First Beijing City Aesthetic Marathon today, running for about 20 minutes through the hutongs and markets around Tianshuiyuan. The Beijing City Aesthetic Marathon is an art project initiated by HOIO (Samuel Herzog). It&#8217;s a sportive challenge and a way to discover Beijing at the same time. The 42.195 kilometres of [...]]]></description>
			<content:encoded><![CDATA[<p>I have participated in the First Beijing City Aesthetic Marathon today, running for about 20 minutes through the hutongs and markets around Tianshuiyuan. The Beijing City Aesthetic Marathon is an art project initiated by <a href="http://www.xcult.org/hoio/">HOIO</a> (Samuel Herzog). It&#8217;s a sportive challenge and a way to discover Beijing at the same time. The 42.195 kilometres of the Marathon are run in sections by different persons. Every runner is asked to take HOIO into the part of Beijing they consider the most beautiful and exciting route through the city. Sections can be as short as one kilometre and as long as what can be done by a person in one hour (that&#8217;s the maximum battery lifetime of the camera). Each run is filmed by Samuel Herzog. You can see an overview of the previous runs <a href="http://www.xcult.org/hoio/projekte/pj154marathonbeijing/indexmarathonaussen.html">here</a>.</p>
<p>Samuel Herzog will be in Beijing until Saturday July 19th, if you are interested in taking him through your favorite part of Beijing, you can contact him at hoio[at]bluewin.ch.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/07/14/first-beijing-aethetic-marathon-calling-for-runners/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Free Open Source Software</title>
		<link>http://blog.totoshi.com/2008/07/09/free-open-source-software/</link>
		<comments>http://blog.totoshi.com/2008/07/09/free-open-source-software/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 11:25:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asia]]></category>

		<category><![CDATA[china]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[piracy]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/07/09/free-open-source-software/</guid>
		<description><![CDATA[Despite the fact that nobody is willing to pay for software and that proprietary software is free as in free beer, there are some points to be considered:

FOSS is legal to use, copy, modify, and distribute. Especially in China, where new laws can be enforced within little time, this can be a considerable advantage. However, [...]]]></description>
			<content:encoded><![CDATA[<p>Despite the fact that nobody is willing to pay for software and that proprietary software is free as in free beer, there are some points to be considered:</p>
<ul>
<li>FOSS is legal to use, copy, modify, and distribute. Especially in China, where new laws can be enforced within little time, this can be a considerable advantage. However, it doesn&#8217;t seem that anti-piracy laws will be enforced anytime soon.</li>
<li>FOSS can be modified to meet the exact needs of the users. This is impossible with proprietary software.</li>
<li>FOSS has always been free, and FOSS-based companies have always been forced to come up with different business models. Hence the Chinese situation is not that different from other countries.</li>
</ul>
<p>The question is: If people don&#8217;t pay for software, will they pay for customisation of open source code? Are they willing to pay for services and support related to the software?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/07/09/free-open-source-software/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Random Thoughts</title>
		<link>http://blog.totoshi.com/2008/07/08/random-thoughts/</link>
		<comments>http://blog.totoshi.com/2008/07/08/random-thoughts/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 08:06:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asia]]></category>

		<category><![CDATA[china]]></category>

		<category><![CDATA[academic]]></category>

		<category><![CDATA[thoughts]]></category>

		<category><![CDATA[open source]]></category>

		<category><![CDATA[thesis]]></category>

		<category><![CDATA[piracy]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/07/08/random-thoughts/</guid>
		<description><![CDATA[I have been in China for almost three months now. I have attended quite a number of FOSS-related events, have spoken to many people, and observed everyday programming at Exoweb. I have taken notes, asked questions, actively participated, and helped organising events. I now have a large pile of important-looking business cards, some new contacts [...]]]></description>
			<content:encoded><![CDATA[<p>I have been in China for almost three months now. I have attended quite a number of FOSS-related events, have spoken to many people, and observed everyday programming at <a href="http://www.exoweb.net">Exoweb</a>. I have taken notes, asked questions, actively participated, and helped organising events. I now have a large pile of important-looking business cards, some new contacts on GTalk, Twitter, Facebook, and a wiki full of words describing what I have experienced, but I am still struggling to describe open source in China.</p>
<p>So far it seems that FOSS in China is mainly about talks, about promotion, about words, not that much about code. When it comes to software, China and Thailand are special cases: Software is generally available for free or little money, independent of it being open source or not. Piracy is omnipresent, licenses don&#8217;t exist. It seems almost impossible to make money with software development in China. People just don&#8217;t want to pay for it.</p>
<p><strong>Questions</strong></p>
<p>How does this influence software development in China? Are there new business models emerging from this? Is there a need for China to have a software industry at all? How does it influence innovation and creativity? How do existing software development companies survive? What about web (2.0) development?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/07/08/random-thoughts/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BeijingOpenParty July: Summer Daydreams (仲夏梦舞)</title>
		<link>http://blog.totoshi.com/2008/07/06/beijingopenparty-july-summer-daydreams-%e4%bb%b2%e5%a4%8f%e6%a2%a6%e8%88%9e/</link>
		<comments>http://blog.totoshi.com/2008/07/06/beijingopenparty-july-summer-daydreams-%e4%bb%b2%e5%a4%8f%e6%a2%a6%e8%88%9e/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 15:02:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[china]]></category>

		<category><![CDATA[computing]]></category>

		<category><![CDATA[community]]></category>

		<category><![CDATA[technology]]></category>

		<category><![CDATA[event]]></category>

		<category><![CDATA[beijing]]></category>

		<category><![CDATA[beijingopenparty]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/07/06/beijingopenparty-july-summer-daydreams-%e4%bb%b2%e5%a4%8f%e6%a2%a6%e8%88%9e/</guid>
		<description><![CDATA[The next Beijing Open Party will take place on July 19th at the Thoughtworks offices in Beijing. If you want to give a talk, you can propose it on the Beijing Open Party google group. Alternatively you can also just show up at the party and propose your topic. The party&#8217;s original announcement can be [...]]]></description>
			<content:encoded><![CDATA[<p>The next <a href="http://www.beijing-open-party.org/">Beijing Open Party</a> will take place on July 19th at the Thoughtworks offices in Beijing. If you want to give a talk, you can propose it on the Beijing Open Party<a href="http://groups.google.com/group/beijing-open-party"> google group</a>. Alternatively you can also just show up at the party and propose your topic. The party&#8217;s original announcement can be found <a href="http://www.beijing-open-party.org/index.php/2008/07/03/beijingopenparty-julysummer-daydreams%e4%bb%b2%e5%a4%8f%e6%a2%a6%e8%88%9e/">here</a>.</p>
<p><strong>Event:</strong>  BeijingOpenParty July: Summer Daydreams (仲夏梦舞)<br />
<strong>Date</strong>: July 19th<br />
<strong>Time:</strong>  13.30 - 17.30<br />
<strong>Address:</strong>  Room 1105, 11th Floor GuoHua Plaza, No.3 Dongzhimen South Street, Dongcheng District, Beijing, China, 100007, see <a href="http://ditu.google.cn/maps?f=q&amp;hl=zh-CN&amp;geocode=&amp;q=%E5%9B%BD%E5%8D%8E%E5%A4%A7%E5%8E%A6&amp;sll=39.943042,116.467266&amp;sspn=0.061725,0.11673&amp;ie=UTF8&amp;view=map">map</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/07/06/beijingopenparty-july-summer-daydreams-%e4%bb%b2%e5%a4%8f%e6%a2%a6%e8%88%9e/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Accessible Captchas in Django</title>
		<link>http://blog.totoshi.com/2008/07/06/accessible-captchas-in-django/</link>
		<comments>http://blog.totoshi.com/2008/07/06/accessible-captchas-in-django/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 14:40:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[asia]]></category>

		<category><![CDATA[gnome]]></category>

		<category><![CDATA[python]]></category>

		<category><![CDATA[django]]></category>

		<category><![CDATA[accessibility]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/07/06/accessible-captchas-in-django/</guid>
		<description><![CDATA[While we were implementing the GNOME.Asia summit website (will be available on www.gnome.asia soon), we were confronted with the problem of captcha accessibility. Despite Recaptcha&#8217;s claim of being accessible by providing sound captchas, the sound quality turned out to be rather poor and I actually did not succeed in using it even after listening to [...]]]></description>
			<content:encoded><![CDATA[<p>While we were implementing the <a href="http://gnome.org">GNOME</a>.Asia summit website (will be available on <a href="http://www.gnome.asia">www.gnome.asia</a> soon), we were confronted with the problem of captcha accessibility. Despite <a href="http://recaptcha.net/">Recaptcha</a>&#8217;s claim of being accessible by providing sound captchas, the sound quality turned out to be rather poor and I actually did not succeed in using it even after listening to it four times. Based on <a href="http://github.com/rsanheim/brain_buster/tree/master">this</a> solution implemented in Rails, I reimpleted a similar idea for question captchas in Django. The code is fairly simple, based on a model which contains questions and the corresponding answers, and an implementation of a Django newforms field which can be used in the form. Some example questions can be found <a href="http://github.com/rsanheim/brain_buster/tree/master/generators/brain_buster_migration/templates/migration.rb">here</a>.</p>
<p><strong>models.py</strong></p>

<div class="wp_syntax"><div class="code"><pre class="python"><span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">db</span> <span style="color: #ff7700;font-weight:bold;">import</span> models
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">utils</span>.<span style="color: black;">translation</span> <span style="color: #ff7700;font-weight:bold;">import</span> ugettext_lazy as _
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> AccessibleCaptcha<span style="color: black;">&#40;</span>models.<span style="color: black;">Model</span><span style="color: black;">&#41;</span>:
    question = models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span> max_length=<span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span>
    answer = models.<span style="color: black;">CharField</span><span style="color: black;">&#40;</span>max_length=<span style="color: #ff4500;">255</span><span style="color: black;">&#41;</span>
&nbsp;
    question.<span style="color: black;">verbose_name</span> = _<span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Question'</span><span style="color: black;">&#41;</span>
    answer.<span style="color: black;">verbose_name</span> = _<span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Answer'</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__unicode__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span><span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">self</span>.<span style="color: black;">question</span></pre></div></div>

<p><strong>fields.py</strong></p>

<div class="wp_syntax"><div class="code"><pre class="python"><span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">random</span> <span style="color: #ff7700;font-weight:bold;">import</span> randint
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">newforms</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #66cc66;">*</span>
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">utils</span>.<span style="color: black;">translation</span> <span style="color: #ff7700;font-weight:bold;">import</span> ugettext_lazy as _
<span style="color: #ff7700;font-weight:bold;">from</span> django.<span style="color: black;">utils</span>.<span style="color: black;">safestring</span> <span style="color: #ff7700;font-weight:bold;">import</span> mark_safe
<span style="color: #ff7700;font-weight:bold;">from</span> captcha.<span style="color: black;">models</span> <span style="color: #ff7700;font-weight:bold;">import</span> AccessibleCaptcha
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> AccessibleCaptchaWidget<span style="color: black;">&#40;</span>Widget<span style="color: black;">&#41;</span>:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, options=<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>AccessibleCaptchaWidget, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> render<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, name, value, attrs=<span style="color: #008000;">None</span><span style="color: black;">&#41;</span>:
        index = randint<span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, AccessibleCaptcha.<span style="color: black;">objects</span>.<span style="color: black;">count</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #ff4500;">-1</span><span style="color: black;">&#41;</span>
        accessible_captcha = AccessibleCaptcha.<span style="color: black;">objects</span>.<span style="color: black;">all</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>index<span style="color: black;">&#93;</span>
        question = accessible_captcha.<span style="color: black;">question</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> mark_safe<span style="color: black;">&#40;</span>u<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'&lt;strong&gt;%(question)s&lt;/strong&gt; 
&lt;input name=&quot;%(name)s&quot; value=&quot;%(index)d&quot; type=&quot;hidden&quot; /&gt;
&lt;input name=&quot;%(name)s&quot; id=&quot;id_%(name)s&quot; type=&quot;text&quot; /&gt;'</span><span style="color: #483d8b;">''</span>
                <span style="color: #66cc66;">%</span> <span style="color: black;">&#123;</span><span style="color: #483d8b;">'name'</span>:<span style="color: #483d8b;">'captcha'</span>, <span style="color: #483d8b;">'index'</span>:index, <span style="color: #483d8b;">'question'</span>:question<span style="color: black;">&#125;</span><span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> value_from_datadict<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, data, name, prefix<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">return</span> data.<span style="color: black;">getlist</span><span style="color: black;">&#40;</span>prefix<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> AccessibleCaptchaField<span style="color: black;">&#40;</span>Field<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, required=<span style="color: #008000;">True</span>, label=<span style="color: #008000;">None</span>, help_text=<span style="color: #008000;">None</span>,
            options=<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs<span style="color: black;">&#41;</span>:
        <span style="color: #008000;">super</span><span style="color: black;">&#40;</span>AccessibleCaptchaField, <span style="color: #008000;">self</span><span style="color: black;">&#41;</span>.<span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span>required=required,
            widget=AccessibleCaptchaWidget<span style="color: black;">&#40;</span>options=options<span style="color: black;">&#41;</span>,
            label=label, help_text=help_text, <span style="color: #66cc66;">*</span>args, <span style="color: #66cc66;">**</span>kwargs
            <span style="color: black;">&#41;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> clean<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, value<span style="color: black;">&#41;</span>:
        errormsg = <span style="color: #dc143c;">gettext</span><span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'You did not enter the correct answer. Please try again.'</span><span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> <span style="color: #008000;">isinstance</span><span style="color: black;">&#40;</span>value, <span style="color: black;">&#40;</span><span style="color: #008000;">list</span>, <span style="color: #008000;">tuple</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">raise</span> ValidationError<span style="color: black;">&#40;</span>errormsg<span style="color: black;">&#41;</span>
        <span style="color: #808080; font-style: italic;">#get the right answer from the database</span>
        <span style="color: #808080; font-style: italic;">#value[0] contains the id of the hidden field, value[1] contains the user input</span>
        index = <span style="color: #008000;">int</span><span style="color: black;">&#40;</span>value<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span><span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
        answer = AccessibleCaptcha.<span style="color: black;">objects</span>.<span style="color: black;">all</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: black;">&#91;</span>index<span style="color: black;">&#93;</span>.<span style="color: black;">answer</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #ff7700;font-weight:bold;">not</span> value<span style="color: black;">&#91;</span><span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span> ==  answer.<span style="color: black;">lower</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">raise</span> ValidationError<span style="color: black;">&#40;</span>errormsg<span style="color: black;">&#41;</span>
        <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #008000;">True</span></pre></div></div>

<p><strong>Usage</strong></p>

<div class="wp_syntax"><div class="code"><pre class="python">captcha = AccessibleCaptchaField<span style="color: black;">&#40;</span>label=_<span style="color: black;">&#40;</span>u<span style="color: #483d8b;">'Are you human?'</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/07/06/accessible-captchas-in-django/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Coding for Fun Weekend</title>
		<link>http://blog.totoshi.com/2008/06/30/coding-for-fun-weekend/</link>
		<comments>http://blog.totoshi.com/2008/06/30/coding-for-fun-weekend/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 06:40:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[computing]]></category>

		<category><![CDATA[event]]></category>

		<category><![CDATA[exoweb]]></category>

		<category><![CDATA[beijing]]></category>

		<category><![CDATA[codingforfunbeijing]]></category>

		<guid isPermaLink="false">http://blog.totoshi.com/2008/06/30/coding-for-fun-weekend/</guid>
		<description><![CDATA[Here a few impression of last weekend&#8217;s coding for fun event at Exoweb, unfortunately I didn&#8217;t take many pics.
      
            
Technologies applied included: Pike, OpenGL, Flash, Chipmunk, Twitter, cURL, Festival, C, Boarduino, Arduino, LED, and many more.
Update: Martin has offered me to add his pics to my flickr account. [...]]]></description>
			<content:encoded><![CDATA[<p>Here a few impression of last weekend&#8217;s coding for fun event at Exoweb, unfortunately I didn&#8217;t take many pics.</p>
<p><a href="http://www.flickr.com/photos/samiara/2623549684/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3264/2623549684_cb3fe20b61_t.jpg" alt="Coding for Fun" border="0" width="100" height="75" /></a>    <a href="http://www.flickr.com/photos/samiara/2622696673/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3198/2622696673_5028b036b0_t.jpg" alt="Coding for Fun" border="0" width="100" height="75" /></a>  <a href="http://www.flickr.com/photos/samiara/2622687595/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3146/2622687595_d7e50500ea_t.jpg" alt="Coding for Fun" border="0" width="100" height="75" /></a></p>
<p><span class="tt-flickr"></span><a href="http://www.flickr.com/photos/samiara/2624641444/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3212/2624641444_d2b0b74906_t.jpg" alt="Coding for Fun" border="0" width="100" height="67" /></a>  <a href="http://www.flickr.com/photos/samiara/2624638782/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3039/2624638782_b7998413de_t.jpg" alt="Coding for Fun" border="0" width="100" height="67" /></a>  <a href="http://www.flickr.com/photos/samiara/2624635978/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3265/2624635978_1d9eed5711_t.jpg" alt="Coding for Fun" border="0" width="100" height="67" /></a>  <a href="http://www.flickr.com/photos/samiara/2624632790/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3170/2624632790_3d6c3a6b30_t.jpg" alt="Coding for Fun" border="0" width="100" height="67" /></a>  <a href="http://www.flickr.com/photos/samiara/2624627776/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3192/2624627776_33b84d7349_t.jpg" alt="Coding for Fun" border="0" width="100" height="67" /></a><span class="tt-flickr">  </span><a href="http://www.flickr.com/photos/samiara/2622710873/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3034/2622710873_209c2028d7_t.jpg" alt="Coding for Fun" border="0" width="75" height="100" /></a>  <a href="http://www.flickr.com/photos/samiara/2623541420/" class="tt-flickr"><img src="http://farm4.static.flickr.com/3157/2623541420_9db12e596c_t.jpg" alt="Coding for Fun" border="0" width="75" height="100" /></a></p>
<p><span class="tt-flickr">Technologies applied included: <a href="http://en.wikipedia.org/wiki/Pike_(programming_language)">Pike</a>, <a href="http://en.wikipedia.org/wiki/OpenGL">OpenGL</a>, <a href="http://en.wikipedia.org/wiki/Adobe_Flash">Flash</a>, <a href="http://wiki.slembcke.net/main/published/Chipmunk">Chipmunk</a>, <a href="http://twitter.com">Twitter</a>, <a href="http://en.wikipedia.org/wiki/CURL">cURL</a>, <a href="http://www.cstr.ed.ac.uk/projects/festival/">Festival</a>, <a href="http://en.wikipedia.org/wiki/C_programming">C</a>, <a href="http://www.ladyada.net/make/boarduino/">Boarduino</a>, <a href="http://www.arduino.cc/">Arduino</a>, <a href="http://en.wikipedia.org/wiki/LED">LED</a>, and many more.</span></p>
<p><strong>Update</strong>: Martin has offered me to add his pics to my flickr account. Thanks, Martin :).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.totoshi.com/2008/06/30/coding-for-fun-weekend/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
