<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet AbiSource</title>
	<link>http://planet.abisource.com/</link>
	<language>en</language>
	<description>Planet AbiSource - http://planet.abisource.com/</description>

<item>
	<title>Fridrich Strba: FOSDEM 2012 - How to make the best of it and become LibreOffice developer</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-131040848618390967</guid>
	<link>http://fridrich.blogspot.com/2012/01/fosdem-2012-how-to-make-best-of-it-and.html</link>
	<description>&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;http://www.fosdem.org&quot;&gt;&lt;img src=&quot;http://www.fosdem.org/promo/going-to&quot; alt=&quot;I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://fosdem.org/2012/&quot; target=&quot;_blank&quot;&gt;FOSDEM 2012&lt;/a&gt; is just round the corner and, as you might know, &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; will have a &lt;a href=&quot;http://blog.documentfoundation.org/2012/01/24/libreoffice-devroom-at-fosdem-2012-in-brussels/&quot; target=&quot;_blank&quot;&gt;DevRoom&lt;/a&gt; this year too. And, as it was already &lt;a href=&quot;http://libregraphicsworld.org/blog/entry/whats-coming-at-fosdem-2012&quot; target=&quot;_blank&quot;&gt;publicized&lt;/a&gt;, your servant and Eilidh McAdam of &lt;a href=&quot;http://www.freedesktop.org/wiki/Software/libvisio&quot; target=&quot;_blank&quot;&gt;libvisio&lt;/a&gt; fame will attend too. The goal of this event will be to help you to become a &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; developer, by helping you to get your first contact with the code from inside.&lt;/p&gt;&lt;p&gt;&lt;b&gt;How to prepare for the event?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In order to give as many community members the possibility to speak, the presentations will not take more then 15 minutes each. But we will be there for one-to-one contacts and hacking goodness. If you are interested in contributing to our new Visio import filter, or the upcomming Corel Draw and MS Publisher filters, here is what you can do:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Find a bug that is bothering you in the current Visio import filter, or some simple feature that the importer currently does not support&lt;/li&gt;&lt;li&gt;Check out the following libraries:&lt;ul&gt;&lt;li&gt;master branch of libwpd (&lt;code&gt;git clone git://libwpd.git.sourceforge.net/gitroot/libwpd/libwpd&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;STABLE-0-2-0 branch of libwpg (&lt;code&gt;git clone -b STABLE-0-2-0 git://libwpg.git.sourceforge.net/gitroot/libwpg/libwpg&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;master branch of libwps (&lt;code&gt;git clone git://libwps.git.sourceforge.net/gitroot/libwps/libwps&lt;/code&gt;)&lt;/li&gt;&lt;li&gt;master branch of libvisio (&lt;code&gt;git clone git://anongit.freedesktop.org/libreoffice/contrib/libvisio&lt;/code&gt;), and&lt;/li&gt;&lt;li&gt;master branch of libcdr (&lt;code&gt;git clone git://anongit.freedesktop.org/libreoffice/libcdr&lt;/code&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Build them as system libraries and install them in the same order.&lt;/li&gt;&lt;li&gt;Then build LibreOffice according to &lt;a href=&quot;http://wiki.documentfoundation.org/Development#Getting_your_first_build_done&quot; target=&quot;_blank&quot;&gt;these instructions&lt;/a&gt;. &lt;b&gt;The important thing is to use those system libraries that you just built.&lt;/b&gt; To do so, be sure you added to the configure flags &lt;ul&gt;&lt;li&gt;&lt;code&gt;--with-system-libwpd&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;--with-system-libwpg&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;--with-system-libwps&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;--with-system-libvisio&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;--with-system-libcdr&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;With this kind of build, you will be ready to make the most from your Brussels weekend. Nevetheless, you can drop around at our IRC channel &lt;a href=&quot;irc://chat.freenode.net/libreoffice-dev&quot;&gt;&lt;code&gt;#libreoffice-dev&lt;/code&gt;&lt;/a&gt; channel at &lt;a href=&quot;http://webchat.freenode.net/&quot;&gt;&lt;code&gt;irc.freenode.net&lt;/code&gt;&lt;/a&gt; for more information and ideas.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Starting to do it instead of planning to do it ...&lt;/b&gt;&lt;/p&gt;&lt;p&gt;... is the best way to enter the FOSS development. That is why your servant and Eilidh will be around to hold your hand with debugging and finding way to implement your favourite features. We will answer your questions about the library design. We will point you to the place in the code where your bug might linger. And for more complicated stuff, we will debug it with you.&lt;/p&gt;&lt;p&gt;Don't expect us to give you a fish, but we will certainly teach you how to catch it by yourself. And in the same token, you will become a contributor inside a community of smart people that is fun to hang and hack with.&lt;/p&gt;&lt;p&gt;See you in Brussels the 4&lt;sup&gt;th&lt;/sup&gt; and 5&lt;sup&gt;th&lt;/sup&gt; of February 2012.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-131040848618390967?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Feb 2012 16:11:19 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: Google Summer of Code 2012</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-6730469246886859979</guid>
	<link>http://kkpradeeban.blogspot.com/2011/12/google-summer-of-code-2012.html</link>
	<description>&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://www.slideshare.net/kkpradeeban&quot;&gt;View more presentations from Kathiravelu Pradeeban&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-mpoGS10NWnY/Tu3DCfvtZuI/AAAAAAAAA80/_tMSCuhclT8/s1600/abiword-logo.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;47&quot; src=&quot;http://3.bp.blogspot.com/-mpoGS10NWnY/Tu3DCfvtZuI/AAAAAAAAA80/_tMSCuhclT8/s200/abiword-logo.png&quot; width=&quot;50&quot; /&gt;&lt;/a&gt;&lt;/div&gt;We are having a series of GSoC awareness sessions, including the &lt;a href=&quot;http://kkpradeeban.blogspot.com/2011/12/google-summer-of-code-2012-awareness.html&quot; target=&quot;_blank&quot;&gt;yesterday's session we had at the University of Peradeniya&lt;/a&gt;, and the &lt;a href=&quot;https://www.facebook.com/?ref=logo#%21/events/189393997821902/&quot; target=&quot;_blank&quot;&gt;upcoming session at the University of Jaffna&lt;/a&gt; on the 7th of January, 2012. These events focus on discussing GSoC and FOSS. Attached herewith is the latest version of the presentation I prepared to introduce GSoC 2012 to the students. Feel free to &lt;span&gt;&lt;a href=&quot;http://www.box.com/shared/hpcfi39yfgub83sq99hz&quot; target=&quot;_blank&quot;&gt;download&lt;/a&gt;&lt;/span&gt; and distribute, if the slow network prevents you viewing the presentation here.&lt;br /&gt;&lt;br /&gt;As a mentor from the AbiWord community, I have come up with the slides based on our experience with the Google Summer of Code. This presentation is also influenced by my experience as a three time Google Summer of Code participant, with AbiWord (2011 as a mentor and 2009 as a student) and OMII-UK (2010 as a student). Special thanks to &lt;b&gt;Martin Sevior&lt;/b&gt; and the &lt;a href=&quot;http://www.abisource.com/&quot; target=&quot;_blank&quot;&gt;AbiWord &lt;/a&gt;community for their valuable input at several times, in shaping this presentation up.&lt;br /&gt;&lt;br /&gt;Google Summer of Code 2012 project ideas of AbiWord will be listed &lt;a href=&quot;http://www.abisource.com/wiki/Google_Summer_of_Code_2012&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. &lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-6730469246886859979?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 05 Feb 2012 20:25:13 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: OpenPhoto</title>
	<guid>http://www.figuiere.net/hub/blog/?2012/02/03/814-openphoto</guid>
	<link>http://www.figuiere.net/hub/blog/?2012/02/03/814-openphoto</link>
	<description>&lt;p&gt;A while back, Jaisen Mathai decided to start &lt;a href=&quot;http://theopenphotoproject.org/&quot;&gt;OpenPhoto&lt;/a&gt;, a project dedicated to provide a Free Software hosting solution for photos, to liberate the users from the claws of hosting services like Flickr, Picasa, etc.&lt;/p&gt;


&lt;p&gt;This is an idea I have been mulling for a long time, so much that I even started on my own, but it didn't go very far. So when I found out about OpenPhoto, my curiosity got picked. It seemed to fullfill the same goals so I decided instead to look at it.&lt;/p&gt;


&lt;p&gt;My first task was to get it to run. The catch is that from the start it was designed to run off Amazon Web Service and their SimpleDB. Not something I wanted. So I started writing the needed code to support MySQL and local filesystem to store the photos. And that's how it started. Then I implemented support for importing metadata from the pictures, automatically, something that I have seen missing in several of the competing services.&lt;/p&gt;


&lt;p&gt;The OpenPhoto project is part of &lt;a href=&quot;https://webfwd.org/&quot;&gt;WebFWD&lt;/a&gt;, Mozilla's Open Innovation program. And it was one of the first project to make use of Mozilla's excellent &lt;a href=&quot;https://browserid.org/&quot;&gt;BrowserID&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;The source code is &lt;a href=&quot;https://github.com/openphoto/frontend&quot;&gt;available on github&lt;/a&gt;. Feel free to download it, install it, tinker with it. Pull requests are more than welcome. If you don't feel like installing it, you can still go to &lt;a href=&quot;http://openphoto.me&quot;&gt;openphoto.me&lt;/a&gt; for the hosted version.&lt;/p&gt;


&lt;p&gt;And since I like &quot;dogfooding&quot;, I'm running my &lt;a href=&quot;http://hub.shutterbugging.net/&quot;&gt;own instance&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Sat, 04 Feb 2012 05:19:50 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: We need a Gnome computer</title>
	<guid>http://www.figuiere.net/hub/blog/?2012/01/31/813-we-need-a-gnome-computer</guid>
	<link>http://www.figuiere.net/hub/blog/?2012/01/31/813-we-need-a-gnome-computer</link>
	<description>&lt;p&gt;tl;dr we need a Gnome computer.&lt;/p&gt;


&lt;p&gt;This is not about choice, it is about freedom.&lt;/p&gt;


&lt;p&gt;A hardware platform that would be libre, that would run a libre OS, based on &lt;a href=&quot;http://www.gnome.org/&quot;&gt;Gnome&lt;/a&gt;, Linux and GNU.&lt;/p&gt;


&lt;p&gt;A hardware platform whose software stack would be vertically integrated for a maximum user experience: working out of the box, as advertised.&lt;/p&gt;


&lt;p&gt;And for those who think it is about choice, think again. Choice is dealing with a bazillion different hardware configuration, drivers, etc. Dealing with more poorly written drivers (usually from hardware vendors) or proprietary (hello GPU driver) or even &lt;a href=&quot;http://mjg59.dreamwidth.org/10014.html&quot;&gt;buggy firmware&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Next will come the portable devices: tablet, phones, etc.&lt;/p&gt;</description>
	<pubDate>Wed, 01 Feb 2012 06:19:04 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: LibreOffice CorelDraw Import filter - don't despise the humble beginnings</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-995596367138680466</guid>
	<link>http://fridrich.blogspot.com/2012/01/libreoffice-coreldraw-import-filter.html</link>
	<description>&lt;p&gt;You might still remember &lt;a href=&quot;http://fridrich.blogspot.com/2011/11/it-has-been-long-time-since-i-last-time.html&quot; target=&quot;_blank&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;http://fridrich.blogspot.com/2011/07/libreoffice-visio-import-filter-round.html&quot; target=&quot;_blank&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;http://fridrich.blogspot.com/2011/06/libreoffice-visio-import-filter-shaping.html&quot; target=&quot;_blank&quot;&gt;my&lt;/a&gt; &lt;a href=&quot;http://fridrich.blogspot.com/2011/06/libreoffice-visio-import-filter-first.html&quot; target=&quot;_blank&quot;&gt;blogs&lt;/a&gt; about &lt;a href=&quot;http://wiki.documentfoundation.org/ReleaseNotes/3.5#Filters&quot; target=&quot;_blank&quot;&gt;our new and shiny MS Visio import filter&lt;/a&gt; in the upcoming &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; 3.5.0.&lt;/p&gt;&lt;p&gt;But what about 3.6.0? Is it going to be an exciting version too? Well, the answer depends on what kind of things excite you generally, but for sure, there will be a lot of goodness as usual to make the best free office suite even better.&lt;/p&gt;&lt;p&gt;In my free time, I have been working for some time already on the next graphics import filter for &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt;. This time it will be a CorelDraw import filter. The horse-power is a library, &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/libcdr/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;&lt;b&gt;libcdr&lt;/b&gt;&lt;/code&gt;&lt;/a&gt;. In the same way as &lt;code&gt;libvisio&lt;/code&gt;, &lt;code&gt;libcdr&lt;/code&gt; reuses the API of &lt;code&gt;libwpg&lt;/code&gt; and thus is easily pluggable into &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; reusing all the ODG generator classes of the current &lt;code&gt;writerperfect&lt;/code&gt; module. The importer is currently part of the git master tree.&lt;/p&gt;&lt;p&gt;You might be already shouting: &amp;quot;Where are the screenshots?&amp;quot; I know that a picture speaks louder then hundred words, and so here you are served:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/990shapes_coreldraw7.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/990shapes_coreldraw7_tn.jpg&quot; alt=&quot;Shapes in CorelDraw 7&quot; /&gt;&lt;/a&gt;&lt;/p&gt;Simple and more complex shapes in CorelDraw 7&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/902shapes_our_draw.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/902shapes_our_draw_tn.jpg&quot; alt=&quot;Shapes in LibreOffice Draw&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;The same shapes imported into LibreOffice Draw.&lt;/p&gt;&lt;p&gt;As you can see, it is an initial implementation, which cannot but get better. If you want to participate in this adventure, you can drop around at our IRC channel &lt;a href=&quot;irc://chat.freenode.net/libreoffice-dev&quot;&gt;&lt;code&gt;#libreoffice-dev&lt;/code&gt;&lt;/a&gt; channel at &lt;a href=&quot;http://webchat.freenode.net/&quot;&gt;&lt;code&gt;irc.freenode.net&lt;/code&gt;&lt;/a&gt; where a community of smart and friendly developers can direct you.&lt;/p&gt;&lt;p&gt;Stay tuned for more nice pictures as this project advances.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-995596367138680466?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 31 Jan 2012 16:03:22 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: Building AbiWord 2.9.0 on Ubuntu 10.04 / 64 bit from Source</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-4147830480652775631</guid>
	<link>http://kkpradeeban.blogspot.com/2011/03/building-abiword-290-on-ubuntu-1004-64.html</link>
	<description>&lt;div&gt;As we are happily moving towards the release of AbiWord-3.0.0, many developers are joining the effort. With the announcement of Google Summer of Code-2011, many students too are interested in joining the project. This guide targets to help anyone to build AbiWord on Ubuntu 10.04/64 bit. This is still applicable to many other linux distributions too, though it is tested on Ubuntu. Unlike the usual building guides, this one is going to follow the worst-path -- assuming every failed cases, for a complete novice.. :)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;So, as mentioned in the AbiWord's &lt;a href=&quot;http://www.abisource.com/wiki/Compiling_AbiWord&quot;&gt;wiki page&lt;/a&gt;, let's start with installing autoconf.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;sudo apt-get install autoconf&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh &lt;/span&gt;&lt;/b&gt;&lt;span&gt;Can't exec &quot;libtoolize&quot;: No such file or directory at /usr/bin/autoreconf line 189.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Use of uninitialized value in pattern match (m//) at /usr/bin/autoreconf line 189.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span&gt;configure.in:130: error: possibly undefined macro: AC_LIBTOOL_WIN32_DLL&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; If this token and others are legitimate, please use m4_pattern_allow.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; See the Autoconf documentation.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;configure.in:131: error: possibly undefined macro: AC_PROG_LIBTOOL&lt;/span&gt;&lt;br /&gt;&lt;span&gt;autoreconf: /usr/bin/autoconf failed with exit status: 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Running ./configure --enable-maintainer-mode ...&lt;/span&gt;&lt;br /&gt;&lt;span&gt;configure: error: cannot find install-sh, install.sh, or shtool in &quot;.&quot; &quot;./..&quot; &quot;./../..&quot;&lt;/span&gt;&lt;br /&gt;==========================================================================================&lt;/div&gt;&lt;div&gt;OK. We need &lt;b&gt;libtool&lt;/b&gt; installed!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;sudo apt-get install libtool&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;==========================================================================================&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NOW!&lt;br /&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;.............................&lt;/div&gt;&lt;div&gt;&lt;span&gt;checking pkg-config is at least version 0.9.0... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wall... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wextra... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wsign-compare... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wpointer-arith... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wchar-subscripts... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wwrite-strings... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wmissing-noreturn... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wunused... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wpointer-arith... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking whether gcc understands -Wshadow... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for libpng... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for libpng14... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for libpng12... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking png.h usability... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking png.h presence... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for png.h... no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;configure: error: `png.h' not found, install libpng or specify CPPFLAGS to include custom locations&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As we can see, we will be installing each of the dependencies one by one, if we follow the same steps like this.&lt;/div&gt;&lt;div&gt;But we actually need not to!&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~/programs/abiword$ sudo apt-get build-dep abiword&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;Reading package lists... Done&lt;br /&gt;Building dependency tree&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;Reading state information... Done&lt;br /&gt;Note, selecting libwpd8-dev instead of libwpd-dev&lt;br /&gt;Note, selecting libxslt1-dev instead of libxslt-dev&lt;br /&gt;The following NEW packages will be installed:&lt;br /&gt;&amp;nbsp; build-essential cdbs cvs debhelper diffstat dpkg-dev fakeroot fdupes g++ g++-4.4 gettext html2text intltool intltool-debian libaiksaurus-1.2-0c2a&lt;br /&gt;&amp;nbsp; libaiksaurus-1.2-data libaiksaurus-1.2-dev libaiksaurusgtk-1.2-0c2a libaiksaurusgtk-1.2-dev libasio-dev libatk1.0-dev libboost-date-time-dev&lt;br /&gt;&amp;nbsp; libboost-date-time1.40-dev libboost-date-time1.40.0 libboost-dev libboost-regex-dev libboost-regex1.40-dev libboost-regex1.40.0 libboost-serialization1.40-dev&lt;br /&gt;&amp;nbsp; libboost-serialization1.40.0 libboost1.40-dev libbz2-dev libcairo2-dev libdbus-1-dev libdbus-glib-1-dev libdirectfb-dev libdirectfb-extra libenchant-dev&lt;br /&gt;&amp;nbsp; libexpat1-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgconf2-dev libgcrypt11-dev libgdome2-0 libgdome2-cpp-smart-dev libgdome2-cpp-smart0c2a&lt;br /&gt;&amp;nbsp; libgdome2-dev libglade2-dev libglib2.0-dev libgnutls-dev libgoffice-0.8-8 libgoffice-0.8-8-common libgoffice-0.8-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev&lt;br /&gt;&amp;nbsp; libgtkmathview-dev libgtkmathview0c2a libgucharmap2-dev libice-dev libicu-dev libidl-dev libidn11-dev libjpeg62-dev liblink-grammar4 liblink-grammar4-dev&lt;br /&gt;&amp;nbsp; libloudmouth1-dev libmail-sendmail-perl libncurses5-dev liborbit2-dev libots-dev libots0 libpango1.0-dev libpixman-1-dev libpng12-dev libpopt-dev libpsiconv-dev&lt;br /&gt;&amp;nbsp; libpsiconv6 libpthread-stubs0 libpthread-stubs0-dev libreadline-dev libreadline6-dev librsvg2-dev libsm-dev libsoup2.4-dev libssl-dev libstdc++6-4.4-dev&lt;br /&gt;&amp;nbsp; libsys-hostname-long-perl libsysfs-dev libt1-dev libt1-doc libtasn1-3-dev libwmf-dev libwpd-stream8c2a libwpd8-dev libwpg-dev libwps-dev libwv-1.2-3 libwv-dev&lt;br /&gt;&amp;nbsp; libx11-dev libxau-dev libxaw7-dev libxcb-render-util0-dev libxcb-render0-dev libxcb1-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev&lt;br /&gt;&amp;nbsp; libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxml2-dev libxmu-dev libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev&lt;br /&gt;&amp;nbsp; link-grammar-dictionaries-en orbit2 po-debconf quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-input-dev&lt;br /&gt;&amp;nbsp; x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev xz-utils zlib1g-dev&lt;br /&gt;0 upgraded, 140 newly installed, 0 to remove and 3 not upgraded.&lt;br /&gt;Need to get 60.4MB of archives.&lt;br /&gt;After this operation, 269MB of additional disk space will be used.&lt;br /&gt;Do you want to continue [Y/n]? Y&lt;/span&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Now again,&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;....................................... &lt;/div&gt;&lt;div&gt;&lt;span&gt;checking for libpng... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for PNG... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking jpeglib.h usability... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking jpeglib.h presence... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for jpeglib.h... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for jpeg_read_header in -ljpeg... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking zlib.h usability... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking zlib.h presence... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for zlib.h... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for DEPS... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for GTK214... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for GSFGI... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for PLUGIN... yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;checking for OPENDOCUMENT... configure: error: Package requirements ( libgsf-1 &amp;gt;= 1.12 redland &amp;gt;= 1.0.10 rasqal &amp;gt;= 0.9.17 ) were not met:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;No package 'redland' found&lt;/span&gt;&lt;br /&gt;&lt;span&gt;No package 'rasqal' found&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Consider adjusting the PKG_CONFIG_PATH environment variable if you&lt;/span&gt;&lt;br /&gt;&lt;span&gt;installed software in a non-standard prefix.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Alternatively, you may set the environment variables OPENDOCUMENT_CFLAGS&lt;/span&gt;&lt;br /&gt;&lt;span&gt;and OPENDOCUMENT_LIBS to avoid the need to call pkg-config.&lt;/span&gt;&lt;br /&gt;&lt;span&gt;See the pkg-config man page for more details.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's fix the redland &lt;b&gt;RDF&lt;/b&gt; dependency issue by installing it.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~$ sudo apt-get install librdf0-dev&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;again, &lt;b&gt;pradeeban@pradeeban:~/programs/abiword$ sh autogen.sh &lt;/b&gt;Now it builds fine!&lt;/div&gt;&lt;div&gt;......................&lt;/div&gt;&lt;div&gt;&lt;span&gt;config.status: creating plugins/ots/xp/Makefile&lt;/span&gt;&lt;br /&gt;&lt;span&gt;config.status: creating config.h&lt;/span&gt;&lt;br /&gt;&lt;span&gt;config.status: config.h is unchanged&lt;/span&gt;&lt;br /&gt;&lt;span&gt;config.status: executing depfiles commands&lt;/span&gt;&lt;br /&gt;&lt;span&gt;config.status: executing libtool commands&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Configuration:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x86_64-unknown-linux-gnu&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; dynamic binary&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; static binary&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; platform&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unix (embedded: no)&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; toolkit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gtk&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; debug&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Optional features:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; menubutton&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; printing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; spell checking&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; status bar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; emacs keybinding&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; vi keybinding&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; clipart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; templates&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Optional dependencies:&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; gtk2 &amp;gt; 2.14&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; gnome-vfs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; no&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; gio&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; gsf-gio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&amp;nbsp; goffice&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Builtin plugins&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;span&gt;Plugins&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; opendocument &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Now type `make' to compile.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~/programs/abiword$ make&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&quot;make&quot; goes fine too.&lt;/div&gt;&lt;div&gt;Let's &quot;make install&quot; now!&lt;/div&gt;&lt;div&gt;&lt;b&gt;pradeeban@pradeeban:~/programs/abiword$ make install&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;................... &lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;test -z &quot;/usr/local/share/abiword-2.9/ui&quot; || /bin/mkdir -p &quot;/usr/local/share/abiword-2.9/ui&quot;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;/bin/mkdir: cannot create directory `/usr/local/share/abiword-2.9': Permission denied&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[6]: *** [install-uiDATA] Error 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[6]: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap/gtk'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[5]: *** [install-am] Error 2&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[5]: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap/gtk'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[4]: *** [install-recursive] Error 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[4]: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap/gtk'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[3]: *** [install-recursive] Error 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[3]: Leaving directory `/home/pradeeban/programs/abiword/src/af/xap'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[2]: *** [install-recursive] Error 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[2]: Leaving directory `/home/pradeeban/programs/abiword/src/af'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[1]: *** [install-recursive] Error 1&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make[1]: Leaving directory `/home/pradeeban/programs/abiword/src'&lt;/span&gt;&lt;br /&gt;&lt;span&gt;make: *** [install-recursive] Error 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If this permission issue arises, pls change the write permission of usr/local/share, usr/local/bin, usr/local/include, and usr/include/lib. That will make abiword-2.9 ending up in the above directories respectively.&lt;/div&gt;&lt;div&gt;&lt;span&gt;Again,&lt;/span&gt;&lt;b&gt; &lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;pradeeban@pradeeban:~/programs/abiword$ make install&lt;/b&gt;&lt;br /&gt;Now it goes fine indeed!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now let's just run AbiWord from terminal and see whether it runs!&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~$ abiword&lt;/span&gt;&lt;/b&gt;&lt;span&gt;abiword: error while loading shared libraries: libabiword-2.9.so: cannot open shared object file: No such file or directory&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Typical linking issue.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~$&lt;/span&gt;&lt;/b&gt;cd /lib&lt;br /&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:/lib$&lt;/span&gt;&lt;/b&gt;sudo ln -s /usr/local/lib/libabiword-2.9.so&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now again,&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~$ abiword&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt; &lt;/b&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;YAYYY! AbiWord-2.9.0 is running!!!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;you also can debug AbiWord using gdb.&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span&gt;pradeeban@pradeeban:~$ gdb abiword&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;However, my apologies for posting this lengthy post for a simple task. Just followed the worst case to cover all the student queries regarding building AbiWord-2.9.0 from trunk using Linux on terminal. &lt;/div&gt;&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-4147830480652775631?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 29 Jan 2012 13:17:52 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Firefox accessibility</title>
	<guid>http://www.figuiere.net/hub/blog/?2012/01/20/812-firefox-accessibility</guid>
	<link>http://www.figuiere.net/hub/blog/?2012/01/20/812-firefox-accessibility</link>
	<description>&lt;p&gt;Since I joined the accessibility team at Mozilla I took on one of the task that was in need to be solved: bringing back accessibility in Firefox on Mac as it has been lagging behind.&lt;/p&gt;


