<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AlferSoft Blog &#187; Software Applications</title>
	<atom:link href="http://www.alfersoft.com.ar/blog/category/apps/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alfersoft.com.ar/blog</link>
	<description>Explaining this blog in a few words since 1999</description>
	<lastBuildDate>Wed, 01 Feb 2012 22:36:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Scoreboard (Part 3: Final &#8211; Communicating with Android and more)</title>
		<link>http://www.alfersoft.com.ar/blog/2012/02/01/scoreboard-part-3-final-communicating-with-android-and-more/</link>
		<comments>http://www.alfersoft.com.ar/blog/2012/02/01/scoreboard-part-3-final-communicating-with-android-and-more/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 22:23:12 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Electronic Projects]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[assembler]]></category>
		<category><![CDATA[attiny]]></category>
		<category><![CDATA[attiny45]]></category>
		<category><![CDATA[avr]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[scoreboard]]></category>
		<category><![CDATA[VGA]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=414</guid>
		<description><![CDATA[The Scoreboard project is now finished and working! The idea of this project is pretty simple: control a ping-pong electronic scoreboard from an Android bluetooth-enabled device. To do this, I used an ATtiny45 which main function is to display the current scores in a VGA monitor while reading from a bluetooth module UART interface waiting [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2715.jpg"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2715-300x200.jpg" alt="Scoreboard - Final" title="Scoreboard - Final" width="300" height="200" class="alignleft size-medium wp-image-416" /></a>The Scoreboard project is now finished and working!<br/><br />
The idea of this project is pretty simple: control a ping-pong electronic scoreboard from an Android bluetooth-enabled device.<br />
To do this, I used an ATtiny45 which main function is to display the current scores in a VGA monitor while reading from a bluetooth module UART interface waiting for &#8220;commands&#8221; that will tell it what to display. The Android device sends the commands via bluetooth, running an application specially designed for this project.<br/><br />
As usual, the whole project is open source, including schematics, AVR firmware and the Android application.<br />
<span id="more-414"></span><br />
<strong>Schematic and Board</strong><br/><br />
Schematic and board were made with Eagle CAD software.<br />
Note: In this schematic I&#8217;ve used an ATtiny13, because I could not find the ATtiny45 in my Eagle library. As it was said before, in the project I ended using an ATtiny45. I guess the memory of ATtiny13 is enough to run the scoreboard firmware but can&#8217;t say for sure.<br />
<div id="attachment_419" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/scoreboard_schematic.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/scoreboard_schematic-300x300.png" alt="Scoreboard Schematic" title="Scoreboard Schematic" width="300" height="300" class="size-medium wp-image-419" /></a><p class="wp-caption-text">Scoreboard Schematic</p></div><br />
<div id="attachment_420" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/scoreboard_pcb.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/scoreboard_pcb-300x191.png" alt="Scoreboard PCB" title="Scoreboard PCB" width="300" height="191" class="size-medium wp-image-420" /></a><p class="wp-caption-text">Scoreboard PCB</p></div><br />
<strong>List of materials</strong><br/></p>
<table style="background-color: white; border: 1px solid #C3C3C3; border-collapse: collapse; width: 100%;">
<tbody>
<tr>
<th>Qty</th>
<th>Component</th>
<th>Sch. Code</th>
<th>Datasheet</th>
<th>Price (avg. US$)</th>
</tr>
<tr>
<td>1</td>
<td>3.3v Regulator</td>
<td>IC1</td>
<td><a href='http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/02/tlv1117-33.pdf'>tlv1117-33</a></td>
<td>0.79</td>
</tr>
<tr>
<td>1</td>
<td>Atmel ATtiny45 microcontroller</td>
<td>IC2</td>
<td></td>
<td>2.31</td>
</tr>
<tr>
<td>1</td>
<td>Bluetooth module</td>
<td>P$1</td>
<td><a href='http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/02/bluetoothddatasheet.pdf'>bluetooth</a></td>
<td>6.60 (on <a href="http://www.dealextreme.com/p/wireless-bluetooth-rs232-ttl-transceiver-module-80711" title="Bluetooth module on DealExtreme">DealExtreme</a>)</td>
</tr>
<tr>
<td>2</td>
<td>104 Ceramic capacitor</td>
<td>C1, C4</td>
<td></td>
<td>0.05 (each)</td>
</tr>
<tr>
<td>2</td>
<td>10uf Electrolytic capacitor</td>
<td>C2, C3</td>
<td></td>
<td>0.05 (each)</td>
</tr>
<tr>
<td>2</td>
<td>22pF Ceramic capacitor</td>
<td>C5, C6</td>
<td></td>
<td>0.05 (each)</td>
</tr>
<tr>
<td>1</td>
<td>20Mhz Crystal oscillator</td>
<td>Q1</td>
<td></td>
<td>0.65</td>
</tr>
<tr>
<td>1</td>
<td>Led</td>
<td>LED1</td>
<td></td>
<td>0.15</td>
</tr>
<tr>
<td>1</td>
<td>470R Resistor</td>
<td>R1</td>
<td></td>
<td>0.01</td>
</tr>
<tr>
<td>1</td>
<td>VGA DB-15 connector</td>
<td></td>
<td></td>
<td>2.28</td>
</tr>
<tr>
<td><del datetime="2012-01-31T21:31:08+00:00">1</del></td>
<td><del datetime="2012-01-31T21:31:08+00:00">10K Resistor</del></td>
<td><del datetime="2012-01-31T21:31:08+00:00">R2</del></td>
<td></td>
<td></td>
</tr>
<tr>
<td>1</td>
<td>Plain PCB / Printout / Iron chloride</td>
<td></td>
<td></td>
<td>3.00</td>
</tr>
</tbody>
</table>
<p><strong>Circuit</strong><br/><br />
Circuit is pretty straight as you can see. An external C/C power supply is needed to power the circuit. There is a voltage regulator so the supply in this case can be up to 15V (I didn&#8217;t measure consumption yet). The regulator has its respective capacitors in the input and output, used as filters. The bluetooth module and the microcontroller are connected through a single wire between module&#8217;s UART TXD and the PB5 pin of the ATtiny fused as an input (read more on <a href="http://www.alfersoft.com.ar/blog/2012/01/23/scoreboard-part-2-reading-uart-from-the-bluetooth-module/" title="Scoreboard (Part 2: Reading UART from the Bluetooth Module)">Part 2</a> of this series).<br />
A blue led with a resistor is attached to PIN24 of the bluetooth module, it will blink while the module is waiting for a connection and keep on when a connection is established, that&#8217;s using the default module firmware linvor1.5 that comes pre-programmed from DealExtreme, if you buy a different module or use a different firmware, you will need to review all the pin connections. According to the bluetooth module datasheet (at least the one that is supposed to be the correct one) you should put a 10K resistor from the reset pin to the ground, BUT actually I had to remove it to get the module working, otherwise it won&#8217;t even turn on. So <strong>DO NOT PUT R2.</strong></p>
<p>The meaning of the pads in the PCB is the following:</p>
<ul>
<li>PAD1: Input supply V+</li>
<li>PAD2: V- (ground)</li>
<li>PAD3: HSYNC to the VGA connector DB-15 pin 13</li>
<li>PAD4: VSYNC to the VGA connector DB-15 pin 14</li>
<li>PAD5: RGB to the VGA connector DB-15 pin 1 to 3</li>
<li>PAD6: Ground to the VGA connector DB-15 pin 5 to 10</li>
</ul>
<p><div id="attachment_426" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2721.jpg"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2721-300x200.jpg" alt="Scoreboard on the breadboard" title="Scoreboard on the breadboard" width="300" height="200" class="size-medium wp-image-426" /></a><p class="wp-caption-text">Scoreboard on the breadboard</p></div><br />
<div id="attachment_427" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2725.jpg"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2725-300x200.jpg" alt="Scoreboard on PCB (top view)" title="Scoreboard on PCB (top view)" width="300" height="200" class="size-medium wp-image-427" /></a><p class="wp-caption-text">Scoreboard on PCB (top view)</p></div><br />
<div id="attachment_432" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/02/IMG_2728.jpg"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/02/IMG_2728-300x200.jpg" alt="Scoreboard on PCB (bottom view)" title="Scoreboard on PCB (bottom view)" width="300" height="200" class="size-medium wp-image-432" /></a><p class="wp-caption-text">Scoreboard on PCB (bottom view)</p></div><br />
<strong>Android Application</strong><br/><br />
Thanks to CarlosBar!!! that made the program for me. He used the Android chat example as a base, changed the UUID to be able to connect using the SPP serial bluetooth (after all is what the DX bluetooth module is, an SPP serial port). Then he designed a nice GUI to control the scores, with an internal stack to support an Undo functionality in case you score on the wrong team.<br />
Also, you can control the scores with the Volume Up/Down keys for convenience.<br />
We have created a public repository on <a href="https://bitbucket.org/fvicente/scoreboard" title="BitBucket repository for Scoreboard Android Application" target="_blank">https://bitbucket.org/fvicente/scoreboard</a> where you can checkout the source code.<br />
Also it is available on the Android Market (search for &#8220;Scoreboard SPP&#8221;), I recommend to check out other CarlosBar project like the excellent <a href="http://code.google.com/p/ttsaid/" title="TTSAid" target="_blank">TTSAid</a>.<br/><br />
<div id="attachment_424" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2716.jpg"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/01/IMG_2716-300x200.jpg" alt="Scoreboard Android Application" title="Scoreboard Android Application" width="300" height="200" class="size-medium wp-image-424" /></a><p class="wp-caption-text">Scoreboard Android Application</p></div><br/><br />
<strong>Related Posts</strong><br/><br />
You can find more details on the ATtiny firmware, the UART communication and the VGA output, on previous posts:<br />
<a href="http://www.alfersoft.com.ar/blog/2011/08/30/scoreboard-part-1-vga-signal-from-an-attiny45/" title="Scoreboard (Part 1: VGA signal from an ATtiny45)">Scoreboard (Part 1: VGA signal from an ATtiny45)</a><br />
<a href="http://www.alfersoft.com.ar/blog/2012/01/23/scoreboard-part-2-reading-uart-from-the-bluetooth-module/" title="Scoreboard (Part 2: Reading UART from the Bluetooth Module)">Scoreboard (Part 2: Reading UART from the Bluetooth Module)</a><br/><br />
<strong>Download</strong><br/><br />
<a href='http://www.alfersoft.com.ar/blog/wp-content/uploads/2012/02/scoreboard_final.zip'>Scoreboard Final Source Code</a><br />
Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2012/02/01/scoreboard-part-3-final-communicating-with-android-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CDCasefier Gimp plug-in &#8211; Put your CDs in a case</title>
		<link>http://www.alfersoft.com.ar/blog/2011/07/02/cdcasefier-gimp-plug-in-put-your-cds-in-a-case/</link>
		<comments>http://www.alfersoft.com.ar/blog/2011/07/02/cdcasefier-gimp-plug-in-put-your-cds-in-a-case/#comments</comments>
		<pubDate>Sun, 03 Jul 2011 00:41:20 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Software Applications]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[cd]]></category>
		<category><![CDATA[cdcasefy]]></category>
		<category><![CDATA[fu]]></category>
		<category><![CDATA[gimp]]></category>
		<category><![CDATA[plug-in]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=248</guid>
		<description><![CDATA[This Python-Fu plug-in for Gimp will let you put a scanned CD photo into a &#8216;virtual&#8217; case. Download it here cdcasefier.tar.gz To use it, install the plug-in, open the CD image with Gimp and then go to Filters -> Artistic -> CD Casefier&#8230; Select the size of the (square) output image and click OK. Depending [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/07/cdcasefy.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/07/cdcasefy.png" alt="" title="cdcasefy" width="300" height="150" class="alignnone size-full wp-image-249" /></a><br />
This Python-Fu plug-in for Gimp will let you put a scanned CD photo into a &#8216;virtual&#8217; case.<br />
<a href='http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/07/cdcasefier.tar.gz'>Download it here cdcasefier.tar.gz</a><br />
<span id="more-248"></span><br />
To use it, install the plug-in, open the CD image with Gimp and then go to Filters -> Artistic -> CD Casefier&#8230;<br />
Select the size of the (square) output image and click OK.<br />
Depending on the image chosen, you may want to set the &#8220;Try to crop corners&#8221; option, which works best for real CD scanned pictures.</p>
<p><strong>Installation notes:</strong><br />
Just untar-gzip the file into your ~/.gimp26/plug-ins folder. Make sure that the cdcasefier.py is executable.</p>
<p><em>Note:</em> I&#8217;ve stolen the case picture from the <a href="http://www.google.com/url?sa=t&#038;source=web&#038;cd=1&#038;ved=0CCYQFjAA&#038;url=http%3A%2F%2Fwww.rhythmbox.org%2F&#038;rct=j&#038;q=rhythmbox&#038;ei=0X8PTofuPMjl0QHBhcHCDg&#038;usg=AFQjCNEYo9l0nDjXO9JjMdvl1_XJS5HYfQ&#038;cad=rja">Rhythmbox</a> project.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2011/07/02/cdcasefier-gimp-plug-in-put-your-cds-in-a-case/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to fix the &#8220;federated domain&#8221; problem in emesene</title>
		<link>http://www.alfersoft.com.ar/blog/2011/03/30/how-to-fix-the-federated-domain-problem-in-emesene/</link>
		<comments>http://www.alfersoft.com.ar/blog/2011/03/30/how-to-fix-the-federated-domain-problem-in-emesene/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 17:36:23 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Linux FAQ]]></category>
		<category><![CDATA[Software Applications]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[emesene]]></category>
		<category><![CDATA[federated]]></category>
		<category><![CDATA[fix]]></category>
		<category><![CDATA[issue]]></category>
		<category><![CDATA[message]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=215</guid>
		<description><![CDATA[If your emesene keeps displaying the annoying message &#8220;User could not be added: Email Domain is IM Federated Contact LiveID xxx@yyy.com is federated domain.&#8221; no matter if you accept or reject the user, then you probably want to apply this patch. This is not really a fix, but a workaround, is just a hack to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/03/emesene-logo.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/03/emesene-logo.png" alt="" title="emesene-logo" width="96" height="96" class="alignleft size-full wp-image-217" /></a><br />
If your emesene keeps displaying the annoying message &#8220;User could not be added: Email Domain is IM Federated Contact LiveID xxx@yyy.com is federated domain.&#8221; no matter if you accept or reject the user, then you probably want to apply this patch.<br />
This is not really a fix, but a workaround, is just a hack to avoid displaying the error message if you really like emesene and you want to use it. If you don&#8217;t like this kind of ugly solutions, there are always other options like Pidgin, aMSN, etc. &#8212; in other words if you don&#8217;t like programming forget it, or wait for a new emesene version.<br />
<span id="more-215"></span><br />
Ok, so, since we have the source code (emesene was developed in python) the file we need to hack is /usr/share/emesene/Controller.py<br />
We just need to find the two lines that displays the messages, and bypass them if the user is our xxx@yyy.com. That would be (in the current version as 2011/03/30) lines 674 and 770.</p>
<p>in line 674 add:<br />
<code>if mail in ("xxx@yyy.com", ): continue</code></p>
<p>then in line 770 add:<br />
<code>if email in ("xxx@yyy.com", ): return</code></p>
<p>So the final Controller.py will look something like:</p>
<pre>
....

    def checkPending(self):
        '''Check for users pending to be added'''

        if self.msn is None:
            return False

        if self.addBuddy is None:
            self.addBuddy = dialog.AddBuddy(self)

        users = self.msn.checkPending()
        if len(users) > 0:
            for mail in users:
                if mail in ("xxx@yyy.com", ): continue
                nick = self.msn.getUserDisplayName(mail)
                self.addBuddy.append(nick, mail)
        return False

....

    def addNotification(self, msnp, command, tid, params, email, nick):
        '''this method is called when a user adds you'''

        if self.addBuddy is None:
            self.addBuddy = dialog.AddBuddy(self)
        if email in ("xxx@yyy.com", ): return
        self.addBuddy.append(nick, email)
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2011/03/30/how-to-fix-the-federated-domain-problem-in-emesene/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Linux: How to Convert from HTML to JPG</title>
		<link>http://www.alfersoft.com.ar/blog/2011/03/30/ubuntu-linux-how-to-convert-from-html-to-jpg/</link>
		<comments>http://www.alfersoft.com.ar/blog/2011/03/30/ubuntu-linux-how-to-convert-from-html-to-jpg/#comments</comments>
		<pubDate>Wed, 30 Mar 2011 15:03:41 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Linux FAQ]]></category>
		<category><![CDATA[Software Applications]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jpeg]]></category>
		<category><![CDATA[jpg]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[xhtml]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=202</guid>
		<description><![CDATA[Here is an easy way to convert from HTML to JPG. Actually, I&#8217;m converting the HTML to PDF and then from PDF to JPG. First, install the following packages: sudo apt-get install python-pisa imagemagick python-imaging Then simply: xhtml2pdf report.html convert report.pdf report.jpg Note: if you receive an error message in python &#8220;AttributeError: &#8216;NoneType&#8217; object has [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/03/100px-Orange_Icon_Picture.svg_.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/03/100px-Orange_Icon_Picture.svg_.png" alt="" title="Orange_Icon_Picture" width="100" height="100" class="alignleft size-full wp-image-210" /></a> Here is an easy way to convert from HTML to JPG. Actually, I&#8217;m converting the HTML to PDF and then from PDF to JPG.<br />
<span id="more-202"></span><br />
First, install the following packages:<br />
<code>sudo apt-get install python-pisa imagemagick python-imaging</code></p>
<p>Then simply:<br />
<code>xhtml2pdf report.html<br />
convert report.pdf report.jpg</code></p>
<p><strong>Note:</strong> if you receive an error message in python &#8220;AttributeError: &#8216;NoneType&#8217; object has no attribute &#8216;bands&#8217;&#8221; while trying to use the xhtml2pdf command, then you will need to apply this patch: http://hg.effbot.org/pil-2009-raclette/changeset/fb7ce579f5f9<br />
In other words, edit Image.py and move line 1501 &#8220;self.load()&#8221; to 1497, just before the &#8220;if self.im.bands == 1:&#8221;<br />
<a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/03/Image_py_fix.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/03/Image_py_fix.png" alt="Image.py fix" title="Image_py_fix" width="450" height="104" class="alignleft size-medium wp-image-203" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2011/03/30/ubuntu-linux-how-to-convert-from-html-to-jpg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>POIMan for Sygic</title>
		<link>http://www.alfersoft.com.ar/blog/2011/02/10/poiman-for-sygic/</link>
		<comments>http://www.alfersoft.com.ar/blog/2011/02/10/poiman-for-sygic/#comments</comments>
		<pubDate>Thu, 10 Feb 2011 15:57:59 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[pdi]]></category>
		<category><![CDATA[poi]]></category>
		<category><![CDATA[poiman]]></category>
		<category><![CDATA[sygic]]></category>
		<category><![CDATA[update]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=168</guid>
		<description><![CDATA[POIMan for Sygic is an Android application that lets you keep your Sygic&#8217;s Point of Interests (POIs) up to date and manage them (add / remove) in an easy way. This application will download the POI&#8217;s list from a definable URL (by default http://www.todo-poi.es/TodoPOI.xml) and let the user select and download the available POIs from [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/02/poiman-256.png"><img src="http://www.alfersoft.com.ar/blog/wp-content/uploads/2011/02/poiman-256.png" alt="" title="POIMan for Sygic" width="100" height="100" class="alignleft size-full wp-image-196" /></a>POIMan for Sygic is an Android application that lets you keep your Sygic&#8217;s Point of Interests (POIs) up to date and manage them (add / remove) in an easy way.<br/><br />
This application will download the POI&#8217;s list from a definable URL (by default <a href="http://www.todo-poi.es/TodoPOI.xml">http://www.todo-poi.es/TodoPOI.xml</a>) and let the user select and download the available POIs from that list. Since the POIs are in TomTom format (`*`.ov2), POIMan will convert them to the Sygic format (`*`.upi). Also the BMPs are downloaded and resized to a suitable size that Sygic displays properly.</p>
<p><a href="http://code.google.com/p/poiman-for-sygic/" target="_blank"><strong>Download</strong></a></p>
<p><strong>Screenshots</strong><br />
<img src="http://poiman-for-sygic.googlecode.com/svn/wiki/images/poiman-ss01.png" alt="Screenshot #1"  width="200"/>&nbsp;<img src="http://poiman-for-sygic.googlecode.com/svn/wiki/images/poiman-ss02.png" alt="Screenshot #2"  width="200"/><br />
<br/><br />
<img src="http://poiman-for-sygic.googlecode.com/svn/wiki/images/poiman-ss03.png" alt="Screenshot #3"  width="200"/>&nbsp;<img src="http://poiman-for-sygic.googlecode.com/svn/wiki/images/poiman-ss04.png" alt="Screenshot #4"  width="200"/><br />
<span id="more-168"></span></p>
<p><strong>About the UPI format (Sygic POIs)</strong></p>
<p>It was pretty difficult to find information on the Internet about Sygic&#8217;s Mobile Maps (SMM) POIs file format (`*`.upi). Different from the TomTom OV2 format which is well documented and easy to find (see <a href="http://www.tomtom.com/lib/doc/ttnavsdk3_manual.pdf">http://www.tomtom.com/lib/doc/ttnavsdk3_manual.pdf</a> and <a href="http://www.opentom.org/Ov2">http://www.opentom.org/Ov2</a>).<br/><br />
One of the goals of POIMan for Sygic was converting the OV2 to UPI, in order to get the most popular POIs to work in SMM. So, the only way to do it without documentation was comparing an OV2 binary to its already converted UPI (converted using another existing tool &#8212; most people uses PoiEdit <a href="http://www.poiedit.com/">http://www.poiedit.com/</a>) and try to discover what the differences are.</p>
<p><em>Differences between OV2 and UPI</em></p>
<ul>
<li>All the strings in the UPI files seems to be stored as inverted wide chars. By inverted I mean that each character occupies 16 bits, but the byte order is swapped (I guess is like a little-endian wide char string). And all the strings are null-terminated (two null bytes).
<li>There is a header in the UPI file. Contrarily to OV2 that starts directly with records, the UPI has a header and the format is the following:
<ul>
<li>First byte is the length of the POI file name (without extension) that will follow this byte including the null character (remember: everything multiplied by 2 since it is wide char)
<li>A string with the name of the POI file without extension
<li>Something that seems to be a filler record, composed by one byte 0&#215;02 followed by 9 null bytes (0&#215;00)
<li>A byte with the length of the BMP file name that will follow this byte (including null character)
<li>A string with the BMP file name including the extension
	</ul>
<li>The simple POI record in OV2 is the type 0&#215;02 while in the UPI format is type 0&#215;03
<li>The skipper record (type 0&#215;01 in both formats) seem pretty much the same in both files, they are &#8216;rectangles&#8217; composed by four coordinates (lat1, lon1) (lat2, lon2). However in the OV2 you can find skipper records following other skipper records, like if you subdivide the rectangles into smaller groups where the POIs that will follow belongs, but this does not works well when you convert them to UPI. So, in other words the POIs should be contained in only one rectangle, so the simples solutions was to use the outer rectangle and skip the rest.
</ul>
<p><strong>List of tested XML&#8217;s</strong></p>
<p>In the preferences page, you can configure the URL that will be used to download the POIs list. The URL usually points to an XML file, which schema is pretty much standard. This XML contains the links to the OV2 files (TomTom POIs), BMPs, map and group to which each POI belongs, etc. However, I&#8217;ve found differences regarding the contents of the tags, for example: sometimes the URL to the BMPs are relative to the URL list, sometimes it is the full path; also I&#8217;ve found that some pages may require a user name and password to download the OV2 so in the URL you&#8217;ll find the %Username% and %Password% variables that POIMan will replace with whatever the user inputs in its preferences page.<br/><br />
In theory, you should be able to use any XML of this page <a href="http://www.poiedit.com/sites.htm">http://www.poiedit.com/sites.htm</a> however, due to these differences I&#8217;ve found, it might not work correctly, let me know if you find any problem.</p>
<p><em>Tested XML&#8217;s</em></p>
<p>This is the list of XML&#8217;s already tested. If you have more to add please let me know.<br/></p>
<ul>
<li><a href="http://www.todo-poi.es/TodoPOI.xml">http://www.todo-poi.es/TodoPOI.xml</a> (Spain)
<li><a href="http://www.flitspaal.nl/poi_flitspalen.xml">http://www.flitspaal.nl/poi_flitspalen.xml</a> (Netherlands) &#8211; This one requires to full-fill user name and password. The user name is the e-mail address used to register in the <a href="http://www.flitspaal.nl">www.flitspaal.nl</a> site.
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2011/02/10/poiman-for-sygic/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building ffmpeg in Debian (Lenny)</title>
		<link>http://www.alfersoft.com.ar/blog/2010/11/01/building-ffmpeg-in-debian-lenny/</link>
		<comments>http://www.alfersoft.com.ar/blog/2010/11/01/building-ffmpeg-in-debian-lenny/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 15:11:53 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Linux FAQ]]></category>
		<category><![CDATA[Software Applications]]></category>
		<category><![CDATA[aac]]></category>
		<category><![CDATA[codec]]></category>
		<category><![CDATA[convert]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[lame]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mp3]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=153</guid>
		<description><![CDATA[I&#8217;ve adapted the instructions from this Ubuntu thread for Debian Lenny. The original idea was to build ffmpeg with AAC support, but then I&#8217;ve found some other problems with mp3 codec, so I needed to apply a patch and rebuild everything. So, I&#8217;m writing all the procedures in this post in a few steps, hoping [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve adapted the instructions from <a href="http://ubuntuforums.org/showthread.php?t=786095">this Ubuntu thread</a> for Debian Lenny.<br />
The original idea was to build ffmpeg with AAC support, but then I&#8217;ve found some other problems with mp3 codec, so I needed to apply a patch and rebuild everything.<br />
<span id="more-153"></span>So, I&#8217;m writing all the procedures in this post in a few steps, hoping that I&#8217;m not forgetting anything. I know that some steps could be avoided (e.g. building ffmpeg twice), but I&#8217;ll just transcribe everything the way that worked for me (as I remember). </p>
<p><br/><br />
<strong>First try</strong></p>
<p>1. First edit your aptitude sources list</p>
<pre>alfersoft:~# nano /etc/apt/sources.list</pre>
<p>2. Add the following repositories</p>
<pre>deb http://www.debian-multimedia.org stable main
deb http://www.backports.org/debian lenny-backports main contrib non-free</pre>
<p>3. Update</p>
<pre>sudo apt-get update</pre>
<p>4. Remove current ffmpeg (if installed)</p>
<pre>sudo apt-get remove ffmpeg x264 libx264-dev</pre>
<p>5. Install necessary packages for the build. Note that I&#8217;ve removed libvpx-dev from the original Ubuntu thread.</p>
<pre>sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html \
    libfaac-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev \
    libtheora-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev \
    zlib1g-dev</pre>
<p>6. Build and install x264.</p>
<pre>cd
git clone git://git.videolan.org/x264.git
cd x264
./configure
make
sudo checkinstall --pkgname=x264 --pkgversion "2:0.`grep X264_BUILD x264.h -m1 | \
    cut -d' ' -f3`.`git rev-list HEAD | wc -l`+git`git rev-list HEAD -n 1 | \
    head -c 7`" --backup=no --deldoc=yes --fstrans=no --default</pre>
<p>7. Build and install ffmpeg. Note that I&#8217;ve removed the option &#8211;enable-libtheora and &#8211;enable-libvpx from the original Ubuntu thread.</p>
<pre>cd
svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
cd ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc \
    --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb \
    --enable-libopencore-amrwb --enable-libvorbis \
    --enable-libx264 --enable-libxvid --enable-x11grab
make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | \
    grep Revision | awk '{ print $NF }'`" --backup=no --deldoc=yes --fstrans=no \
    --default
hash x264 ffmpeg ffplay</pre>
<p><br/><br />
<strong>Almost there</strong></p>
<p>Ok, everything works perfectly until I try to convert a video and I get the following error:<br />
&#8220;lame: output buffer too small&#8221;<br />
After a bit of googling, I&#8217;ve found a patch in <a href="https://roundup.ffmpeg.org/issue803">this post</a>, with an interesting discussion regarding to whom should fix the problem (ffmpeg vs. lame). It is also suggested to downgrade the lame library, but I&#8217;ve tried that and didn&#8217;t worked for me, so in summary, let&#8217;s simply apply this ffmpeg patch and everything will be fine.</p>
<p>1. Go to the ffmpeg source directory and get the patch</p>
<pre>cd
cd ffmpeg
wget --no-check-certificate https://roundup.ffmpeg.org/file831/ffmpeg-lame-flush.patch3</pre>
<p>2. Apply the patch</p>
<pre>patch < ffmpeg-lame-flush.patch3
## (when the file name is required enter: libavcodec/libmp3lame.c)</pre>
<p>3. Build and install ffmpeg again</p>
<pre>make
sudo checkinstall --pkgname=ffmpeg --pkgversion "4:SVN-r`LANG=C svn info | \
    grep Revision | awk '{ print $NF }'`" --backup=no --deldoc=yes --fstrans=no \
    --default</pre>
<p>And now you're ready to go!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2010/11/01/building-ffmpeg-in-debian-lenny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox add-on: UploadProgress</title>
		<link>http://www.alfersoft.com.ar/blog/2010/08/26/firefox-add-on-uploadprogress/</link>
		<comments>http://www.alfersoft.com.ar/blog/2010/08/26/firefox-add-on-uploadprogress/#comments</comments>
		<pubDate>Thu, 26 Aug 2010 22:37:48 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Software Applications]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[add-on]]></category>
		<category><![CDATA[component]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[meter]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[progress]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=145</guid>
		<description><![CDATA[This Firefox add-on adds a new option to the Tools menu called &#8220;Uploads&#8221; that displays a small window, similar to the downloads, but displaying only current uploads in progress. The uploads are automatically removed from the window after they finish. The idea is to have a way to know the progress of your file uploads [...]]]></description>
			<content:encoded><![CDATA[<p><img alt="UploadProgress add-on" src="http://www.alfersoft.com.ar/files/upload.png" title="UploadProgress add-on" class="alignleft" width="200" height="136" /> This Firefox add-on adds a new option to the Tools menu called &#8220;Uploads&#8221; that displays a small window, similar to the downloads, but displaying only current uploads in progress. The uploads are automatically removed from the window after they finish. The idea is to have a way to know the progress of your file uploads and an estimated remaining time to finish.</p>
<p>Useful for sites that does not shows the upload progress like youtube.</p>
<p>This is my first add-on, so if you find something wrong please let me know.<br />
I&#8217;ve submitted it to <a href="https://addons.mozilla.org/">AMO</a> <del datetime="2010-10-03T02:48:06+00:00">but since it takes time to get released to the general public, I&#8217;ve decided to put it here in our blog if you want to give it a try.<br />
</del><br />
<a href="https://addons.mozilla.org/en-US/firefox/addon/221510/">Download it here</a>, enjoy!</p>
<p><span id="more-145"></span><br />
Tested in Linux, MacOS X and Windows, this small add-on is 100% JavaScript, no dlls no native XPCOMs. I&#8217;ve read in some forums that once upon a time (2004) Firefox already included an upload progress indicator but since then till today is broken. Today other modern browsers like Chrome already provides an upload percent indicator.</p>
<p>Edit: version 0.3 now displaying a small progress bar in Firefox&#8217;s status-bar. Check it out!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2010/08/26/firefox-add-on-uploadprogress/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>How to create two wired virtual serial ports on Linux?</title>
		<link>http://www.alfersoft.com.ar/blog/2010/02/19/how-to-create-two-wired-virtual-serial-ports-on-linux/</link>
		<comments>http://www.alfersoft.com.ar/blog/2010/02/19/how-to-create-two-wired-virtual-serial-ports-on-linux/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 18:18:32 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Linux FAQ]]></category>
		<category><![CDATA[Programming FAQ]]></category>
		<category><![CDATA[bridged]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[null-modem]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[rs-232]]></category>
		<category><![CDATA[serial]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[virtual]]></category>
		<category><![CDATA[wired]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=134</guid>
		<description><![CDATA[To create two bridged virtual serial ports use the following command: socat -d -d pty,raw,echo=0 pty,raw,echo=0 The output will show you which are the virtual ports (or pseudo terminals) created, e.g.: 2010/02/19 16:16:33 socat[9662] N PTY is /dev/pts/3 2010/02/19 16:16:33 socat[9662] N PTY is /dev/pts/4 2010/02/19 16:16:33 socat[9662] N starting data transfer loop with FDs [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="FAQ" src="http://www.alfersoft.com.ar/files/question.png" alt="" width="48" height="48" /></p>
<p>To create two bridged virtual serial ports use the following command:<br />
<code><br />
socat -d -d pty,raw,echo=0 pty,raw,echo=0<br />
</code></p>
<p>The output will show you which are the virtual ports (or pseudo terminals) created, e.g.:<br />
<code><br />
2010/02/19 16:16:33 socat[9662] N PTY is /dev/pts/3<br />
2010/02/19 16:16:33 socat[9662] N PTY is /dev/pts/4<br />
2010/02/19 16:16:33 socat[9662] N starting data transfer loop with FDs [3,3] and [5,5]<br />
</code></p>
<p>Note: if you are using Ubuntu and you do not have this command, try:<br />
<code><br />
sudo apt-get install socat<br />
</code></p>
<h6><a title="Lock" href="http://commons.wikimedia.org/wiki/File:Gnome-dialog-question.svg" target="_blank">Image source</a></h6>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2010/02/19/how-to-create-two-wired-virtual-serial-ports-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to calculate the space used by files in Linux?</title>
		<link>http://www.alfersoft.com.ar/blog/2010/02/19/how-to-calculate-the-space-used-by-files-in-linux/</link>
		<comments>http://www.alfersoft.com.ar/blog/2010/02/19/how-to-calculate-the-space-used-by-files-in-linux/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 18:09:26 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Linux FAQ]]></category>
		<category><![CDATA[awk]]></category>
		<category><![CDATA[calculate]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[find]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[occupied]]></category>
		<category><![CDATA[pattern]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[sum]]></category>
		<category><![CDATA[used]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=131</guid>
		<description><![CDATA[Suppose that you want to calculate the space used by all the png files in current directory and all its subdirectories. From a terminal type: find . -name '*.png' -exec du -ab {} \; &#124; awk '{total+=$0}END{print total}' Image source]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="FAQ" src="http://www.alfersoft.com.ar/files/question.png" alt="" width="48" height="48" /></p>
<p>Suppose that you want to calculate the space used by all the png files in current directory and all its subdirectories. From a terminal type:<br />
<code><br />
find . -name '*.png' -exec du -ab {} \; | awk '{total+=$0}END{print total}'<br />
</code></p>
<h6><a title="Lock" href="http://commons.wikimedia.org/wiki/File:Gnome-dialog-question.svg" target="_blank">Image source</a></h6>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2010/02/19/how-to-calculate-the-space-used-by-files-in-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How do I compare two binary files on Linux?</title>
		<link>http://www.alfersoft.com.ar/blog/2010/02/19/how-do-i-compare-two-binary-files-on-linux/</link>
		<comments>http://www.alfersoft.com.ar/blog/2010/02/19/how-do-i-compare-two-binary-files-on-linux/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 17:51:00 +0000</pubDate>
		<dc:creator>fvicente</dc:creator>
				<category><![CDATA[Linux FAQ]]></category>
		<category><![CDATA[Programming FAQ]]></category>
		<category><![CDATA[binaries]]></category>
		<category><![CDATA[binary]]></category>
		<category><![CDATA[compare]]></category>
		<category><![CDATA[diff]]></category>
		<category><![CDATA[hexdump]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[meld]]></category>

		<guid isPermaLink="false">http://www.alfersoft.com.ar/blog/?p=128</guid>
		<description><![CDATA[The easiest way I found is dumping the binaries into text files using hexdump and then comparing them with your favourite program (diff, Meld, etc.). E.g.: hexdump -C a.bin >a.txt hexdump -C b.bin >b.txt diff a.txt b.txt Image source]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" title="FAQ" src="http://www.alfersoft.com.ar/files/question.png" alt="" width="48" height="48" /></p>
<p>The easiest way I found is dumping the binaries into text files using hexdump and then comparing them with your favourite program (diff, Meld, etc.). E.g.:<br />
<code><br />
hexdump -C a.bin >a.txt<br />
hexdump -C b.bin >b.txt<br />
diff a.txt b.txt<br />
</code></p>
<h6><a title="Lock" href="http://commons.wikimedia.org/wiki/File:Gnome-dialog-question.svg" target="_blank">Image source</a></h6>
]]></content:encoded>
			<wfw:commentRss>http://www.alfersoft.com.ar/blog/2010/02/19/how-do-i-compare-two-binary-files-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

