<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="html">development</title>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david" />
<link rel="self" type="application/atom+xml" href="http://www.translate.org.za/blogs/david/archives/cat_4/index-atom.xml" />
<updated>2007-05-17T17:59:38+02:00</updated>
<author>
<name>David Fraser</name>
<uri>http://www.translate.org.za/blogs/david</uri>
</author>
<id>http://www.translate.org.za/blogs/david/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.3 RC5">NanoBlogger</generator>
<entry>
<title type="html">Plugging Skype and Pidgin together</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2007/05/17/T12_22_04/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2007/05/17/T12_22_04/index.html</id>
<published>2007-05-17T12:22:04+02:00</published>
<updated>2007-05-17T12:22:04+02:00</updated>
<category term="tools" />
<category term="development" />
<category term="ideas" />
<category term="opensource" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">After thinking about 
<a href="http://www.translate.org.za/blogs/david/archives/2007/05/14/T22_25_24/index.html">de-nuctifying the world</a>I've started to investigate creating a 
<a href="http://pidgin.im">Pidgin</a>(formerly 
<a href="http://gaim.sourceforge.net/">Gaim</a>) plugin to control 
<a href="http://www.skype.com">Skype</a>. This means you're still using a closed network, but from an open program, which makes migrating easier (and allows people to try multiple networks from the same interface). 
<br />
<br />The 
<a href="https://developer.skype.com/Docs/ApiDoc/src">Skype API docs</a>are pretty good and it looks like the API can support at least controlling status, sending and receiving text messages, and making and receiving phone calls. So in principle a Skype plugin for Pidgin is a possibility. 
<br />
<br />There are a few docs on writing libpurple plugins for Pidgin but less comprehensively - the 
<a href="http://developer.pidgin.im/wiki/siege">author</a>of the Sametime plugin or the guy working on a 
<a href="http://developer.pidgin.im/wiki/MySpaceIM">MySpaceIM plugin</a>probably know exactly how it works (the MySpaceIM plugin is a Google Summer of Code project that fits in with my idea very nicely). There is a C Plugin HOWTO in the source code which should get things started. Some ideas in the 
<a href="http://trac.adiumx.com/ticket/247">Adium Skype plugin bug</a>as well. 
<br />
<br />On the way I read 
<a href="http://www.secdev.org/conf/skype_BHEU06.handout.pdf">Silver Needle in the Skype</a>which is an article on reverse-engineering Skype and using it - very interesting tech reading... but a shame they haven't made the code available 
<br />
<br />Well since it's 8 days till we leave Cape Town and head to Japan I'm not planning to actually 
<i>do</i>anything about this, but thought I'd write it up so I don't lose the links... 
<br />
<br />PS This blog doesn't currently have a comment mechanism so email comments are welcome to davidf 
<i>at</i>sjsoft 
<i>dot</i>com.</div>
</content>
</entry>
<entry>
<title type="html">Pootle and Translate Toolkit Development 2006-06-13</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2006/06/13/T09_49_26/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2006/06/13/T09_49_26/index.html</id>
<published>2006-06-13T09:49:26+02:00</published>
<updated>2006-06-13T09:49:26+02:00</updated>
<category term="tools" />
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">There's been lots of discussion recently about Pootle on the debian lists, the direction it should take, whether to use a database to store translations, etc... It may be a nice idea to add a database as one of the backend options but keeping with handling the complexity of translation files has been important. Seems like a good consensus to this effect is emerging; it's nice to have more interest in the project. 
<br />
<br />I've tried to keep coding rather than get too drawn into the discussion, and this is what I've been up to the last week: 
<br />
<br />
<b>Pootle:</b>Mostly ongoing architecture work, feels like we're heading towards a good structure... 
<ul>
<li>Wrote up discussion on 
<a href="http://translate.sourceforge.net/wiki/pootle/metadata">putting metadata into a relational database</a></li>
<li>Base class migration work on the Pootle-locking-branch: made pootleunit and pootlefile encapsulate a pounit and pofile respectively rather than inheriting from them. This will make it possible to use other storage classes (although there is still more cleaning up needed where we use PO-specific methods).</li>
<li>Participated (minimally) in the debian discussions on direction of Pootle and using databases</li>
<li>Fixing some minor bugs in the webserver etc</li>
</ul>
<br />
<br />
<b>Translate Toolkit:</b>Focused on escaping being correct and using the base classes 
<ul>
<li>Sorted out escaping in dtds - it doesn't exist. So we will no longer support \' or \n having a special meaning in dtd files, being translated to \n in a PO file etc</li>
<li>Fixed various failing tests for 0.9 (including fixing some modifications we were doing to the minidom XML library)</li>
<li>Added some tests for dtd quoting to HEAD - currently we allow opening a quote again after it is shut (&lt;!ENTITY name "first part""second part"&gt;) which is invalid according to the spec - just for correctness, haven't hit any errors here</li>
<li>Making properties to PO conversion use base class API more, sorting out escaping there</li>
<li>Discussion with Axel from Mozilla - for 0.9 the Mozilla .properties files will be output in proper UTF-8, not with \uNNNN escaping (although that will still be understood as input. See 
<a href="http://bugs.wordforge.org/show_bug.cgi?id==114">bug 114</a></li>
<li>Made dtd classes inherit from base classes - could be made cleaner, but at least the API is implemented now</li>
</ul></div>
</content>
</entry>
<entry>
<title type="html">Sourceforge CVS woes and Pootle templatisation</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2006/04/05/T09_34_10/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2006/04/05/T09_34_10/index.html</id>
<published>2006-04-05T09:34:10+02:00</published>
<updated>2006-04-05T09:34:10+02:00</updated>
<category term="tools" />
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">This latest Sourceforge CVS outage has been most unfortunate. We tried to do a bug day aroud the one the week before, which was also unfortunate... Now for almost a week we haven't had any CVS access, and we had planned a release in that time of Pootle and the translate toolkit. 
<br />
<br />Good thing I had a script getting the CVS tarballs as we could set that up as an alternate (read-only) root. I then set up a different directory I used off that root and maintained a queue of patches... which I applied this morning as follows: 
<br />
<br />
<code>for f in `ls offline-patches/*.patch -t -r` do patch -p0 &lt; $f echo $f for g in `lsdiff $f` do grep `basename "$g"` `dirname "$g"`/CVS/Entries || cvs add $g done cvs-commit `lsdiff $f` done</code>
<br />
<br />I've now basically completed converting 
<a href="http://translate.sourceforge.net/wiki/pootle/">Pootle</a>to work using 
<a href="http://kid.lesscode.org/">Kid templates</a>which makes the code a lot cleaner (was using an old object-based HTML construction set). 
<br />
<br />A few things to sort out (spell-checking system), but it mostly works beautifully. The UI is exactly the same as before, but we should now be able to improve it without messing around with the Python code. 
<br />
<br />This is all on the Pootle-kid-conversion branch, and you'll need at least version 0.7.6 of 
<a href="http://jtoolkit.sourceforge.net">jToolkit</a>to run it. Other requirements have increased - 
<a href="http://kid.lesscode.org/">Kid</a>requires 
<a href="http://effbot.org/downloads/#elementtree">ElementTree</a>too. This is now documented in the 
<a href="http://translate.sourceforge.net/wiki/pootleadmin">pootleadmin</a>page on the wiki. 
<br />
<br />I've been wanting to get this going for ages, so it's nice to finally have it done.</div>
</content>
</entry>
<entry>
<title type="html">Translate Toolkit 0.8 is out</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2006/02/20/T19_33_50/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2006/02/20/T19_33_50/index.html</id>
<published>2006-02-20T19:33:50+02:00</published>
<updated>2006-02-20T19:33:50+02:00</updated>
<category term="tools" />
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Something I have been promising for many months has finally happened... We've been going backwards and forwards with so-called "release candidates" for 0.8 that were really betas or new versions, I managed eight! 
<br />
<br />The combined effect of this and doing the last release candidate when Pavel was too busy with OOo 2.0.2 is that nobody's complained about the last one. 
<br />
<br />But we did have a bug day, add lots of tests and fix lots of bugs. There's a new branch for the 0.8 series if any bug fixes are needed, so please report if you find any problems. 
<br />
<br />New work on the HEAD branch will focus on the wordforge project. 
<br />
<br />This is just a quick announcement for those interested as we've got another power failure - the Western Cape is having fun with those at the moment 
<img src="http://www.translate.org.za/blogs/david/moods/smilies/smiley.gif" alt=":-)" /></div>
</content>
</entry>
<entry>
<title type="html">Jingle builds of Psi and Kopete for Fedora Core 4</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2006/01/27/T09_06_04/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2006/01/27/T09_06_04/index.html</id>
<published>2006-01-27T09:06:04+02:00</published>
<updated>2006-01-27T09:06:04+02:00</updated>
<category term="openoffice" />
<category term="development" />
<category term="opensource" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Was excited around Christmas to see 
<a href="http://www.jabber.org/press/2005-12-15.shtml">the Jingle signalling protocol</a>for Voice over IP through Jabber, which was jointly authored by Google and JSF people and is used by 
<a href="http://talk.google.com/">Google Talk</a>. 
<br />
<br />Google also released an open source library for doing Jingle called 
<a href="http://googletalk.blogspot.com/2005/12/what-is-libjingle.html">libjingle</a>This makes it even easier for all the free software instance messaging clients to get the spec implemented quickly, and they all seem to have started doing that. Now that Google Talk has also turned on 
<a href="http://googletalk.blogspot.com/2006/01/xmpp-federation.html">XMPP Federation</a>, this looks like a blast for open protocols to win the day... 
<br />
<br />But when I looked at the roadmaps of 
<a href="http://gaim.sourceforge.net">Gaim</a>and 
<a href="http://psi-im.org/">Psi</a>, it became clear that although implementations are there, it'll take a while for these to reach general release. 
<br />
<br />Finally got round to trying to build some for myself, and found that they actually seem to work quite well (at least on my local network :-)). 
<br />
<br />
<a href="http://psi-im.org/wiki/Jingle_branch">Psi's jingle branch</a>built fairly easily once I had the right dependencies etc. 
<br />
<br />I couldn't find instructions on building Gaim with Jingle support, it seems like they are still working on integrating it (in the 
<a href="http://gaim-vv.sf.net">Gaim-VV</a>project), and I liked using Gaim because I can do IRC, Jabber etc all from the same client... 
<br />
<br />So I found 
<a href="http://kopete.kde.org">Kopete</a>which is similarly functional and has 
<a href="http://wiki.kde.org/tiki-index.php?page=Kopete+Jabber+Jingle">Jingle support</a>in their development branch. 
<br />
<br />Building this as an rpm took more work because on Fedora at least, its part of kdenetwork which is fairly big. Eventually got it working after learning a fair bit about spec files... (rant: lots of "HOWTO" documentation, not enough reference documentation...) 
<br />
<br />The resulting RPMS, SRPMS and specfiles are all at 
<a href="http://davidf.sjsoft.com/files/jingle/">http://davidf.sjsoft.com/files/jingle/</a>... of course I should create a proper package repository but that can wait for another day...</div>
</content>
</entry>
<entry>
<title type="html">Session Saving</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2005/12/05/T17_33_27/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2005/12/05/T17_33_27/index.html</id>
<published>2005-12-05T17:33:27+02:00</published>
<updated>2005-12-05T17:33:27+02:00</updated>
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<a href="https://addons.mozilla.org/extensions/moreinfo.php?id=436">SessionSaver</a>is the most useful extension I know of for Firefox, and it's surprising it doesn't have a real home - it seems it gets passed from person to person to fix things up for different releases. 
<br />
<br />Basically it records the set of windows and tabs you have open in Firefox (including the history etc) so that if you quit or the browser crashes, they can be restored on startup (you can also save named sessions and switch between them). (It stores this in prefs.js which is arguably not the best for performance but seems to work fine without corruption). 
<br />
<br />Now, I just crashed my X server for some inexplicable reason. Which led me to think again to myself, 
<i>I wish I had a SessionSaver for Konsole</i>. I tend to use both Firefox and Konsole as task lists - web pages I must look at / process, shell operations I'm busy doing. 
<br />
<br />A long time ago I coded up a Python program to periodically dump the different tabs open in Konsole along with the processes running in them, current directories and open files. The idea being you can run this in a cron job and at least be able to see what was happening if Konsole crashes rather than losing track. 
<br />
<br />I've now fixed this up and got it running again. It could do with improvement but it definitely counts as helpful. The file is at 
<a href="http://davidf.sjsoft.com/files/konsolesessions.py">http://davidf.sjsoft.com/files/konsolesessions.py</a>and it gets run like this in a cron job: 
<br />
<br />
<pre>
  export DISPLAY=:0.0
  su username -c "python2.4 -m konsolesessions --html --output" 2&gt;&amp;1 | tee -a /tmp/konsole.log