&lt;p&gt;Marco already wrote about &lt;a href=&quot;http://www.marcozehe.de/2012/01/17/accessible-firefox-on-mac-os-x-things-are-ramping-up/&quot;&gt;how things are ramping up&lt;/a&gt; and started filing more bugs on what is broken in the build I provided.&lt;/p&gt;


&lt;p&gt;With the quick release cycle, I can't really commit on which Firefox version this will be in, but the code is current in &lt;a href=&quot;http://nightly.mozilla.org/&quot;&gt;Nightly&lt;/a&gt;, aka Firefox 12, except that on Mac we don't build with accessibility enabled yet.&lt;/p&gt;</description>
	<pubDate>Sat, 21 Jan 2012 05:13:07 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: RDF, Abiword and Relations</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-1012946101258945687</guid>
	<link>http://monkeyiq.blogspot.com/2012/01/rdf-abiword-and-relations.html</link>
	<description>Abiword now has growing GUI support for editing RDF in ODF documents. Much of this support compliments what is available in Calligra for RDF handling. There are some areas where Calligra has more features and some areas where Abiword now does. Hopefully both will continue to have a large and growing shared feature base.&lt;br /&gt;&lt;br /&gt;As some folks will know, ODF allows one or more RDF/XML files to be shipped in the ODF file, and for that RDF to be linking to the document content from the content.xml file. This means that you can explicitly say that a 1/2 inch bolt is from a particular maker and was procured on the 3rd of January 2012 by going to their office at geolocation ?x. Handy when you are reading the document a year down the line and want to know which office you bought the bolt from and the exact length of its thread.&lt;br /&gt;&lt;br /&gt;Looking at the below image, one can see the purple underlined pieces of text. Each of these has some RDF associated with it. The citation to Dan Brickley has both contact and location RDF associated with it. Looking at the toolbar, towards the right side you see an &quot;R&quot; to start a change tracked document, and the &quot;RF&quot; button. Sorry about the images there, I draw at the 3 year old level so my icons are not quite polished shall we say. Anyway, the &quot;RF&quot; button selects this reference to an RDF item. So if you are between the &quot;am&quot; in the purple &quot;James&quot; then the whole word will be selected with this button. The &quot;&gt;&quot; and &quot;&quot; buttons then allow you to move to the next and previous reference to the selected RDF item. As you notice another purple James later in the document, this is the second and only other reference to him and you can move between them using these buttons.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-trDHYk_4hvw/TwpQCWdxdYI/AAAAAAAAAHE/ldnG069_x3c/s1600/abiword-rdf-highlight.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-trDHYk_4hvw/TwpQCWdxdYI/AAAAAAAAAHE/ldnG069_x3c/s400/abiword-rdf-highlight.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5695452680083830146&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;These purple links I call &quot;RDF links&quot;, which is a bit of a play on hyperlinks or bookmarks. Behind the scenes they are implemented using xml:id values and pkg:idrefs to those from RDF.&lt;br /&gt;&lt;br /&gt;A feature added in the last days is the ability to capture and navigate by the relation between two RDF links. This is currently done by selecting a &quot;source&quot; link and then clicking another rdf link and setting the relation to the source. So in the below screenshot I am saying that Mark foaf:knows James. You will also notice the &quot;Find by Relation&quot; option which I can then use to see the people that mark foaf:knows. In the spirit of the foaf definition, I have made this a symmetric relation. So there is no stalking, or &quot;following&quot;, if James knows Mark then Mark knows James. Asymmetric relationships are also possible, like son, child, or contains. I am hoping to add this feature to Calligra too in the future as the relations between RDF objects is one of the more powerful features that can be offered by using RDF in a document.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-U36J1XSNmOk/TwpRNtARfAI/AAAAAAAAAHQ/XCTXYYpI6DM/s1600/abiword-rdf-relation-create.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-U36J1XSNmOk/TwpRNtARfAI/AAAAAAAAAHQ/XCTXYYpI6DM/s400/abiword-rdf-relation-create.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5695453974624304130&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note that the prev/next RDF item buttons work with relations. If I pick mark and navigate to the James he knows then I can &quot;next&quot; from that james to select the second reference to James. This is one recurring theme to RDF in ODF, that RDF objects like contacts can be cited or linked zero or more times in the text content of the document.&lt;br /&gt;&lt;br /&gt;As mentioned above, the converse is also true, and the Dan Brickley text has two logical RDF objects linked to it; Dan's contact information and his location. Handling this multi-object for a single site is a little tricky and in this editing will create a window with both the semantic objects in it to let you edit the RDF abiword knows about. Note that this dialog is actually backed by two (or more) SPARQL queries;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-0XpPgXGxN5k/TwpTGIB4FCI/AAAAAAAAAHc/xNtBTQnFuyc/s1600/semitem-location.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-0XpPgXGxN5k/TwpTGIB4FCI/AAAAAAAAAHc/xNtBTQnFuyc/s400/semitem-location.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5695456043463087138&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you are not squeamish about your triples then the &quot;Show RDF&quot; option for an RDF link will let you get right at them and edit away as shown below. There are a few technically cool things about this dialog: firstly the &quot;Restrict to RDF Link&quot; combo box lets you select one or more RDF links that the triples will have to be associated with, and secondly abiword makes sure any edits you make are properly linked to the RDF link you right clicked on. What I mean by this last bit is if you right click the RDF link &quot;alice33&quot; add a new triple &quot;uri:alive myvocab:likes uri:bob&quot; then abiword will add the triple &quot;uri:alice pkg:idref alice33&quot; for you. This is sort of having abiword do what you mean in that you want the new triple to be associated with the link but don't necessarily want to have to explicitly say it all the time. By choosing to edit the RDF for the link you have already explicitly said once that you want these things to be linked. This also applies if you change a subject, uri:alice to uri:amanda will update the pkg:idref values for you. Keep it linked, keep it valid.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-y0gZHWkhGsA/TwpT9q71qZI/AAAAAAAAAHo/0-WHNcEJyd8/s1600/semitem-edit-rdf.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-y0gZHWkhGsA/TwpT9q71qZI/AAAAAAAAAHo/0-WHNcEJyd8/s400/semitem-edit-rdf.png&quot; border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5695456997725809042&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Going one level deeper, the above dialog is actually a subclass of a restricted RDF model created using SPARQL. The SPARQL model is read only, and the subclass, RDFModel_XMLIDLimited handles mutations by creating a wrapper object which takes care of the automatic triple relinking mentioned above. Those still awake might like to see the abiword trunk code for src/text/ptbl/xp/pd_DocumentRDF.cpp.&lt;br /&gt;&lt;br /&gt;This is part of an ongoing mad hacking sprint that is leading up to a talk at LCA 2012 which starts in a week. Many of the things I mention here are not in trunk yet, and only tested on Linux/GTK+3. Those in Ballarat in a week might like to pop in to the talk given my Martin and myself on Friday the 20th.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-1012946101258945687?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 08 Jan 2012 18:59:34 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: Take a decision to enter FOSS in 2012</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-3090181864515858709</guid>
	<link>http://fridrich.blogspot.com/2012/01/take-decision-to-enter-foss-in-2012.html</link>
	<description>&lt;p&gt;So, the year changed again and with it come quite often new decisions. Some swear to work out the superfluous kilos, pounds, or whatever standardized measure your country uses, gained too fast during the festivals. If it is your decision, it is for sure good for your body and I wish you success that goes beyond the act of subscribing to a local gym (and never appearing there after first month).&lt;/p&gt;&lt;p&gt;But this could be also a nice time to take a decision that you were procrastinating with for too long. That one is good for your intellect and programming skills (even though you don't consider yourself a programmer yet). What about starting to contribute to a Free and Open Source Software project (FOSS)?&lt;/p&gt;&lt;p&gt;Sounds interesting? So I have one for your. It is having a big and growing community. It can accomodate all levels of skills. And the impact you will have is multiplied by the wide addoption of the product itself.&lt;/p&gt;&lt;p&gt;Well, you must have guessed right by now. I am speaking about the &lt;a href=&quot;http://libreoffice.org&quot;&gt;LibreOffice&lt;/a&gt; project, your natural entry point into the marvelous world of the FOSS.&lt;/p&gt;&lt;p&gt;Whether you are expert or beginner programmer or C++ is sounding Chinese Traditional for you, just find a way to join channel &lt;a href=&quot;irc://chat.freenode.net/libreoffice-dev&quot;&gt;&lt;code&gt;#libreoffice-dev&lt;/code&gt;&lt;/a&gt; channel at &lt;a href=&quot;http://webchat.freenode.net/&quot;&gt;&lt;code&gt;irc.freenode.net&lt;/code&gt;&lt;/a&gt; in order to meet other developers and visit our &lt;a href=&quot;http://wiki.documentfoundation.org/Development/Easy_Hacks&quot;&gt;Easy Hacks&lt;/a&gt; for ideas where to start.&lt;/p&gt;&lt;p&gt;I promis you that a year from now, you will not regret that you have started. Although, it is quite probable that you will pour a tear over an unused year-pass from the local gym.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-3090181864515858709?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 02 Jan 2012 15:19:41 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: AbiWord and Google Summer of Code - 2011</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-7059894077099816258</guid>
	<link>http://kkpradeeban.blogspot.com/2011/02/abiword-and-google-summer-of-code.html</link>
	<description>&lt;div&gt;AbiWord has been accepted as a mentoring organization for Google Summer of Code 2011. It should also be noted that AbiWord has also been a mentoring organization in the Google Summer of Code for the years 2006, 2007, 2008, 2009, and 2010 too, making this time the 6th consecutive year. As a developer/mentor/past-student of AbiWord, I thought of sharing the presentation that I prepared to assist students getting into Google Summer of Code and AbiWord here.&lt;/div&gt;&lt;br /&gt;&lt;span&gt;&lt;a href=&quot;http://www.docstoc.com/docs/71909183/GSoC-2011-AbiWord&quot;&gt;GSoC 2011 AbiWord&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span&gt;&lt;b&gt;Have a look at the project ideas from &lt;a href=&quot;http://www.abisource.com/wiki/Google_Summer_of_Code_2011&quot;&gt;AbiWord&lt;/a&gt;. &lt;/b&gt;&lt;span&gt;List of selected mentoring organizations can be found &lt;a href=&quot;http://socghop.appspot.com/gsoc/program/accepted_orgs/google/gsoc2011&quot;&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Update: Pls find the latest revised version of this presentation at&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;div class=&quot;item-title&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://kkpradeeban.blogspot.com/2011/12/google-summer-of-code-2012.html&quot;&gt;Google Summer of Code 2012&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-7059894077099816258?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 29 Dec 2011 12:57:00 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: Google Summer of Code awareness session</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-6153838780769578670</guid>
	<link>http://kkpradeeban.blogspot.com/2011/12/google-summer-of-code-2012-awareness.html</link>
	<description>&lt;div id=&quot;__ss_10617964&quot;&gt;&lt;b&gt;&lt;a href=&quot;http://www.slideshare.net/kkpradeeban/google-summer-of-code-2012-10617964&quot; title=&quot;Google summer of code 2012&quot;&gt;Google summer of code 2012&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;View more &lt;a href=&quot;http://www.slideshare.net/&quot;&gt;presentations&lt;/a&gt; from &lt;a href=&quot;http://www.slideshare.net/kkpradeeban&quot;&gt;Kathiravelu Pradeeban&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;Yesterday we had &lt;a href=&quot;https://www.facebook.com/?ref=logo#%21/events/167614846669380/&quot; target=&quot;_blank&quot;&gt;an awareness session for Google Summer of Code (GSoC) at the Engineering Faculty of the University of Peradeniya&lt;/a&gt;. This event focussed on discussing GSoC and FOSS. It is an interesting fact that we have visited the University of Peradeniya, after exactly 11 months, for the very same event - Google Summer of Code awareness session. &lt;a href=&quot;http://kkpradeeban.blogspot.com/2011/01/gsoc-2011-and-foss.html&quot; target=&quot;_blank&quot;&gt;Our previous session&lt;/a&gt; was held at the science faculty, on 17th of Jan, 2011.&lt;br /&gt;&lt;br /&gt;Attached herewith is my presentation, introducing GSoC 2012 to the students. This slides are based on my experience as a three time Google Summer of Code participant, with AbiWord (2011 as a mentor and 2009 as a student) and OMII-UK (2010 as a student).&lt;br /&gt;&lt;br /&gt;In slow network connections, the presentation might take a bit longer to load. In that case, please feel free to &lt;a href=&quot;http://www.box.com/s/u0egv5t3km2roj9cpl1n&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;&lt;b&gt;download the presentation&lt;/b&gt;&lt;/span&gt;&lt;/a&gt; for your future reference.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Update: Pls find the latest revised version of this presentation at&amp;nbsp;&lt;/span&gt; &lt;br /&gt;&lt;div class=&quot;item-title&quot;&gt;&lt;span&gt;&lt;a href=&quot;http://kkpradeeban.blogspot.com/2011/12/google-summer-of-code-2012.html&quot;&gt;Google Summer of Code 2012&lt;/a&gt;.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-6153838780769578670?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 29 Dec 2011 12:56:07 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: My Summer of Code so far</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-4746339397032987065</guid>
	<link>http://kkpradeeban.blogspot.com/2009/06/my-summer-of-codes-so-far_22.html</link>
	<description>&lt;div&gt;3rd to 21st of April was an intermediate period trying to find alternate ways for windows build, where 16th of April I successfully cross-built using wine. However I dropped the idea of MinSYS/MinGW build in the middle, as I found cross-building pretty cool. 21st of April, the best news, yes, I got selected for the Google Summer of Codes!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My mentor immediately wished me and the other Summer of codes participants also wished me at IRC. Abiword is a nice place to have the Summer of Codes, where we are considered regular developers, and not just students.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;27th of April, uwog created gsoc2009unicode branch for me, and helped me setting the password using ssh. 4th of May I did my first commit, which fixed the cross-building. So that commit was actually the patch I developed for the minor change to enable cross-building during the application period.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;19th of May, I started to commit the changes I made to the code, and the new classes. Jordi Mas' initial effects on this project were a good reference for me. 23rd of May, the coding period began officially.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now we have completed a month, expecting a nice mid term evaluation.&lt;/div&gt;&lt;div&gt;Have a nice time with Abiword.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-4746339397032987065?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Dec 2011 00:37:53 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: My Summer of Code - Challenges</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-4125161682910684166</guid>
	<link>http://kkpradeeban.blogspot.com/2009/06/my-summer-of-codes-challenges.html</link>
	<description>&lt;div&gt;At that time, uwog's MSVC build was missing the menus. There was a minor issue in compiling, which I was able to fix with sum1's patch. Since this was not a sane build, as it is now, I was searching for alternatives, where I found robsta's cross-building suggestions on a mail thread. The cross-building was not supported and tested for a long time. Still robsta was kind enough to provide me support so that I was able to fix a minor issue, and successfully build Abiword for windows Using Ubuntu 8.04/Wine. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;During this period, I was able to interact with many abiword developers and each of them were really friendly and helpful to me. In most of the cases, I sent personal mails as the reply to their suggestions and helps on mailing lists, unless my reply will be useful to the developers or the other potential students to avoid mail flooding, which I usually DO in the mailing lists.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By this time, the Application deadline has come, and the cross-building was also successful. Apart from the &quot;&lt;a href=&quot;http://abisource.com/wiki/Google_Summer_of_Code_2009#Port_AbiWord_for_Windows_to_Unicode&quot;&gt;Porting Abiword Windows to Unicode&lt;/a&gt;&quot;, I applied for another project idea, &quot;&lt;a href=&quot;http://abisource.com/wiki/Google_Summer_of_Code_2009#Better_support_for_borders_and_shadings&quot;&gt;Better support for borders and shadings&lt;/a&gt;&quot;, which was suggested by robsta in the IRC. I wrote the proposal for the second idea only the last day. I was planning to use &lt;a href=&quot;https://www.ohloh.net/p/libccss&quot;&gt;libccss&lt;/a&gt; for this project, as the drawing tool. libccss can be downloaded &lt;a href=&quot;http://people.freedesktop.org/%7Erobsta/libccss/&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My project proposals for the both ideas can be found &lt;a href=&quot;http://www.box.net/shared/ou51bayunu&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://www.box.net/shared/lolaknypk8&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-4125161682910684166?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Dec 2011 00:36:54 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: My Summer of Code - Abiword</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-2023572659705145076</guid>
	<link>http://kkpradeeban.blogspot.com/2009/06/my-summer-of-codes-so-far-2.html</link>
	<description>&lt;div&gt;8th of March, I sent a mail to the Abiword dev list, as I had found Porting Abiword for Windows to Unicode, an interesting idea, and done a basic research on that. I carbon-copied the mail to Jordi Mas, as he has already worked on the project idea. On the very same day, I got a positive encouraging reply from &lt;span&gt;sum1&lt;/span&gt; (Kamran Khan, an Abiword developer). By that time, I had realized that Abiword is the best place for the summer of codes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I tried my best to hang on the #abiword IRC at gnome, and always interested in interacting with the users and developers of Abiword through the lists. I used this time as the best opportunity to make new friends with the other potential students through the mailing list and IRC. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;19th of March, the list of selected organizations were announced, where Abiword was included for the fourth time, as expected. I was awaiting the result the whole day, and really excited to see that Abiword had been chosen. I sent a mail describing the project idea to the developer list immediately. I got some more useful suggestions from my mentor &lt;span&gt;Dom&lt;/span&gt; and &lt;span&gt;Jordi Mas&lt;/span&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Abiword had a requirement of building abiword to get selected for the summer of codes. I built Abiword successfully on Ubuntu 8.04 and satisfied the requirement. Dom suggested that since this would be a win32 project, it is expected to have a windows build, or a cross-building.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-2023572659705145076?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Dec 2011 00:36:23 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: My Summer of Code - Initial Stage</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-1266649742331747289</guid>
	<link>http://kkpradeeban.blogspot.com/2009/06/my-summer-of-codes-so-far.html</link>
	<description>&lt;div&gt;For a student interested in Open Source project activities, Google Summer of Codes is really a wonderful opportunity, where he is allowed to spend his summer (this is of course not a summer vacation at Sri Lanka and many other countries), in his preferred way while earning a considerable amount of money. Google Summer of Codes is considered a real world working experience in the Software industry. That is, we are of course considered working in an open source project for the three months, yet paid by Google.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;4th of March, while I was trying to find a place to do some localization, I got the idea of localizing Abiword into ta-LK (Tamil-Sri Lanka). There is a Tamil localization which is partially completed (ta-IN, Tamil-India). I later got an idea of giving my support in localizing the missing words. But finally settled for a fresh localization of ta-LK, which is, of course, still in very initial stage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By that time, I had already started to jump into the possible open source community mailing lists, those can be the possible Google Summer of Codes Mentoring Organizations. WSO2, my training organization, Abiword, and OMII topped my lists. Abiword mostly matched my personal interests, where I could find some Unicode related project ideas. I was able to find some scientific workflows related projects in OMII, which matched my experience at WSO2, during my internship, with the project tryLEAD - LEAD Services.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-1266649742331747289?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Dec 2011 00:35:00 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: 7th ODF Plugfest in Gouda</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-2140887962891101559</guid>
	<link>http://fridrich.blogspot.com/2011/11/7th-odf-plugfest-in-gouda.html</link>
	<description>&lt;p&gt;For those that might care, your servant will be attending this week the &lt;a href=&quot;http://www.odfplugfest.org/2011-gouda/&quot; target=&quot;_blank&quot;&gt;ODF Plugfest #7&lt;/a&gt; in Gouda (Netherlands).&lt;/p&gt;&lt;p&gt;I will have on Friday a short presentation of the &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot; target=&quot;_blank&quot;&gt;best free and open source library for parsing Microsoft Visio Documents&lt;/a&gt;. The other exciting thing is that after more then 6 years of common collaboration I will get to meet personally one of my &lt;a href=&quot;http://libwpd.sourceforge.net&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;libwpd&lt;/code&gt;&lt;/a&gt; co-maintainers, &lt;a href=&quot;http://abicollab.net/documents/download/462/latest/pdf&quot; target=&quot; _blank&quot;&gt;Johannes Marcus Maurer&lt;/a&gt; also know as &lt;a href=&quot;http://uwog.net/&quot; target=&quot;_blank&quot;&gt;&amp;quot;uwog&amp;quot;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;What an exciting time before us!!!&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-2140887962891101559?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 15 Nov 2011 15:23:53 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: YouTube HTML5 - part 2</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/11/14/810-youtube-html5-part-2</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/11/14/810-youtube-html5-part-2</link>
	<description>&lt;p&gt;I may I sort-of praised &lt;a href=&quot;http://www.figuiere.net/hub/blog/?2011/05/05/791-youtube-html5&quot;&gt;Youtube and HTML5&lt;/a&gt;, allowing me to view some of the YouTube content without having Flash, and in Firefox since Google supports WebM, to some extent.&lt;/p&gt;


&lt;p&gt;Here come the time to give some tips.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Enabling HTML5&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Given the how buggy is the HTML5 implementation of YouTube, particularly with playlist and users, it is a two step process.&lt;/p&gt;


&lt;p&gt;First, you have &lt;a href=&quot;http://www.youtube.com/html5&quot;&gt;enable the HTML5 beta&lt;/a&gt;: the page will tell you the status. If it is enabled or not, what are the capabilities. If you use Firefox, you need Firefox 4 that supports the new WebM open format.&lt;/p&gt;


&lt;p&gt;Second, to fix the UI issues, you have to use &lt;a href=&quot;http://www.youtube.com/cosmicpanda&quot;&gt;Cosmic Panda&lt;/a&gt;, the new UI. You enable it from that page.&lt;/p&gt;


&lt;p&gt;At anytime you can return to these pages and revert your selection. Also you have to do that per browser - to be honest, since I'm not logged in, I can't really be sure if it sticks for the user.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Embedding&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;If you are embedding Youtube video with &amp;lt;embed&amp;gt;, then you are doing it wrong. This is unfortunately what a lot of plugins for CMS to. You need to use the new &amp;lt;iframe&amp;gt;. For that, when you go to the video page, click share, then embed and you'll have the snippet of HTML to paste. This will embed the video properly, using HTML5 if the viewer supports it, with the fallbacks to the usual way if needed.&lt;/p&gt;</description>
	<pubDate>Tue, 15 Nov 2011 05:36:51 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: LibreOffice Visio Import filter: the goodness soon on your desktop</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-190540897166602854</guid>
	<link>http://fridrich.blogspot.com/2011/11/it-has-been-long-time-since-i-last-time.html</link>
	<description>&lt;p&gt;It has been a long time since I last time blogged about the LibreOffice Visio import filter. My silence did not prevent a pretty cool code from falling gradually into our &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot;&gt;git repository&lt;/a&gt;. To the point where now we are working on the last 5% of features that normally take the 95% of development time. But, let us see what happened since my &lt;a href=&quot;http://fridrich.blogspot.com/2011/07/libreoffice-visio-import-filter-round.html&quot; target=&quot;_blank&quot;&gt;July blog&lt;/a&gt;:&lt;/p&gt;&lt;p&gt;First of all, &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; was busy as a bee and, in the second half of the Google Summer of Code, implemented support of stylesheets, stencils and basic text. She also debugged and fixed quite a number of imperfections that &lt;a href=&quot;http://bugware.livejournal.com/&quot; target=&quot;_blank&quot;&gt;Valek&lt;/a&gt; found. Frankly speaking, this Google Summer of Code was by far the best from my point of view. We managed to achieve a very good fidelity of import only in about 3 and half months. Impressive.&lt;/p&gt;&lt;p&gt;During the LibreOffice HackFest weekend in Munich, I had a time to add a support for uniform splines in &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot;&gt;&lt;code&gt;libvisio&lt;/code&gt;&lt;/a&gt; and to implement the actual import in text on the side of LibreOffice.&lt;p&gt;The next highlight was the fact that the whole team met in Paris during the LibreOffice Conference 2011. It was delight to meet in person &lt;a href=&quot;http://bugware.livejournal.com/&quot; target=&quot;_blank&quot;&gt;Valek&lt;/a&gt; and &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt;. There is even a photo witnessing this meeting:&lt;p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/399TheTeam.jpg&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/399TheTeam_tn.jpg&quot; alt=&quot;The Team at LibreOffice Conference 2011 in Paris&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Valek, me and Eilidh from left to right&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/p&gt;&lt;p&gt;This conference was not only an occasion to know each other a bit better, but also to improve and add some new features to &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot;&gt;&lt;code&gt;libvisio&lt;/code&gt;&lt;/a&gt;. During boring parties full of non-developer talk, we withdrew with &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; to some corner and improved together the text import: paragraph and span properties, text box properties, etc. Later on, &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; added initial support for line markers (aka arrows). Recently we implemented emulation of the last Visio primitive that we did not handle before - Infinite Line.&lt;/p&gt;&lt;p&gt;For those that have big piles of Visio documents on their disks, but cannot read on their favourite Linux distribution: Your pain is coming to an end. The LibreOffice Visio Import filter will be part of LibreOffice 3.5 release, which will be the next major release early next year.&lt;/p&gt;&lt;p&gt;And since images speak louder then thousands of words, here are some pics to illustrate our achievements:&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;OrgChart.vsd in Visio&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;OrgChart.vsd in Draw&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/391OrgChart_vsd_Visio.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/391OrgChart_vsd_Visio_tn.jpg&quot; alt=&quot;OrgChart.vsd in Visio&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/712OrgChart_vsd_Draw.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/712OrgChart_vsd_Draw_tn.jpg&quot; alt=&quot;OrgChar.vsd in Draw&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;You can see the achievement by comparing with the pictures from my &lt;a href=&quot;http://fridrich.blogspot.com/2011/06/libreoffice-visio-import-filter-shaping.html&quot; target=&quot;_blank&quot;&gt;June blog&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;DNetwork.vsd in Visio&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;DNetwork.vsd in Draw&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/727DNetwork_vsd_Visio.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/727DNetwork_vsd_Visio_tn.jpg&quot; alt=&quot;DNetwork.vsd in Visio&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/590DNetwork_vsd_Draw.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/590DNetwork_vsd_Draw_tn.jpg&quot; alt=&quot;DNetwork.vsd in Draw&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Compare with the picture from this &lt;a href=&quot;http://libregraphicsworld.org/blog/entry/initial-support-for-visio-files-lands-to-libreoffice&quot; target=&quot;_blank&quot;&gt;libregraphicsworld.org article&lt;/a&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;Calendar.vsd in Visio&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;Calendar.vsd in Draw&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/969Calendar_vsd_Visio.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/969Calendar_vsd_Visio_tn.jpg&quot; alt=&quot;Calendar.vsd in Visio&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/142Calendar_vsd_Draw.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/142Calendar_vsd_Draw_tn.jpg&quot; alt=&quot;Calendar.vsd in Draw&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;This picture shows a good mix of the complicated features likestencils with NURBS, text fields, gradients, stencil text, etc.&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you are impatient and cannot wait anymore, just grab one of the daily builds uploaded by our tinderboxes &lt;a href=&quot;http://dev-builds.libreoffice.org/daily/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; and enjoy all that goodness on your own.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-190540897166602854?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 15 Nov 2011 01:26:56 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: geglmm 0.1.6</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/11/13/809-geglmm-016</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/11/13/809-geglmm-016</link>
	<description>&lt;p&gt;I just pushed out of the door Geglmm 0.1.6, the C++ bindings for GEGL. Nothing very special, they just needed an update.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://download.gnome.org/sources/geglmm/0.1/geglmm-0.1.6.tar.bz2&quot;&gt;.tar.bz&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 14 Nov 2011 04:52:13 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: libopenraw 0.0.9</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/11/13/808-libopenraw-009</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/11/13/808-libopenraw-009</link>
	<description>&lt;p&gt;I just did a quick release for libopenraw 0.0.9. It just include a few fixes and enhancements cherry-picked from master. There is much more going into master including a serious API breakage. If you package libopenraw in a distro, I encourage you to pick this one up.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://cgit.freedesktop.org/libopenraw/tree/NEWS?h=0.0.8-api&quot;&gt;NEWS&lt;/a&gt; - &lt;a href=&quot;http://libopenraw.freedesktop.org/download/libopenraw-0.0.9.tar.bz2&quot;&gt;tar.bz2&lt;/a&gt; - &lt;a href=&quot;http://libopenraw.freedesktop.org/download/libopenraw-0.0.9.tar.bz2.asc&quot;&gt;gpg signature&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 13 Nov 2011 21:32:39 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: Community Matters!!!111</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-7492639440258311415</guid>
	<link>http://kkpradeeban.blogspot.com/2011/10/community-matters111.html</link>
	<description>&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt;&lt;b&gt;Google Summer of Code Mentor Summit 2011&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt;We had several interesting unconference sessions and talks at the &lt;a href=&quot;http://kkpradeeban.blogspot.com/2011/10/google-summer-of-code-mentor-summit.html&quot;&gt;Google Summer of Code Mentor Summit 2011&lt;/a&gt;. I proposed and coordinated the unconference session titled &quot;Community matters&quot;, the Saturday 22nd of October 1.30 - 2.30, at the room &quot;Algiers&quot;. We had around 12 active participants from multiple organizations, representing AbiWord, Apache, Derby, and more.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt;&lt;b&gt;The session notes are recorded in the Google Summer of Code &lt;a href=&quot;https://gsoc-wiki.osuosl.org/index.php/Community_matters&quot;&gt;wiki&lt;/a&gt;&lt;/b&gt;, which needs the log in credentials to access. Hence I summarize the notes again for the wider audience. &lt;b&gt;These notes are from the thoughts of the mentors from the communities involved in the discussion&lt;/b&gt;, and they might reflect the communities involved (Hence the points, may of course, disagree to each other to some extend). I represent AbiWord, and hence my views are biased towards the culture of the AbiWord community, which I consider the best of all. ;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt;What is a community&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span class=&quot;mw-headline&quot; id=&quot;What_is_a_community&quot;&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;a href=&quot;http://www.abiword.com/&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/297800_10150382230093466_705563465_8189927_282663636_a.jpg&quot; /&gt;&lt;/a&gt;&lt;li&gt;&lt;span&gt; &lt;/span&gt;People with a common purpose or goal &lt;/li&gt;&lt;li&gt; Communicating with each other &lt;/li&gt;&lt;li&gt; Contributing to achieving the goal &lt;/li&gt;&lt;li&gt; Like a big family &lt;/li&gt;&lt;li&gt; It's the most important asset in an open source organization.&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Issues in building a community (and solutions)&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Defining the goal(s) &lt;ul&gt;&lt;li&gt; Not everyone has the same goals, need to define them as a community&lt;/li&gt;&lt;li&gt;Each one's goal regarding the community should contribute to the community's common goal. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;How to bring people in (making it easier to get started contributing) &lt;ul&gt;&lt;li&gt; Reducing the hassles involved &lt;/li&gt;&lt;li&gt; AbiWord: Helping or mentoring the interested newbies to start contributing to a project. &lt;/li&gt;&lt;li&gt; Apache Software Foundation: give people commit access early.&lt;/li&gt;&lt;li&gt;It's version control, we can roll it back! &lt;/li&gt;&lt;li&gt; Make the restrictions social rather than mechanical (e.g.,  give someone commit access, but encourage them to get the code reviewed  before committing, commit only in their area, etc.) &lt;/li&gt;&lt;li&gt; Use &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;, &lt;a href=&quot;http://sourceforge.net/&quot;&gt;SourceForge&lt;/a&gt;, or something similar to have branches and pull  requests, which makes people able to commit on their branch and collaborate with the community. Also GitHub  allows people to not have to learn git. [barrier reduction] &lt;/li&gt;&lt;li&gt; Have a policy that someone cannot contribute a completely new  module until they have been part of the dev community for a year first. &lt;/li&gt;&lt;li&gt; One thought: maybe you don't need that many people &lt;/li&gt;&lt;li&gt; Novice issue tags plus &quot;office hours&quot; in IRC - mentor new dev  contributors in learning the contributing processes, with an easy issue&amp;nbsp;  for the newbie, so the starting barrier would be reduced.&lt;/li&gt;&lt;li&gt; Have someone who is the &quot;greeter&quot; in the issue queue. If an  issue waits for a given time (say 3 days) with no response, the current &quot;greeter&quot; at least  says &quot;Thanks&quot;. This duty rotates as people get tired of it. &lt;/li&gt;&lt;li&gt; Break tasks up into manageable chunks &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; Communications are a major challenge  &lt;ul&gt;&lt;li&gt; Some people are always on IRC (coders usually), some never on IRC (designers). &lt;/li&gt;&lt;li&gt; Ban IRC for making decisions - has to happen on a mailing list (Apache Software Foundation and many other projects) &lt;/li&gt;&lt;li&gt;To make a mailing list work as the discussion tool, people have to be told &quot;bring it to the mailing list&quot; &lt;/li&gt;&lt;li&gt; Some people like asynchronous communication (e.g., mailing  lists) rather than synchronous/real-time (irc), plus with a world-wide community,  real-time meetings are not possible &lt;/li&gt;&lt;li&gt; Mailing lists are good for archives, but are slow for actual discussions &lt;/li&gt;&lt;li&gt; Get people together in person from time to time, if possible. &lt;/li&gt;&lt;li&gt; People are not located geographically close to each other.&lt;/li&gt;&lt;li&gt;IRC becomes active around the clock, if we have developers around the globe (AbiWord).&lt;/li&gt;&lt;li&gt;Language difficulties - English is not everyone's first language. &lt;/li&gt;&lt;li&gt; Localizers help on overcoming the language barriers to a project.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Have to make it feasible for users to provide feedback/issues &lt;ul&gt;&lt;li&gt; Depends on the type of project, whether that is difficult or hard &lt;/li&gt;&lt;li&gt; User community is where new developers come from &lt;/li&gt;&lt;li&gt; Figure out how to interact with them&lt;/li&gt;&lt;li&gt;Derby rarely uses mailing lists - they rather use the issue tracker.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Many users are more familiar with the mailing lists.&lt;/li&gt;&lt;li&gt;So mailing lists help building the community healthy and friendly.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;How to attract new members to the community &lt;ul&gt;&lt;li&gt; Marketing to attract users &lt;ul&gt;&lt;li&gt; Go to the competitive events and meet potential users there (if appropriate for project's target audience). &lt;/li&gt;&lt;li&gt; Get academics interested, then students will follow and they become part of the organization. &lt;/li&gt;&lt;li&gt; Cooperate and collaborate with the other FOSS project communities - Common code segments to be used by multiple communities. &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt; Statistics &lt;ul&gt;&lt;li&gt; How many contribute x number of patches &lt;/li&gt;&lt;li&gt; Measure how well the new contributors are getting integrated as regular contributors &lt;/li&gt;&lt;li&gt; Community health: are we adding new contributors &lt;/li&gt;&lt;li&gt; Don't measure lines of code or number of patches - doesn't reflect community health &lt;/li&gt;&lt;li&gt; Measure how many contributors are contributing to a project or sub-project as a measure of its health &lt;/li&gt;&lt;li&gt; Apache foundation board will warn and/or ban projects that are  not on-boarding new contributors and otherwise acting in a healthy way &lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;div&gt;90/9/1 split &lt;/div&gt;&lt;ul&gt;&lt;li&gt; 90% of users do not communicate. 9% submit bugs and maybe a patch occasionally. 1% get really involved. &lt;/li&gt;&lt;li&gt; You can double the 9% part by greeting and other contributor support strategies.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&amp;nbsp;&lt;span&gt;P.S: The &quot;!!!111&quot; at the end of the title (&quot;Community Matters!!!111&quot;) was intentional, and I put that on the session proposal too, to give it a kid's touch, who desperately wants to contribute to the FOSS communities. ;)&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;AbiWord community's blog roll - &lt;a href=&quot;http://planet.abisource.com/&quot;&gt;Planet AbiSource&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-7492639440258311415?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 13 Nov 2011 19:35:12 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: Google Summer of Code Mentor Summit 2011</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-4668405338758350362</guid>
	<link>http://kkpradeeban.blogspot.com/2011/10/google-summer-of-code-mentor-summit.html</link>
	<description>&lt;div&gt;&lt;b&gt;Google Summer of Code Mentor Summit&lt;/b&gt; &lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-T4C_gRnlGN8/Tqvq5SWfGZI/AAAAAAAAA2Y/-UNowrBV5eA/s1600/IMG_0014.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;http://1.bp.blogspot.com/-T4C_gRnlGN8/Tqvq5SWfGZI/AAAAAAAAA2Y/-UNowrBV5eA/s320/IMG_0014.JPG&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;Google invites the mentors for a two day unconference over a weekend to discuss about the Google Summer of Code, the respective projects, FOSS in general, or whatever that is applicable for the set of geeks. Google Summer of Code Mentor Summit is an interesting event hosted by Google and the sessions are scheduled by the attendees themselves. Google pays for the flight and the stay for the two nights (Friday the 21st and Saturday the 22nd of Oct/2011), providing dinner with style for the two nights. The mentor summits are held at the &lt;a href=&quot;http://en.wikipedia.org/wiki/Googleplex&quot;&gt;Google Headquarters &lt;/a&gt;(Building 43), CA 94043, USA. The event schedule is completed only at the day of the summit, as an ideal unconference! [&lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0AsVnlPsfrhUIdHZPVTlpMWJOZ3JwSHlFOURObEVMWnc#gid=0&quot;&gt;Have a look at the Mentor Summit 2011&amp;nbsp; schedule with the parallel &lt;/a&gt;&lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0AsVnlPsfrhUIdHZPVTlpMWJOZ3JwSHlFOURObEVMWnc#gid=0&quot;&gt;unconference &lt;/a&gt;tracks].&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;AbiWord at the Summit&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.abiword.com/&quot;&gt;&lt;/a&gt;As a mentoring organization, AbiWord has been mentoring students for Google Summer of Code since 2006 - for 6 years consecutively, since the program was announced in 2005. In 2006, Martin Sevior represented AbiWord in the mentor summit [&lt;a href=&quot;http://msevior.livejournal.com/12752.html&quot;&gt;Read more on his experience at the mentor summit 2006&lt;/a&gt;]. I was, as a mentor from &lt;a href=&quot;http://www.abisource.com/wiki/Google_Summer_of_Code_2011&quot;&gt;AbiWord for 2011&lt;/a&gt;, was really glad to represent AbiWord in&amp;nbsp; the summit for 2011. This was the second time, AbiWord being present at the summit. This year we had 4 students who successfully completed their summer, among the 5 who had their summer with AbiWord [&lt;a href=&quot;http://kkpradeeban.blogspot.com/search/label/gsoc2011&quot;&gt;Read more on my thoughts on Google Summer of Code 2011&lt;/a&gt;].&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Stay at California&lt;/b&gt;&lt;br /&gt;This year, the summit was held on 22nd of October the Saturday and 23rd the Sunday. &quot;WildPalms&quot; and &quot;Domain&quot; were the hotels organized by Google for the stay for the two nights. Most of the mentors stayed at WildPalms, Sunnyvale, CA, where some of them stayed at Domain, as rooms in WildPalms filled up. 2011 was the biggest summit ever with around 360 participants, where it was around 200 last year, mentioned Carol. Wild Palms is a silent and simple hotel. It reminded me the structure of  the typical hostels - but I like it. We had shuttles to and from  Google. We also had shuttles connecting Domain hotel, for them to join  the dinner at Wild Palms.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Scheduling the unconference sessions&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-8xhd80fNeE8/TqvsmeeEloI/AAAAAAAAA2k/1Ure_a52HY4/s1600/IMG_0001.JPG&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;240&quot; src=&quot;http://3.bp.blogspot.com/-8xhd80fNeE8/TqvsmeeEloI/AAAAAAAAA2k/1Ure_a52HY4/s320/IMG_0001.JPG&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;The sessions were scheduled and held at different rooms at the Google Headquarters, in parallel tracks. Initially, everyone was given 30 seconds to introduce themselves and their session, to begin with. Each session spans for an hour. A location was picked from the available 16 rooms. Once introduced their sessions, each one writes down the proposed session in a paper, and posts that on the white boards available, which had a table drawn with &quot;Time Intervals&quot; against the &quot;Location&quot;. Once everyone introduced and posted their sessions, everyone is given the option to vote for their preferred session. The voting is interesting. We move along the white board, and pick a session of interest for each time frame, and mark it with a circle. Once this is done, the circles are counted and considered a '+1', and the sessions are relocated to fit the size of the room, according to the interested audience. Some sessions had exceptionally huge preference votes, and were scheduled to be held at Tunis, which has room for 200. Other rooms fit the audience from 10 to 20.&lt;br /&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;b&gt;Community Matters!!!111&lt;/b&gt;&lt;br /&gt;I [&lt;a href=&quot;https://gsoc-wiki.osuosl.org/index.php/User:Pradeeban&quot;&gt;my user profile in the wiki&lt;/a&gt;] proposed and coordinated the unconference session titled &quot;Community matters&quot;, the Saturday 1.30 - 2.30 at &quot;Algiers&quot;. We discussed how and why a community matters the most, how to build a community, the challenges faced, and overcoming them. The session notes &lt;a href=&quot;https://gsoc-wiki.osuosl.org/index.php/Community_matters&quot;&gt;can be found in the wiki&lt;/a&gt; [Needs credentials to access the wiki page].&lt;br /&gt;&lt;br /&gt;I have blogged with the session notes for the wider audience [&lt;a href=&quot;http://kkpradeeban.blogspot.com/2011/10/community-matters111.html&quot;&gt;Read &quot;Community Matters!!!111&quot; in this blog&lt;/a&gt;]. However, Google Summer of Code mentors can access the wiki to read more about the &lt;a href=&quot;https://gsoc-wiki.osuosl.org/index.php/2011&quot;&gt;Mentor Summit 2011&lt;/a&gt;. All the session notes &lt;a href=&quot;https://gsoc-wiki.osuosl.org/index.php/Session_Notes_2011&quot;&gt;are posted to the wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;From Sri Lanka&lt;/b&gt;&lt;/div&gt;&lt;div&gt;It was a long journey to Sunnyvale from Colombo! I traveled from Colombo (CMB) to Dubai (DXB), and to Los Angeles (LAX), followed by a local flight to San Jose (SJC). A cab from San Jose to Wild Palms is relatively cheaper (~38$), than from San Francisco (SFO). SJC is known as the airport of the Silicon Valley. I stayed one more night (Sunday night), since my flight was on Monday noon 12 pm. This was my first trip to the new world (Americas). It was a great experience seeing darkness at 3 pm in the sky of the north pole. &lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;Mentor Summit&lt;/b&gt;&lt;/div&gt;&lt;div&gt;The summit went really well, starting with a warm welcome from Carol Smith, at &quot;Tunis&quot;. I got the chance to meet many folks from many organizations, and listen to their interesting and crazy experiences. Everyone had at least a single interesting experience to share, during the tea, breakfast, or lunch. 2011 was the first year for many organizations (~50) in Google Summer of Code, and (the mentors from those organizations whom I had a chat) were impressed to hear the successful involvement of AbiWord in Google Summer of Code. I met Fridrich representing LibreOffice at the summit. It was really  great to meet someone whom I have talked to, over the AbiWord IRC. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Haiku &lt;/b&gt;&lt;br /&gt;Meeting the &lt;a href=&quot;http://haiku-os.org/&quot;&gt;Haiku&lt;/a&gt; community was remarkable. Haiku is an MIT licensed open source operating system inspired by BeOS. We thought of a possibility to propose a project co-mentored by AbiWord and Haiku for Google Summer of Code 2012 - &quot;Haiku port for AbiWord&quot;. There was also a &lt;a href=&quot;http://abisource.com/mailinglists/abiword-dev/2009/Mar/0073.html&quot;&gt;discussion on this during GSoC 2009 &lt;/a&gt;too, which we couldn't make it at that time. Scott from Haiku also pointed out that AbiWord used to run perfectly on Haiku during the early days (well before I joined AbiWord at 2009). We have to go back to the history of AbiWord source code and get it back to build and run, which ceased to build. As we are more into gtk, we have never looked much into this yet, I feel. &lt;a href=&quot;http://www.abisource.com/mailinglists/abiword-dev/2009/Jul/0034.html&quot;&gt;The relevant discussion &lt;/a&gt;can be found at abiword-dev mailing list. Refer to &lt;a href=&quot;http://haiku-os.org/about/faq&quot;&gt;the Haiku FAQ&lt;/a&gt; to learn what Haiku is and what it is not.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Catroid&lt;/b&gt; &lt;/div&gt;&lt;div&gt;All the 4 mentors from the project &lt;a href=&quot;http://code.google.com/p/catroid/&quot;&gt;Catroid&lt;/a&gt; were present at the summit. They were doing interesting demos with their Catroid project running on Android, over the corridors during the breaks. It was their first year at Google Summer of Code and Catroid is really excited as a young organization to participate in Google Summer of Code. By default, Google invites two mentors from each project, along with a waiting list to allow more interested mentors in first-come-first-served. Catroid was really lucky to have everyone around! :)&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt; Marketing and Open Source&lt;/b&gt;&lt;br /&gt;An interesting session on &quot;Marketing and Spreading the word about the project/community&quot;, followed the session &quot;Community Matters&quot;, in the same room (Algiers). How localizers help to widen the user community was discussed. The mentor from &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;PostgreSQL&lt;/a&gt; mentioned that they have allowed independent local user/dev communities to own the site in their languages (&lt;a href=&quot;http://docs.postgresql.fr/&quot;&gt;French&lt;/a&gt;, &lt;a href=&quot;http://www.postgresql.jp/document/&quot;&gt;Japanese&lt;/a&gt;, ..) Social media engagement (twitter, facebook, dzone) to spread the word of the community and project releases were discussed.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Student Salaries&lt;/b&gt; &lt;/div&gt;&lt;div&gt;The other two sessions I attended on the first day were on &quot;Humanitarian FOSS&quot;, with the participation from OpenMRS, Sahana, and Ushahidi, and &quot;Student Salaries&quot;. &quot;Student Salaries&quot; discussed about managing the GSoC's payment. It had a few controversial suggestions followed by a healthy discussion, whether each student should be paid equally, or based on their geographical location, or by the outcomes - a final outcome of the discussion was to propose a reward for the outstanding students - may be a GSoC Student Summit.&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;b&gt;Around Google&lt;/b&gt; &lt;/div&gt;&lt;div&gt;We took a group photo with all the mentors around, at the end of the first day. We also move around the Google Campus and also visited the Google Store. A room full of chocolates from Goolge, as well as from the mentors allover the globe was awaiting us throughout the summit! ;). The welcome desk was full of Google TShirts and give aways from Google and from the mentoring organizations - specifically stickers from the organizations. I took a few photos around the Google Campus. Feel free to &lt;b&gt;&lt;a href=&quot;https://www.facebook.com/media/set/?set=a.10150376305068466.375263.705563465&amp;type=1&amp;l=b42d059c39&quot;&gt;view them in my Facebook album&lt;/a&gt;&lt;/b&gt;.&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The Second Day&lt;/b&gt; &lt;/div&gt;&lt;div&gt;I attended the sessions at Tunis, the second day. &quot;&lt;a href=&quot;http://ebb.org/bkuhn/talks/SoC-Mentor-Summit-2011/npo.html&quot;&gt;Non-profit infrastructure for software freedom&lt;/a&gt;&quot; with the views from &lt;a href=&quot;http://sfconservancy.org/&quot;&gt;Software Freedom Conservancy,&lt;/a&gt; &lt;a href=&quot;http://www.fsf.org/&quot;&gt;Free Software Foundation&lt;/a&gt;, and &lt;a href=&quot;http://www.apache.org/&quot;&gt;Apache Software Foundation&lt;/a&gt;, gave some insights in the non-profit infrastructures. &quot;Fund raising 101&quot; by Cat from Google provided some basic hints on successfully getting the open source project funded.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Wrapping Up!&lt;/b&gt; &lt;br /&gt;A final speech from Carol ended the summit in a vote of thanks manner. Wait - No! Mentors were asked to provide their suggestions of improvement after her talk. Some encouraging, interesting and also funny comments were thrown, with room full of laughter and applauses. One interesting and usual suggestion was to have the summit at Europe next year. &quot;I love you guys, but, sometimes, I hate you guys,&quot; replied Carol.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Google Summer of Code Mentor Summit was surely a remarkable experience for everyone who attended. I would like to thank Google and Carol for organizing the Google Summer of Code as well as the summit, on behalf of the AbiWord team.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-4668405338758350362?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 30 Oct 2011 14:17:36 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: New adventures</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/10/28/807-new-adventures</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/10/28/807-new-adventures</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://img.figuiere.net/hub/2011/10/20111028_IMG_4597.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Today was my last day on iWork™. I'd like to thanks my team for these last two years and wish them the best, it was fantastic.&lt;/p&gt;


&lt;p&gt;Monday will be the beginning of new adventures, at Mozilla. I'll be in Toronto the first week, but will be based in Vancouver.&lt;/p&gt;</description>
	<pubDate>Sat, 29 Oct 2011 06:06:21 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Punk rock languages</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/10/15/806-punk-rock-languages</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/10/15/806-punk-rock-languages</link>
	<description>&lt;p&gt;Excellent write-up about why C has won the language battle: &lt;a href=&quot;http://pragprog.com/magazines/2011-03/punk-rock-languages&quot;&gt;punk rock languages&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Also, if you know C and C++, read the &lt;a href=&quot;http://olvemaudal.wordpress.com/2011/10/10/deep-c/&quot;&gt;Deep C (and C++)&lt;/a&gt; PDF &lt;a href=&quot;http://www.pvv.org/~oma/DeepC_slides_oct2011.pdf&quot;&gt;deck of slides&lt;/a&gt;, and become surprised (or not).&lt;/p&gt;</description>
	<pubDate>Sun, 16 Oct 2011 01:00:16 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: RIP Dennis M Ritchie</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/10/12/805-rip-dennis-m-ritchie</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/10/12/805-rip-dennis-m-ritchie</link>
	<description>&lt;p&gt;It is hard to write eulogies about people you have never met. &lt;a href=&quot;http://en.wikipedia.org/wiki/Dennis_Ritchie&quot; hreflang=&quot;en&quot;&gt;Dennis M Ritchie&lt;/a&gt;'s work has influenced me a lot in my tech field. UNIX and C were two of &lt;a href=&quot;http://www.tbray.org/ongoing/When/201x/2011/10/12/DMR&quot; hreflang=&quot;en&quot;&gt;the main projects he worked on&lt;/a&gt; and two of the things from which I have been making a living. If it wasn't for them, I may not be working in software engineering.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;https://plus.google.com/u/2/101960720994009339267/posts/ENuEDDYfvKP?hl=en&quot; hreflang=&quot;en&quot;&gt;Dennis M Ritchie sadly passed away today&lt;/a&gt; at 70.&lt;/p&gt;


&lt;p&gt;The Economist has a &lt;a href=&quot;http://www.economist.com/node/2724348&quot; hreflang=&quot;en&quot;&gt;good summary of Dennis Ritchie work&lt;/a&gt;. The article is from 2004, before iPhone, iPad and Android, which are the most popular consumer products that are based off UNIX.&lt;/p&gt;


&lt;p&gt;I spent my professional life either fiddling with operating systems like AIX, BSD, iOS, Linux, MacOS X, Solaris, based on or derived from UNIX, or writing software in C, C++, Objective-C. Thank you Mr Ritchie for your invaluable contribution to computing.&lt;/p&gt;</description>
	<pubDate>Thu, 13 Oct 2011 04:33:25 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: Semantic Revolutions</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-2144650596298762187</guid>
	<link>http://monkeyiq.blogspot.com/2011/10/semantic-revolutions.html</link>
	<description>I thought a fun little scenario for RDF in ODF would be to bounce information from Evolution, through abiword, to calligra, and then drag it back into evolution again. So information goes from ical to RDF, crosses the clipboard as RDF inside of an ODF file with linked text, and then is dragged back into ical format again. I notice a little timezone bug in there, but on the whole things work as one would expect.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-2144650596298762187?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 12 Oct 2011 22:35:59 +0000</pubDate>
</item>
<item>
	<title>Tomas Frydrych: MeeGo’s Dead, Long Live Tizen!</title>
	<guid>http://tthef.net/blog/?p=192</guid>
	<link>http://tthef.net/blog/?p=192</link>
	<description>&lt;p&gt;So finally &lt;a href=&quot;https://meego.com/community/blogs/imad/2011/whats-next-meego&quot;&gt;Intel admits&lt;/a&gt; what anyone with anything more than superficial knowledge of the platform knew for a long time &amp;#8212; MeeGo is dead. I am not surprised at all, I have always expected that MeeGo would not live to see its second birthday, but the waste of human effort is dispiriting.&lt;/p&gt;

&lt;p&gt;I am not holding my breath for Tizen either, there is a definitive leitmotif here that yet another change of name cannot but accentuate (HTML5 is all good and well, but there is heck lot more to creating a usable platform for a single device category, never mind multiple categories at once, and MeeGo did not get even near). I suspect the success of Tizen will largely come down to what Intel’s partners can bring to the table, but the very fact none of them want to give it a go alone leaves me feeling skeptical &amp;#8212; I would not be at all surprised if we get Episode 4, or, more likely, the final  curtain, within 18 months.&lt;/p&gt;</description>
	<pubDate>Wed, 28 Sep 2011 10:55:47 +0000</pubDate>
</item>
<item>
	<title>Martin Sevior: Neutrinos travel faster than light?</title>
	<guid>http://msevior.livejournal.com/30816.html</guid>
	<link>http://msevior.livejournal.com/30816.html</link>
	<description>Wow. This is sensational news if true. Really, really astonishing stuff with massive implications for Physics and our understanding of the nature of reality.&lt;br /&gt;&lt;br /&gt;The full paper is on the archive server now.&lt;br /&gt;&lt;br /&gt;http://arxiv.org/abs/1109.4897v1&lt;br /&gt;&lt;br /&gt;This blog post interprets the paper.&lt;br /&gt;&lt;br /&gt;It is a very nice measurement. The experiment, OPERA, measures the centroid of the &amp;quot;Probablity Density Function&amp;quot; of the time of time of flight from the CERN accelerator to the Gran Sasso Laboratory in Italy.&amp;nbsp; (This in itself is pretty amazing since the neutrinos are detected after travelling through 730 km of solid rock!)&lt;br /&gt;&lt;br /&gt;Of couse there are two fundamental systematic uncertainties one must take into account. The first is the measurement of the difference between the time of neutrino creation at CERN and the time of measurement in Italy. The second is the distance between CERN and the detector.&lt;br /&gt;&lt;br /&gt;The time difference was obtained by synchronized atomic clocks with greater than 1 ns precision. There is now a massive industry based on precison measurements of distance. This is the world-wide GPS system which allows measurement errors in positions of the order of centimeters. Its extremely hard to see how they could have screwed these up. For example the April 7th, 2009 L&amp;rsquo;Aquila Earthquake in Italy resulted is an easily identified 7 cm shift in position. (See below.)&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/msevior/pic/00025qhy/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pics.livejournal.com/msevior/pic/00025qhy/s640x480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The biggest uncertainty is establishing the original time structure of the proton beam that created the neutrinos. The proton pulse is of the order of 10 microseconds in width. The measured effect is a 60 nano-seconds shift from expectations with a 7 nanosecond uncertainty. That means they've established the centroid of their proton pulse width to a precision of better than one part in one thousand. Since they have recorded 16,000 events they have sufficient statistics to do this. The question is whether they've correctly determined the &lt;i&gt;shape&lt;/i&gt; in time of the original proton beam.&lt;br /&gt;&lt;br /&gt;This is determined from the proton beam intensity which is continuously montored. They compared the this to the measured time profile in their detector.&amp;nbsp;&amp;nbsp; The measured original proton beam intensities as a function of time are shown below. The CERN SPS has two extraction profiles which are easily distinguished.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/msevior/pic/000266er/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pics.livejournal.com/msevior/pic/000266er/s640x480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The observed time structures of the events recored in Italy are shown below. The red lines show the superimposed average time structures of the proton beams with and without the flight time to Italy.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://pics.livejournal.com/msevior/pic/00027xwe/&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://pics.livejournal.com/msevior/pic/00027xwe/s640x480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;By eye the original time structure of the CERN proton beam appears well reproduced in the detected neutrinos.&lt;br /&gt;&lt;br /&gt;After a full &lt;i&gt;blind-analysis&lt;/i&gt; they find that their neutrinos travelled (60.7 &amp;plusmn; 6.9 (stat.) &amp;plusmn; 7.4 (sys.)) ns faster than light over the same distance.&lt;br /&gt;&lt;br /&gt;The first uncertainty is the statistical precision of the measurement. The second is their estimate of the systematic uncertainty.&amp;nbsp; Their systematic uncertainty was obtained by a quadratic sum of 12 potentional sources of error. The largest (5.0 ns) was the calibration of the detector that measures the time of the proton beam extraction at CERN.&lt;br /&gt;&lt;br /&gt;Overall their measurement gives:&lt;br /&gt;&lt;br /&gt;(v-c)/c = (2.48 &amp;plusmn; 0.28 (stat.) &amp;plusmn; 0.30 (sys.)) &amp;times;10-5&lt;br /&gt;&lt;br /&gt;This is consistent with an earlier but less precise measurement from an experiment in America with the Fermilab accelerator:&lt;br /&gt;&lt;br /&gt;(v-c)/c = 5.1 &amp;plusmn; 2.9&amp;times;10-5&lt;br /&gt;&lt;br /&gt;But substantially different from the neutrinos detected from Supernova 1987a which gives a limit on the anti-neutrino velocity difference of:&lt;br /&gt;&lt;br /&gt;|v-c|/c &amp;lt; 2&amp;times;10-9&lt;br /&gt;&lt;br /&gt;So what happens now? There are two other high statistics long-baseline experiments in operation in Japan (at the KEK laboratory where I do my CP-violation experiments) and an updated experiment using the Fermilab accelerator in America. You can be certain that both experiments will do their best make the most precise measurements of the neutrino velocities they can. If all three agree what then? Well we will have to wait to see if they do.... As I said this is a most incredible result.&lt;br /&gt;&lt;br /&gt;One final point about this. If the neutrinos from SN1987A had had the increase in velvocity over photons measured by the OPERA experiment they would have arived 4 years earlier than the light...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(All images are reproduced from http://arxiv.org/abs/1109.4897v1)</description>
	<pubDate>Fri, 23 Sep 2011 02:38:37 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: Copy and Paste with Semantics...</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-117398079363194273</guid>
	<link>http://monkeyiq.blogspot.com/2011/09/copy-and-paste-with-semantics.html</link>
	<description>Copy and Paste now preserves RDF between both Calligra and abiword in both directions. This lets you select some text in a document in either application, copy it, and paste it into the other application and have the RDF that is associated with that part of the document go along with the text you selected.&lt;br /&gt;&lt;br /&gt;In the below screencast, the document that Calligra is editing has some contact and event information stored in RDF. The three people in the first sentence all have contact information associated. As you can see, the RDF sidepanel in Calligra lets you know about this as the cursor moves around. James has his phone number captured in RDF which the edit dialog shows. If I select one or more of these contacts and &quot;Copy&quot; them to the clipboard, Calligra creates an ODF file with embedded RDF in it and offers that on the clipboard.&lt;br /&gt;&lt;br /&gt;Abiword is happy to accept that ODF content and when you paste it into a document you can see that the RDF links are preserved, and that there are 7 RDF triples associated with James. Of course, you want full disclosure of this information, so clicking show RDF lets you examine and edit those RDF triples.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/29348270&quot;&gt;Copy and Paste of RDF from Calligra to Abiword&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1040925&quot;&gt;Ben Martin&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I put a little trick in going the other way just to spice things up a little bit. The multi.odt file that I have open in abiword has two RDF links in scope at the Wing-B link. RDF is associated with the whole paragraph and explicitly with the link itself. In particular, the uri:widetime is associated with the paragraph while the uri:wingb is associated with the RDF link itself. Once I grab that RDF link and copy it to the clipboard, again an ODF file is offered (as well as text and rtf), and again Calligra is more than happy to accept an ODF file on the clipboard. Notice that when I show all the RDF in Calligra both the widetime and wingb RDF triples have now become part of the document.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/29348467&quot;&gt;Copy and Paste from Abiword to Calligra&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1040925&quot;&gt;Ben Martin&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I made some changes in both calligra and abiword to get this to happen. Changes to the former were quite small. You'll have to grab trunk from both applications if you want to play along at home. The code is committed in both trees.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-117398079363194273?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 20 Sep 2011 18:36:08 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Too much choice</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/09/16/804-too-much-choice</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/09/16/804-too-much-choice</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://img.figuiere.net/hub/2011/06/20110605-1P_img_012.jpg&quot;&gt;&lt;img src=&quot;http://img.figuiere.net/hub/2011/06/thumb_20110605-1P_img_012.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;In front of a grocery store on Commercial Driver during Italian day. Vancouver, BC - &lt;em&gt;June 5th 2011&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;Mamiya C-220, 105mm, Kodak Ektar 100.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/hfiguiere/6151789605/&quot;&gt;flickr&lt;/a&gt; - &lt;a href=&quot;http://500px.com/photo/2023075&quot;&gt;500px&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 17 Sep 2011 04:49:58 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: LibreOffice Visio import filter on libregraphicsworld.org</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-7971280968624688180</guid>
	<link>http://fridrich.blogspot.com/2011/09/libreoffice-visio-import-filter-on.html</link>
	<description>For those that could be interested in my shameless self-promotion, there is some news about the LibreOffice Visio import filter at  &lt;a href=&quot;http://libregraphicsworld.org/news.php?readmore=877&quot;&gt;libregraphicsworld.org&lt;/a&gt; web site, accompanied by a &lt;a href=&quot;http://libregraphicsworld.org/articles.php?article_id=41&quot;&gt;fine interview with two fine hackers&lt;/a&gt;. So, click and enjoy the wonderful screenshots in a preview of the happiness LibreOffice 3.5 will bring you.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-7971280968624688180?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 15 Sep 2011 15:10:10 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Vacation time</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/09/08/803-vacation-time</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/09/08/803-vacation-time</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/somecanuckchick/6127872533/&quot; title=&quot;The Frenchman waiting for the perfect wave... by somecanuckchick, on Flickr&quot;&gt;&lt;img src=&quot;http://farm7.static.flickr.com/6065/6127872533_eec2a820f3_m.jpg&quot; width=&quot;181&quot; height=&quot;240&quot; alt=&quot;The Frenchman waiting for the perfect wave...&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;
(picture by &lt;a href=&quot;http://www.flickr.com/photos/somecanuckchick/6127872533/&quot;&gt;somecanuckchick&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;Today I took surf lessons with the &lt;a href=&quot;http://surfsister.com/&quot; hreflang=&quot;en&quot;&gt;Surf Sister&lt;/a&gt; in Tofino, BC. It was fun, I would do it again, but I'm sore, proof that I really need to get my ass off and get in better physical shape.&lt;/p&gt;</description>
	<pubDate>Fri, 09 Sep 2011 04:11:49 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: Abiword RDF Drag and Drop</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-5740456241986368018</guid>
	<link>http://monkeyiq.blogspot.com/2011/09/abiword-rdf-drag-and-drop.html</link>
	<description>Now that abiword has &lt;a href=&quot;http://monkeyiq.blogspot.com/2011/08/rdf-low-level-interaction-in-abiword.html&quot;&gt;low level RDF support &lt;/a&gt;I thought I'd make it simpler to get some data into the document's RDF. The initial support lets you drag contact and calendar entries from Evolution into your document as shown below. Notice that a new RDF Link is created for you and when you choose to right click that link and &quot;Show RDF&quot; there are many RDF triples that have been created by the D&amp;amp;D action.
&lt;br /&gt;
&lt;br /&gt;&lt;p&gt;&lt;a href=&quot;http://vimeo.com/28490128&quot;&gt;Abiword RDF Drag and Drop&lt;/a&gt; from &lt;a href=&quot;http://vimeo.com/user1040925&quot;&gt;Ben Martin&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com/&quot;&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;
&lt;br /&gt;I think these sort of user interface additions help to make using RDF quick and easy, even for those who don't know or care what it is and where it gets stored in the document. Abiword can load and save RDF in both it's native abw files and ODF formats. You can of course convert between both without loosing the RDF ;)
&lt;br /&gt;
&lt;br /&gt;I plan to add D&amp;amp;D in the other direction later on, so you can pickup a person from a document or an event. Similar to how many email clients let you import ics calendar files into your local Calendar. Having RDF in ODF lets you share content, style, and semantics, all in a truly open format single file.
&lt;br /&gt;
&lt;br /&gt;Oh, and the code should hit svn trunk real soon now.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-5740456241986368018?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 01 Sep 2011 22:37:44 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: I hate hardware</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/08/28/802-i-hate-hardware</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/08/28/802-i-hate-hardware</link>
	<description>&lt;p&gt;My Linux server rebooted spontaneously and then decided to kernel panic.&lt;/p&gt;


&lt;p&gt;Running memtest off a bootable Gnome 3 Live USB system:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://www.figuiere.net/hub/blog/images/memtest.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Diagnosis: dead RAM stick. With only one stick, &lt;code&gt;memtest&lt;/code&gt; even crash on test 6, while the other just pass.&lt;/p&gt;


&lt;p&gt;The good news is that the motherboard support single channel. The second good news is that it is lifetime warranty. Requested a RMA.&lt;/p&gt;


&lt;p&gt;The bad news: I might have to return both as they are paired leading to eventually a longer downtime. :-/&lt;/p&gt;</description>
	<pubDate>Mon, 29 Aug 2011 06:24:40 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: A case for braces</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/08/28/801-a-case-for-braces</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/08/28/801-a-case-for-braces</link>
	<description>&lt;p&gt;I am one of those who believe C and C++ should have made curly braces mandatory.&lt;/p&gt;


&lt;p&gt;Recent version of gcc and other compiler emit a warning when you have the following:&lt;/p&gt;

&lt;pre&gt;if(foo)
  ;&lt;/pre&gt;

&lt;p&gt;It does it because you could do something like&lt;/p&gt;

&lt;pre&gt;if(foo);
{
  // do something for foo
}&lt;/pre&gt;

&lt;p&gt;And this is likely a bug.
But imagine the following case:&lt;/p&gt;

&lt;pre&gt;if(foo)
  DEBUG_MESSAGE(&quot;foo&quot;);&lt;/pre&gt;

&lt;p&gt;Now you have &lt;code&gt;DEBUG_MESSAGE()&lt;/code&gt; defined as a macro that is empty in non-debug (you don't want these for your users). Then you end up with the warning for the situation above when doing your builds.
There would be no problem had you written it this way:&lt;/p&gt;

&lt;pre&gt;if(foo)
{
  DEBUG_MESSAGE(&quot;foo&quot;);
}&lt;/pre&gt;

&lt;p&gt;Also another case:&lt;/p&gt;

&lt;pre&gt;if(foo)
  if(bar)
    do_bar();
else
  dont_foo();&lt;/pre&gt;

&lt;p&gt;Do you see the bug? That's right, the code is wrong: &lt;code&gt;dont_foo()&lt;/code&gt; is executed in the else case for &lt;code&gt;if(bar)&lt;/code&gt;. Had you put curly braces it would have been clearer of what is happening. Like that:&lt;/p&gt;

&lt;pre&gt;if(foo)
{
  if(bar)
  {
    do_bar();
  }
}
else
{
  dont_foo();
}&lt;/pre&gt;


&lt;p&gt;Also if you find this a bit too hard because of the many like, can write with that style of bracing:&lt;/p&gt;

&lt;pre&gt;if(foo) {
  if(bar) {
    do_bar();
  }
}
else {
  dont_foo();
}&lt;/pre&gt;

&lt;p&gt;The opening brace at the end of the opening statement.&lt;/p&gt;


&lt;p&gt;Another case:&lt;/p&gt;

&lt;pre&gt;if(obj)
  obj-&amp;gt;data-&amp;gt;foo = 1;&lt;/pre&gt;

&lt;p&gt;Now you know that data can not be null and want to catch it when testing. So you add one line:&lt;/p&gt;

&lt;pre&gt;if(obj)
  DEBUG_ASSERT_NOT_NUUL(obj-&amp;gt;data);
  obj-&amp;gt;data-&amp;gt;foo = 1;&lt;/pre&gt;

&lt;p&gt;Oops. Did you realize this is wrong?
Mistakes happen. Mistakes can be prevented. Curly braces would have prevented it.&lt;/p&gt;


&lt;p&gt;Note: in the code above you should still ensure that &lt;code&gt;obj-&amp;gt;data&lt;/code&gt; is not &lt;code&gt;NULL&lt;/code&gt; before dereferencing, but that's a different subject, for another time.&lt;/p&gt;


&lt;p&gt;Bottom line, don't be lazy. Make the use a curly braces mandatory in your coding style. If your compiler has a warning for that, enable it.&lt;/p&gt;</description>
	<pubDate>Sun, 28 Aug 2011 19:29:10 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Picnurbia</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/08/27/800-picnurbia</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/08/27/800-picnurbia</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://img.figuiere.net/hub/2011/08/20110816_IMG_0564.jpg&quot;&gt;&lt;img src=&quot;http://img.figuiere.net/hub/2011/08/thumb_20110816_IMG_0564.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Part of the 125th anniversary festivities, Picnurbia at the just finished 800-block of Robson Street for Viva Vancouver.&lt;/p&gt;


&lt;p&gt;Vancouver, BC - &lt;em&gt;August 16th 2011&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/hfiguiere/6058894761/&quot;&gt;Flickr&lt;/a&gt; - &lt;a href=&quot;http://500px.com/photo/1647251&quot;&gt;500px&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 28 Aug 2011 01:17:10 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Dear Google,</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/08/18/799-dear-google</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/08/18/799-dear-google</link>
	<description>&lt;p&gt;&lt;img src=&quot;http://www.figuiere.net/hub/blog/images/375502915.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Dear Google,&lt;/p&gt;


&lt;p&gt;Who are you to tell me how I should write my name?&lt;/p&gt;


&lt;p&gt;You could have managed than one swiftly. You didn't. You got feedback, you answered with worse policy. Your policy is so bad that it won't even be enforceable fairly, as you still have you own employees with fake profile, or exempt celebrities.&lt;/p&gt;


&lt;p&gt;You created some great product and in that case you f***ed it up real hard.&lt;/p&gt;


&lt;p&gt;You disable my profile, goodbye&lt;sup&gt;[&lt;a href=&quot;http://www.figuiere.net/pnote-799-1&quot; id=&quot;rev-pnote-799-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;PS: Get a clue: read &lt;a href=&quot;http://my.nameis.me/&quot;&gt;My name is me&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;PPS: even &lt;a href=&quot;http://stilgherrian.com/only-one-name/right-google-you-stupid-cunts-this-is-simply-not-on/#comment-37875&quot;&gt;people using their real names get rejected&lt;/a&gt; - language warning over there.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.figuiere.net/rev-pnote-799-1&quot; id=&quot;pnote-799-1&quot;&gt;1&lt;/a&gt;] as of now I'm still on notice. Not changing it&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 19 Aug 2011 03:58:25 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: RDF Low Level Interaction in Abiword</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-1002954669538376459</guid>
	<link>http://monkeyiq.blogspot.com/2011/08/rdf-low-level-interaction-in-abiword.html</link>
	<description>I've recently mentioned creating and jumping to the RDF Links (xml:id to RDF bridging) in Abiword. I also had a work in progress dialog to allow SPARQL Query execution. Things are moving along quite nicely and the RDF subsystem continues to get stronger with a Triple Editor and updates to the SPARQL dialog shown below and execution support.
&lt;br /&gt;
&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-KLvm83mNTNs/TkzUSjZl_OI/AAAAAAAAAG4/GZWtIKYktfY/s1600/rdf-sparql-dialog.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-KLvm83mNTNs/TkzUSjZl_OI/AAAAAAAAAG4/GZWtIKYktfY/s400/rdf-sparql-dialog.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5642117848393710818&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-1G7bbA60NEw/TkzOq8TDUbI/AAAAAAAAAGw/IrCnQhRjSgc/s1600/rdf-sparql-dialog.png&quot;&gt;
&lt;br /&gt;&lt;/a&gt;
&lt;br /&gt;Shown below is the new RDF Editor dialog. The file menu allows you to import and export RDF/XML files into the document. The Triple menu has the same actions as the toolbar; new, copy, and delete. Shown at the bottom of the dialog is the total number of RDF triples for this document. Clicking on a cell in the table lets you edit it and you can use the existing URI prefixes if you like, for example rdf:type instead of the full URI. I have to allow configuration of those prefixes yet.
&lt;br /&gt;
&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-QzZLQEnhI34/TkzCtKv8jUI/AAAAAAAAAGY/ip3qOtEueko/s1600/rdf-editor-all.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-QzZLQEnhI34/TkzCtKv8jUI/AAAAAAAAAGY/ip3qOtEueko/s400/rdf-editor-all.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5642098514423745858&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;When you select some text in Abiword you can use Insert/RDF Link to create a new RDF link for that text. This is much like making a bookmark, hyperlink and other items.
&lt;br /&gt;
&lt;br /&gt;The context menu for an RDF link allows you to edit the RDF associated with link. That window is shown below. There can be many RDF links in scope at any location in the document. Consider the case where a paragraph has RDF linked to it and a sentence and word does too. So when you bring up the RDF editor window from the context menu of an RDF link you get a combo box letting you select which links you want to see the RDF associated with.
&lt;br /&gt;
&lt;br /&gt;By default the editor shows you all the RDF Links that are in scope where the cursor was located when you opened the dialog from the context menu. In this case widetime is an RDF link for the whole paragraph and wingb is for three words at the end of the paragraph. The dialog shows you the triples that link the subjects to this location: those with ?subject pkg:idref widetime. Selecting a different RDF link from the combo box restricts the triples shown to be only those associated with the RDF link you have chosen.
&lt;br /&gt;
&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-uLnoYa4X2aQ/TkzDt7XowAI/AAAAAAAAAGg/IRqvEmHKcf8/s1600/rdf-editor-two.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-uLnoYa4X2aQ/TkzDt7XowAI/AAAAAAAAAGg/IRqvEmHKcf8/s400/rdf-editor-two.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5642099626986749954&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;I decided to make the dialog automatically link any new triples you create or edit to the RDF link you have specified in the combo box. If there is more than one RDF link shown then the first link is used for new and updated triples.
&lt;br /&gt;
&lt;br /&gt;This allows you to select some text, create an RDF link, right click the link and &quot;Show RDF&quot; from the context menu and start adding and editing triples and Abiword will automatically associate all those shown with the RDF link you have selected. Yay, full, low level RDF support with a GUI ;)
&lt;br /&gt;
&lt;br /&gt;In case you have forgotten the scope of an RDF link in the document, the RDF editor will select the scope in the main document when you select a triple in the editor. I might make that functionality have a toggle button in the toolbar instead of making it happen automatically all the time.
&lt;br /&gt;
&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-wNoRAws2sBQ/TkzFhpqCb1I/AAAAAAAAAGo/pXvH0juEWwo/s1600/rdf-editor-select.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/-wNoRAws2sBQ/TkzFhpqCb1I/AAAAAAAAAGo/pXvH0juEWwo/s400/rdf-editor-select.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5642101615096917842&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;
&lt;br /&gt;One of the plugins that comes with Abiword is the &quot;AbiCommand&quot; which gives you a console interface to Abiword. You can start it from the shell using:
&lt;br /&gt;
&lt;br /&gt;$ abiword --plugin AbiCommand
&lt;br /&gt;...
&lt;br /&gt;AbiWord command line plugin: Type &quot;quit&quot; to exit
&lt;br /&gt;AbiWord:&amp;gt;
&lt;br /&gt;
&lt;br /&gt;I have added some new RDF commands to the AbiCommand plugin which allows fairly good interaction with RDF from the command line. The context-model commands allow you to set and interact with a submodel of all the RDF in the document. For example, only the RDF that is associated with a given xml:id. All updates to RDF happen via a mutation object. So you first use rdf-mutation-create, then add/remove as desired and complete things with rdf-mutation-commit. For those who are still reading now, see pd_DocumentRDF.h in the C++ source code and you'll notice createMutation() in the model, with add(), remove(), commit() and rollback() methods. The new commands in AbiCommand are shown below:
&lt;br /&gt;
&lt;br /&gt;&lt;pre&gt;...RDF subsystem...      
&lt;br /&gt;Where a function reads RDF, it will try to use the RDF context model if it is set
&lt;br /&gt;Otherwise the entire RDF for the document is used.
&lt;br /&gt;An RDF context is obtained using rdf-set-context*
&lt;br /&gt;and cleared with rdf-clear-context-model
&lt;br /&gt;                     
&lt;br /&gt;rdf-import &amp;lt;src&amp;gt;               - load all RDF from an RDF/XML file at &amp;lt;src&amp;gt; into the document
&lt;br /&gt;rdf-export &amp;lt;dst&amp;gt;               - save all document RDF to an RDF/XML file at &amp;lt;dst&amp;gt;
&lt;br /&gt;rdf-clear-context-model        - RDF can at times use a context model which is a subset of
&lt;br /&gt;                             all the RDF associated with the document.
&lt;br /&gt;                             This command clears that and uses all the RDF again.
&lt;br /&gt;rdf-set-context-model-pos &amp;lt;pos&amp;gt;       - Use a context model with the subset of RDF
&lt;br /&gt;                                    associated with the given document position
&lt;br /&gt;rdf-set-context-model-xmlid &amp;lt;xmlid&amp;gt; [readxmlid1,readxmlid2]
&lt;br /&gt;                                  - Use a context model with the subset of RDF
&lt;br /&gt;                                    associated with the given document xml:id value
&lt;br /&gt;rdf-context-show-objects  &amp;lt;s&amp;gt; &amp;lt;p&amp;gt;     - Show the object  list for the given subject,predicate pair
&lt;br /&gt;rdf-context-show-subjects &amp;lt;p&amp;gt; &amp;lt;o&amp;gt;     - Show the subject list for the given predicate,object  pair
&lt;br /&gt;rdf-context-contains      &amp;lt;s&amp;gt; &amp;lt;p&amp;gt; &amp;lt;o&amp;gt; - True if the triple is there.
&lt;br /&gt;rdf-context-show-arcs-out &amp;lt;s&amp;gt;         - Show the predicate objects associated
&lt;br /&gt;                                    with the given subject
&lt;br /&gt;rdf-get-xmlids                 - Get a comma separated list of the xml:ids assocaited
&lt;br /&gt;                             with the current cursor location
&lt;br /&gt;rdf-get-all-xmlids             - Get a comma separated list of all the xml:ids
&lt;br /&gt;rdf-get-xmlid-range &amp;lt;xmlid&amp;gt;    - Show the start and end document position associated
&lt;br /&gt;                             with the given &amp;lt;xmlid&amp;gt;
&lt;br /&gt;rdf-movept-xmlid-start &amp;lt;xmlid&amp;gt; - Move the cursor location to the start of the range
&lt;br /&gt;                             for the given xml:id value
&lt;br /&gt;rdf-movept-xmlid-end &amp;lt;xmlid&amp;gt;   - Move the cursor location to the end of the range
&lt;br /&gt;                             for the given xml:id value
&lt;br /&gt;rdf-uri-to-prefixed &amp;lt;uri&amp;gt;      - Convert full uri to prefix:rest
&lt;br /&gt;rdf-prefixed-to-uri &amp;lt;uri&amp;gt;      - Convert prefix:rest to full uri
&lt;br /&gt;rdf-size                       - Number of RDF triples for context
&lt;br /&gt;rdf-mutation-create            - Start a RDF mutation for the document
&lt;br /&gt;rdf-mutation-add    &amp;lt;s&amp;gt; &amp;lt;p&amp;gt; &amp;lt;o&amp;gt;- Add the given triple to the current mutation
&lt;br /&gt;rdf-mutation-remove &amp;lt;s&amp;gt; &amp;lt;p&amp;gt; &amp;lt;o&amp;gt;- Remove the given triple in the current mutation
&lt;br /&gt;rdf-mutation-commit            - Commit current RDF mutation to the document
&lt;br /&gt;rdf-mutation-rollback          - Throw away changes in current RDF mutation
&lt;br /&gt;rdf-execute-sparql             - Execute SPARQL query against RDF context
&lt;br /&gt;rdf-xmlid-insert &amp;lt;xmlid&amp;gt;       - Insert xml:id for current selection
&lt;br /&gt;rdf-xmlid-delete &amp;lt;xmlid&amp;gt;       - Delete the xml:id from the document
&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;Some examples of AbiCommand interaction are shown below to give a little idea of use. These are using the multi.odt from my &lt;a href=&quot;https://github.com/monkeyiq/plugtest&quot;&gt;plugtest github&lt;/a&gt; repository.
&lt;br /&gt;
&lt;br /&gt;&lt;pre&gt;load       /tmp/multi.odt
&lt;br /&gt;rdf-export /tmp/output.rdf
&lt;br /&gt;rdf-import /tmp/extra.rdf
&lt;br /&gt;
&lt;br /&gt;rdf-set-context-model-pos 1006
&lt;br /&gt;rdf-export /tmp/1006.rdf
&lt;br /&gt;
&lt;br /&gt;rdf-set-context-model-xmlid wingb
&lt;br /&gt;rdf-export /tmp/wingb.rdf
&lt;br /&gt;
&lt;br /&gt;rdf-clear-context-model
&lt;br /&gt;rdf-export /tmp/all.rdf
&lt;br /&gt;
&lt;br /&gt;rdf-get-xmlid-range wingb
&lt;br /&gt;
&lt;br /&gt;rdf-execute-sparql &quot;prefix rdf:  &amp;lt;http://www.w3.org/1999/02/22-rdf-syntax-ns#&amp;gt;
&lt;br /&gt;prefix foaf: &amp;lt;http://xmlns.com/foaf/0.1/&amp;gt;
&lt;br /&gt;prefix pkg:  &amp;lt;http://docs.oasis-open.org/opendocument/meta/package/common#&amp;gt;
&lt;br /&gt;prefix geo84: &amp;lt;http://www.w3.org/2003/01/geo/wgs84_pos#&amp;gt;
&lt;br /&gt;
&lt;br /&gt;select ?s ?p ?o ?rdflink
&lt;br /&gt;where {
&lt;br /&gt;?s ?p ?o .
&lt;br /&gt;?s pkg:idref ?rdflink .
&lt;br /&gt;filter(  str(?rdflink) = \&quot;wingb\&quot;  ||  str(?rdflink) = \&quot;widetime\&quot;  )
&lt;br /&gt;}&quot;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;load /tmp/multi.odt
&lt;br /&gt;movept +27
&lt;br /&gt;selectstart
&lt;br /&gt;movept +4
&lt;br /&gt;rdf-xmlid-insert foo
&lt;br /&gt;save /tmp/updated.odt
&lt;br /&gt;
&lt;br /&gt;load /tmp/multi.odt
&lt;br /&gt;rdf-context-contains   uri:wingb rdf:type http://www.w3.org/2002/12/cal/icaltzd#Vevent
&lt;br /&gt;rdf-context-show-objects  uri:wingb rdf:type
&lt;br /&gt;rdf-context-show-subjects rdf:type  http://www.w3.org/2002/12/cal/icaltzd#Vevent
&lt;br /&gt;rdf-context-show-arcs-out uri:wingb
&lt;br /&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-1002954669538376459?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Aug 2011 03:00:33 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: The dog whisperer</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/08/14/798-the-dog-whisperer</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/08/14/798-the-dog-whisperer</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://img.figuiere.net/hub/2010/07/20100718_IMG_9521.jpg&quot;&gt;&lt;img src=&quot;http://img.figuiere.net/hub/2010/07/thumb_20100718_IMG_9521.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;If you bring a toy that sqweek at the Boston Terrier meetup, you are sure to get a herd of these little daemons. Hadden Park, Kitsilano, Vancouver, BC - &lt;em&gt;July 18th 2010&lt;/em&gt;&lt;/p&gt;</description>
	<pubDate>Sun, 14 Aug 2011 22:03:14 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Censorship?</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/08/08/797-censorship</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/08/08/797-censorship</link>
	<description>&lt;p&gt;Yesterday, I sent an email to Shoppers Drug Mart, a large pharmacy retail chain here in Canada. My complain was solely that they sell cigarettes (in British Columbia). Yes you read it right a pharmacy sell cigarettes. Does that shock you? It does shock me.&lt;/p&gt;


&lt;p&gt;I was expecting either no reply at all, or some boiler plate reply, but I think they really exceeded my expectations in term of &lt;em&gt;BullC&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;Here is the reply, verbatim:&lt;/p&gt;



&lt;blockquote&gt;&lt;p&gt;Hello Hubert,&lt;/p&gt;
&lt;p&gt;
Thank you for writing to us. The entire philosophy of our company is based on the understanding of care and concern for all of our customers. Our promise is to provide superior customer satisfaction beyond expectation. Shoppers Drug Mart receives a tremendous amount of advice from a wide spectrum of advocates, each with their own value systems, about the many products that a drug store sells. Their assumption is that consumers need to be protected from themselves. Shoppers Drug Mart's position is that it will not allow itself to become the cultural or moral censor for any legal product. The fact that we sell a product does not constitute any endorsement on our part of that product.&lt;/p&gt;
&lt;p&gt;
One of the great underlying perils of merchandising and retailing, regardless of diligent testing for possible hidden, offensive, or unintended messages, it may be interpreted that a product is unsuitable for the general public. To refuse to sell a product that one takes issue with would clearly be a form of censorship on our part which is a position we will not take.&lt;/p&gt;
&lt;p&gt;
Tobacco is typically displayed behind the counter, so it is not accessible to children. We hope that you can appreciate our position as a responsible retailer, which is to offer a wide variety of products and services to the many customers we serve.&lt;/p&gt;
&lt;p&gt;
Thank you for your feedback. We will continue to monitor your concern and make any necessary adjustments.&lt;/p&gt;
&lt;p&gt;
Regards,
Amber
Shoppers Drug Mart / Pharmaprix Customer Service&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;That's right, you read it well. They consider banning the sale of cigarettes a form of censorship, and they hide themselves behind the legality of the product. At least I would have taken &quot;we do it for the money&quot; as a valid reason. But censorship?&lt;/p&gt;</description>
	<pubDate>Mon, 08 Aug 2011 19:53:59 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: RDF Linking in Abiword</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-8650910341878260652</guid>
	<link>http://monkeyiq.blogspot.com/2011/08/rdf-linking-in-abiword.html</link>
	<description>Another minor step forward in the quest to make the RDF facility in ODF more useful to document authors... Abiword can now create links to RDF and you can jump to these links in a similar manner to how bookmarks work. The upside to using RDF links over bookmarks is that you can associate meaning with the RDF links. So for example, the text &quot;Barry&quot; can be associated with his vcard and possibly normal work geolocation.&lt;br /&gt;&lt;br /&gt;Making a new RDF link is just like inserting a bookmark:&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-qE0roCd03ug/Tjjc3Z8m0AI/AAAAAAAAAGA/uiZNnxqj6dc/s1600/rdf-create-link.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-qE0roCd03ug/Tjjc3Z8m0AI/AAAAAAAAAGA/uiZNnxqj6dc/s400/rdf-create-link.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636497778070179842&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;And the &quot;Go To...&quot; dialog now offers RDF links as first class citizens. I did a little tweaking to this goto window while I was at it; moving things into a paged configuration and abstracting out some common code into utility functions.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-ULmcoZU_NTE/Tjjd5OXa6sI/AAAAAAAAAGI/TLl4b4pDBXA/s1600/rdf-goto-xmlid.png&quot;&gt;&lt;img src=&quot;http://1.bp.blogspot.com/-ULmcoZU_NTE/Tjjd5OXa6sI/AAAAAAAAAGI/TLl4b4pDBXA/s400/rdf-goto-xmlid.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636498908832787138&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;On the API front, there are now STL like iterators for the RDF and that theme will be present in the query results engine and perhaps also in the arcsOut() API. Speaking of querying, the window for SPARQL is coming along. I'll start working on the actual query execution shortly. Notice that the RDF triples are shown with namespaces in effect so you get something more readable.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-CNDXVPyRXgU/TjjebETnJJI/AAAAAAAAAGQ/b3cpysXh4M0/s1600/rdf-sparql-all.png&quot;&gt;&lt;img src=&quot;http://2.bp.blogspot.com/-CNDXVPyRXgU/TjjebETnJJI/AAAAAAAAAGQ/b3cpysXh4M0/s400/rdf-sparql-all.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5636499490248008850&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;As I mentioned in my previous post, the purple links can be turned on and off to highlight parts of the document with RDF associated. Using a special menu item you can pull up the SPARQL query dialog with a preformed query to show just the RDF associated with the current cursor location.&lt;br /&gt;&lt;br /&gt;I admit that some of this is quite low level, for example directly inspecting the triples for the cursor position. But full disclosure isn't a bad thing right? I syndicated this to planet KDE because Calligra handles RDF too. Hopefully posts about RDF are interesting to hackers regardless of the desktop platform :)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-8650910341878260652?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 03 Aug 2011 00:35:13 +0000</pubDate>
</item>
<item>
	<title>Ben Martin: Abiword &amp; RDF Gusto</title>
	<guid>tag:blogger.com,1999:blog-3005450802120168081.post-1333382934611986378</guid>
	<link>http://monkeyiq.blogspot.com/2011/07/abiword-rdf-gusto.html</link>
	<description>I recently blogged about updating Calligra to improve its RDF support and bring back support for viewing and editing location information using Marble.  A computer loves RDF because it is nice and verbose and allows low level unambiguous expression of semantics in a format that a machine can work with. For a human however, some might find having long descriptors, schemas and the like just to say &quot;meet me at the Mall&quot; a little tedious. One of the many challenges that I see for office applications wanting to offer RDF to the user is making it visible in a subtle way.&lt;br /&gt;&lt;br /&gt;Abiword can now colour code parts of the document which have RDF associated with them and tell you how that association is formed, and how much RDF is linked at any point. In the below, the purple text has some RDF associated, and the purple &quot;Mark&quot; I have the mouse pointer on so it shows the bubble text letting you know how the RDF is attached and how much of it there is.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-oq_EhR3bfY8/TiZiWIALJLI/AAAAAAAAAF4/M0DrustEQaY/s1600/abiword-I-see-in-three.png&quot;&gt;&lt;img src=&quot;http://4.bp.blogspot.com/-oq_EhR3bfY8/TiZiWIALJLI/AAAAAAAAAF4/M0DrustEQaY/s400/abiword-I-see-in-three.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5631296516318241970&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;In the future I of course want to let you know more; is the RDF location, contact, event, or related to another domain. It would also be nice to highlight RDF only for types. So, for example if you are interested only in the times that trains leave then highlight departure logistics in bold red. The computer knows what you mean too, so might also want to offer a menu button to check if the train is on time or not.&lt;br /&gt;&lt;br /&gt;Being able to highlight like this is a good start because it allows users who are unfamiliar with the document the chance to know exactly where there might be RDF &quot;hiding&quot;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3005450802120168081-1333382934611986378?l=monkeyiq.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 19 Jul 2011 23:20:51 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Lion's Head</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/07/17/796-lion-s-head</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/07/17/796-lion-s-head</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://img.figuiere.net/hub/2011/06/20110523-2P_img_003.jpg&quot;&gt;&lt;img src=&quot;http://img.figuiere.net/hub/2011/06/thumb_20110523-2P_img_003.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;The Lion's head seen over the Capilano reservoir in North Vancouver, BC - &lt;em&gt;June 4, 2011&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;Mamiya C-220, 105mm f3.5, Ektar 100 - 1/125 f16&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/hfiguiere/5948705783/in/photostream&quot;&gt;flickr&lt;/a&gt; - &lt;a href=&quot;http://500px.com/photo/1218443&quot;&gt;500px&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 18 Jul 2011 05:09:39 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: LibreOffice Visio import filter - round shapes are beautiful</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-8853981521138259280</guid>
	<link>http://fridrich.blogspot.com/2011/07/libreoffice-visio-import-filter-round.html</link>
	<description>&lt;p&gt;Some might be wondering why the Visio import filter project is so quiet. But the answer is easy: we were busy as bees adding new features.&lt;/p&gt;&lt;p&gt;You might remember &lt;a href=&quot;http://fridrich.blogspot.com/2011/06/bounding-box-of-svg-elliptical-arc.html&quot; target=&quot;_blank&quot;&gt;my blog about the bounding box of an elliptical arc&lt;/a&gt;. It is because &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; added the support of elliptical arcs into &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;libvisio&lt;/code&gt;&lt;/a&gt;. And then we discovered that &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; did not support elliptical arcs in the path at all, just ignored them. Fortunately, there was &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/libs-gui/commit/?id=246168e94709a5ea7f34914d8e246af0985a9c81&quot; target=&quot;_blank&quot;&gt;this patch&lt;/a&gt; of a hacker extraordinaire, &lt;a href=&quot;http://blog.thebehrens.net/&quot; target=&quot;_blank&quot;&gt;Thorsten&lt;/a&gt; that was used to teach &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; some sane behaviour.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; implemented further the conversion of gradient fill and with this and the support of elliptical arcs, this Visio document:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/314Marketing_visio.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/314Marketing_visio_tn.jpg&quot; alt=&quot;Marketing.vsd in Visio&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;looks in Draw pretty well:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/990Marketing_draw.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/990Marketing_draw_tn.jpg&quot; alt=&quot;Marketing.vsd in Draw&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You will realize that we do not support text in Visio documents yet, but be assured that it is now our top priority feature. It is also worthy to note that the above-mentionned document is actually a document in Visio file-format 6 (used by Visio 2000 and Visio XP). We refactored libvisio the way that our support of both version 6 and 11 is equivalent. Moreover, we implemented two-pass parsing of Visio documents which allows us to draw shapes in a correct order and position them accurately.&lt;/p&gt;&lt;p&gt;In the same line, &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; implemented reading of &lt;a href=&quot;http://en.wikipedia.org/wiki/NURBS&quot; target=&quot;_blank&quot;&gt;NURBS&lt;/a&gt;, which is pretty tedious since the conversion must be done by approximation, since neither ODF, nor SVG support this kind of non-uniform rational basis splines. For the while, we are approximating them with 50 lineto segments for one spline, but it is our intention to use a serie of smooth cubic splines to achieve as much visual similarity as possible.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;libvisio&lt;/code&gt;&lt;/a&gt; library now is able to position correctly any point even if it is in a rotated shape that is part of a group rotated differently, which also might be part of another group with a diferent transformation. This allows us to load this Visio document:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/926Halloween_visio.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/926Halloween_visio_tn.jpg&quot; alt=&quot;Halloween in Visio&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;in Draw this way:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/302Halloween_draw.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/302Halloween_draw_tn.jpg&quot; alt=&quot;Halloween in Draw&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;You can see some graphic problems. The missing shapes are polylines that we will very soon correctly support. Nevertheless, this could be another one of my &amp;quot;we all love ODF, but ...&amp;quot; blogs, because some of the visual glitches are given by the fact that &lt;b&gt;OpenDocument Graphics (ODG)&lt;/b&gt; file-format is suboptimal for representing more complex drawings. One is not even able to specify fill-rules or rules of polygon clipping. Clerly, this SVG inside XHTML version, converted using the &lt;code&gt;vsd2xhtml&lt;/code&gt; tool, that is part of the &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;libvisio&lt;/code&gt;&lt;/a&gt; library, is much closer to the original:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/599Halloween_xhtml.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/599Halloween_xhtml_tn.jpg&quot; alt=&quot;Halloween - SVG in XHTML&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;So, a bottom line is that the project is well alive and kicking. We even tagged the second alpha release and the tarball is now what &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; master build is using. So, if you build your &lt;a href=&quot;http://www.libreoffice.org&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; yourself, you will be able to enjoy the fruits of the work or &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt;'s hands and &amp;mdash; why not &amp;mdash; even start to contribute to this cool and interesting project.&lt;/p&gt;&lt;p&gt;Stay tuned for more news soon ...&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-8853981521138259280?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 08 Jul 2011 17:38:57 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Sitting on the curb</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/06/22/795-sitting-on-the-curb</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/06/22/795-sitting-on-the-curb</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://img.figuiere.net/hub/2011/06/20110605-1P_img_010.jpg&quot;&gt;&lt;img src=&quot;http://img.figuiere.net/hub/2011/06/thumb_20110605-1P_img_010.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;On Commercial Dr, Vancouver during Italian day. Vancouver, BC - &lt;em&gt;June 5 2011&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;Taken on Kodak Ektar 100 w/ Mamiya C-220 TLR 105mm f3.5&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/hfiguiere/5859399850/&quot;&gt;flickr&lt;/a&gt; - &lt;a href=&quot;http://500px.com/photo/1015391&quot;&gt;500px&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Thu, 23 Jun 2011 05:38:07 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: Bounding Box of an SVG Elliptical Arc</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-230316808444797384</guid>
	<link>http://fridrich.blogspot.com/2011/06/bounding-box-of-svg-elliptical-arc.html</link>
	<description>&lt;p&gt;We all love ODF, the best and the most vendor-neutral file-format in the Universe and its surroundings. But for sure, we have some spots where we would prefer it to be somehow less cumbersome. My favourite spot is the need to compute the bounding box of the path element when one writes the &lt;code&gt;draw:path&lt;/code&gt; into an OpenDocument Graphics file. Without proper &lt;code&gt;svg:x&lt;/code&gt;, &lt;code&gt;svg:y&lt;/code&gt;, &lt;code&gt;svg:height&lt;/code&gt;, &lt;code&gt;svg:width&lt;/code&gt; and &lt;code&gt;svg:viewBox&lt;/code&gt; values the path will not be correctly placed.&lt;/p&gt;&lt;p&gt;Computing bounding boxes is not so complicated work when everything is a polygon (which is the case in the internal model of &lt;code&gt;basegfx&lt;/code&gt; module), but it becomes a bit more complicated if an application wants to generate paths including elliptical arcs.&lt;/p&gt;&lt;p&gt;I hit this problem about a year ago when I was working during &lt;a href=&quot;http://fridrich.blogspot.com/2010/06/hackweek-v-day-1.html&quot; target=&quot;_blank&quot;&gt;my hackweek&lt;/a&gt; on an improvement of &lt;a href=&quot;http://libwpg.sourceforge.net&quot; target=&quot;_blank&quot;&gt;&lt;code&gt;libwpg&lt;/code&gt;&lt;/a&gt;. I tried first to implement the bounding box of an elliptical arc the lazy hacker way, by googling for what other people did. And to my surprise, there is a huge vacuum in what concerns computation of a bounding box of the &amp;quot;&lt;code&gt;A&lt;/code&gt;&amp;quot; element of an SVG path. So, I settled for the lazy hacker's plan B: I abandoned the idea by saying I will handle it later, in the first moment, and by implementing a &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/filters/commit/?id=bcca44ddb4b046ce133896be1b47efcee70bd163&quot; target=&quot;_blank&quot;&gt;suboptimal solution&lt;/a&gt; in the second time. But, since &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh&lt;/a&gt; did some spectacular progress last week in handling elliptic arcs, my lazyness became the bottle-neck of the progress. So, it was time to remember those nice times when I was warming the benches of the University, dust off my knowledge of mathematical analysis and analytical algebra (or the lack thereof), and try to compute the bounding box of an elliptical arc myself.&lt;/p&gt;&lt;p&gt;And for the purpose of people that might be as lazy as me, I decided to fight my lazyness the second time to give Uncle Google the opportunity to spit out something meaningful, when someone asks it about &amp;quot;Bounding box of an elliptical arc&amp;quot;. Here are the notes:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Compute extremes using parametric description of ellipse&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Let us start from this parametric description of an ellipse:&lt;/p&gt;&lt;p&gt;&lt;code&gt;x(theta) = cx + rx*cos(theta)*cos(phi) - ry*sin(theta)*sin(phi)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;y(theta) = cy + rx*cos(theta)*sin(phi) + ry*sin(theta)*cos(phi)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;where &lt;code&gt;cx&lt;/code&gt; and &lt;code&gt;cy&lt;/code&gt; are the coordinates of the centre of the ellipse, &lt;code&gt;rx&lt;/code&gt; and &lt;code&gt;ry&lt;/code&gt; are the radii and &lt;code&gt;phi&lt;/code&gt; is the x-axis-rotation.&lt;/p&gt;&lt;p&gt;To compute the bounding box of the whole ellipse we need to find for which value of &lt;code&gt;theta&lt;/code&gt; the above mentioned functions reach the local extremes. It means where the first derivatives of &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; according to &lt;code&gt;theta&lt;/code&gt; are zero. We will get this two equations:&lt;/p&gt;&lt;p&gt;&lt;code&gt;0 = -rx*sin(theta)*cos(phi) - ry*cos(theta)*sin(phi)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;0 = -rx*sin(theta)*sin(phi) - ry*cos(theta)*cos(phi)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;which give us two solutions for &lt;code&gt;x&lt;/code&gt;:&lt;/p&gt;&lt;p&gt;&lt;code&gt;theta = -atan(ry*tan(phi)/rx)&lt;/code&gt; and &lt;code&gt;theta = M_PI -atan(ry*tan(phi)/rx)&lt;/code&gt;&lt;/p&gt;&lt;p&gt;and two solutions for &lt;code&gt;y&lt;/code&gt;:&lt;/p&gt;&lt;p&gt;&lt;code&gt;theta = atan(ry/(tan(phi)*rx))&lt;/code&gt; and &lt;code&gt;theta = M_PI + atan(ry/(tan(phi)*rx))&lt;/code&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Compute the center of the ellipse&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Since we know now the values of &lt;code&gt;theta&lt;/code&gt; describing the extremes of our ellipse, we can compute the &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt; values of the bounding box of the whole ellipse. Just to do that, we still need to know the coordinates of the center of the ellipse, &lt;code&gt;cx&lt;/code&gt; and &lt;code&gt;cy&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;The computation of the center of the ellipse is pretty well described in the &lt;a href=&quot;http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter&quot; target=&quot;_blank&quot;&gt;Appendix F.6.5&lt;/a&gt; of the &lt;a href=&quot;http://www.w3.org/TR/SVG/implnote.html&quot; target=&quot;_blank&quot;&gt;SVG standard&lt;/a&gt; and does not need to be reproduced here. Just note that for this we need the coordinates of the starting point of the arc that correspond to the end point of the previous path segment.&lt;/p&gt;&lt;b&gt;Determine the bounding box of the whole ellipse&lt;/b&gt;&lt;p&gt;Compute the &lt;code&gt;xmin&lt;/code&gt;, &lt;code&gt;xmax&lt;/code&gt;, &lt;code&gt;ymin&lt;/code&gt; and &lt;code&gt;ymax&lt;/code&gt; using the values of &lt;code&gt;theta&lt;/code&gt; for the local extremes and the newly computed &lt;code&gt;cx&lt;/code&gt; and &lt;code&gt;cy&lt;/code&gt; coordinates. Like this not only we will know the bounding box of the whole ellipse, but we will also know which value of &lt;code&gt;theta&lt;/code&gt; corresponds to maximum and which one to minimum. This knowledge will be later valuable for determining the tightest possible bounding box of a given elliptical arc.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Tightest possible bounding box&lt;/b&gt;&lt;/p&gt;&lt;p&gt;By calculation of the bounding box of the whole ellipse, we now know the rectangle that will contain the ellipse and thus our elliptical arc too. Nonetheless, this rectangle is too big for our arc. So, the next thing is to trim it down so that it becomes the tightest possible rectangle that will still contain the whole arc.&lt;/p&gt;&lt;p&gt;For this task, we will use the polar coordinates rather then the cartesian ones. The principle is that if any of the points corresponding to &lt;code&gt;xmin&lt;/code&gt;, &lt;code&gt;xmax&lt;/code&gt;, &lt;code&gt;ymin&lt;/code&gt; or &lt;code&gt;ymax&lt;/code&gt; of the whole ellipse, lie on the arc they will be be the extremes of the arc too. Nevertheless, if for instance the point &lt;code&gt;ymin&lt;/code&gt; does not lie on the arc, the new &lt;code&gt;ymin&lt;/code&gt; will be the minimum of the &lt;code&gt;y&lt;/code&gt; coordinates of the starting and ending points. In the same way, if the point &lt;code&gt;xmax&lt;/code&gt; does not lie on the arc, the new &lt;code&gt;xmax&lt;/code&gt; will be the maximum of the &lt;code&gt;x&lt;/code&gt; coordinates of the starting and ending points. Whether an extreme does or does not lie on our arc is something trivial to see once the arc is drawn, to determine it programatically will require some efforts.&lt;/p&gt;&lt;p&gt;First, we will compute the coordinates of the points where the whole ellipse touches the bounding box using the parametric description of the ellipse and the values of the &lt;code&gt;theta&lt;/code&gt; that we found out in the previous steps. And for determination whether they lie or not on our arc we will use their position in polar coordinates. We will thus need to compute the angles with the x-axis of the lines going through the center of the ellipse and our extreme points. In other terms, we will compute the angle between vector &lt;code&gt;(1,0)&lt;/code&gt; and vector &lt;code&gt;(x&lt;sub&gt;extreme&lt;/sub&gt;-cx, y&lt;sub&gt;extreme&lt;/sub&gt;-cy)&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;The formula for computing the angle between two vectors is known and mentioned &lt;i&gt;inter alia&lt;/i&gt; as &lt;a href=&quot;http://www.w3.org/TR/SVG/implnote.html#ArcConversionEndpointToCenter&quot; target=&quot;_blank&quot;&gt;formula F.6.5.4&lt;/a&gt; of the &lt;a href=&quot;http://www.w3.org/TR/SVG/implnote.html&quot; target=&quot;_blank&quot;&gt;SVG standard&lt;/a&gt;. Generally, the expression to calculate the angle between a vector &lt;code&gt;(ax,ay)&lt;/code&gt; and a vector &lt;code&gt;(bx,by)&lt;/code&gt; is:&lt;/p&gt;&lt;p&gt;&lt;code&gt;(ax * by &gt; ay * bx ? 1.0 : -1.0) * acos( (ax * bx) + (ay * by) / ( sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by) ) )&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;But since we already know that the first vector is &lt;code&gt;(1,0)&lt;/code&gt;, we can simplify it:&lt;/p&gt;&lt;p&gt;&lt;code&gt;(by &gt; 0.0 ? 1.0 : -1.0) * acos( bx / sqrt(bx * bx + by * by) )&lt;/code&gt;, which could be eventually simplified to &lt;code&gt;atan(by / bx)&lt;/code&gt;, but this expression has a potential division by zero and the code would have to handle those border situations in a special way.&lt;/p&gt;&lt;p&gt;Once we know the angles of the extremes, we still need to calculate the angles of the starting and the end points or our arc using exactly the same formula. So we get &lt;code&gt;angle1&lt;/code&gt; corresponding to our starting point and &lt;code&gt;angle2&lt;/code&gt; corresponding to the endpoint. It is necessary to normalize all angles so that they lie in the interval of &lt;code&gt;[0.0, 2.0*M_PI)&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;In case the &lt;code&gt;sweep&lt;/code&gt; flag is 0, the angles are decreasing when the ellipse is drawn. But, for the computation of bounding box the direction of rotation is irrelevant and only complicates the situation. So we swap the angles if the &lt;code&gt;sweep&lt;/code&gt; flag is not set. In this way, we can just check for the absence of the extreme points on our elliptical arc, rotating from &lt;code&gt;angle1&lt;/code&gt; to &lt;code&gt;angle2&lt;/code&gt;. Nevertheless, we have another difficulty with the fact that the angle of 0 radians is the same as the one of 2*M_PI radians. This passage through the 2*M_PI / 0 border is not very easy to handle directly. That is why we swap the points in case where &lt;code&gt;angle1 &gt; angle2&lt;/code&gt; and will not look in this case for absence of the extreme points on the arc, but for their presence on the complement arc that would close the ellipse.&lt;/p&gt;&lt;p&gt;And as my teachers used to say: &amp;quot;Grey is the theory, but green is the tree of life,&amp;quot; here is what it looks like in a plain C++:&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;&lt;code&gt;&lt;font color=&quot;0000ff&quot;&gt;&lt;strong&gt;#include &lt;font color=&quot;#008000&quot;&gt;&amp;lt;algorithm&amp;gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;0000ff&quot;&gt;&lt;strong&gt;#include &lt;font color=&quot;#008000&quot;&gt;&amp;lt;cmath&amp;gt;&lt;/font&gt;&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color=&quot;0000ff&quot;&gt;&lt;strong&gt;#ifndef M_PI&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;0000ff&quot;&gt;&lt;strong&gt;#define M_PI 3.14159265358979323846&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;0000ff&quot;&gt;&lt;strong&gt;#endif&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;inline&lt;/strong&gt; &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;bx&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;by&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;return&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;fmod&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;by&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt; ? &lt;font color=&quot;#FF0000&quot;&gt;1.0&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;1.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;acos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;bx&lt;/font&gt; / &lt;font color=&quot;#2040a0&quot;&gt;sqrt&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;bx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;bx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;by&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;by&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;, &lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;void&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;EllpArcBBox&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;, &lt;strong&gt;bool&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;largeArc&lt;/font&gt;, &lt;strong&gt;bool&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;sweep&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt;, &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;1.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;1.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;return&lt;/strong&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;const&lt;/strong&gt; &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;const&lt;/strong&gt; &lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt; /&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;cxprime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;cyprime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;ratio&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;/&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;/&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ratio&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ratio&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;return&lt;/strong&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sqrt&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ratio&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;factor&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;largeArc&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sweep&lt;/font&gt; ? &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;1.0&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;1.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sqrt&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;radicant&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;cxprime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;factor&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1prime&lt;/font&gt;/&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;cyprime&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;factor&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1prime&lt;/font&gt;/&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cxprime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cyprime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cxprime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cyprime&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;, &lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;, &lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;, &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt; &lt;strong&gt;else&lt;/strong&gt; &lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt; / &lt;font color=&quot;#FF0000&quot;&gt;2.0&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#FF0000&quot;&gt;3.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt;/&lt;font color=&quot;#FF0000&quot;&gt;2.0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;, &lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;, &lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;, &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#FF0000&quot;&gt;0&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;else&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;atan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;atan&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;/&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;std&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;swap&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt;,&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;std&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;swap&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;,&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;tmpY&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;tmpY&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tmpY&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;tmpY&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;atan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;/&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;atan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;/&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tan&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;M_PI&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;std&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;swap&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt;,&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;std&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;swap&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;,&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;tmpX&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tmpX&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tmpX&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;rx&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;cos&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;ry&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;phi&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;tmpX&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;double&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;getAngle&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cx&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;-&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;cy&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;sweep&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;std&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;swap&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;bool&lt;/strong&gt; &lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;strong&gt;false&lt;/strong&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;{&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;std&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;swap&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt;, &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;strong&gt;true&lt;/strong&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;txmax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;xmax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;x1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;x2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymin&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymin&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;strong&gt;if&lt;/strong&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;otherArc&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;&amp;amp;&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;!&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#2040a0&quot;&gt;angle1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;|&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;angle2&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;lt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;tymax&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;)&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#2040a0&quot;&gt;ymax&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;=&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;&amp;gt;&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt; ? &lt;font color=&quot;#2040a0&quot;&gt;y1&lt;/font&gt; &lt;font color=&quot;4444FF&quot;&gt;:&lt;/font&gt; &lt;font color=&quot;#2040a0&quot;&gt;y2&lt;/font&gt;&lt;font color=&quot;4444FF&quot;&gt;;&lt;/font&gt;&lt;br /&gt;&lt;font color=&quot;4444FF&quot;&gt;&lt;strong&gt;}&lt;/strong&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-230316808444797384?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 20 Jun 2011 22:51:15 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: On upgrading blogging software</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/06/18/794-on-upgrading-blogging-software</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/06/18/794-on-upgrading-blogging-software</link>
	<description>&lt;p&gt;After some time on &lt;a href=&quot;http://www.advogato.org/person/hub/&quot;&gt;Advogato&lt;/a&gt; which was social before the time in 2001, I decided in 2004 to host my blog. First on my own server on my DSL line, then later, before moving across the country, on a paid hosting. While I progressively relinquished the burden of administering the server itself, I still have kept full control of the blog software and the associated data. This is not something that just everyone can do as it has a set of implication from security to sysadmin.&lt;/p&gt;


&lt;p&gt;The software was at first &lt;em&gt;Nitlog&lt;/em&gt; written by software hacker extraordinaire &lt;a href=&quot;http://www.dcoombs.ca/nitlog/&quot;&gt;Dave Coombs&lt;/a&gt; when at Niti. It served its purpose and was minimalistic by design. No database but flat files to edit. Works great of you access to the file system to post. Later, I moved &lt;a href=&quot;http://fr.dotclear.org&quot;&gt;Dotclear&lt;/a&gt;, a French blogging platform, GPL licensed, written in PHP. This was around the time when &lt;a href=&quot;http://movabletype.org/&quot;&gt;Movable Type&lt;/a&gt; licensing changed and the early day of &lt;a href=&quot;http://wordpress.org&quot;&gt;Wordpress&lt;/a&gt;. The main motivation for moving to Dotclear was the built-in admin interface and a few other tidbits. I could have fixed Nitlog but lazyness prevailed as it seemed to be a rather large change given its design.&lt;/p&gt;


&lt;p&gt;Dotclear 2.0 has been out for quite a while now and I have been thinking about upgrading. It isn't until very recently that I actually gave it a try. While the migration process seems to be seamless, importing directly from the database after a fresh installation, there are a few issue I consider important that needed addressing. First it broke the URLs. Doctlear 2 changed the way the permalink URL are made and the choice isn't as flexible as in Wordpress. While I can understand the benefit of the change, and while it is also addressed using a plugin – plugin that would redirect old to new – it is a bit disappointing. But that's not all. The URL for the RSS feeds have also changed. I'm sure I could implement something to redirect, but also, with the previous change in the URL structure, the fee will have new IDs for the post, causing wreck and havoc on aggregators where all the articles in the feed will be considered as new. And that's not acceptable in my point of view.&lt;/p&gt;


&lt;p&gt;When I moved from Nitlog the URL were so different that I managed to keep the old one working with a clever check in the index and never migrated the articles to the new software. The RSS just didn't include these so everything was good.&lt;/p&gt;


&lt;p&gt;Now here are the options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;keep the current one. Since it is not broken no reason to fix it.&lt;/li&gt;
&lt;li&gt;move to Dotclear 2 and figure out how to fix the issues above.&lt;/li&gt;
&lt;li&gt;move to Wordpress as there seem to be a plugin for it, but I'm not sure how reliable it is. And I'm not sure if it won't introduce the same issues as Dotclear 2 despite the more flexible URL settings that Wordpress allow.&lt;/li&gt;
&lt;li&gt;move to something else like Movable Type. I once considered Movable Type for a different project as it had become GPL. Took Wordpress instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In any case, only the first solution involve not rewriting a theme.&lt;/p&gt;</description>
	<pubDate>Sat, 18 Jun 2011 19:44:44 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: LibreOffice Visio import filter - shaping up the baby</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-138586417359226376</guid>
	<link>http://fridrich.blogspot.com/2011/06/libreoffice-visio-import-filter-shaping.html</link>
	<description>&lt;p&gt;Maybe you were asking yourself what happened in the Google Summer of Code Visio Import filter project since &lt;a href=&quot;http://fridrich.blogspot.com/2011/06/libreoffice-visio-import-filter-first.html&quot;&gt;last week&lt;/a&gt;. But even if you did not ask yourself this necessary question, here is some update about the baby:&lt;/p&gt;&lt;p&gt;The focus this week was mainly on shaping the baby up. &lt;a href=&quot;http://www.derivativezero.com/blog/&quot;&gt;Eilidh&lt;/a&gt; added to her blog a photo and an &amp;quot;About&amp;quot; line and then she got exhausted and decided to rest by coding. And it is like this that she implemented polylines, ellipses and circular arcs.&lt;/p&gt;&lt;p&gt;And since the images speak louder then any words, enjoy the look:&lt;/p&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Microsoft Visio&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;b&gt;LibreOffice Draw&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/997OrgChart_vsd_page1.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/997OrgChart_vsd_page1_tn.jpg&quot; alt=&quot;Visio Page 1&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/805OrgChart_vsd_draw_page.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/805OrgChart_vsd_draw_page_tn.jpg&quot; alt=&quot;Draw Page 1&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/631OrgChart_vsd_page2.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/631OrgChart_vsd_page2_tn.jpg&quot; alt=&quot;Visio Page 2&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/954OrgChart_vsd_draw_page.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/954OrgChart_vsd_draw_page_tn.jpg&quot; alt=&quot;Draw Page 2&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/815OrgChart_vsd_page3.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/815OrgChart_vsd_page3_tn.jpg&quot; alt=&quot;Visio Page 3&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://www.picturestoragebin.com/images/433OrgChart_vsd_draw_page.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/433OrgChart_vsd_draw_page_tn.jpg&quot; alt=&quot;Draw Page 3&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;For those interested in some technical details, or even for those that desire to give hand, the code of the &lt;code&gt;&lt;b&gt;libvisio&lt;/b&gt;&lt;/code&gt; library is living &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. And as usual, for any question or encouragement, feel free to join our &lt;a href=&quot;irc://chat.freenode.net/libreoffice-dev&quot;&gt;#libreoffice-dev&lt;/a&gt; irc channel at &lt;a href=&quot;http://webchat.freenode.net/&quot; target=&quot;_blank&quot;&gt;irc.freenode.net&lt;/a&gt;, ping &lt;b&gt;&lt;code&gt;tibbylickle&lt;/code&gt;&lt;/b&gt; and pat her back, if she is not lost too deep inside her Emacs.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-138586417359226376?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 17 Jun 2011 17:25:30 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: Experimental Evolution installer for Windows</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-4151862975036615121</guid>
	<link>http://fridrich.blogspot.com/2010/05/experimental-evolution-installer-for.html</link>
	<description>&lt;p&gt;It is a pleasure, fun and honour to introduce to the distinguished audience our newest &lt;a href=&quot;http://projects.gnome.org/evolution/&quot;&gt;Evolution&lt;/a&gt; installer for Windows. You can find it for instance in &lt;a href=&quot;http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4/noarch/&quot;&gt; this repository&lt;/a&gt; of our wonderful &lt;a href=&quot;http://build.opensuse.org&quot;&gt;openSUSE Build Service&lt;/a&gt;. The installer is hiding in &lt;code&gt;/usr/i686-pc-mingw32/sys-root/mingw&lt;/code&gt; directory of the &lt;code&gt;mingw32-evolution-installer&lt;/code&gt; RPM. For people that don't know what to do with RPM packages on windows, &lt;a href=&quot;http://7-zip.org/&quot;&gt;7-zip&lt;/a&gt; does just a wonderful job at unpacking RPMs even if they use LZMA payload.&lt;/p&gt;&lt;p&gt;As you can see from following pictures,&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32InstallerWelcome.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32InstallerWelcome.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32InstallerFolders.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32InstallerFolders.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32InstallerShortCuts.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32InstallerShortCuts.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32InstallerRunning.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32InstallerRunning.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;the functionality offered by the installer is basic for instance. Nevertheless, it does the most important job which is to install Evolution on your windows box.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32InstallerLaunchEvo.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32InstallerLaunchEvo.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;On the first launch, Evolution will register itself as a mail client able to handle mailto protocol and it also registeres the necessary verbs to be able to become default mail client on Windows,&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32SPAD.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32SPAD.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;and on versions of Windows where the start menu Internet and E-mail links are supported, it can install its icon and open verb in that region:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32DefaultMailer.png&quot;&gt; &lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32DefaultMailer.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Apart of those technicalities, it can be used to read mail:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32Mail.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32Mail.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;to manage one's contacts and timetables, even to understand why one is feeling suddenly so hot:&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/EvoWin32CalendarWeather.png&quot;&gt;&lt;img src=&quot;http://projects.gnome.org/evolution/images/screenshots/win32/thumb_EvoWin32CalendarWeather.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Not to mention that evolution will in principle detect your timezone and even your &lt;a href=&quot;http://fridrich.blogspot.com/2010/03/isensnetwork-based-network-monitor-for.html&quot;&gt; online status&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The installer is for the development series of Evolution (2.31.x). It is possible to produce one for the &quot;stable&quot; (2.30.x) branch, but the quality of both branches on Windows is comparable and doing a &quot;stable&quot; installer would be slightly missleading for the user. Having said that, this version is quite usable although, I would not advise anybody to use it in mission-critical environment yet. But if you decide to adventure into this, it will be enriching endavour for all of us. The bugs can be filed in &lt;a href=&quot;http://bugzilla.gnome.org&quot;&gt;GNOME Bugzilla&lt;/a&gt; against evolution. Help us to make it better!&lt;/p&gt;&lt;p&gt;&lt;b&gt;OpenSUSE Build Service&lt;/b&gt;&lt;/p&gt;&lt;p&gt;What is really really really cool with this installer is that it is produced completely inside the &lt;a href=&quot;http://build.opensuse.org&quot;&gt;openSUSE Build Service&lt;/a&gt;, a wondeful tool, a once-in-a-lifetime innovation. All the binaries are cross-compiled from Linux and the installer is produced by a version of &lt;a href=&quot;http://nsis.sourceforge.net/&quot;&gt;Nullsoft Scriptable Install System&lt;/a&gt; running on Linux and producing Windows installers. The installer is automatically regenerated when the rebuild of Evolution is triggered by any event: change in dependencies, change in Evolution version, etc. It requires a minimum maintainance and is a good starting point for improving further. Since such improvement can now be an incremental one building on the top of the existing infrastructure.&lt;/p&gt;&lt;p&gt;I will never say it enough, but &lt;a href=&quot;http://build.opensuse.org&quot;&gt;openSUSE Build Service&lt;/a&gt; is one of the best invention on the earth since the &lt;i&gt;Butterbrot&lt;/i&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-4151862975036615121?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 16 Jun 2011 13:40:55 +0000</pubDate>
</item>
<item>
	<title>Martin Sevior: Making a difference</title>
	<guid>http://msevior.livejournal.com/30394.html</guid>
	<link>http://msevior.livejournal.com/30394.html</link>
	<description>Hi everyone,&lt;br /&gt;&lt;br /&gt;When writing free software we sometimes get caught up in all the stuff that doesn't work. All the things we need to fix to make our programs better. At least I do! So it is really nice to see that our efforts do generally work and can make a difference.&lt;br /&gt;&lt;br /&gt;Here is a great video of the OLPC XO's being used in remote Australia.&lt;br /&gt;&lt;br /&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://www.youtube.com/watch?v=cO-VNhgZLDw&quot;&gt;http://www.youtube.com/watch?v=cO-VNhgZLDw&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Congratulations to OLPC-Australia and the World-Wide effort that produced these transformational devices. These would not be possible without the Free-Software community and the many, many other like minded people who have donated their varied talents.</description>
	<pubDate>Wed, 15 Jun 2011 01:24:59 +0000</pubDate>
</item>
<item>
	<title>Fridrich Strba: LibreOffice Visio Import filter - first steps of a new baby</title>
	<guid>tag:blogger.com,1999:blog-13479614.post-3069577193086252752</guid>
	<link>http://fridrich.blogspot.com/2011/06/libreoffice-visio-import-filter-first.html</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://code.google.com/soc/&quot; target=&quot;_blank&quot;&gt;Google Summer of Code&lt;/a&gt; started some weeks ago and we have &lt;a href=&quot;http://www.google-melange.com/gsoc/org/show/google/gsoc2011/libreoffice&quot; target=&quot;_blank&quot;&gt;some nice projects&lt;/a&gt; at &lt;a href=&quot;http://www.libreoffice.org/&quot; target=&quot;_blank&quot;&gt;LibreOffice&lt;/a&gt; too.&lt;/p&gt;&lt;p&gt;I am having again this year the privilege to mentor a brilliant student &lt;a href=&quot;http://www.derivativezero.com/blog/&quot; target=&quot;_blank&quot;&gt;Eilidh McAdam&lt;/a&gt; working on a Microsoft Visio import filter. She got up to the speed very quickly to the point that she is now very intimate with any hexadecimal number of any width. And the first results of her diving into the binary world can speak for themselves.&lt;/p&gt;&lt;p&gt;This Visio document : &lt;a href=&quot;http://www.picturestoragebin.com/images/8664pixbyporkoudine_visio.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/8664pixbyporkoudine_visio_tn.jpg&quot; alt=&quot;Visio Document&quot; /&gt;&lt;/a&gt; can be currently imported into LibreOffice Draw: &lt;a href=&quot;http://www.picturestoragebin.com/images/8324pixbyporkoudine.png&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://www.picturestoragebin.com/images/8324pixbyporkoudine_tn.jpg&quot; alt=&quot;LibreOffice Draw document&quot; /&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For those that might be interested in such a detail as the source code of this endavour, the filter is developped as two elements, a shared library living &lt;a href=&quot;http://cgit.freedesktop.org/libreoffice/contrib/libvisio/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; and an import filter based on this library living in the LibreOffice's &lt;code&gt;writerperfect&lt;/code&gt; module.&lt;/p&gt;&lt;p&gt;For any question or encouragement, feel free to join our &lt;a href=&quot;irc://chat.freenode.net/libreoffice-dev&quot;&gt;#libreoffice-dev&lt;/a&gt; irc channel at &lt;a href=&quot;http://webchat.freenode.net/&quot; target=&quot;_blank&quot;&gt;irc.freenode.net&lt;/a&gt; and ping &lt;b&gt;&lt;code&gt;tibbylickle&lt;/code&gt;&lt;/b&gt; (for encouragements) or &lt;b&gt;&lt;code&gt;Fridrich&lt;/code&gt;&lt;/b&gt; (for blames).&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/13479614-3069577193086252752?l=fridrich.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 10 Jun 2011 15:35:16 +0000</pubDate>
</item>
<item>
	<title>Daniel d'Andrada: Plutocracy in the USA, Canada and UK</title>
	<guid>tag:blogger.com,1999:blog-17400079.post-5381018092318068187</guid>
	<link>http://danieldandrada.blogspot.com/2010/11/plutocracy-in-usa-canada-and-uk.html</link>
	<description>Watched Michael Moore's &quot;Capitalism: A Love Story&quot; and went searching on the net for those incredible CitiGroup memos he cites there. They talk about the Plutocracy in the USA, Canada and UK and the growing income inequalities in those countries. All from the point of view of equity investment.&amp;nbsp;They were not so easy to find as many source links have been removed over time.&lt;br /&gt;
&lt;br /&gt;
I've read the first one and skimmed through the second. Pretty interesting. Looks legit, but as with everything you find online, to be taken with a grain of salt:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.cps-news.com/wp-content/misc_pdfs/Citigroup_Plutonomy_Part_1_Oct162005.pdf&quot;&gt;Plutonomy: Buying Luxury, Explaining Global Imbalances&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.cps-news.com/wp-content/misc_pdfs/Citigroup_Plutonomy_Part_2_Mar52006.pdf&quot;&gt;Revisiting Plutonomy: The Rich Getting Richer&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;

Update (Jun 7 2011):
Got contacted by a law firm representing Citigroup asking for the removal of those PDFs from dandrader.com (my website) as I'm infringing their copyright by reproducing them without any authorization. Therefore I've removed the PDFs and updated the links above to point to other URLs that still publish those reports.

What's interesting is that this is a confirmation that those reports are indeed authentic.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/17400079-5381018092318068187?l=danieldandrada.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 07 Jun 2011 18:08:03 +0000</pubDate>
</item>
<item>
	<title>Tomas Frydrych: sleep(5) ltd</title>
	<guid>http://tthef.net/blog/?p=188</guid>
	<link>http://tthef.net/blog/?p=188</link>
	<description>&lt;p&gt;And so the adventure begins: &lt;a href=&quot;http://sleepfive.com&quot;&gt;sleep(5) ltd&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Wed, 01 Jun 2011 07:18:23 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: The Social Network</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/05/25/792-the-social-network</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/05/25/792-the-social-network</link>
	<description>&lt;p&gt;I finale watched &lt;a href=&quot;http://www.imdb.com/title/tt1285016/&quot;&gt;The Social Network&lt;/a&gt; aka &lt;em&gt;Facebook the movie&lt;/em&gt;.&lt;/p&gt;


&lt;p&gt;One would think that the biopic for Mark Zuckerberg would be in sorted on the &quot;uninteresting&quot; shelf, but it seems to be not. The writing (screenplay) is good, the direction is good, and Jesse Eisenberg is good to make me want to dislike him ; I felt the time passed quickly.&lt;/p&gt;


&lt;p&gt;The computer geek side is interesting: the treatment of the hacker parts is not unrealistic like most of the Hollywood or TV productions, and the computer screen are not fake -  KDE 3.x almost everywhere&lt;sup&gt;[&lt;a href=&quot;http://www.figuiere.net/pnote-792-1&quot; id=&quot;rev-pnote-792-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;A pleasant surprise.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.figuiere.net/rev-pnote-792-1&quot; id=&quot;pnote-792-1&quot;&gt;1&lt;/a&gt;] whether Mark Zuckerberg actually did use KDE or not is not the point&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 26 May 2011 05:16:29 +0000</pubDate>
</item>
<item>
	<title>Tomas Frydrych: Leaving Intel</title>
	<guid>http://tthef.net/blog/?p=182</guid>
	<link>http://tthef.net/blog/?p=182</link>
	<description>&lt;p&gt;Yesterday was my last working day at Intel, I am moving on.&lt;/p&gt;

&lt;p&gt;It all started with Moblin,  a great project with big aspirations, radical vision and huge potential to redefine the computing experience for the current decade. Though our aspirations were not to come to fruition, I take great pride in being part of that seminal effort, and, by extension, I take pride in the technologies our work inspired (notably the Gnome Shell). When Intel abandoned Moblin for MeeGo, it was only a question of time when Me Go too, for from the very start MeeGo failed to inspire me, to capture my imagination and to feed my dreams.&lt;/p&gt;

&lt;p&gt;What it comes down to: my idealistic A-type soul values adventure over status quo, challenge over safe harbour, freedom over process. As my fellow &lt;a href=&quot;http://www.bbc.co.uk/robertburns/works/poetical_inscription/&quot;&gt;travellers&lt;/a&gt; will know, there comes a point when one can no longer ignore the soul.&lt;/p&gt;

&lt;p&gt;What&amp;#8217;s next? A good question,  but one I am in no great hurry to answer. More than anything at this point I need time to think free of corporate constraints and the expressive limits of a slide deck presentation, I need a space to start dreaming again of something other than dreaming again.&lt;/p&gt;

&lt;p&gt;Adventure is never without a price; mine means leaving behind some truly great folk I have grown to know, trust and respect immensely over the last five and half years. My one consolation is that FOSS being what it is, I am not really going anywhere, and neither are they; it&amp;#8217;s just an email address that became defunct.&lt;/p&gt;

&lt;p&gt;P.S. I have tried to make sure that the defunct email will not disrupt the world-changing mailing list out there, but if I have forgotten about some low traffic list where nothing ever happens … I guess no real harm done &lt;img src=&quot;http://tthef.net/blog/wp-includes/images/smilies/icon_wink.gif&quot; alt=&quot;;-)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;</description>
	<pubDate>Sat, 14 May 2011 14:53:22 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: YouTube HTML5</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/05/05/791-youtube-html5</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/05/05/791-youtube-html5</link>
	<description>&lt;p&gt;I have a love and hate relationship with YouTube. While the idea is awesome and clearly a huge success, so much that it end up in pop culture, I always hated it because of Flash. I hate Flash, as I believe it does not belong to the openness nature of the web. I got called names for that, including &quot;Apple fanboy&quot;. Seriously? I hated Flash before even the iPhone and Steve Jobs just happen to agree with me. ;-)&lt;/p&gt;


&lt;p&gt;Now, YouTube supports, in an experimental way, HTML5 video. With Google backing &lt;a href=&quot;http://www.webmproject.org/&quot;&gt;WebM&lt;/a&gt;, most of the &lt;a href=&quot;http://youtube-global.blogspot.com/2011/04/mmm-mmm-good-youtube-videos-now-served.html&quot;&gt;YouTube content is now encoded in WebM&lt;/a&gt; like they have been H264 for a while&lt;sup&gt;[&lt;a href=&quot;http://www.figuiere.net/pnote-791-1&quot; id=&quot;rev-pnote-791-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;. To make things more awesome and useful, my favorite browser, Firefox 4, supports WebM natively.&lt;/p&gt;


&lt;p&gt;Just visit the &lt;a href=&quot;http://www.youtube.com/html5&quot;&gt;Youtube HTML5 opt-in page&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;While so far I refused to link to Youtube, some may have noticed I starting to doing so; and only when I can view the video myself. You can also embed using IFRAME&lt;sup&gt;[&lt;a href=&quot;http://www.figuiere.net/pnote-791-2&quot; id=&quot;rev-pnote-791-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;.&lt;/p&gt;


&lt;p&gt;But this is not without hurdle. The experimental HTML5 still have some very rough edges. There is no way to know if it is enabled without visiting the page. Sometime it deactivate itself, sometime the video is just not available in HTML5 because there are ads. Gotcha. Ads. Anyway. In neither case you know why there is a placeholder (or why it loads Flash). These are probably easily fixable by YouTube: just add a little indicator saying HTML5 and a message when it has to fallback on Flash.&lt;/p&gt;


&lt;p&gt;As an alternative, vimeo supports HTML5 natively for quite a while but they wrongly assume HTML5 is H264 only. Does not work in Firefox. Bummer. They suck.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.figuiere.net/rev-pnote-791-1&quot; id=&quot;pnote-791-1&quot;&gt;1&lt;/a&gt;] which is what the apps for both Android and iOS use&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.figuiere.net/rev-pnote-791-2&quot; id=&quot;pnote-791-2&quot;&gt;2&lt;/a&gt;] but I'm not sure of all the privacy implications&lt;/p&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 05 May 2011 07:40:25 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: Google Summer of Code 2011 and AbiWord</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-2897804305202532750</guid>
	<link>http://kkpradeeban.blogspot.com/2011/04/google-summer-of-code-2011-and-abiword.html</link>
	<description>&lt;div&gt;Being a mentor for Google Summer of Code is yet another interesting experience like being a student. It was a nice memory going through all the 23 excellent proposals for AbiWord and reviewing them as a mentor, during the night at our annual trip at Kandalama. This year, AbiWord has got more smarter applications. GSoC deduplication meeting was something remarkable, where the organization admins (or a representative/mentor from the organizations) resolve the duplicate students issue in the presence of the Google Summer of Code admins over #gsoc at irc.freenode.org. Many students were also seen in the irc meeting to check whether they have been accepted for multiple organizations, and in that case, where are they going to work for their summer. &lt;a href=&quot;http://socghop.appspot.com/gsoc/projects/list/google/gsoc2011&quot;&gt;Selected students&lt;/a&gt; were announced by Google on 1900UTC, 25th of April, a few days after the dedup meeting.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The list of accepted students, along with their project proposals as well as their mentors are given below.&lt;/div&gt;&lt;div&gt;Fabiano Fidencio - &quot;Get our Mac Port up to speed&quot; - Mentored by Marc Maurer&lt;br /&gt;Volodymyr Rudyj - &quot;Implement an ePub filter&quot; - Mentored by Xun Sun&lt;br /&gt;&lt;a href=&quot;http://chenxiajian.blogspot.com/&quot;&gt;Chen Xiajian&lt;/a&gt; - &quot;&lt;a href=&quot;http://socghop.appspot.com/gsoc/project/google/gsoc2011/chenxiajian1985/26002&quot;&gt;Implement Hyphernation&lt;/a&gt;&quot; - Mentored by Kathiravelu Pradeeban&lt;br /&gt;Aseem Sharma - &quot;Port AbiWord to Gtk-3.0&quot; - Mentored by Jean Bréfort&lt;br /&gt;Andrei Sfrenț - &quot;Reduce flickering&quot; - Mentored by Martin Sevior&lt;/div&gt;&lt;div&gt;&lt;br /&gt;An important factor to notice is that, since 2006, AbiWord has  successfully been participated in all the Google Summer of Codes (2006,  2007, 2008, 2009, 2010, and 2011). Hence this becomes the 6th  consecutive year for AbiWord to participate in Google Summer of Code! I wish the 5 students who got selected a great summer of code with AbiWord, and I hope they will continue to be a long term contributors even after their summer. At the same time, I should also note that, we had to miss a few nice students as we have only 5 slots. Hope they will still continue with their development on AbiWord.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-2897804305202532750?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 01 May 2011 00:50:58 +0000</pubDate>
