<?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>Sayamindu's Ramblings</title>
	<atom:link href="http://sayamindu.randomink.org/ramblings/feed/" rel="self" type="application/rss+xml" />
	<link>http://sayamindu.randomink.org/ramblings</link>
	<description>The weekend hacker's musings...</description>
	<lastBuildDate>Wed, 30 Dec 2009 17:19:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Stuff that I have been up to</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/12/30/stuff-that-i-have-been-up-to/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/12/30/stuff-that-i-have-been-up-to/#comments</comments>
		<pubDate>Wed, 30 Dec 2009 17:19:08 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Photos]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[foss.in]]></category>
		<category><![CDATA[gettext]]></category>
		<category><![CDATA[keyboards]]></category>
		<category><![CDATA[localization]]></category>
		<category><![CDATA[OLPC]]></category>
		<category><![CDATA[OLPC XO-1]]></category>
		<category><![CDATA[One Laptop per Child]]></category>
		<category><![CDATA[Open hardware]]></category>
		<category><![CDATA[Pootle]]></category>
		<category><![CDATA[Russell Nelson]]></category>
		<category><![CDATA[sugar]]></category>
		<category><![CDATA[translation]]></category>
		<category><![CDATA[Turtle Art]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=460</guid>
		<description><![CDATA[December turned out to be a pretty busy month for me &#8211; here are some of the stuff I have been involved in/working on:

FOSS.in: As always FOSS.in &#8216;09 turned out to be an amazing affair. Being someone who works remotely, this event is probably one of the best opportunities for me to have &#8220;real&#8221; interactions. [...]]]></description>
			<content:encoded><![CDATA[<p>December turned out to be a pretty busy month for me &#8211; here are some of the stuff I have been involved in/working on:</p>
<ul>
<li><b>FOSS.in</b>: As always <a href="http://foss.in">FOSS.in &#8216;09</a> turned out to be an amazing affair. Being someone who works remotely, this event is probably one of the best opportunities for me to have &#8220;real&#8221; interactions. It&#8217;s a place where I can simply sit down, have long face to face conversations, come up with new ideas, be inspired, and most importantly, have fun. My heartfelt thanks goes out to the people behind the event for making this possible. I have some photos in <a href="http://www.flickr.com/photos/sayamindu/sets/72157622856162053/">this</a> Flickr photoset.</li>
<li><b>Book reader</b>: This month&#8217;s priority has been stabilizing the Sugarlabs/OLPC book-reader code, and a large number of important bugfixes landed during the last few weeks. More in <a href="http://lists.laptop.org/pipermail/bookreader/2009-December/000124.html">this status report</a>.</li>
<li><b>Arduino</b>: At FOSS.IN, thanks to the efforts of the ever enthusiastic <a href="http://kushaldas.in/">Kushal Das</a>, I managed to get hold of an <a href="http://arduino.cc/">Arduino</a> clone board (it is terribly difficult to get hold of one in Kolkata). I had heard of Arduino before and wanted to get one, and the <a href="http://foss.in/2009/schedules/talkdetailspub.php?talkid=69">session</a> on it at FOSS.in by Russell Nelson finally served as the &#8220;kick&#8221; which made Kushal and me call up the local distributor and get a couple of boards for ourselves. I have been playing around with sensors support in Sugar for sometime (I helped make the <a href="http://activities.sugarlabs.org/en-US/sugar/addon/4197">Measure</a> activity work on  XO 1.5 hardware), and realized that this would be yet another interesting way to connect Sugar with the &#8220;real&#8221; world. So after a couple of weekends worth of work, I got Arduino support in <a href="http://wiki.sugarlabs.org/go/Activities/Turtle_Art">Turtle Art</a>.<br />
<br/><br />
<a href="http://people.sugarlabs.org/~sayamindu/ta_arduino.png" rel="lightbox"><img src="http://people.sugarlabs.org/~sayamindu/ta_arduino.png" alt="Turtle Art with Arduino"></a><br />
<br/>
</li>
<li><b>XO keyboards</b>: There may be a new AZERTY keyboard for the XO laptops very soon. See <a href="http://wiki.laptop.org/go/OLPC_Azerty_Keyboard">this wikipage</a> for details.</li>
<li><b>Pootle</b>: The Pootle developers have released <a href="http://translate.org.za/blogs/friedel/content/pootle-200-released">version 2.0</a>, which is a vastly improved edition compared to the previous releases. I have been testing it out with plans to upgrade the Sugarlabs/OLPC translation server soon. While testing, I added a quick (and ugly) hack to implement <em>msgfmt &#8211;check</em> style syntax checking in Pootle. This would definitely make the process of integrating the translations with the upstream code much less painful &#8211; and here&#8217;s a screenshot (click on it for a larger version):<br />
<br/><br />
<a href="http://people.sugarlabs.org/~sayamindu/pootle_gettext_check.png" rel="lightbox"><img src="http://people.sugarlabs.org/~sayamindu/pootle_gettext_check.png" alt="Gettext syntax check in Pootle"/></a></li>
<p><br/>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/12/30/stuff-that-i-have-been-up-to/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Making Books Available</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/11/07/making-books-available/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/11/07/making-books-available/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 18:35:18 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[GetBooks]]></category>
		<category><![CDATA[Internet Archive]]></category>
		<category><![CDATA[OLPC]]></category>
		<category><![CDATA[OLPC XO-1]]></category>
		<category><![CDATA[One Laptop per Child]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[sneakernet]]></category>
		<category><![CDATA[sugar]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=456</guid>
		<description><![CDATA[Its all over the web now &#8211; the Internet Archive has opened up over 1.6 million books for the OLPC XO laptops and in general, any machine running Sugar. Before going into anything else, it makes sense to provide a more specific meaning of &#8220;opening up&#8221; here &#8211; it involves two main objectives completed at [...]]]></description>
			<content:encoded><![CDATA[<p>Its all over the web now &#8211; the Internet Archive has opened up <a href="http://www.xconomy.com/boston/2009/10/24/internet-archive-opens-1-6-million-e-books-to-olpc-laptops/">over 1.6 million books</a> for the OLPC XO laptops and in general, any machine running Sugar. Before going into anything else, it makes sense to provide a more specific meaning of &#8220;opening up&#8221; here &#8211; it involves two main objectives completed at the Internet Archive end:</p>
<ul>
<li>Making sure that the books are readable in the XO, keeping in mind its relative low-end hardware specs and disk-space limitations</li>
<li>Ensuring that the books are available via a standardized catalog format, so that one can find, browse and download books easily using a tool more tuned for the purpose (think of feed-readers versus blog-entries in a web-page)</li>
</ul>
<p>Now that the books are available (not just from the Internet Archive, but from a number of other sources as well), the next step is to figure out the best possible ways to actually make these books available to the XO and Sugar users. The major constraining factor is bandwidth, we do have deployments with zero, or very limited Internet connectivity, and perhaps these are the deployments which need access to these books the most. I spent most of this week working on implementing a feature in the <em>Get Books</em> activity which would allow books to be distributed via what has been jokingly called a <a href="http://catb.org/~esr/jargon/html/S/sneakernet.html">sneaker-net</a> (or sandalnet/chappalnet, if you prefer those forms of footwear). The idea is very simple &#8211; at a centralized location with Internet access, choose a few thousand books (size of a typical book is usually a few hundred KB or less), put them in a USB pen-drive and add a <acronym title="Open Publication Distribution System">OPDS</acronym> catalog to the mix. Make copies of the drive, and send them to the schools without connectivity. The latest version of Get Books would recognize the drive, and let the student browse through the collection, search for books, and add whatever she wants to the Sugar Journal. Once a book is in the Journal, it can be shared among all the students using the <a href="http://wiki.sugarlabs.org/go/0.86/Notes#Improved_File_Transfer">Journal object transfer support</a> in Sugar, or via the Read Activity directly. So essentially, you get a <em>Library on a Stick</em>, with thousands of books, something which, till now, in its physical form, has been largely restricted to better equipped (and usually richer) schools.<br />
Of course, even larger collections can be distributed if a <a href="http://wiki.laptop.org/go/School_server">School Server</a> (XS) is present in the mix (due to the fact that the school server can have a larger disk in it), and support for this type of distribution method involving the XS would hopefully appear within the next few releases of Get Books.</p>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/11/07/making-books-available/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Books, Sugar and OLPC</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/10/14/books-sugar-and-olpc/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/10/14/books-sugar-and-olpc/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 15:12:58 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Electronic publishing]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[fbreader]]></category>
		<category><![CDATA[One Laptop per Child]]></category>
		<category><![CDATA[opds]]></category>
		<category><![CDATA[sugar]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=448</guid>
		<description><![CDATA[Articles and posts like this (and subsequently this) underline the need for a status report about ebook-reading in Sugar and in the XO laptops. For the past few months, apart from my usual duties, I have been working on the book-reading stack for OLPC and Sugar, and this may be viewed as a progress report [...]]]></description>
			<content:encoded><![CDATA[<p>Articles and posts like <a href="http://www.teleread.org/2009/09/25/e-reading-still-neglected-by-the-olpc-laptop-folks-yep-at-least-for-now-but-the-future-may-be-brighter/">this</a> (and subsequently <a href="http://www.teleread.org/2009/09/25/epub-for-the-olpc-laptop-read-activity-now-does-it-hooray/">this</a>) underline the need for a status report about ebook-reading in Sugar and in the XO laptops. For the past few months, apart from my usual duties, I have been working on the book-reading stack for OLPC and Sugar, and this may be viewed as a progress report of the things I have been doing.<br />
I have been mostly working on the Read Activity in Sugar, which is supposed to do the most heavy lifting as far as book-reading goes &#8211; though there is also ReadEtexts by Jim Simmons, which primarily handles plain text files from Project Gutenberg (the latest version of ReadEtexts supports RTF files as well). Currently, the ebook formats that are supported in Sugar include</p>
<ul>
<li>Epub</li>
<li>PDF</li>
<li>DJVU</li>
<li>Plain Text (specifically the format used by Project Gutenberg)</li>
<li>Postscript</li>
<li>CBZ</li>
<li>RTF</li>
</ul>
<p>There also exists a sugar-ified <a href="http://www.fbreader.org">FBReader</a>, with support for more formats (such as plucker and non DRM&#8217;ed mobipocket).<br />
With the last major release of Read (a part of Sugar 0.86), apart from the addition of Epub support, there has been usability improvements and tweaks (particularly for the full-screen mode), as well as support for bookmarks (notes can be associated with each bookmark).<br />
 <a href="http://sayamindu.randomink.org/profile/images/read_notes.png" title="The bookreading Activity in Sugar" rel="lightbox"><img src="http://sayamindu.randomink.org/profile/images/thumbs/read_notes.png" alt=""></a><br />
For the next major release, I have started to work on support for highlighting text (at least in Epub files) and better usage of the XO &#8220;game-keys&#8221; in fullscreen mode (so that the overall experience in tablet mode of the XO laptops become smoother). Interestingly, highlighting text did not work out as I had planned, since the highlights became almost invisible in the grayscale reflective mode of the XO laptops. So instead of highlighting, Read would probably support underlining of text (when I was a kid, we often shared books, especially school books, and I was told it is always better to underline with a pencil than to use a marker pen to highlight <img src='http://sayamindu.randomink.org/ramblings/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .<br />
<img src="http://sayamindu.randomink.org/images/read_highlight.gif" alt="Read Highlight"/><br />
Of course, Read is only one part of the book-reading puzzle. There has to be a system in place for book acquisition as well (from the Internet as well as from a local schoolserver, if available). In a <a href="http://sayamindu.randomink.org/ramblings/2009/06/18/read-and-epub-and-beyond/">previous blog post</a>, I mentioned <a href="http://code.google.com/p/openpub/wiki/CatalogSpecDraft">Open Publication Distribution System</a>, which is built upon the Atom syndication format to allow online book distributors to publish their catalog. I extended Jim Simmon&#8217;s Get Internet Archive Books activity to support OPDS, and now, apart from the <a href="http://archive.org">Internet Archive</a>, the preview version that I have can also retrieve books from <a href="http://www.feedbooks.com">Feedbooks</a>. Here&#8217;s a video of the activity in action:<br />
<video src="http://dev.laptop.org/~sayamindu/get_books.ogv" controls><br />
  <small><em>Your browser does not support the <code>video</code> element.  Click <a href="http://dev.laptop.org/~sayamindu/get_books.ogv">here</a> to download the video. You can use VLC to play the video.</em></small><br />
</video><br />
The next major step would be to implement a server side OPDS implementation in the <a href="http://wiki.laptop.org/go/School_server">School Server</a> (XS), as well as some kind of caching mechanism to conserve bandwidth (if a copy of a book is found in the school server, it should be downloaded instead of the online version).<br />
To keep up with the progress, you can either subscribe to the <a href="http://lists.sugarlabs.org/listinfo/sugar-devel">sugar-devel</a> list or the more specialized (and low volume) <a href="http://lists.laptop.org/listinfo/bookreader">olpc-bookreader</a> list.</p>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/10/14/books-sugar-and-olpc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://dev.laptop.org/~sayamindu/get_books.ogv" length="1636902" type="video/ogg" />
		</item>
		<item>
		<title>Braindump on ebooks</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/08/12/braindump-on-ebooks/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/08/12/braindump-on-ebooks/#comments</comments>
		<pubDate>Wed, 12 Aug 2009 18:15:47 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[alan kay]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[OLPC]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[sugar]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=427</guid>
		<description><![CDATA[The inspiration for this post comes from a talk by Alan Kay, entitled Beyond the Printing Press: Computers as Learning Environments for All Children. You can view the video recording of the talk here

The development versions of Read Activity is now shipping with Epub support. This makes me excited for quite a few reason. Of [...]]]></description>
			<content:encoded><![CDATA[<p><em>The inspiration for this post comes from a talk by Alan Kay, entitled <u>Beyond the Printing Press: Computers as Learning Environments for All Children</u>. You can view the video recording of the talk <a href="http://download.laptop.org/content/conf/20080520-country-wkshp/Video/2008-05-20/13-Beyond-Printing%20(medium).ogg">here</a></em><br />
<br/><br />
The development versions of Read Activity is now shipping with Epub support. This makes me excited for quite a few reason. Of course, the most obvious reason to get excited is the fast growth and adoption of Epub as a standard for e-books. However, there is more to it&#8230;<br />
Books, once again (after Gutenberg&#8217;s time) are changing. Gutenberg brought in the transition from hand-written books to large-scale print &#8211; and now we see yet another shift, where books are transitioning from ink, paper and the printing press to bits stored inside a variety of devices. Towards the beginning of the printing press revolution, there was a strong desire and tendency to mimic the &#8220;old&#8221; format as much as possible, in terms of look and feel. Gutenberg and his associates even <a href="http://en.wikipedia.org/wiki/Gutenberg_Bible#Rubrication.2C_illumination_and_binding">hand-drew illuminated decoration</a> on the Gutenberg Bibles, to retain the similarity to the older, handwritten copies of the Bible. In what seems to be an almost eerie repetition, today, in the ebook, we see a strong desire to mimic the traditional book as much as possible. (eg ebook readers trying to retain the older &#8220;UI&#8221; paradigm, efforts to make ebooks retain the formatting niceties of traditional books, etc). This is not unusual, or wrong. We are used to the traditional book, and it is important to make the path to transition as smooth as possible.<br />
However, what makes me really excited at this stage is something else. It is the potential new things we could do with Ebooks, things that would not have been possible with books in the old format. This weekend, I did some changes to a Epub file, and extended the Read Activity a bit to come up with a few such things:</p>
<ul>
<li><strong>Audio-visual content inside books</strong>: This is almost obvious &#8211; with the transition to books which are read on devices having audio/video capabilities, the next logical step is to embed these into books.<br />
<video src="http://dev.laptop.org/~sayamindu/interactive_books_video/video_small.ogv" width="600px" height="480px" controls="true"><a href="http://dev.laptop.org/~sayamindu/interactive_books_video/video.ogv">Download video</a></video><br />
<br/><br />
<small><em>(Video from the Internet Archive, text from Wikipedia)</em></small>
</li>
<li><strong>An interactive shell inside a book</strong>: An interactive Python shell inside a book teaching Python, so that small examples and snippets can be tried out inside the book, right away.<br />
<video src="http://dev.laptop.org/~sayamindu/interactive_books_video/python_small.ogv" width="600px" height="480px" controls="true"><a href="http://dev.laptop.org/~sayamindu/interactive_books_video/python.ogv">Download video</a></video><br />
<br/><br />
<small><em>(Text from How to Think like a Computer Scientist, Python edition)</em></small>
</li>
<li><strong>A full blown, interactive environment inside books</strong>: A book on digital logic can have a small sandboxing area, where readers could connect the various virtual components together, and see what happens.<br />
<video src="http://dev.laptop.org/~sayamindu/interactive_books_video/digital_logic_small.ogv" width="600px" height="480px" controls="true"><a href="http://dev.laptop.org/~sayamindu/interactive_books_video/digital_logic.ogv">Download video</a></video><br />
<br/><br />
<small><em>(Text from Wikipedia and the Lorem Ipsum generator, demo from the Etoys project)</em></small>
</li>
</ul>
<p>Of course, this is just a proof of concept, and probably most Epub readers will simply ignore the interactive content part. Moreover, there may be security issues with such books as well (the idea of having a Python shell inside a book will make many nervous) &#8211; but I think this is where <a href="http://wiki.laptop.org/go/Bitfrost">Bitfrost</a>, and its software implementation, <a href="http://wiki.laptop.org/go/Rainbow">Rainbow</a> (which is essentially an isolation shell) comes in.<br />
There is another way of &#8220;interaction&#8221; which I have not covered in the above screencasts &#8211; and this is something which is already available in traditional ink and paper books, especially text-books. Ebooks need to support &#8220;exercises&#8221; like fill-in-the-blanks, multiple-choice-questions, etc. There is an urgent need to support this, and this should be done in a standardized way. The <a href="http://www.w3.org/TR/webstorage">local storage</a> standard associated with HTML5 seems to be a possible way forward, though probably there might be better ways to do this (especially if we want the ability to have teachers remotely check and evaluate exercises done on e-textbooks).</p>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/08/12/braindump-on-ebooks/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
<enclosure url="http://dev.laptop.org/~sayamindu/interactive_books_video/video_small.ogv" length="563612" type="video/ogg" />
<enclosure url="http://dev.laptop.org/~sayamindu/interactive_books_video/video.ogv" length="2717895" type="video/ogg" />
<enclosure url="http://dev.laptop.org/~sayamindu/interactive_books_video/python_small.ogv" length="448650" type="video/ogg" />
<enclosure url="http://dev.laptop.org/~sayamindu/interactive_books_video/python.ogv" length="1521142" type="video/ogg" />
<enclosure url="http://dev.laptop.org/~sayamindu/interactive_books_video/digital_logic_small.ogv" length="1265696" type="video/ogg" />
<enclosure url="http://dev.laptop.org/~sayamindu/interactive_books_video/digital_logic.ogv" length="4137946" type="video/ogg" />
		</item>
		<item>
		<title>Read and Epub and beyond</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/06/18/read-and-epub-and-beyond/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/06/18/read-and-epub-and-beyond/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 22:03:06 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[atom]]></category>
		<category><![CDATA[bookreading]]></category>
		<category><![CDATA[ebooks]]></category>
		<category><![CDATA[epub]]></category>
		<category><![CDATA[GNOME]]></category>
		<category><![CDATA[OLPC]]></category>
		<category><![CDATA[opds]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[sugar]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=418</guid>
		<description><![CDATA[For the past few weeks, I have been spending most of my time implementing Epub support for Sugar&#8217;s Read activity. Epub is gaining increasing acceptance, and a few weeks back, Project Gutenberg started distributing many of their material in the format, and Google + Sony also seem to have started to distribute a large chunk [...]]]></description>
			<content:encoded><![CDATA[<p>For the past few weeks, I have been spending most of my time implementing <A href="http://en.wikipedia.org/wiki/Epub">Epub</a> support for Sugar&#8217;s Read activity. Epub is gaining increasing acceptance, and a few weeks back, Project Gutenberg <a href="http://www.pg-news.org/20090320/epub-books-now-available-at-project-gutenberg/">started distributing</a> many of their material in the format, and <a href="http://www.nytimes.com/2009/03/19/technology/19sony.html?_r=1&#038;ref=technology">Google + Sony</a> also seem to have started to distribute a large chunk of public domain books as Epubs.</p>
<p>Today I finally reached the stage where the work could be tested on an actual XO, and here&#8217;s how it looks:<br />
<a href="http://sayamindu.randomink.org/ramblings/wp-content/uploads/2009/06/read_epub_xo.jpg" rel="lightbox"><img src="http://sayamindu.randomink.org/ramblings/wp-content/uploads/2009/06/read_epub_xo-300x200.jpg" alt="Read opening a Epub file on an XO" title="Read opening a Epub file on an XO" width="300" height="200" class="aligncenter size-medium wp-image-419" /></a></p>
<p>The rendering is done using WebkitGTK (the Python bindings) and I was a bit concerned about the possible performance issues on the XO-1 (which has a relatively ancient processor, slow filesystem access, only 256 MB of RAM and no swap). The biggest worry was the loading time &#8211; since it involves pre-rendering the entire book to gather metrics for pagination (most Epub books I have come across do not have clearly defined page-breaks, so that has to be figured out), but to my surprise (and relief) the load time turned out to be quite acceptable.</p>
<p>Right now, the viewer supports a very limited subset of the Epub standard (and works only with XHTML based Epubs), but so far it has managed to handle all the files I have tested it with. The viewer is a standalone widget used by the , which should make it possible reuse the work to develop a Epub reader for GNOME as well.</p>
<p>Once the Epub support in Read reaches an acceptable state, the plan is to start working on implementing support for the draft <a href="http://code.google.com/p/openpub/wiki/OPDS">Open Publication Distribution System specs</a>, which allows ebook distributors to distribute e-books via XML catalogues. It makes sense to support this in Read, as well as in the <a href="http://wiki.laptop.org/go/School_Server">school server</a>, to ease the e-books distribution process. For example, if we have a large e-book collection for a particular deployment, it may not make sense to put all of them in individual laptops &#8211; instead allowing the user to browse/search the catalogue and download the books as and when required would probably be a better option.</p>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/06/18/read-and-epub-and-beyond/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ভাল আছি, ভালো থেকো</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/05/30/%e0%a6%ad%e0%a6%be%e0%a6%b2-%e0%a6%86%e0%a6%9b%e0%a6%bf-%e0%a6%ad%e0%a6%be%e0%a6%b2%e0%a7%8b-%e0%a6%a5%e0%a7%87%e0%a6%95%e0%a7%8b/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/05/30/%e0%a6%ad%e0%a6%be%e0%a6%b2-%e0%a6%86%e0%a6%9b%e0%a6%bf-%e0%a6%ad%e0%a6%be%e0%a6%b2%e0%a7%8b-%e0%a6%a5%e0%a7%87%e0%a6%95%e0%a7%8b/#comments</comments>
		<pubDate>Sat, 30 May 2009 16:13:32 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[বাংলা]]></category>
		<category><![CDATA[ভালো আছি ভালো থেকো]]></category>
		<category><![CDATA[bengali]]></category>
		<category><![CDATA[songs]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=415</guid>
		<description><![CDATA[Listened to a wonderful rendition of ভাল আছি, ভালো থেকো by an old school-friend of mine, and I couldn&#8217;t resist posting the lyrics. Apologies to my non-Bengali readers.

আমার ভিতর বাহিরে অন্তরে অন্তরে
আছো তুমি হৃদয় জুড়ে।
ঢেকে রাখে যেমন কুসুম,
পাপড়ির আবডালে ফসলের ঘুম
তেমনি তোমার নিবিড় চলা
মরমের মূল পথ ধরে।
পুষে রাখে যেমন ঝিনুক,
খোলসের আবরনে মুক্তর সুখ
তেমনি তোমার গভীর [...]]]></description>
			<content:encoded><![CDATA[<p>Listened to a wonderful rendition of <i>ভাল আছি, ভালো থেকো</i> by an old school-friend of mine, and I couldn&#8217;t resist posting the lyrics. Apologies to my non-Bengali readers.</p>
<blockquote><p>
আমার ভিতর বাহিরে অন্তরে অন্তরে<br />
আছো তুমি হৃদয় জুড়ে।</p>
<p>ঢেকে রাখে যেমন কুসুম,<br />
পাপড়ির আবডালে ফসলের ঘুম<br />
তেমনি তোমার নিবিড় চলা<br />
মরমের মূল পথ ধরে।</p>
<p>পুষে রাখে যেমন ঝিনুক,<br />
খোলসের আবরনে মুক্তর সুখ<br />
তেমনি তোমার গভীর ছোঁয়া<br />
ভিতরের নীল বন্দরে।</p>
<p>ভাল আছি, ভালো থেকো,<br />
আকাশের ঠিকানায় চিঠি লিখো<br />
দিও তোমার মালাখানি,<br />
বাউলের এই মনটা রে।
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/05/30/%e0%a6%ad%e0%a6%be%e0%a6%b2-%e0%a6%86%e0%a6%9b%e0%a6%bf-%e0%a6%ad%e0%a6%be%e0%a6%b2%e0%a7%8b-%e0%a6%a5%e0%a7%87%e0%a6%95%e0%a7%8b/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Updates</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/05/11/updates-2/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/05/11/updates-2/#comments</comments>
		<pubDate>Mon, 11 May 2009 14:16:56 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=402</guid>
		<description><![CDATA[
A global dictionary for Sugar:: While working on the bookreader capabilities of the XO, I remembered how on almost each and every birthday during my primary school years, someone would give me one of those &#8220;pocket&#8221; dictionaries. Even in college, I would see students coming from Bengali medium schools studying their engineering textbooks with a [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><strong>A global dictionary for Sugar:</strong>: While working on the bookreader capabilities of the XO, I remembered how on almost each and every birthday during my primary school years, someone would give me one of those &#8220;pocket&#8221; dictionaries. Even in college, I would see students coming from Bengali medium schools studying their engineering textbooks with a dictionary by their side. Thinking that it would be useful to have such a dictionary built into the Read Activity, I started coding, and after sometime, I had a utility which worked for not only Read, but for any random Sugar Activity. Just select some text, hit a shortcut key, and you get a model dialog with the definition of the highlighted word(s) (we are considering whether instead of only a shortcut, this should be triggerable via a persistent icon on the <a href="http://wiki.sugarlabs.org/go/Design_Team/Human_Interface_Guidelines/The_Laptop_Experience/The_Frame">frame</a>). <a href="http://people.sugarlabs.org/sayamindu/global_dictionary_second_try.ogv">Here</a> is a video of the (prototype) feature in action.</li>
<li><strong>L10n infra migration:</strong>:Over the past few weeks, we migrated our <a href="http://translate.sourceforge.net/wiki/pootle/index">Pootle</a> based translation system to a <a href="http://translate.sugarlabs.org/">new server</a>. The transition seems to have succeeded without major hiccups, and I also managed to sneak in a feature which would show the status of a PO file (results of <em>msgfmt &#8211;check</em>, as well whether the file has been committed to the VCS or not) in the statistics view.<br />
<a href="http://people.sugarlabs.org/sayamindu/pootle_msgfmt_checking.png" rel="lightbox"><img src="http://people.sugarlabs.org/sayamindu/pootle_msgfmt_checking.png" alt="New features in Pootle"/></a>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/05/11/updates-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
<enclosure url="http://people.sugarlabs.org/sayamindu/global_dictionary_second_try.ogv" length="4781309" type="video/ogg" />
		</item>
		<item>
		<title>Why should I bother ?</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/04/29/why-should-i-bother/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/04/29/why-should-i-bother/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 16:35:34 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[College]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[circus]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[interviews]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=389</guid>
		<description><![CDATA[Warning: This is a rant. Feel free to ignore
I love coding in Python, and in spite of some of the occasional issues it can cause, I feel that it lets one accomplish whatever one wants to do with the minimal amount of magic incantations. So naturally, I have been trying to convince my friends from [...]]]></description>
			<content:encoded><![CDATA[<p><em>Warning: This is a rant. Feel free to ignore</em><br/><br />
I love coding in Python, and in spite of some of the occasional <a href="http://twitter.com/federicomena/status/1518704962">issues</a> it can cause, I feel that it lets one accomplish whatever one wants to do with the minimal amount of magic incantations. So naturally, I have been trying to convince my friends from college to try out Python, but after a few incidents I&#8217;m not so sure if I have been doing the right thing. Couple of events will explain the situation:<br/><br />
<strong><em>Scene I</em> &#8211; Interview for positions in one of the &#8220;big four&#8221; Indian IT companies:</strong><br />
<em>Friend of mine has Python listed under the skills sections in his CV</em><br />
<strong>Interviewer:</strong> ওরে বাবা তুমি তো পাইথন জানো। (<strong><em>TRANS</strong></em>:<em>Wow (in the sarcastic sense) &#8211; you seem to know Python</em>)<br />
<strong>Friend:</strong> হ্যাঁ (<strong><em>TRANS</strong></em>:<em>Yes</em>)<br />
<strong>Interviewer:</strong> আচ্ছা Java জানো কি ? (<strong><em>TRANS</strong></em>:<em>So, do you know Java</em>)<br />
<strong>Friend:</strong> যতটুকু কলেজে পড়িয়েছে, ওইটুকু, তার থেকে বেশী জানি নাহ (<strong><em>TRANS</strong></em>:<em>Not much, just whatever they have taught in college</em>) (the college course covers Java as an example of a Object Oriented language, so it does not go very deep)<br />
<strong>Interviewer:</strong> আচ্ছা, এটা বল তো&#8230; (<strong><em>TRANS</strong></em>:<em>All right then, answer this</em>)<br />
<strong>Interviewer:</strong> pretty convoluted question from Java &#8211; involving complicated API stuff and such<br />
<strong>Friend:</strong> বলতে পারবো নাহ (<strong><em>TRANS</strong></em>:<em>Sorry, I can&#8217;t answer this</em>)<br />
<strong>Interviewer:</strong> যা, এইটুকুই জানো না, আর  পাইথন ফাইথন কী সব শিখে ফেলেছ ? (<strong><em>TRANS</strong></em>:<em>Bah! You don&#8217;t know such basic stuff, and on the other hand, you have learn&#8217;t Python and whatnot!!</em>)<br/><br />
Needless to say &#8211; the guy did not get selected, and got rid of Python from his CV.<br />
<br/><br />
<strong>Scene II &#8211; Yet another interview, this time for a &#8220;research&#8221; position in academia</strong><br />
<em>Friend of mine has been learning PIL, PyGTK, etc and has Python listed in his CV</em><br />
<strong>Interviewer:</strong> আচ্ছা, এই পাইথনটা কি ? (everyone in interview panel make weird facial expressions) (<strong><em>TRANS</strong></em>:<em>So, what is this Python &#8220;thing&#8221;?</em>)<br />
<strong>Friend:</strong> &lt;explains&gt;<br />
<strong>Interviewer:</strong> আচ্ছা এটার এরকম বিচ্ছিরি নাম কেন ? (<strong><em>TRANS</strong></em>:<em>So, why does this have such a weird sounding name?</em>)<br />
<strong>Friend:</strong> &lt;explains, mentioning Monty Python, etc&gt;<br />
<strong>Interviewer:</strong> দেখো, আমরা তো এসব জানিনা, আমরা সাবজেক্ট জানি। তুমি বরং কি সাবজেক্ট জানো বল (<strong><em>TRANS</strong></em>:<em>Look, we do not know these things, we know &#8220;subjects&#8221;. What &#8220;subjects do you know ?</em>)<br />
<em>&lt;..and the interview continued with some very standard (and stupid, IMHO) questions (most of which, I believe are lifted from <a href="http://www.flipkart.com/cracking-interview-balasubramania/007060052x-wmw3f9gn5m">this particular book</a>). My friend answered all of the questions, except for one.&gt;</em><br />
<br/><br />
<strong>Friend later tells me:</strong> ওইরকম মুখ বানালো &#8211; ওই দেখেই বুঝলাম হবে নাহ্‌ । আমি আর কোথাও পাইথন জানি বলছি নাহ্‌ ।  (<strong><em>TRANS</strong></em>:<em>From their expression on hearing the word Python, I knew I was not going to crack this interview. I&#8217;m not going to mention Python in any future interview.</em>)<br />
<br/><br />
When the first incident happened, I thought it was a isolated case. But after the second one, I don&#8217;t think it is (and there has been at least one other similar case as well). In fact, when the campus recruitment started for our batch in college, a very senior and respected faculty member told me that my chances of getting placed from college was very slim. I did not appear for any of the recruitment programs (and almost got fined by the college authorities for being &#8220;absent&#8221;), so I did not get the chance to test out his theory &#8211; but that&#8217;s a different story altogether.<br />
For the second incident, one may claim that the interviewers were perhaps looking for someone who had a good &#8220;theoretical understanding&#8221; or had &#8220;strong fundamentals&#8221;, but I have my doubts (primarily due to the generic crappy questions that were asked afterwards). The first incident on the other hand, points clearly towards something being very wrong with the interviewer.<br />
The question that arises after all this is, why should I ask people to learn Python, or for that matter anything that is not covered by the officially sanctioned syllabus ? On one hand, our &#8220;progressive&#8221; political leaders and leaders of our various industries speak about nurturing and enhancing &#8220;talent&#8221; to build a better India, and what not. In the real world on the other hand, at the very ground level, the same institutions that the leaders are supposed to be the patrons and creators of, encourage nothing but mediocrity. End result: each year, thousands of bright young students get turned into zombies. What a terrible waste&#8230; what a terrible waste&#8230;</p>
<p><em><b>Minor update:</b> I realize that many have mistakenly assume that the requirements in the first interview had something to do with Java. It did not. It was a fresher interview, conducted during campus placements, and the students were expected to have zero experience. Many of the students who were actually selected were either placed in testing, or in .Net (mostly building/maintaining/troubleshooting ASP.Net/C# sites)</em></p>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/04/29/why-should-i-bother/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
		<item>
		<title>Updates..</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/04/13/updates/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/04/13/updates/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 13:16:46 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[bookreader]]></category>
		<category><![CDATA[fbreader]]></category>
		<category><![CDATA[hunspell]]></category>
		<category><![CDATA[keyboards]]></category>
		<category><![CDATA[morphology]]></category>
		<category><![CDATA[OLPC]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[sugar]]></category>
		<category><![CDATA[sugar-control-panel]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[xkb]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=382</guid>
		<description><![CDATA[This blog has not seen much activity in a while, so here goes:

Bought a HCL touch-screen based netbook. It&#8217;s somewhat ancient hardware, but most of the stuff works out of the box (except for the webcam, which does not even show up in lshal or lsusb). The touchscreen required a binary driver &#8211; but a [...]]]></description>
			<content:encoded><![CDATA[<p>This blog has not seen much activity in a while, so here goes:</p>
<ul>
<li>Bought a HCL touch-screen based <a href="http://www.indiaplaza.in/hcl-tablet-laptop-with-linux-ahmy0210/hcl/electronics/computers-and-accessories/laptops/PC0902161207463.htm">netbook</a>. It&#8217;s somewhat ancient hardware, but most of the stuff works out of the box (except for the webcam, which does not even show up in lshal or lsusb). The touchscreen required a binary driver &#8211; but a Free/Open Source version seems to <a href="http://cgit.freedesktop.org/xorg/driver/xf86-input-penmount">exist</a>, though I could not get to calibrate the screen with the FOSS driver variant<br />
<strong>[Update:</strong> The webcam works - I had to press <em>Fn-F5</em> to enable it. It is turned off by default to conserve battery.]
</li>
<li>Taught myself (this was long overdue &#8211; but at least now I can admit that I did not know what I used not to know) how to <em>properly</em> write Python extensions in C. I started out with bindings for <a href="http://hunspell.sourceforge.net/">Hunspell</a> (I&#8217;m reading up a bit on morphology nowadays, and finding it to be tremendously entertaining). There was a Python extension for Hunspell already, but it did not compile for me, and that pushed me to decide to figure out how to do this myself. One thing led to another, and so, as of now, there is (in progress) extensions for handling:
<ul>
<li><a href="http://code.google.com/p/pyhunspell/">Hunspell</a>. Usage instructions <a href="http://code.google.com/p/pyhunspell/wiki/UsingPyHunspell">here</a></li>
<li><a href="http://code.google.com/p/pygettextpo/">libgettext-po</a>. This should be faster than the existing pure Python based PO file parsers out there. (maybe at some point, I could make <a href="http://translate.sourceforge.net/wiki/pootle/index">Pootle/Translate Toolkit</a> use this, and make the work of OLPC/Sugarlabs translation team members somewhat less frustrating.</li>
<li><a href="http://git.sugarlabs.org/projects/python-xkb">XKB</a>. I must admit that I took a shortcut for this, and this extension is actually based on the awesome <a href="http://library.gnome.org/devel/libxklavier/stable/index.html">libxklavier</a>. The final plan is to develop a Sugar extension for managing the keyboard options and layouts using this extension. The code in the main git repository, though fairly complete in terms of what is required for Sugar at the moment, is not implemented via (py)gobject. Implementing the pygobject-based wrapper is turning out to be a bit more complicated than I initially thought, but some code for that is also available in <a href="http://git.sugarlabs.org/projects/python-xkb/repos/pygobject-support">this repository</a> (it is somewhat easier now, since I know (at least most of of) what is happening under the hood).</li>
</ul>
<li><a href="http://lists.laptop.org/pipermail/bookreader/2009-April/000060.html">Released</a> a newer version of the FBReader activity, which is much more improved in terms of usability (eg: response to the game keys keys while the XO-1 is in tablet mode is much more smoother, and all the keys do something useful). People <a href="http://blog.feedbooks.com/?p=219">seem to be happy</a> with the new release.</li>
<li>Coming back to the present, right now, among other things, I&#8217;m working on a few interesting (and important) enhancements for the book-reader(s). Some of them include support for long keypresses (eg: pressing the &#8220;square&#8221; game key for two seconds will show the table of contents), notification of critical power events (I realized to my horror during dogfooding, that in tablet mode, while the book reader is open in full screen, there is no way to tell how much battery-charge is left), etc. The bookmark support feature that I came up with a few months back needs a bit of polish, but I think I can make this show up in the next release of Read.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/04/13/updates/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>19th March, 2009</title>
		<link>http://sayamindu.randomink.org/ramblings/2009/03/20/19th-march-2009/</link>
		<comments>http://sayamindu.randomink.org/ramblings/2009/03/20/19th-march-2009/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 18:30:05 +0000</pubDate>
		<dc:creator>Sayamindu</dc:creator>
				<category><![CDATA[Free Software]]></category>
		<category><![CDATA[ebooks. soc]]></category>
		<category><![CDATA[OLPC]]></category>
		<category><![CDATA[soc2009]]></category>
		<category><![CDATA[sugar]]></category>
		<category><![CDATA[summerofcode]]></category>

		<guid isPermaLink="false">http://sayamindu.randomink.org/ramblings/?p=375</guid>
		<description><![CDATA[
Sucrose 0.84, the latest stable version of the Sugar educational platform has been released. A large number of bugfixes, new features, improvements and tweaks have gone in during the past six months, and to try out this release, you can use Sugar on a Stick.
Sugarlabs (the organisation which is currently driving the development of Sugar) [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://wiki.sugarlabs.org/go/DevelopmentTeam/Release/Releases/Sucrose/0.84">Sucrose 0.84</a>, the latest stable version of the Sugar educational platform has been released. A large number of bugfixes, new features, improvements and tweaks have gone in during the past six months, and to try out this release, you can use <a href="http://wiki.sugarlabs.org/go/Sugar_on_a_Stick/Installation">Sugar on a Stick</a>.</li>
<li>Sugarlabs (the organisation which is currently driving the development of Sugar) is a <a href="http://socghop.appspot.com/org/show/google/gsoc2009/sugarlabs">mentor organization</a> for Google Summer of Code 2009. A list of ideas is currently on the <a href="http://wiki.sugarlabs.org/go/DevelopmentTeam/ProjectIdeas">Sugarlabs wiki</a>.</li>
<li>It looks like Google has decided to <a href="http://www.nytimes.com/2009/03/19/technology/19sony.html?_r=1&#038;ref=technology">publish</a> out-of-copyright books as ePub files for the Sony Reader. This is awesome news, all the more so since some of us have been working for the past few weeks to ensure that more ebook formats are supported in Sugar. As a part of that, I have created a Sugarized version of <a href="http://www.fbreader.org/">FBReader</a>, which handles epub files superbly:<br />
<div id="attachment_376" class="wp-caption aligncenter" style="width: 310px"><a href="http://sayamindu.randomink.org/ramblings/wp-content/uploads/2009/03/fbreader_sugar_v2.png" rel="lightbox"><img src="http://sayamindu.randomink.org/ramblings/wp-content/uploads/2009/03/fbreader_sugar_v2-300x225.png" alt="FBReader Activity for Sugar" title="fbreader_sugar_v2" width="300" height="225" class="size-medium wp-image-376" /></a><p class="wp-caption-text">FBReader Activity for Sugar</p></div>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://sayamindu.randomink.org/ramblings/2009/03/20/19th-march-2009/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
