<?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"
	>

<channel>
	<title>Farfalla project</title>
	<atom:link href="http://www.farfalla-project.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.farfalla-project.org</link>
	<description>a web tool for accessibility</description>
	<pubDate>Thu, 12 Jun 2008 09:20:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Yet another video demo</title>
		<link>http://www.farfalla-project.org/2008/06/05/yet-another-video-demo/</link>
		<comments>http://www.farfalla-project.org/2008/06/05/yet-another-video-demo/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 10:50:45 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[video]]></category>

		<category><![CDATA[assisted writing]]></category>

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

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

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

		<category><![CDATA[text-to-speech]]></category>

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=25</guid>
		<description><![CDATA[Last week I spent a lot of time writing code. The results were a better POST/GET variables management in the transmission of web forms and the totally experimental integration of the Festival Text-to-Speech engine.
This last feature makes Farfalla read aloud the contents of web pages. When the project will be stable, all this tools will [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I spent a lot of time writing code. The results were a better POST/GET variables management in the transmission of web forms and the totally experimental integration of the Festival Text-to-Speech engine.</p>
<p>This last feature makes Farfalla read aloud the contents of web pages. When the project will be stable, all this tools will be selectable in accordance with the specific needs of every user. Vocal browsing can be useful to people with visual impairments.</p>
<p><span id="more-25"></span></p>
<p>I prepared another video to show these features, it can be viewed at the <a title="Second video demo" href="http://www.farfalla-project.org/demo/" target="_self">demo page</a> again.</p>
<p>I plan to publish the code before the end of June, I need to clean it from some rubbish&#8230; Then I will go on developing the base features, starting from a user authentication and preferences module.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/06/05/yet-another-video-demo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A video demo of the new alpha</title>
		<link>http://www.farfalla-project.org/2008/05/25/a-video-demo-of-the-new-alpha/</link>
		<comments>http://www.farfalla-project.org/2008/05/25/a-video-demo-of-the-new-alpha/#comments</comments>
		<pubDate>Sun, 25 May 2008 11:55:03 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=24</guid>
		<description><![CDATA[A new Farfalla alpha is going to be released soon. As a preview, you can watch a short video illustrating the recently developed new features. It shows the navigation of a simple webpage and of an accessible website, including a Google search.
The video is available at the demo page.
]]></description>
			<content:encoded><![CDATA[<p>A new <strong>Farfalla alpha</strong> is going to be released soon. As a preview, you can watch a short video illustrating the recently developed new features. It shows the navigation of a simple webpage and of an accessible website, including a Google search.</p>
<p>The video is available at the <a title="Farfalla video demo" href="http://www.farfalla-project.org/demo" target="_self">demo page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/05/25/a-video-demo-of-the-new-alpha/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The text prediction engine</title>
		<link>http://www.farfalla-project.org/2008/05/07/the-text-prediction-engine/</link>
		<comments>http://www.farfalla-project.org/2008/05/07/the-text-prediction-engine/#comments</comments>
		<pubDate>Wed, 07 May 2008 09:39:04 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[Interface]]></category>

		<category><![CDATA[assisted writing]]></category>

		<category><![CDATA[text prediction]]></category>

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

		<guid isPermaLink="false">http://www.farfalla-project.org/2008/05/07/the-text-prediction-engine/</guid>
		<description><![CDATA[Among the other features, farfalla includes a text prediction engine. Text prediction is one of the key issues to support users in many different fields, for example in the use of mobile phones.
Several text prediction algorithms have been proposed in the literature, and interesting projects have been recently developed. Since one of the goals is [...]]]></description>
			<content:encoded><![CDATA[<p>Among the other features, farfalla includes a text prediction engine. Text prediction is one of the key issues to support users in many different fields, for example in the use of mobile phones.<br />
<span id="more-20"></span>Several text prediction algorithms have been proposed in the literature, and interesting projects have been recently developed. Since one of the goals is to minimize the number of movements of the hands and fingers of the user (hence, the number of key strokes of the users), offering an effective text prediction system is one of the main focuses of the software. On the other hand, another goal is to maintain the system as fast and easy to use as possible, avoiding that the prediction system slows down the insertion of characters by the user or it becomes too intrusive for the user herself (for example, suggesting too many words and hence generating confusion in the user and slowing the insertion process).<br />
For this reason a simple text prediction approach was used. The system suggests a single word that can be a possible completion of the characters inserted by the user. The suggested completion is presented in gray and with a smaller size compared to the characters already inserted by the user. As reported in the previous section, two different archives are used by the system to suggest words to the user. A first archive, called standard archive, contains a standard dictionary with the frequency of each word in a certain language (in this case in Italian). This dictionary is integrated with new words inserted by the user: a second archive, called personal archive, contains the words inserted in previous sessions by the user with their frequency and the recency, that is date and hour of their last occurrence expressed in the UNIX time stamp format.<br />
Two different archives are introduced for two main reasons. The first archive can be useful when the user is starting to work with Farfalla and to integrate the first inserted words. Furthermore, this archive represents (at least when used in the web) a dictionary with many words, and when the user inserts a new one, all other users can take advantage of this new word. This could be a problem if we think about typos and digitation mistakes, because the database would be populated by junk words. To this purpose the program is planned to be integrated with a filter for the detection and the periodical deletion of words (inserted by the user) with a low frequency rate and a low value of recency.<br />
Although this process could eventually delete also correct words, these would be rare or uncommon words so the functionality of the prediction system should not be affected. The personal archive is useful because it contains the words inserted by each user. In some sense, every user inserts a different set of words, according to her preferences, her level of instruction, her job and so on. Hence, this set represents those words usually inserted in a text by the user and are very important to her because they represent something like a lexical toolkit. When the user is inserting text, the system looks for the word to suggest first from the personal archive, then in the standard archive. The candidate words are those words which contain the partially inserted text as a prefix.<br />
Next the system selects the word with the highest score from the candidate words pool. This score of each possible suggestion is calculated for each word in real time, as each character is inserted.<br />
The score is calculated as the percentage which the frequency value of each word represents in relation to the sum of all frequency values of every eligible word. To this percentage another value is added, given again by the percentage of the recency value of one single word against the sum of all selected values. For this score to be computed, we need a method to express time values in the form of an integer, so the UNIX time stamp of the last insertion of every word was adopted. If the user’s insertion is not recognized as a word in the personal archive, the suggestion algorithm switches to the standard archive, simply suggesting the most frequent word and adding the new word with frequency set to 1.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/05/07/the-text-prediction-engine/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Some issues about web pages rendering</title>
		<link>http://www.farfalla-project.org/2008/04/04/some-issues-about-web-pages-rendering/</link>
		<comments>http://www.farfalla-project.org/2008/04/04/some-issues-about-web-pages-rendering/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 09:40:46 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[development]]></category>

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

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

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

		<guid isPermaLink="false">http://www.farfalla-project.org/2008/04/04/some-issues-about-web-pages-rendering/</guid>
		<description><![CDATA[The idea of creating a browser-into-the-browser for Farfalla seems to be the best solution for accessibility: it will allow the rendering of webpages inside a sort of protected environment, where the pages themselves could be dinamically modified to meet the most basical accessibility requirements.

For example, parsing the DOM tree of a document we can find [...]]]></description>
			<content:encoded><![CDATA[<p>The idea of creating a browser-into-the-browser for Farfalla seems to be the best solution for accessibility: it will allow the rendering of webpages inside a sort of protected environment, where the pages themselves could be dinamically modified to meet the most basical accessibility requirements.</p>
<p><span id="more-12"></span></p>
<p>For example, parsing the DOM tree of a document we can find every common inappropriate usage of some HTML tags and correct it, making the page ready for further processing. We can also change the CSS properties for each tag, so we can evidentiate some parts of the documents we are browsing. There is a lot more things we could do working on the DOM tree through Javascript, but there is a big problem, too: for security reasons, it is only possible to access documents which reside on the same domain where our Javascript does.</p>
<p>A PHP wrapper was built to overcome this issue: it uses the function <code>file_get_contents()</code> pointing to an external URL to read the HTML included into <strong>any</strong> webpage. This means that getting contents from external URLs <strong>must</strong> be allowed by the webserver we are working on. Through this method we can receive the whole content of a web page and put it into a variable. If we simply try to print it on the screen, we receive a page with the whole text but without (almost) any images and, probably, without any css formatting. This is because getting the file content we actually copied the HTML inside one of the documents of our webserver, but the relative path of every link, and also the &#8220;src&#8221; of every image still searches inside a relative path.</p>
<p>Luckily, HTML has an instrument for this kind of problems: it is the <code>&lt;base&gt;</code> tag. It has to be put in the header of the file we are rendering, and that is very simple using PHP and some regexp replacement. This tag takes an url as an &#8220;href&#8221; attribute, making every relative link in the page use that url as a base for its path.</p>
<p>We also have to extract the path to the page we are currently browsing. This can be done using the <code>parse_url()</code> PHP function, cutting off the unneeded parts of the url (mainly the filename and its get options) via regexp replacement again.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/04/04/some-issues-about-web-pages-rendering/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Farfalla-project.org website opens</title>
		<link>http://www.farfalla-project.org/2008/03/19/farfalla-projectorg-website-opens/</link>
		<comments>http://www.farfalla-project.org/2008/03/19/farfalla-projectorg-website-opens/#comments</comments>
		<pubDate>Wed, 19 Mar 2008 12:23:45 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[Meta]]></category>

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

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

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=14</guid>
		<description><![CDATA[I have been writing on this Wordpress blog for weeks, writing some code in the meantime. Now I think it is time to reveal what I have done to the rest of the world!
There are only three active pages besides the home page, but others are coming with docs, pictures and other downloads.
In the demo [...]]]></description>
			<content:encoded><![CDATA[<p>I have been writing on this Wordpress blog for weeks, writing some code in the meantime. Now I think it is time to reveal what I have done to the rest of the world!</p>
<p>There are only three active pages besides the home page, but others are coming with docs, pictures and other downloads.</p>
<p>In the demo section you can now try a couple of working demos of the original project, but I will (hopefully) publish the rest of my work very soon. I am still working on the functionality which allows Farfalla to render web pages correctly and I will only release a new demo when this is fixed.</p>
<p>Any comment on these articles will be appreciated!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/03/19/farfalla-projectorg-website-opens/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The software structure</title>
		<link>http://www.farfalla-project.org/2008/03/18/the-software-structure/</link>
		<comments>http://www.farfalla-project.org/2008/03/18/the-software-structure/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 17:00:49 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[planning]]></category>

		<category><![CDATA[abstraction layer]]></category>

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

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

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=15</guid>
		<description><![CDATA[This is a scheme illustrating the future modular and multi-layer structure of Farfalla as I imagine it.


At the bottom level there is a database, which will be used to store the user settings and the vocabulary. Then, linked to the database by an abstraction layer, there is the core application, which consists of a virtual [...]]]></description>
			<content:encoded><![CDATA[<p>This is a scheme illustrating the future modular and multi-layer structure of Farfalla as I imagine it.</p>
<p><img style="border:0;" src="http://www.farfalla-project.org/wp-content/uploads/2008/03/farfalla_scheme.png" alt="Farfalla scheme" /></p>
<p><span id="more-15"></span></p>
<p>At the bottom level there is a database, which will be used to store the user settings and the vocabulary. Then, linked to the database by an abstraction layer, there is the core application, which consists of a virtual browser inside a common web browser.<br />
On an upper level there will be some modular instruments. Thanks to them, users will be enabled to choose between different writing tools and output channels. Browsing the web and filling forms will be accessible after choosing the appropriate modules.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/03/18/the-software-structure/feed/</wfw:commentRss>
		</item>
		<item>
		<title>3.. 2.. 1&#8230; development started!</title>
		<link>http://www.farfalla-project.org/2008/02/25/3-2-1-development-started/</link>
		<comments>http://www.farfalla-project.org/2008/02/25/3-2-1-development-started/#comments</comments>
		<pubDate>Mon, 25 Feb 2008 11:59:15 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[development]]></category>

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

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

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

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

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=11</guid>
		<description><![CDATA[Last week I started writing some code for the new Farfalla release. As I decided to develop it  like a browser-in-the-browser program, I started building a web page wrapper.In its present state, the program can only browse web pages, using a simple HTML form to enter website addresses instead of using the browser&#8217;s main [...]]]></description>
			<content:encoded><![CDATA[<p>Last week I started writing some code for the new Farfalla release. As I decided to develop it  like a browser-in-the-browser program, I started building a <strong>web page wrapper</strong>.In its present state, the program can only browse web pages, using a simple HTML form to enter website addresses instead of using the browser&#8217;s main navigation bar. This is the first implementation of <a href="http://www.farfalla-project.org/?p=9" title="About abstraction">the abstraction layer discussed before</a>: it can change the way URLs are inserted, independently from the browser being used.From a technical point of view, this is possible thanks to the strong use of javascript for filtering mouse and keyboard events: every time a key is pressed it sends a code number to the web browser. Intercepting this code associates almost any action to the code number through javascript. This has a complication: key codes are not standardized among browsers, so the very difficult task will be to make every browser behave alike - this problem is well known as <a href="http://en.wikipedia.org/wiki/Cross-browser" title="Cross Browser by Wikipedia">Cross Browser Compatibility</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/02/25/3-2-1-development-started/feed/</wfw:commentRss>
		</item>
		<item>
		<title>How to welcome a new user</title>
		<link>http://www.farfalla-project.org/2008/02/20/how-to-welcome-a-new-user/</link>
		<comments>http://www.farfalla-project.org/2008/02/20/how-to-welcome-a-new-user/#comments</comments>
		<pubDate>Wed, 20 Feb 2008 11:43:27 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[Interface]]></category>

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

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

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

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=10</guid>
		<description><![CDATA[Hypothesis on an accessible registration and configuration form
Recently I have been thinking about how a new user can configure his new account on an ipothetical Farfalla server.The best introduction to an accessibility program would be an accessible registration form, where the first login and configuration procedure should be simple and effective. I think the best [...]]]></description>
			<content:encoded><![CDATA[<h4>Hypothesis on an accessible registration and configuration form</h4>
<p>Recently I have been thinking about how a new user can configure his new account on an ipothetical Farfalla server.The best introduction to an accessibility program would be an accessible registration form, where the first login and configuration procedure should be simple and effective. I think the best interface for this would be a &#8220;multisensorial&#8221; one. A list of questions, both displayed on the screen and read by a synthetic voice, should be readily accessible for the major part of users.These questions should ask about the needs and the preferences of the new user, proposing useful combos of instruments: if someone chooses a scanning writing system, it would be useful for him to also have a word prediction system up and running. It would be useful, even if not mandatory: it only depends on one&#8217;s actual ability to move on the keyboard.This user configuration procedure should also be flexible: as Farfalla is meant to become a modular instrument, with the possibility offered to other developers to add new features, the configuration has also to be modular and it has to provide the developers with the possibility to simply add their options in a standardized way.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/02/20/how-to-welcome-a-new-user/feed/</wfw:commentRss>
		</item>
		<item>
		<title>About abstraction</title>
		<link>http://www.farfalla-project.org/2008/02/04/about-abstraction/</link>
		<comments>http://www.farfalla-project.org/2008/02/04/about-abstraction/#comments</comments>
		<pubDate>Mon, 04 Feb 2008 11:52:12 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[planning]]></category>

		<category><![CDATA[abstraction layer]]></category>

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

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=9</guid>
		<description><![CDATA[In my last post I wrote about the idea of an abstraction layer to be built in order to create a sort of common basis for further software modules. Let us discuss this idea here.

An abstraction layer is &#8220;a way of hiding the implementation details of a particular set of functionality&#8221; [Wikipedia]. To give an [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href=".?page_id=2" title="Gathering ideas">my last post</a> I wrote about the idea of an <strong>abstraction layer</strong> to be built in order to create a sort of common basis for further software modules. Let us discuss this idea here.</p>
<p><span id="more-9"></span></p>
<p>An abstraction layer is &#8220;a way of hiding the implementation details of a particular set of functionality&#8221; [<a href="http://en.wikipedia.org/wiki/Abstraction_layer">Wikipedia</a>]. To give an example from everyday life, we could say that when we drive a car we use an interface (the steering wheel) to command the hardware (the wheels): the wheels don&#8217;t turn directly at our command, but there is some mechanism (probably power steering) which helps us and makes the steering easier<span onclick="dr4sdgryt(event)">. That mechanism acts in a very similar way as an abstraction layer does.</span></p>
<p>Now imagine a car where you can choose between using a steering wheel and some other gadget, as a handlebar or a joystick. It would be very useful if the power steering could receive its inputs and translate them into a standardized output for the wheels. In that case, it would probably be the best abstraction layer you could imagine.</p>
<p>Since farfalla is web based, the abstraction layer will be between the user interface(s) and the web-browser. It will consist in a intermediary program which can receive input directly from the keyboard or from another program, translating it directly into something that the web browser can easily understand.</p>
<p>It should also provide a way to receive data from the web browser and translate it into a more accessible way, for example in plain text.</p>
<p>This whole work will be done using Javascript and probably AJAX methods.</p>
<p>There are some well known issues in cross-browser compatibility, so the project will initially only support the Mozilla Firefox web browser: it is free and open source, cross-platform and also installable on a pendrive.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/02/04/about-abstraction/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gathering ideas</title>
		<link>http://www.farfalla-project.org/2008/01/30/gathering-ideas/</link>
		<comments>http://www.farfalla-project.org/2008/01/30/gathering-ideas/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 14:06:10 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
		
		<category><![CDATA[planning]]></category>

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

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

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

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

		<guid isPermaLink="false">http://www.farfalla-project.org/?p=8</guid>
		<description><![CDATA[At the beginning of every research project there should be a deep analysis. It includes listing down all the resources available, gathering information about the problem which has to be studied and possibly solved, defining the strategies to be followed in every future step.
The main resources for this project are:

the precedent research experience with a [...]]]></description>
			<content:encoded><![CDATA[<p>At the beginning of every research project there should be a <strong>deep analysis</strong>. It includes listing down all the resources available, gathering information about the problem which has to be studied and possibly solved, defining the strategies to be followed in every future step.</p>
<p>The<strong> main resources</strong> for this project are:</p>
<ol>
<li>the precedent research experience with a disabled person, who has already contributed to the project in its earlier phase;</li>
<li>some experience in web application development, with a special interest in accessibility and usability.</li>
</ol>
<p>The main objective is to create a versatile instrument, so the &#8220;problem&#8221; will be seized in smaller parts. This will help to maintain it as flexible as possible. It would be useful to build a sort of <strong>abstraction layer</strong> between the hardware and the common software, for example between the keyboard and the web browser.  This layer could act as an interpreter, translating inputs received from almost every source, which could be hardware or software as well. Some <strong>modular</strong> software aids could then be written, to emulate already-existing aids or to make new ones available.</p>
<p>Now the most important thing to do is to gather information from companies, research centers, associations and firms which already have experience in this topic.</p>
<p>Every point of this post will be discussed more in depth in the following posts.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfalla-project.org/2008/01/30/gathering-ideas/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