</pre>
<br />
<br />This then produces an index of konsole sessions in /home/username/konsolelog/index.html, each of which has its own html file like this: 
<br />
<br />
<p>Konsole session at Mon Dec 5 16:47:02 2005</p>
<p>
<b>
<u>Konsole 32187: 2 sessions</u>
</b>
</p>
<p>
<b>konsolesessions</b>
</p>
<ul>
<li>
<span title='process 32188' class='cmdline'>/bin/bash</span>
<span class='uid'>davidf</span>in 
<span class='cwd'>/usr/lib/python2.4/site-packages</span></li>
<ul>
<li>
<span title='process 700' class='cmdline'>python -m konsolesessions --html --output</span>
<span class='uid'>davidf</span>in 
<span class='cwd'>/usr/lib/python2.4/site-packages</span></li>
</ul>
</ul>
<p>
<b>konsole</b>
</p>
<ul>
<li>
<span title='process 32350' class='cmdline'>su -</span>
<span class='uid'>davidf</span>in 
<span class='cwd'></span></li>
<ul>
<li>
<span title='process 32388' class='cmdline'>-bash</span>
<span class='uid'>root</span>in 
<span class='cwd'></span></li>
</ul>
</ul>
<ul>
<li>
<span title='process 31848' class='cmdline'>vim /tmp/nb_entry31802.txt</span>
<span class='uid'>davidf</span>in 
<span class='cwd'>/home/davidf</span>editing 
<ul>
<li class='editfile' title='/tmp/.nb_entry31802.txt.swp'>/tmp/nb_entry31802.txt</li>
</ul></li>
</ul></div>
</content>
</entry>
<entry>
<title type="html">Qemu and Qvm86 rpms for Fedora Core 4</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2005/10/26/T12_16_09/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2005/10/26/T12_16_09/index.html</id>
<published>2005-10-26T12:16:09+02:00</published>
<updated>2005-10-26T12:16:09+02:00</updated>
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Wanting to run virtual machines on my Linux machine, I decided to hunt for a 
<a href="http://fabrice.bellard.free.fr/qemu/">QEMU</a>rpm. I found this nice page that explains 
<a href="http://fedoranews.org/tchung/qemu/">how to build QEMU rpms for Fedora Core</a>. However he uses 
<a href="http://fabrice.bellard.free.fr/qemu/qemu-accel.html">the kqemu accelerator</a>which is 
<a href="http://fabrice.bellard.free.fr/qemu/license.html">not open source</a>and I would rather use 
<a href="http://savannah.nongnu.org/projects/qvm86/">qvm86</a>which is. 
<br />
<br />So I patched the spec file so it now builds qvm86. 
<a href="http://davidf.sjsoft.com/files/qemu/">QEMU and qvm86 rpms, source rpms and spec file here</a>. The kernel module for qvm86 is built for my 
<a href="http://ccrma.stanford.edu/planetccrma/software/">CCRMA kernel</a>so you may want to rebuild the source rpm... for which you will need compat-gcc-32.</div>
</content>
</entry>
<entry>
<title type="html">PyLucene and Java to Python Doc hacking</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2005/02/11/T15_26_27/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2005/02/11/T15_26_27/index.html</id>
<published>2005-02-11T15:26:27+02:00</published>
<updated>2005-02-11T15:26:27+02:00</updated>
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Have been playing around with 
<a href="http://pylucene.osafoundation.org/">PyLucene</a>which is a native-compiled Python version of 
<a href="http://jakarta.apache.org/lucene">Lucene</a>, a Java text indexing and searching package. 
<br />
<br />It's an impressive engineering feat - basically compile Lucene to native objects using GCJ and then use SWIG to produce Python bindings - given how simply it works. 
<br />
<br />Was quite quick to get up and running, and have started improving search in Pootle using it. The main slowdown was documentation - you have to read the 
<a href="http://jakarta.apache.org/lucene/docs/api/index.html">Lucene Javadoc</a>, and the SWIG-generated Python classes don't have any documentation or info about their own parameters directly. 
<br />
<br />So I hacked together some code that parses the Java files, strips out the method declarations and javadoc comments, and then tries to insert them as docstrings into the Python files. More info in the 
<a href="http://lists.osafoundation.org/pipermail/pylucene-dev/2005-February/000468.html">'Simple automated docs'</a>message I posted to the list. Andi, the original author, was planning to add docs before the 1.0 release, hopefully these will help people until then. 
<br />
<br />Anyway, now I can carry on using the indexing instead of hacking at it 
<img src="http://www.translate.org.za/blogs/david/moods/smilies/smiley.gif" alt=":-)" /></div>
</content>
</entry>
<entry>
<title type="html">Pootle ideas</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2005/01/13/T10_39_23/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2005/01/13/T10_39_23/index.html</id>
<published>2005-01-13T10:39:23+02:00</published>
<updated>2005-01-13T10:39:23+02:00</updated>
<category term="tools" />
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Have managed to fix up the 
<a href="http://pootle.wordforge.org">Pootle</a>registration process, and set up a 
<a href="http://lists.sourceforge.net/lists/listinfo/translate-pootle">Pootle mailing list</a>for any discussion. 
<br />
<br />Also found that Pootle was being Spidered by search engines, so added a 
<a href="http://www.robotstxt.org/wc/exclusion.html">robots.txt</a>file as that was placing a lot of load on the server. 
<br />
<br />Now the 
<a href="http://cvs.sourceforge.net/viewcvs.py/translate/src/translate/pootle/TODO?view=markup">TODO list</a>is getting bigger, so hopefully some other developers will come on board (hint, hint). My next priorities are implementing PO uploading and an interface for assigning translations 
<br />
<br />In the mean time, some other related web sites that we can take ideas from: 
<ul>
<li>
<a href="http://cvs.gnome.org/viewcvs/">Gnome CVS</a>has a nice folder viewing style we could borrow ideas from.</li>
<li>
<a href="http://i18n.kde.org/teams/index.php?sort=isocode">KDE Translators Centre</a>has a nice index of languages that you can sort in different ways</li>
<li>
<a href="http://elvis.redhat.com/cgi-bin/i18n-status?page=status&amp;branch=HEAD&amp;locale=zu&amp;essential=1">RedHat's i18n-status page</a>has a nice system for showsing statistics, assigning translations / letting people "Take" them</li>
<li>
<a href="http://www.mandrakelinux.com/l10n/af.php3">Mandrake's l10n statistics</a>are also interesting</li>
</ul></div>
</content>
</entry>
<entry>
<title type="html">Started development on Pootle</title>
<author>
<name>David Fraser</name>
</author>
<link rel="alternate" type="text/html" href="http://www.translate.org.za/blogs/david/archives/2004/10/25/T18_53_52/index.html" />
<id>http://www.translate.org.za/blogs/david/archives/2004/10/25/T18_53_52/index.html</id>
<published>2004-10-25T18:53:52+02:00</published>
<updated>2004-10-25T18:53:52+02:00</updated>
<category term="tools" />
<category term="development" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">Over the last week I've started development on Pootle, a simple web portal for localization... named after a 
<a href="http://www.thechestnut.com/flumps.htm">Flumps</a>character thanks to Danielle's suggestion. 
<br />
<br />Its been really fun and the progress has been quick. Once its workable we'll try get a public implementation somewhere. Just needs a few additions (user registration, etc). 
<br />
<br />I just use PO files on the disk and aggregate stats on them to make it nice and fast. Hopefully will use it in Tanzania for our upcoming training course</div>
</content>
</entry>
</feed>