</item>
<item>
	<title>Alan Horkan: Developing MComix. Part 1: A rose by any other name...</title>
	<guid>http://alanhorkan.livejournal.com/58941.html</guid>
	<link>http://www.advogato.org/person/AlanHorkan/diary.html?start=365</link>
	<description>Comix is a comic and image viewer program written using Python and GTK. I was interested in making a few changes to the project. I am getting back into programming, learning a more about PyGTK and hopefully making some improvements the program will fit better on a small screen netbook. Unfortunately Comix is unmaintained, the developer of the project seems to be unavailable and has not made any updates since 2009. (You can discover this for yourself by checking the &lt;a href=&quot;http://comix.sourceforge.net/&quot; rel=&quot;nofollow&quot;&gt;Comix website&lt;/a&gt; particularly by checking the &lt;a href=&quot;http://sourceforge.net/projects/comix/&quot; rel=&quot;nofollow&quot;&gt;Sourceforge page for Comix&lt;/a&gt; and taking a look at the last date on the Changelog, and various reports in the bug tracker. It may still be possible to get in contact with him but the project is not active.) &lt;br /&gt;&lt;br /&gt;I was pleased to discover &lt;a href=&quot;http://mcomix.sourceforge.net/&quot; rel=&quot;nofollow&quot;&gt;MComix&lt;/a&gt; a fork of Comix, continuing on from &lt;i&gt;Comix version 4.0.4&lt;/i&gt;. It isn't clear what the M in MComix stands for but from the picture in the about dialog I think &quot;Monkey Comix&quot; is a fairly safe guess. &lt;br /&gt;(Later I also discovered another fork of &lt;a href=&quot;https://github.com/HoverHell/Comix&quot; rel=&quot;nofollow&quot;&gt;Comix by HellHover&lt;/a&gt; which incorporates many of the patches submitted to Comix. It is more like a spork than a fork, as it keeps close to the original.) &lt;br /&gt;&lt;br /&gt;The attitude and prompt reponse from the MComix developers was encouraging so I got to work putting together a few changes and sending in a patch (after a discussion clarifying that MComix is licensed under the GNU GPL version 2). &lt;br /&gt;Freedom to change the source code and even fork the project is a great power to have but it comes with responsibility. Getting others to help is not easy, you want people to submit code, help with translations, or get a project packaged nicely for different operating systems, and generally help with the work of maintaining a project, so even though forking is possible it is not something you want to do unless absolutely necessary. Knowing it would take some time and effort to make changes it is a great relief to know there is a good chance others will accept the change help maintain it. Putting a lot of work into a patch and having it go to waste, is a big disappointment and severly discourages anyone from contributing to a project. &lt;br /&gt;&lt;br /&gt;The patches took less time to write and test than the email explaining the rationale for the changes. Developers often like to do things their own way, and a without a proper explanation, patches might not be accepted. As a fork of Comix I was optimistic the developers would be more accepting of change but I wasn't going to take any chances. &lt;br /&gt;&lt;br /&gt;The first - and to my mind most important - change was relatively simple but something I would strongly recommend to any program, especially a fork: separate out the name of the program. I set a constant and called it &quot;APPNAME&quot; and replaced the word MComix, so that if the name ever needs to be changed again or even changed back to Comix it can be done with only a few small changes. &lt;br /&gt;The long and winding history of Mosiac, Netscape, Mozilla, m/b, Phoenix, Firebird, Firefox, Iceweasel, is a particularly extreme example of the many name changes a project can go through. If someone doesn't like the name the can easily change it without needing to fork the project. Making it a little bit easier for others to customize and fork the code gives them one less reason why they would need to, and they can continue to pool their efforts on the things they do agree on. &lt;br /&gt;&lt;br /&gt;The patch also contained changes to help with internationalisation (i18n) and localisation (l10n). &lt;br /&gt;There was also a small change to the command line arguments.&lt;br /&gt;&lt;br /&gt;When the patch was accepted I was very satisfied and confident the developers were the kind of people I would enjoy working with further. Answers to a few other questions in my email confirmed our interests were different but mutually beneficial. Straight away I was thinking about the next changes I might make.</description>
	<pubDate>Fri, 29 Apr 2011 18:05:23 +0000</pubDate>
</item>
<item>
	<title>Hubert Figuiere: Go vote !</title>
	<guid>http://www.figuiere.net/hub/blog/?2011/04/27/790-go-vote</guid>
	<link>http://www.figuiere.net/hub/blog/?2011/04/27/790-go-vote</link>
	<description>&lt;p&gt;If you are Canadian citizen and haven't voted in the advance polls, please do so on May 2nd. And if you are still undecided, just remember that this election is happening because the government that was elected last time was found in contempt of Parliament twice, not releasing information to allow Parliament to make informed decisions, and misleading Parliament.&lt;/p&gt;


&lt;p&gt;Also remember that some countries don't even have a democratic process, and either have no voting, or rigged election with a single candidate.&lt;/p&gt;


&lt;p&gt;Last but not least if you don't like the voting system, make sure you vote for the one would be more inclined to propose a reform. I personally have a few ideas in mind on how to improve it. It just not something that can be done in a day.&lt;/p&gt;</description>
	<pubDate>Wed, 27 Apr 2011 21:23:42 +0000</pubDate>
</item>
<item>
	<title>Kathiravelu Pradeeban: GSoC - Firm Pencils Down Date</title>
	<guid>tag:blogger.com,1999:blog-1478030848346376035.post-5553444815248375335</guid>
	<link>http://kkpradeeban.blogspot.com/2009/08/gsoc-firm-pencils-down-date.html</link>
	<description>&lt;div&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_ycrZUkY9meM/So1IT2TgJPI/AAAAAAAAATI/CudMiBW3-84/s1600-h/Win32Arab.png&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5372029436354897138&quot; src=&quot;http://3.bp.blogspot.com/_ycrZUkY9meM/So1IT2TgJPI/AAAAAAAAATI/CudMiBW3-84/s400/Win32Arab.png&quot; /&gt;&lt;/a&gt;Today is the firm pencils down date, and I just completed the evaluations. Arabic, Tamil, and Croatian were used in testing. Arabic testing was really cool, which pointed me the bugs, being a unicode only - BiDi text (Arabic/English). Of course, we will continue as committors to Abiword, working with our projects.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The student - mentor map for Abiword can be found &lt;a href=&quot;http://socghop.appspot.com/org/home/google/gsoc2009/abiword&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;My SVN branch can be found &lt;a href=&quot;http://svn.abisource.com/abiword/branches/gsoc2009unicode/&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;My important commits are listed &lt;a href=&quot;http://kkpradeeban.blogspot.com/search/label/commits&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;My Student Project Page in &lt;a href=&quot;http://socghop.appspot.com/student_project/show/google/gsoc2009/abiword/t124021532377&quot;&gt;Google&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://bugzilla.abisource.com/show_bug.cgi?id=10616&quot;&gt;Bug 10616&lt;/a&gt;, &lt;a href=&quot;http://bugzilla.abisource.com/show_bug.cgi?id=1625&quot;&gt;Bug 1625&lt;/a&gt;, and some more are fixed now, in my branch.&lt;/div&gt;&lt;div&gt;Most of &lt;a href=&quot;http://tinyurl.com/abiwin32unicode&quot;&gt;these&lt;/a&gt; bugs will be fixed after the merge of the branch.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/1478030848346376035-5553444815248375335?l=kkpradeeban.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 17 Apr 2011 14:19:26 +0000</pubDate>
</item>

</channel>
</rss>

