<?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>Sebastian Montabone</title>
	<atom:link href="http://www.samontab.com/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.samontab.com/web</link>
	<description>My past and current projects</description>
	<lastBuildDate>Wed, 08 Feb 2012 01:01:34 +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>MPD on the N900 or how to use your Nokia N900 as a Wireless Home Music System</title>
		<link>http://www.samontab.com/web/2012/01/mpd-on-the-n900-or-how-to-use-your-nokia-n900-as-a-wireless-home-music-system/</link>
		<comments>http://www.samontab.com/web/2012/01/mpd-on-the-n900-or-how-to-use-your-nokia-n900-as-a-wireless-home-music-system/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 00:21:10 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=198</guid>
		<description><![CDATA[In a previous post, I showed you how to listen on any device the music you have stored on a Symbian phone. In this post, I will teach you to do the opposite: control the music being played on your N900 with any device. The nice thing about this is that you can connect your [...]]]></description>
			<content:encoded><![CDATA[<p>In a previous <a href="http://www.samontab.com/web/2011/08/use-your-old-nokia-symbian-phone-as-a-music-web-server/">post</a>, I showed you how to listen on any device the music you have stored on a Symbian phone. In this post, I will teach you to do the opposite: control the music being played on your N900 with any device. The nice thing about this is that you can connect your N900 to your main speakers. That way, you will be using your Nokia N900 as a wireless home music system that is small, quiet and portable. After finishing this tutorial, you will also be able to connect to your N900 via SSH and FTP, manage your software repositories, compile applications, and setup scripts to be run at boot time.</p>
<p>First of all make sure that you <strong>back up all your N900 data</strong>. No kidding. We are going to make some changes that could possibly <strong>brick your phone</strong>. This means that you may need to re flash your firmware if anything goes wrong. If you are not OK with this, stop reading. I will not be held responsible for any problems you may encounter. You have been warned.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2012/01/n900.jpg"><img class="size-medium wp-image-200 alignleft" title="n900" src="http://www.samontab.com/web/wp-content/uploads/2012/01/n900-300x234.jpg" alt="" width="300" height="234" /></a>The N900 is an awesome device, it is a Linux computer in the form of a smartphone. Because of that, you can do pretty much anything you could do on a regular Linux computer and more, since you have all the extra features of a smartphone like sensors and a battery. One of the things a regular Linux computer can do is to play music with a great program called Music Player Daemon (<a href="http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki">MPD</a>), which is the program we are going to install on the N900.</p>
<p>The first step is to configure the repositories. A repository is a place where programs are stored. You can have different repositories available on your system. Each repository that you have enabled in your system allows you to install different sets of programs. Note that on the N900, repositories are called catalogs.</p>
<p>To manage your repositories on your N900, go to the <em>App. Manager</em> and click on the menu on top. There, select <em>Application Catalogs</em>.</p>
<p>Here (maybe after waiting a little) you will see the current list of enabled and disabled catalogs. Disabled catalogs are not considered by the system, so all the applications you can install come from the enabled catalogs. Write down which catalogs are enabled and which ones are disabled as this is your original configuration and you may want to go back to it after we are finished.</p>
<p>Now, let&#8217;s add some catalogs. Click on the <em>New</em> button and fill in the information provided for the four following catalogs:</p>
<p><strong>Maemo SDK</strong>: This catalog provides core system utilities that  we will need to build programs.</p>
<pre class="brush: plain; title: ; notranslate">
Catalog Name: Maemo SDK
Web address: http://repository.maemo.org/
Distribution: fremantle/sdk
Components: free non-free
Disabled: Unchecked
</pre>
<p><strong>Maemo tools</strong>: This catalog provides tools that are very useful, like nano or wget.</p>
<pre class="brush: plain; title: ; notranslate">
Catalog Name: Maemo tools
Web address: http://repository.maemo.org/
Distribution: fremantle/tools
Components: free non-free
Disabled: Unchecked
</pre>
<p><strong>Maemo extras-testing</strong>: This catalog provides more applications than the ones in the default Maemo catalog (extras), although they are not as thoroughly tested.</p>
<pre class="brush: plain; title: ; notranslate">
Catalog Name: Maemo extras-testing
Web address: http://repository.maemo.org/extras-testing/
Distribution: fremantle
Components: free non-free
Disabled: Unchecked
</pre>
<p><strong>Maemo extras-devel</strong>: This catalog contains many useful applications but some of them are in heavy development. This catalog should be disabled by default and enabled only temporarily to install specific applications.<strong> Make sure that you disable Maemo extras-devel when you add it</strong>.</p>
<pre class="brush: plain; title: ; notranslate">
Catalog Name: Maemo extras-devel
Web address: http://repository.maemo.org/extras-devel/
Distribution: fremantle
Components: free non-free
Disabled: Checked
</pre>
<p>These catalogs provide different applications that we will need later. <strong>Disable Maemo extras-devel and enable the other three.<br />
</strong></p>
<p>Now exit the <em>Application Catalogs</em> screen. The N900 will automatically update the list of applications after you changed the repositories. If you didn&#8217;t see any update, click on the <em>Update</em> button just to be sure. Now click on <em>Download-&gt;All</em> to see the list of applications available to install. You should install the following apps:</p>
<pre class="brush: plain; title: ; notranslate">openssh client and server
rootsh
sudser
Personal IP Address</pre>
<p>When you install OpenSSH, you will be asked for a password. This is the <em>root</em> password, so keep it safe.</p>
<p>Now close the application manager and open the console (<em>X Terminal</em>). In there, you will setup a password for the default user, which is <em>user</em>. Write this:</p>
<pre class="brush: plain; title: ; notranslate">
sudo passwd user
</pre>
<p>And write a password for the user <em>user</em>, which is the default user (non root privileges). Close the console or write <em>exit</em> to exit.</p>
<p>OK, on the desktop you now should be able to see your current IP address. You can use that IP to connect via SSH or FTP to your N900 with either <em>root</em> or <em>user</em> using the passwords you just set for them. If you don&#8217;t have Linux installed on your computer, you can use <em><a href="http://filezilla-project.org/">Filezilla</a></em> for FTP and <em><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTy</a></em> for SSH. Make sure that you can connect to your N900 with the <em>user</em> account.</p>
<p>Now we will be working with the command line only, so I suggest you to connect from your computer via SSH (as <em>user</em>) for easier writing (or copy pasting). Make sure that the <em>App. Manager</em> is closed before continuing.</p>
<p>On the console, write the following:</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get install build-essential wget grep-gnu libglibmm-2.4-dev nano mpc libao0 libaudiofile-dev libaudiofile0 libcurl3-dev libcurl3 libpulse-dev pulseaudio libavcodec-dev
</pre>
<p>It should install all these packages without a problem. When it is finished, go to the <em>App. Manager</em>, <strong>enable Maemo extras-devel</strong> and then close the <em>App. Manager</em>. <strong>Ignore any updates that are offered by your phone at this point</strong>.</p>
<p>Now go back to the console, and write the following (make sure that the <em>App. Manager</em> is closed before you do so):</p>
<pre class="brush: plain; title: ; notranslate">sudo apt-get install libasound2-dev libmad0-dev libid3tag0-dev libflac-dev libflac++-dev</pre>
<p>If  it asks &#8220;<em>Install these packages without verification?</em>&#8221; Answer <strong>yes</strong>.</p>
<p>Once it is finished installing the packages, go to the <em>App. Manager</em> and <strong>disable all of the four repositories we used</strong> (<em>Maemo SDK</em>, <em>Maemo Tools</em>, <em>Maemo extras-testing</em>, <em>Maemo extras-devel</em>).</p>
<p>OK, now your N900 is ready to compile software. We are now going to get and compile <em>Music Player Daemon</em> (MPD).</p>
<p>Open the console (<em>X Terminal</em>) and write the following:</p>
<pre class="brush: plain; title: ; notranslate">
cd
mkdir tempdelme
cd tempdelme
wget http://downloads.sourceforge.net/project/musicpd/mpd/0.16.6/mpd-0.16.6.tar.gz
tar -xvzf mpd-0.16.6.tar.gz
cd mpd-0.16.6/
./configure
make
sudo make install
</pre>
<p>After some time, it should be ready. Now MPD is installed in <em>/usr/local/bin/mpd</em>. Check that everything is OK with this command <em>(Thanks Martin for suggesting the &#8211;no-daemon option)</em>:</p>
<pre class="brush: plain; title: ; notranslate">
/usr/local/bin/mpd --version --no-daemon
</pre>
<p>It should display the formats it is able to play (i.e. mp3, flac, wav, etc). If you need more functionality than what is presented, install the extra needed libraries and then run <em>./configure; make; sudo make install</em> again. Most people should be OK with the current settings.</p>
<p>Now that we have MPD installed, we need to configure it. Write this:</p>
<pre class="brush: plain; title: ; notranslate">nano /home/user/.mpdconf</pre>
<p>This will open a text editor. Write the following in there:</p>
<pre class="brush: plain; title: ; notranslate">
port                    &quot;6600&quot;
music_directory         &quot;/home/user/MyDocs/music&quot;
playlist_directory      &quot;/home/user/.mpd/playlists&quot;
db_file                 &quot;/home/user/.mpd/mpd.db&quot;
log_file                &quot;/home/user/.mpd/mpd.log&quot;

user &quot;user&quot;

bind_to_address &quot;any&quot;

audio_output {
        type            &quot;alsa&quot;
        name            &quot;MPD ALSA&quot;
        mixer_type      &quot;software&quot;
}
</pre>
<p>Make sure that all your music files and folders are inside the defined <strong>music_directory</strong>.</p>
<p>Now let&#8217;s create those directories</p>
<pre class="brush: plain; title: ; notranslate">
mkdir -p /home/user/.mpd/playlists
mkdir -p /home/user/MyDocs/music
</pre>
<p>And now put some music files in the <em>music_directory</em> that you defined previously. You can use FTP to easily transfer music from your PC to that folder in the N900. After you put some music,  generate the MPD database:</p>
<pre class="brush: plain; title: ; notranslate">
sudo /usr/local/bin/mpd --create-db
</pre>
<p>Now we can start MPD with this:</p>
<pre class="brush: plain; title: ; notranslate">
sudo /usr/local/bin/mpd /home/user/.mpdconf
</pre>
<p>Test that everything is working:</p>
<pre class="brush: plain; title: ; notranslate">
mpc update
mpc add /
mpc play
</pre>
<p>If you hear music, then everything is great. You can stop the music with:</p>
<pre class="brush: plain; title: ; notranslate">
mpc stop
</pre>
<p>You can now delete the temporary files we used for the compilation:</p>
<pre class="brush: plain; title: ; notranslate">
cd
rm -r tempdelme
</pre>
<p>OK, so now MPD is installed on your N900. You can connect with any client to it. Actually, we just connected with one of them, <em>mpc</em>, a console client for MPD.</p>
<p>If you are using firefox, you can use <em><a href="https://addons.mozilla.org/en-US/firefox/addon/music-player-minion/">Music Player Minion</a></em>. If you have an IPod/IPhone/IPad/etc&#8230; you can use <em><a href="http://itunes.apple.com/us/app/mpod/id285063020?mt=8">MPoD</a></em>. There are many <a href="http://mpd.wikia.com/wiki/Clients">clients for MPD</a>, virtually for any device that you may have at your house.</p>
<p>Enjoy playing with your cool new wireless home sound system.</p>
<p>The last (optional) step is to launch MPD automatically when you power up your phone. The N900 uses <a title="Upstart" href="http://en.wikipedia.org/wiki/Upstart">upstart</a> to control the boot scripts, so let&#8217;s create an upstart script for MPD:</p>
<pre class="brush: plain; title: ; notranslate">
sudo nano /etc/event.d/mpd
</pre>
<p>In that file, write the following:</p>
<pre class="brush: plain; title: ; notranslate">
start on started hildon-desktop

script
exec /usr/local/bin/mpd /home/user/.mpdconf
end script

stop on starting shutdown
</pre>
<p>That&#8217;s it. Reboot your phone and MPD should be running. You can check it by using the same music test from before, or directly looking at the process:</p>
<pre class="brush: plain; title: ; notranslate">
ps aux | grep mpd
</pre>
<p>If it says something like this:</p>
<pre class="brush: plain; title: ; notranslate">
1630 user     46276 S    /usr/local/bin/mpd /home/user/.mpdconf
1642 user      2088 S    grep mpd
</pre>
<p>It means that MPD is running. If on the other hand only the second line appears, it means it is not running.</p>
<p>You can close MPD by killing the process like this:</p>
<pre class="brush: plain; title: ; notranslate">
killall mpd
</pre>
<p>Finally, note that depending on your battery saving settings your N900 may disable wifi connections initiated from outside (like your SSH or FTP connections) after some inactivity time. You can make sure that the wifi connection keeps open by just pinging the router:</p>
<pre class="brush: plain; title: ; notranslate">
sudo ping 192.168.0.1
</pre>
<p>Enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2012/01/mpd-on-the-n900-or-how-to-use-your-nokia-n900-as-a-wireless-home-music-system/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Use your old Nokia symbian phone as a music web server</title>
		<link>http://www.samontab.com/web/2011/08/use-your-old-nokia-symbian-phone-as-a-music-web-server/</link>
		<comments>http://www.samontab.com/web/2011/08/use-your-old-nokia-symbian-phone-as-a-music-web-server/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 02:35:39 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=187</guid>
		<description><![CDATA[If you have a Wi-Fi capable Nokia Symbian phone with a memory card and also a Wi-Fi router, you can use them to serve your music at home. This is a great way of having all your music in just one place and access it from any wireless capable device (i.e. laptops) as well as [...]]]></description>
			<content:encoded><![CDATA[<p>If you have a Wi-Fi capable Nokia Symbian phone with a memory card and also a Wi-Fi router, you can use them to serve your music at home. This is a great way of having all your music in just one place and access it from any wireless capable device (i.e. laptops) as well as sharing it with others at your house. Also, you could still enjoy the same music on the go since it is stored on your mobile phone. This means that you can turn an old unused mobile phone into a very small and noiseless music server for free.</p>
<p>OK, the first step is to install PAMP. This is a web server for mobile phones. It contains <a title="Apache" href="http://en.wikipedia.org/wiki/Apache_HTTP_Server">Apache</a>, <a title="MySQL" href="http://en.wikipedia.org/wiki/Mysql">MySQL</a> and <a title="PHP" href="http://en.wikipedia.org/wiki/Php">PHP</a>, all in one nice installable sis package for your phone.<br />
To install it, just go <a title="Pamp 1.0.2" href="http://sourceforge.net/projects/pamp/files/pamp/1_00_02/">here</a> and download the file named <strong>pamp_1_0_2.zip</strong> (not the SDK one).<br />
Extract the files. Notice that there are three <em>.sis</em> files. First install <strong>pips_nokia_1_3_SS.sis</strong>, then install <strong>ssl.sis</strong> and finally install <strong>pamp_1_0_2.sis</strong>.<br />
Now you should have a PAMP application on your phone. Open it. You should see something like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/08/Scr000004.jpg"><img class="alignnone size-medium wp-image-191" title="Scr000004" src="http://www.samontab.com/web/wp-content/uploads/2011/08/Scr000004-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Now, click on <em>Options</em> and then select <em>Start-&gt;Pamp</em>. Answer <em>Yes</em> to the <em>Start WLAN?</em> question and select your home wireless network.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/08/Scr000005.jpg"><img class="alignnone size-medium wp-image-192" title="Scr000005" src="http://www.samontab.com/web/wp-content/uploads/2011/08/Scr000005-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>You should now see that Apache and MySQL services are running, the name of your wireless network and the assigned IP number. That number is the one you need to connect to your phone. Write it down. It should look something like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/08/Scr000006.jpg"><img class="alignnone size-medium wp-image-193" title="Scr000006" src="http://www.samontab.com/web/wp-content/uploads/2011/08/Scr000006-300x225.jpg" alt="" width="300" height="225" /></a></p>
<p>Let the PAMP application running on the background as is. You can do that by just pressing your <em>Home</em> button. Now let&#8217;s check that everything is working so far. In your laptop open up Firefox (or any other web browser) and type in the IP address from the previous step. You should see something like this:<br />
<a href="http://www.samontab.com/web/wp-content/uploads/2011/08/apache.png"><img class="alignnone size-medium wp-image-189" title="apache" src="http://www.samontab.com/web/wp-content/uploads/2011/08/apache-300x223.png" alt="" width="300" height="223" /></a><br />
If you see the something similar, the Apache server is working. Now follow the <strong>phpinfo.php</strong> link. It should display information about your mobile server (cool, isn&#8217;t it) like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/08/php.png"><img class="alignnone size-medium wp-image-190" title="php" src="http://www.samontab.com/web/wp-content/uploads/2011/08/php-300x240.png" alt="" width="300" height="240" /></a></p>
<p>The web pages that you are looking at now are stored in the phone at <em>E:/DATA/apache/htdocs</em>. E: represents the memory card. This is the public folder that is being served by PAMP. The <strong>index.html</strong> file is the home page being displayed, and <strong>phpinfo.php</strong> is the link you just visited.</p>
<p>You may edit these web pages if you wish. You can install <a title="Y-Browser" href="http://www.drjukka.com/YBrowser.html">Y-Browser</a> to navigate your documents or create folders in your phone. Also, you can install <a title="ped" href="http://code.google.com/p/ped-s60/">ped</a> for editing text files on your phone (this one requires <a title="PyS60" href="http://sourceforge.net/projects/pys60/files/pys60/1.4.5/">Python for S60</a> to be installed first). You can also edit the files on your PC and then transfer them back to your phone.</p>
<p>The next step is to download <a title="whispercast" href="http://manas.tungare.name/software/whispercast/">whispercast</a> which is a lightweight PHP script for music streaming, perfect for our needs (Thanks Manas Tungare for making this cool script!). On your Desktop, create a folder called <strong>music</strong> (it has to be exactly this name to make it work without configuring anything else). Extract all the files from the <em>zip</em> you just downloaded into this folder. Now add all the <em>mp3</em> files that you want into the <strong>music</strong> folder as well. Each directory of <em>mp3</em> files will be a play-list.</p>
<p>Now you need to transfer the entire music folder (not just the contents, the folder itself too) into the phone, inside the <em>E:/DATA/apache/htdocs </em>folder<em>.</em></p>
<p>It is now time to go to your laptop and type in the IP address followed by <em>/music</em>. For example, if your IP is <em>192.168.0.100</em>, then you need to go to <em>192.168.0.100/music</em>. You should now see the text <strong>Manas Tungare&#8217;s Music Library</strong>, with the list of your mp3 files. Navigate to the folder/play-list you want to hear and click on <em>Start Playing</em>. It will create a play-list on the fly and ask you to select the music player that you want to use. If in doubt, just select the default player. After that, you can just save the play-list and double click on it or create a new one visiting the same page.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/08/playlist.png"><img class="alignnone size-medium wp-image-194" title="playlist" src="http://www.samontab.com/web/wp-content/uploads/2011/08/playlist-300x185.png" alt="" width="300" height="185" /></a></p>
<p>If you need to tweak some parameters, just edit the <em>config.php</em> file. For changing the format or text displayed, you can edit the other files.</p>
<p>That&#8217;s it, now you can listen to your music from anywhere in your house with a small and noise free music server. It should work for Linux, Windows, Mac, or even other mobile phones or tablets.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/08/use-your-old-nokia-symbian-phone-as-a-music-web-server/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Installing OpenCV 2.2 in Ubuntu 11.04</title>
		<link>http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/</link>
		<comments>http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 22:21:12 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[Image Processing]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=172</guid>
		<description><![CDATA[Many people have used my previous tutorial about installing OpenCV 2.1 in Ubuntu 9.10. In the comments of that post, I noticed great interest for using OpenCV with Python and the Intel Threading Building Blocks (TBB). Since new versions of OpenCV and Ubuntu are available, I decided to create a new post with detailed instructions [...]]]></description>
			<content:encoded><![CDATA[<p>Many people have used my previous tutorial about installing <a href="http://www.samontab.com/web/2010/04/installing-opencv-2-1-in-ubuntu/">OpenCV 2.1 in Ubuntu 9.10</a>. In the comments of that post, I noticed great interest for using OpenCV with Python and the Intel Threading Building Blocks (TBB). Since new versions of OpenCV and Ubuntu are available, I decided to create a new post with detailed instructions for installing the latest version of OpenCV, 2.2, in the latest version of Ubuntu, 11.04, with Python and TBB support.</p>
<p>First, you need to install many dependencies, such as support for reading and writing image files, drawing on the screen, some needed tools, etc&#8230; This step is very easy, you only need to write the following command in the Terminal</p>
<pre class="brush: bash; title: ; notranslate">

sudo apt-get install build-essential libgtk2.0-dev libjpeg62-dev libtiff4-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy libtbb-dev libeigen2-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev
</pre>
<p>Now we need to get and compile the ffmpeg source code so that video files work properly with OpenCV. This section is partially based on the method discussed <a href="http://blog.pinglin.idv.tw/20101208031323/">here</a>.</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
wget http://ffmpeg.org/releases/ffmpeg-0.7-rc1.tar.gz
tar -xvzf ffmpeg-0.7-rc1.tar.gz
cd ffmpeg-0.7-rc1
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libxvid --enable-x11grab --enable-swscale --enable-shared
make
sudo make install
</pre>
<p>The next step is to get the OpenCV 2.2 code:</p>
<pre class="brush: bash; title: ; notranslate">
cd ~
wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2
tar -xvf OpenCV-2.2.0.tar.bz2
cd OpenCV-2.2.0/
</pre>
<p>Now we have to generate the Makefile by using cmake. In here we can define which parts of OpenCV we want to compile. Since we want to use Python and TBB with OpenCV, here is where we set that. Just execute the following line at the console to create the appropriate Makefile. Note that there is a dot at the end of the line, it is an argument for the cmake program and it means current directory.</p>
<pre class="brush: bash; title: ; notranslate">
cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON .
</pre>
<p>Check that the above command produces no error and that in particular it reports FFMPEG as 1. If this is not the case you will not be able to read or write videos. Also, check that Python reports ON and Python numpy reports YES. Also, check that under <em>Use TBB</em> it says YES. If anything is wrong, go back, correct the errors by maybe installing extra packages and then run cmake again. You should see something similar to this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/cmakeConfig.png"><img src="http://www.samontab.com/web/wp-content/uploads/2011/06/cmakeConfig-300x212.png" alt="" title="cmakeConfig" width="300" height="212" class="alignnone size-medium wp-image-182" /></a></p>
<p>Now, you are ready to compile and install OpenCV 2.2:</p>
<pre class="brush: bash; title: ; notranslate">
make
sudo make install
</pre>
<p>Now you have to configure OpenCV. First, open the opencv.conf file with the following code:</p>
<pre class="brush: bash; title: ; notranslate">
sudo gedit /etc/ld.so.conf.d/opencv.conf
</pre>
<p>Add the following line at the end of the file(it may be an empty file, that is ok) and then save it:</p>
<pre class="brush: bash; title: ; notranslate">
/usr/local/lib
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-opencv.conf-etc-ld.so_.conf_.d-gedit.png"><img title="Screenshot-opencv.conf (-etc-ld.so.conf.d) - gedit" src="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-opencv.conf-etc-ld.so_.conf_.d-gedit-300x240.png" alt="" width="300" height="240" /></a></p>
<p>Run the following code to configure the library:</p>
<pre class="brush: bash; title: ; notranslate">
sudo ldconfig
</pre>
<p>Now you have to open another file:</p>
<pre class="brush: bash; title: ; notranslate">
sudo gedit /etc/bash.bashrc
</pre>
<p>Add these two lines at the end of the file and save it:</p>
<pre class="brush: bash; title: ; notranslate">
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
</pre>
<div><a href="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-bash.bashrc-etc-gedit.png"><img title="Screenshot-bash.bashrc (-etc) - gedit" src="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-bash.bashrc-etc-gedit-300x240.png" alt="" width="300" height="240" /></a></div>
<p>Finally, <strong>close the console and open a new one, restart the computer or logout and then login again</strong>. OpenCV will not work correctly until you do this.</p>
<p>There is a final step to configure Python with OpenCV. You need to copy the file <em>cv.so</em> into the correct place. You can do that by just executing the following command:</p>
<pre class="brush: plain; title: ; notranslate">
sudo cp /usr/local/lib/python2.7/site-packages/cv.so /usr/local/lib/python2.7/dist-packages/cv.so
</pre>
<p>Now you have OpenCV 2.2 installed in your computer with Python and TBB support.</p>
<p>Let&#8217;s check some demos included in OpenCV.<br />
First, let&#8217;s see some C demos:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~/OpenCV-2.2.0/samples/c
chmod +x build_all.sh
./build_all.sh
</pre>
<p>Some of the training data for object detection is stored in /usr/local/share/opencv/haarcascades. You need to tell OpenCV which training data to use. I will use one of the frontal face detectors available. Let&#8217;s find a face:</p>
<pre class="brush: bash; title: ; notranslate">
./facedetect --cascade=&quot;/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml&quot; --scale=1.5 lena.jpg
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-1.png"><img title="Screenshot-1" src="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-1-288x300.png" alt="" width="288" height="300" /></a></p>
<p>Note the scale parameter. It allows you to increase or decrease the size of the smallest object found in the image (faces in this case). Smaller numbers allows OpenCV to find smaller faces, which may lead to increasing the number of false detections. Also, the computation time needed gets larger when searching for smaller objects.</p>
<p>You can also detect smaller objects that are inside larger ones. For example you can search for eyes inside any detected face. You can do that with the nested-cascade parameter:</p>
<pre class="brush: plain; title: ; notranslate">
./facedetect --cascade=&quot;/usr/local/share/opencv/haarcascades/haarcascade_frontalface_alt.xml&quot; --nested-cascade=&quot;/usr/local/share/opencv/haarcascades/haarcascade_eye.xml&quot; --scale=1.5 lena.jpg
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/eyes.png"><img src="http://www.samontab.com/web/wp-content/uploads/2011/06/eyes.png" alt="" title="eyes" width="300"  class="alignnone size-full wp-image-176" /></a><br />
Feel free to experiment with other features like mouth or nose for example using the corresponding cascades provided in the haarcascades directory.</p>
<p>Now let&#8217;s check some C++ demos:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~/OpenCV-2.2.0/samples/cpp
make
</pre>
<p>Now all the C++ demos are built in ~/OpenCV-2.2.0/bin. Let&#8217;s see a couple of them. For example, a simulated chessboard calibration:</p>
<pre class="brush: plain; title: ; notranslate">
~/OpenCV-2.2.0/bin/calibration_artificial
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/cppchess1.png"><img src="http://www.samontab.com/web/wp-content/uploads/2011/06/cppchess1.png" alt="" title="cppchess" width="300"  class="alignnone size-full wp-image-178" /></a><br />
In OpenCV 2.2, the grabcut algorithm is provided as a C++ sample. This is a very nice segmentation algorithm that needs very little user input to segment  the objects in the image. For using the demo, you need to select a rectangle of the area you want to segment. Then, hold the Control key and left click to select the background (in Blue). After that, hold the Shift key and left click to select the foreground (in Red). Then press the n key to generate the segmentation. You can press n again to continue to the next iteration of the algorithm.</p>
<pre class="brush: plain; title: ; notranslate">
~/OpenCV-2.2.0/bin/grabcut ~/OpenCV-2.2.0/samples/cpp/lena.jpg
</pre>
<p>This image shows the initial rectangle for defining the object that I want to segment.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/04/Screenshot-image-2.png"><img class="alignnone size-medium wp-image-43" title="Screenshot-image-2" src="http://www.samontab.com/web/wp-content/uploads/2010/04/Screenshot-image-2-288x300.png" alt="" width="288" height="300" /></a></p>
<p>Now I roughly set the foreground (red) and background (blue).</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/04/Screenshot-image-3.png"><img class="alignnone size-medium wp-image-44" title="Screenshot-image-3" src="http://www.samontab.com/web/wp-content/uploads/2010/04/Screenshot-image-3-288x300.png" alt="" width="288" height="300" /></a></p>
<p>When you are ready, press the n key to run the grabcut algorithm. This image shows the result of the first iteration of the algorithm.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/04/Screenshot-image-4.png"><img class="alignnone size-medium wp-image-45" title="Screenshot-image-4" src="http://www.samontab.com/web/wp-content/uploads/2010/04/Screenshot-image-4-288x300.png" alt="" width="288" height="300" /></a></p>
<p>Now let&#8217;s see some background subtraction from a video. The original video shows a hand moving in front of some trees. OpenCV allows you to separate the foreground (hand) from the background (trees).</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-tree.avi-VLC-media-player.png"><img title="Screenshot-tree.avi - VLC media player" src="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-tree.avi-VLC-media-player-281x300.png" alt="" width="281" height="300" /></a></p>
<pre class="brush: bash; title: ; notranslate">
~/OpenCV-2.2.0/bin/bgfg_segm ~/OpenCV-2.2.0/samples/c/tree.avi
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-2.png"><img title="Screenshot-2" src="http://www.samontab.com/web/wp-content/uploads/2010/03/Screenshot-2-300x122.png" alt="" width="300" height="122" /></a></p>
<p>And finally, let&#8217;s see Python working with OpenCV:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~/OpenCV-2.2.0/samples/python/
</pre>
<p>Let&#8217;s run the kmeans.py example. This script starts with randomly generated 2D points and then uses a clustering method called k-means. Each cluster is presented in a different color.</p>
<pre class="brush: plain; title: ; notranslate">
python kmeans.py
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/pythonkmeans.png"><img src="http://www.samontab.com/web/wp-content/uploads/2011/06/pythonkmeans.png" alt="" title="pythonkmeans" width="300" class="alignnone size-full wp-image-179" /></a></p>
<p>Now let&#8217;s see the convexhull.py demo. This algorithm basically calculates the smallest convex polygon that encompasses the data points.</p>
<pre class="brush: plain; title: ; notranslate">
python convexhull.py
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/convexHullPython.png"><img src="http://www.samontab.com/web/wp-content/uploads/2011/06/convexHullPython-284x300.png" alt="" title="convexHullPython" width="284" height="300" class="alignnone size-medium wp-image-180" /></a></p>
<p>Python scripts can also be executed directly like the following example. This script reads a video file (../c/tree.avi) within pyhton and shows the first frame on screen:</p>
<pre class="brush: plain; title: ; notranslate">
./minidemo.py
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/minidemoPython.png"><img src="http://www.samontab.com/web/wp-content/uploads/2011/06/minidemoPython-300x251.png" alt="" title="minidemoPython" width="300" height="251" class="alignnone size-medium wp-image-181" /></a><br />
Have fun with OpenCV in C, C++ or Python&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/06/installing-opencv-2-2-in-ubuntu-11-04/feed/</wfw:commentRss>
		<slash:comments>86</slash:comments>
		</item>
		<item>
		<title>Create installable applications (.sis files) from your Python scripts for Symbian</title>
		<link>http://www.samontab.com/web/2011/06/create-installable-applications-sis-files-from-your-python-scripts-for-symbian/</link>
		<comments>http://www.samontab.com/web/2011/06/create-installable-applications-sis-files-from-your-python-scripts-for-symbian/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 19:45:34 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=170</guid>
		<description><![CDATA[Python is great. It makes everything simple. Also, it can be run almost anywhere, even on your Nokia smartphones. In this post I will show you how to create an installable application (.sis file) from your Python scripts. The first step is to install Python 2.5 on your computer. It has to be 2.5. If [...]]]></description>
			<content:encoded><![CDATA[<p>Python is great. It makes everything simple. Also, it can be run almost anywhere, even on your Nokia smartphones. In this post I will show you how to create an installable application (.sis file) from your Python scripts.</p>
<p>The first step is to install Python 2.5 on your computer. It <strong>has</strong> to be <strong>2.5</strong>. If you have a newer version of Python installed, either downgrade to 2.5 or create a local folder with Python 2.5 executable on it and make sure you use that version. You can install Python 2.5 from <a title="Python 2.5" href="http://www.python.org/download/releases/2.5.4/">here</a>.</p>
<p>If you are on Ubuntu, probably you have a newer version of Python. Just get the source and compile it locally:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
mkdir py2sis
cd py2sis
wget http://www.python.org/ftp/python/2.5.4/Python-2.5.4.tgz
tar -xvzf Python-2.5.4.tgz
rm Python-2.5.4.tgz
cd Python-2.5.4
./configure
make
</pre>
<p>OK, so now we should have a local copy of Python 2.5.4. To test that everything is fine, run the following command:</p>
<pre class="brush: plain; title: ; notranslate">
~/py2sis/Python-2.5.4/python --version
</pre>
<p>It should report <strong>Python 2.5.4</strong>. Windows or Linux users that installed Python 2.5.4 on their entire system can always substitute <strong>~/py2sis/Python-2.5.4/python</strong> by just <strong>python</strong>. For them, the following command should report the same result:</p>
<pre class="brush: plain; title: ; notranslate">
python --version
 </pre>
<p>Now, we need to get the utilities that will allow us to create the sis files. That software is called <a title="ensymble" href="http://code.google.com/p/ensymble/">ensymble</a>. We need exactly this file: <a title="ensymble_python2.5-0.27.py" href="http://ensymble.googlecode.com/files/ensymble_python2.5-0.27.py">ensymble_python2.5-0.27.py</a></p>
<pre class="brush: plain; title: ; notranslate">
 cd ~/py2sis
wget http://ensymble.googlecode.com/files/ensymble_python2.5-0.27.py
~/py2sis/Python-2.5.4/python ~/py2sis/ensymble_python2.5-0.27.py version
 </pre>
<p>You should get this result: <strong>Ensymble v0.27 2008-06-30</strong>.</p>
<p>Now let&#8217;s get <a title="Python For S60" href="http://sourceforge.net/projects/pys60/">PythonForS60</a> sis file that will be installed alongside your script. We need the file PythonForS60_1_4_5_3rdEd.sis.</p>
<pre class="brush: plain; title: ; notranslate">
cd ~/py2sis
wget http://sourceforge.net/projects/pys60/files/pys60/1.4.5/PythonForS60_1_4_5_3rdEd.sis/download
mv download PythonForS60_1_4_5_3rdEd.sis
</pre>
<p>All done configuring the tools. Now we are going to create a Python script.</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
mkdir myFirstScript
cd myFirstScript
gedit default.py &amp;
</pre>
<p>Here you can put any Python code for Symbian S60. Let&#8217;s start with something simple. Write this and save the file:</p>
<pre class="brush: plain; title: ; notranslate">
import appuifw
appuifw.note(u&quot;Hello Symbian/Python World&quot;, &quot;info&quot;)
</pre>
<p>Time to create your first Python SIS file. Execute the following:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
~/py2sis/Python-2.5.4/python ~/py2sis/ensymble_python2.5-0.27.py py2sis myFirstScript
</pre>
<p>It should generate a file called <strong>myFirstScript_v1_0_0.sis</strong>. This is the sis file for your script. If you already have PythonForS60 sis installed in your phone, it should work. Most of the time though, users will not have it, so let&#8217;s merge the two into just one sis:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
~/py2sis/Python-2.5.4/python ~/py2sis/ensymble_python2.5-0.27.py mergesis myFirstScript_v1_0_0.sis ~/py2sis/PythonForS60_1_4_5_3rdEd.sis myFirstScript_v1_0_0_with_Python.sis
</pre>
<p>Now, you can just install <strong>myFirstScript_v1_0_0_with_Python.sis</strong> in your Nokia Symbian S60 3rd edition phone (like the E71 for example) and when you open it, you should see something like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/06/helloSymbianPython.jpg"><img class="alignnone size-full wp-image-171" title="helloSymbianPython" src="http://www.samontab.com/web/wp-content/uploads/2011/06/helloSymbianPython.jpg" alt="" width="320" height="240" /></a></p>
<p>Great, so now let&#8217;s automate this using a script:</p>
<pre class="brush: plain; title: ; notranslate">
sudo touch /usr/local/bin/py2sis.sh
sudo chmod +x /usr/local/bin/py2sis.sh
sudo gedit /usr/local/bin/py2sis.sh &amp;
</pre>
<p>Write these commands on the file:</p>
<pre class="brush: plain; title: ; notranslate">
#!/bin/bash
echo &quot;Creating script sis file...&quot;
~/py2sis/Python-2.5.4/python ~/py2sis/ensymble_python2.5-0.27.py py2sis myFirstScript
echo &quot;Merging script sis file with Python for S60 sis file...&quot;
~/py2sis/Python-2.5.4/python ~/py2sis/ensymble_python2.5-0.27.py mergesis myFirstScript_v1_0_0.sis ~/py2sis/PythonForS60_1_4_5_3rdEd.sis myFirstScript_v1_0_0_with_Python.sis
echo &quot;Done.&quot;
</pre>
<p>Now let&#8217;s test it erasing the files we just created and then generating them with the script:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
rm myFirstScript_v1_0_0*
py2sis.sh
</pre>
<p>It should create the same 2 sis files we just created before manually. Now, let&#8217;s edit the script so that we can tell it where is our source code and set other options:</p>
<pre class="brush: plain; title: ; notranslate">
sudo gedit /usr/local/bin/py2sis.sh &amp;
</pre>
<p>Replace the existing code with this:</p>
<pre class="brush: plain; title: ; notranslate">
#!/bin/bash

#Check that only 1 parameter is passed (the directory of your script)
EXPECTED_ARGS=1
if [ $# -ne $EXPECTED_ARGS ]
then
echo &quot;Usage: `basename $0` [ScriptDirectory]&quot;
exit -1
fi

#This is the directory where your Python for S60 Script is
PYTHON_SCRIPT_DIR=$1

#Application parameters
APP_SCRIPT_SIS_NAME=&quot;myApp.sis&quot;
APP_SCRIPT_WITH_PYTHON_SIS_NAME=&quot;myApp_with_python.sis&quot;
APP_NAME=&quot;My App&quot;
APP_VERSION=&quot;1.0.0&quot;
APP_SHORT_CAPTION=&quot;Short description.&quot;
APP_CAPTION=&quot;Here you can describe your application in more detail.&quot;
#Icon path. It should be a Tiny SVG compatible icon.
#To add an app icon, just uncomment the following line and edit the path to point to your icon
#APP_ICON=--icon=&quot;/path/to/your/icon.svg&quot;

#Environment variables
PYTHON_PATH=~/py2sis/Python-2.5.4/python
ENSYMBLE_PATH=~/py2sis/ensymble_python2.5-0.27.py
PYTHON_FOR_S60_PATH=~/py2sis/PythonForS60_1_4_5_3rdEd.sis

echo &quot;Creating script sis file...&quot;
&quot;${PYTHON_PATH}&quot; &quot;${ENSYMBLE_PATH}&quot; py2sis --appname=&quot;${APP_NAME}&quot; --version=&quot;${APP_VERSION}&quot; --shortcaption=&quot;${APP_SHORT_CAPTION}&quot; --caption=&quot;${APP_CAPTION}&quot; ${APP_ICON} &quot;${PYTHON_SCRIPT_DIR}&quot; &quot;${APP_SCRIPT_SIS_NAME}&quot;
echo &quot;Merging script sis file with Python for S60 sis file...&quot;
${PYTHON_PATH} ${ENSYMBLE_PATH} mergesis ${APP_SIS_NAME} ${PYTHON_FOR_S60_PATH} ${APP_SCRIPT_WITH_PYTHON_SIS_NAME}
echo &quot;Done.&quot;
</pre>
<p>There you can set many parameters for your app, like the name, icon, description, and more. Now you should be able to convert your Python scripts to a sis file by just doing this:</p>
<pre class="brush: plain; title: ; notranslate">
py2sis.sh ScriptDirectory
</pre>
<p>Remember to name the main script <strong>default.py</strong> since that is the file that ensymble is looking for inside the script folder.</p>
<p>Let&#8217;s test this new script, erasing the sis files and then executing this script to generate new sis files:</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
rm myFirstScript_v1_0_0*
py2sis.sh myFirstScript
</pre>
<p>You should see now a <strong>myApp.sis</strong> and a <strong>myApp_with_python.sis</strong> files. Note that those were the properties set in the script. Anytime you want to change these settings, just run this and edit them directly:</p>
<pre class="brush: plain; title: ; notranslate">
sudo gedit /usr/local/bin/py2sis.sh &amp;
</pre>
<p>OK, now go and create some cool Python apps in no time for your Nokia phone. Check out this <a title="Python for S60 tutorial" href="http://mobilenin.com/pys60/menu.htm">excellent Symbian for S60 tutorial</a> made by a fellow Nokia Forum Champion, Jurgen Scheible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/06/create-installable-applications-sis-files-from-your-python-scripts-for-symbian/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Nokia Developers Day in Santiago, Chile</title>
		<link>http://www.samontab.com/web/2011/05/nokia-developers-day-in-santiago-chile/</link>
		<comments>http://www.samontab.com/web/2011/05/nokia-developers-day-in-santiago-chile/#comments</comments>
		<pubDate>Mon, 30 May 2011 22:36:42 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=165</guid>
		<description><![CDATA[Over one hundred people attended the first Nokia Developers Day in Santiago, Chile. The event was held at the Pontificia Universidad Católica de Chile, which is the university where I have been teaching a course about development of mobile phone applications, at the computer science department. The first part of the event was a general [...]]]></description>
			<content:encoded><![CDATA[<p>Over one hundred people attended the first Nokia Developers Day in Santiago, Chile. The event was held at the <a title="Pontificia Universidad Catolica de Chile" href="http://en.wikipedia.org/wiki/Pontifical_Catholic_University_of_Chile" target="_blank">Pontificia Universidad Católica de Chile</a>, which is the university where I have been teaching a course about development of mobile phone applications, at the computer science department.</p>
<p>The first part of the event was <a href="http://www.samontab.com/web/wp-content/uploads/2011/05/Audit-Historia-San+Joaquín6-peq.jpg"><img class="size-medium wp-image-168 alignright" title="Audit-Historia-San+Joaquín6-peq" src="http://www.samontab.com/web/wp-content/uploads/2011/05/Audit-Historia-San+Joaquín6-peq-300x224.jpg" alt="" width="300" height="224" /></a>a general introduction to the current market strategy and opportunities that Nokia is providing to the local developers. One of the most important topics covered was that Nokia supports global payment via network operators. This means that people around the world can pay for your application without using their credit cards, which makes it easier to sell for the developer. Another important point is that feature phones, of which Nokia still has a large market share, are getting <em>smarter</em> every day. This means that feature phones now support touch UI, have capable CPUs, and new APIs are appearing for them, such as the <a title="Nokia Ovi Maps API for Java ME" href="https://projects.forum.nokia.com/LBSPJME" target="_blank">Nokia Maps API</a>.  On top of this data plans are getting cheaper, so many people are getting <em>always on</em> connectivity with these devices.  At the end of this session, key players from local development companies presented their experience developing for Nokia handsets.</p>
<p>In the second half, I presented the <a title="Qt SDK" href="http://qt.nokia.com/products/" target="_blank">Qt framework</a> for software development on multiple platforms with a focus on Symbian. The idea of the talk was to motivate the use of Qt for mobile phone application development, based on the fact that it is a mature framework, with more than 18 years of development. The mixture of a powerful framework, such as Qt, with integrated sensors,  <a href="http://www.samontab.com/web/wp-content/uploads/2011/05/0054nokia-peq.jpg"><img class="size-medium wp-image-167 alignleft" title="0054nokia-peq" src="http://www.samontab.com/web/wp-content/uploads/2011/05/0054nokia-peq-300x200.jpg" alt="Sebastian Montabone" width="300" height="200" /></a>such as GPS, accelerometers, cameras, bluetooth, etc&#8230;, gives the developers the ability to create innovative applications easily. Some examples of these applications are mixed or augmented reality type of applications. You can use the GPS to locate yourself broadly, then you can use the accelerometer to know where the device is pointing at. After that, you can use the camera to process what the phone is looking at since the whole world is filtered to just a small area. This is just an example of which type of applications you can develop since with these tools your imagination is the limit. Also, since Qt is a multi platform SDK, you can port your application to Windows, Linux, Mac, and others simply by selecting that platform from a drop down menu and clicking the compile button.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/05/nokia-developers-day-in-santiago-chile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to install Redmine 1.1.2 on Ubuntu Server 10.04</title>
		<link>http://www.samontab.com/web/2011/04/how-to-install-redmine-1-1-2-on-ubuntu-server-10-04/</link>
		<comments>http://www.samontab.com/web/2011/04/how-to-install-redmine-1-1-2-on-ubuntu-server-10-04/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 21:19:39 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=154</guid>
		<description><![CDATA[Redmine is an excellent project management tool written using Ruby on Rails. It provides everything you need to organise your workplace or personal projects. Once you see it working you definitely will want to use it on your own projects. Everything is great until you want to install it since redmine only works with very [...]]]></description>
			<content:encoded><![CDATA[<p><a title="redmine" href="http://www.redmine.org/" target="_blank">Redmine</a> is an excellent project management tool written using Ruby on Rails. It provides everything you need to organise your workplace or personal projects. Once you see it <a title="Redmine demo" href="http://demo.redmine.org/" target="_blank">working</a> you definitely will want to use it on your own projects. Everything is great until you want to install it since redmine only works with very specific versions of its dependencies. There are many steps that you need to take into consideration, even if you install the outdated version in the repositories. In this guide, I will show you how to install redmine 1.1.2 (the latest version at the time of writing) on Ubuntu Server 10.04 32 bits (latest LTS version at the time of writing).</p>
<p>Make sure that you installed <a title="Ubuntu Server" href="http://www.ubuntu.com/business/get-ubuntu/download" target="_blank">Ubuntu Server 10.04</a> with SSH (optional) and LAMP support. Both can be selected to be automatically installed at the end of the normal Ubuntu Server 10.04 installation. Once it is installed, remember to update and upgrade your system.</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get update
sudo apt-get upgrade
</pre>
<p>First, let&#8217;s install some dependencies:</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get install ruby1.8-dev rubygems1.8 libmysql-ruby libmysqlclient-dev rake libopenssl-ruby libapache2-mod-passenger imagemagick libmagickcore-dev libmagickwand-dev
</pre>
<p>Now we can install the required packages for ruby, or gems. Note that some packages will take a long time to install and provide no output, so just be patient. Also, you will see some warnings like <strong>No definition for X</strong>. Ignore those, they mean that some documentation was not installed, and we can live with that.</p>
<pre class="brush: plain; title: ; notranslate">
sudo gem install rails -v=2.3.5
sudo gem install mysql
sudo gem install ruby-openid
sudo gem install i18n -v=0.4.2
sudo gem install passenger
sudo gem install rmagick
</pre>
<p>Now we have to prepare the database. Enter the MySQL console as root:</p>
<pre class="brush: plain; title: ; notranslate">
mysql -uroot -p
</pre>
<p>Provide the root password. This is the password you set in the early LAMP installation. Now, inside the MySQL console, execute these commands:</p>
<pre class="brush: plain; title: ; notranslate">
create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'myPassword';
grant all privileges on redmine.* to 'redmine'@'localhost';
exit
</pre>
<p>Remember to change <strong>myPassword</strong> with your actual password. This is the one that will be used for the user redmine in the database redmine at localhost.</p>
<p>Now it is time to get the redmine code. Execute the following commands to get redmine 1.1.2.</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
wget http://rubyforge.org/frs/download.php/74419/redmine-1.1.2.tar.gz
tar -xvzf redmine-1.1.2.tar.gz
cd redmine-1.1.2
</pre>
<p>Now setup the database configuration file to match our current environment:</p>
<pre class="brush: plain; title: ; notranslate">
cp config/database.yml.example config/database.yml
nano config/database.yml
</pre>
<p>Put the details of the database on the specific fields, in particular username and password. Username should be <strong>redmine</strong> and password should be <strong>myPassword</strong> or the one you provided before. Make sure that you change both, production and development sections. When you are finished, just hold Control and then press X. This is the command for exiting nano. It will ask if you want to save the changes, just press y (as in yes) and hit enter. That&#8217;s it, file saved and back to the console.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/04/database.png"><img class="size-medium wp-image-156 alignnone" title="database" src="http://www.samontab.com/web/wp-content/uploads/2011/04/database-300x191.png" alt="" width="300" height="191" /></a></p>
<p>Now do the same for configuring email:</p>
<pre class="brush: plain; title: ; notranslate">
cp config/email.yml.example config/email.yml
nano config/email.yml
</pre>
<p>For this example, we are going to use gmail, but you can use any email settings that you need. Make sure that address is smtp.gmail.com, port is changed to 587, domain is set to gmail.com (or your host if you use google apps) and that the user_name and password are your credentials. Also, make sure that you add a tls: true line. And finally, the most important part, is that you change login with <strong>plain</strong> in authentication.</p>
<pre class="brush: plain; title: ; notranslate">
production:
 delivery_method: :smtp
 smtp_settings:
 address: smtp.gmail.com
 port: 587
 tls: true
 domain: gmail.com # or your domain
 authentication: :plain
 user_name: fancyUsername@gmail.com # or your domain
 password: secretPassword
</pre>
<p>For gmail to work, we need to install a script. Let&#8217;s get it:</p>
<pre class="brush: plain; title: ; notranslate">
sudo apt-get install git-core
ruby script/plugin install git://github.com/collectiveidea/action_mailer_optional_tls.git
</pre>
<p>Let&#8217;s proceed with the installation:</p>
<pre class="brush: plain; title: ; notranslate">
rake generate_session_store
sudo mkdir /opt/redmine
cd /opt/redmine
sudo cp -r ~/redmine-1.1.2 .
cd redmine-1.1.2
sudo RAILS_ENV=production rake db:migrate
sudo RAILS_ENV=production rake redmine:load_default_data
</pre>
<p>Press enter to accept the default language (English) and then execute the following:</p>
<pre class="brush: plain; title: ; notranslate">
sudo chown -R www-data:www-data files log tmp public/plugin_assets
sudo chmod -R 755 files log tmp public/plugin_assets
sudo nano /etc/apache2/mods-available/passenger.conf
</pre>
<p>Add this line inside the &lt;IfModule mod_passenger.c&gt; tag:</p>
<pre class="brush: plain; title: ; notranslate">
PassengerDefaultUser www-data
</pre>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/04/passenger.png"><img class="size-medium wp-image-162 alignnone" title="passenger" src="http://www.samontab.com/web/wp-content/uploads/2011/04/passenger-300x192.png" alt="" width="300" height="192" /></a></p>
<p>Now let&#8217;s configure apache:</p>
<pre class="brush: plain; title: ; notranslate">
sudo nano /etc/apache2/sites-available/default
</pre>
<p>Just before the closing tag, &lt;/VirtualHost&gt;, add the following:</p>
<pre class="brush: plain; title: ; notranslate">
RailsEnv production
RailsBaseURI /redmine
</pre>
<p><a href="../wp-content/uploads/2011/04/rails.png"><img title="rails" src="../wp-content/uploads/2011/04/rails-300x191.png" alt="" width="300" height="191" /></a></p>
<p>Now we put a link to our application to be accessible from apache and restart it:</p>
<pre class="brush: plain; title: ; notranslate">
sudo ln -s /opt/redmine/redmine-1.1.2/public /var/www/redmine
sudo /etc/init.d/apache2 restart
</pre>
<p>Some clean up&#8230;</p>
<pre class="brush: plain; title: ; notranslate">
cd ~
rm -r redmine-1.1.2
rm redmine-1.1.2.tar.gz
</pre>
<p>The installation process is finished. Open a web browser in another computer and go to yourServerIP/redmine and you should see the initial page of redmine. If it does not show, then something is wrong in your installation. Go back and carefully follow the steps from the beginning. If you do not know your IP address, just run ifconfig from the server.<br />
<a href="http://www.samontab.com/web/wp-content/uploads/2011/04/screen.png"><img class="size-medium wp-image-160 alignnone" title="screen" src="http://www.samontab.com/web/wp-content/uploads/2011/04/screen-300x166.png" alt="" width="300" height="166" /></a><br />
Click on Sign-in. Enter <strong>admin</strong> for user and password. Now you are logged in as the redmine administrator. Go to <strong>Administration</strong> and then click on <strong>Information</strong>. You should see the following:<br />
<a href="http://www.samontab.com/web/wp-content/uploads/2011/04/screen2.png"><img class="size-medium wp-image-161 alignnone" title="screen2" src="http://www.samontab.com/web/wp-content/uploads/2011/04/screen2-300x207.png" alt="" width="300" height="207" /></a><br />
Note that Redmine 1.1.2 stable is installed correctly with RMagick and the directories that it needs are writeable. The only thing left to do here is to change the details of the administrator account (that is why there is one error sign), and start creating users and projects and manage them with this great tool. Once you change your administrator account, you should see no errors on the information page:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/04/noerrors1.png"><img class="alignnone size-medium wp-image-164" title="noerrors" src="http://www.samontab.com/web/wp-content/uploads/2011/04/noerrors1-300x201.png" alt="" width="300" height="201" /></a></p>
<p>And now you can enjoy all the features of this great project manager: Gantt charts, Roadmaps, wiki, file repositories, multiple project support, forums, and much more&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/04/how-to-install-redmine-1-1-2-on-ubuntu-server-10-04/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>40 great apps for the Nokia E71, or how to do cool things with your symbian phone</title>
		<link>http://www.samontab.com/web/2011/02/40-great-apps-for-the-nokia-e71-or-how-to-make-cool-things-with-your-symbian-phone/</link>
		<comments>http://www.samontab.com/web/2011/02/40-great-apps-for-the-nokia-e71-or-how-to-make-cool-things-with-your-symbian-phone/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 05:31:22 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=105</guid>
		<description><![CDATA[I really like my Nokia E71. And I am not the only one saying it. It has many fans around the world, so it is not surprising that it has more than 300 positive reviews on Amazon. It also comes with a nice price tag. The only problem I had was that I spent a [...]]]></description>
			<content:encoded><![CDATA[<p>I really like my Nokia E71. And I am not the only one saying it. It has many <a href="http://www.e71fanatics.com/">fans</a> around the world, so it is not surprising that it has more than <a href="http://www.amazon.com/Nokia-E71-Unlocked-Navigation-Slot--U-S/dp/B001BZJ54U/ref=sr_1_1?ie=UTF8&amp;qid=1298860738&amp;sr=8-1">300 positive reviews on Amazon</a>. It also comes with a nice price tag. The only problem I had was that I spent a lot of time searching for useful applications for this phone. This post is the result of my findings: 40 great applications that cover my needs(and hopefully yours) in many different areas.</p>
<p>The E71 is powered by Symbian OS, specifically S60 3rd edition. This version of the Symbian OS is currently the oldest one that can run most of the software that is out there, including applications developed with the new <a href="https://www.forum.nokia.com/Develop/Qt/">Nokia Qt SDK</a>. This means that if you have a phone with a newer version of the Symbian OS (S60 5th edition or Symbian^3), you should be able to run all the applications that I am going to list here as well.</p>
<p>OK, here I present you 40 great apps for the Nokia E71:</p>
<ol>
<li><a href="http://www.drjukka.com/YBrowser.html">Y-Browser</a><br />
This is a file browser for your phone. The nice thing is that it shows you hidden directories and files, so it is better to use this one instead of the built in browser.</li>
<li><a href="http://store.ovi.com/content/7499">JoikuSpot Light</a><br />
Share your phone&#8217;s internet connection via WiFi. Connect multiple devices (laptops, other WiFi enabled phones, etc) to your phone and browse the internet everywhere.</li>
<li><a href="http://store.ovi.com/content/31721?cid=ovistore-fw-bac-na-acq-na-SportsTra-g0-na-1">SportsTracker</a><br />
If you do any type of outdoor exercises like jogging, walking, cycling, etc, download this app. It logs your position using GPS, and then uploads your exercises to an online server that shows your average speed, distance covered, map of the region, etc. It also can be connected to social networking sites such as facebook to encourage your work outs. Highly recommended.</li>
<li><a href="http://europe.nokia.com/support/product-support/maps-support/compatibility-and-download">Nokia Maps</a><br />
The nice thing about Nokia Maps is that the maps data can be downloaded to the phone&#8217;s memory and then you can use it without any connection to the internet. Ideal when travelling abroad and you don&#8217;t have a local sim card or when you don&#8217;t want to pay for data plans. Also, it comes with turn by turn voice directions in many languages. And all of this for free, for ever.</li>
<li><a href="http://www.google.com/mobile/maps/">Google Maps</a><br />
Some times you may need extra information that is not available on Nokia Maps. On these rare occasions it is always handy to have the Googls Maps application installed. The good thing is that you can use the places that you saved on Nokia Maps (Favorites) in Google Maps (Starred Items). Note that this app does not come with turn by turn voice directions and it uses internet to get the maps.</li>
<li><a href="http://www.nanika.net/metro/">Metro</a><br />
This application tells you the shortest route from one station to another in your local metro (subway), as well as the one with fewest connections. It uses offline data, so no internet access is necessary. Cities from all over the world are supported. Highly recommended.</li>
<li><a href="http://home.pacific.net.sg/~welic/cCalc.html">cCalcPro</a><br />
This is a powerful yet easy to use scientific calculator. It contains many functions such as simple mathematical ones, as well as trigonometric,  financial and base functions. You could actually just use this calculator for every calculation you make, even for the simple ones since it is so easy to use, every key in the keyboard is mapped to a specific function, so it is like using a real calculator.</li>
<li><a href="http://www.mobipocket.com/en/DownloadSoft/application.asp?device=SymbianOs">MobiReader</a><br />
This app turns your phone into a nice e-book reader. For managing your e-books, and changing them to the format that this app understands, you can use <a href="http://calibre-ebook.com/">Calibre</a>, a great software for managing e-books on the PC.</li>
<li><a href="http://betalabs.nokia.com/apps/nokia-photo-browser/download_and_installation">Photo Browser</a><br />
This app displays your photos in a nice grid gallery with an easy to use interface. It looks and works better than the built in photo viewer.</li>
<li><a href="http://koti.mbnet.fi/mertama/software.html">Snapper</a><br />
If you want to make time-lapse movies, this is the app you should get. It allows you to take a picture every second, minute, hour, or any time interval that you need, up to one picture a day. It is simple to use and it works great. All the images are stored in a single folder. You can transfer that folder to the PC and then just drag and drop the first image into <a href="http://fixounet.free.fr/avidemux/">Avidemux</a> and with a couple of clicks you can create a video out of them.</li>
<li><a href="http://www.smartphoneware.com/screen_snap-for-s60-3rd-edition-product.php">ScreenSnap</a><br />
This is for taking screen-shots in your phone. It does the same thing as the Print Screen button on a PC.</li>
<li><a href="http://sourceforge.net/projects/smartcam/">SmartCam</a><br />
This application allows you to use your phone as a web-cam. It can use Bluetooth or WiFi for connecting to the device.</li>
<li><a href="http://www.m3dcam.com/download.php">m3DCam</a><br />
Have you ever seen a 3D image using a Red and Cyan lens?, well this app lets you create those images. Take an photo, move the phone and take the second one. This app then creates the image that you can see with your lenses in 3D.</li>
<li><a href="http://www.byterapers.com/BeatEd/blog/static.php?page=features">BeatEd</a><br />
Do you play any instrument?, if you do, you should check this app out. It is a drum machine. Ideal for accompanying your training sessions. You can create your own rhythms with its 16 channel audio mixer. It is really easy to use and you can download many samples from the website to get you started.</li>
<li><a href="http://hqh.unlink.org/s60/index.php?p=download">Chromatic Tuner</a><br />
If you need to tune your instrument, this is the app that you are looking for. Simply go to a quiet place, start the application and play a note on your guitar (or any other tunable instrument). It will tell you which note is being played.</li>
<li><a href="http://www.ebuddy.com/mobilebeta/index.php">eBuddy</a><br />
Instant messenger. Chat with your friends from msn, yahoo, facebook, and many others in just one application.</li>
<li><a href="http://www.opera.com/mobile/">Opera Mobile</a><br />
A great mobile web browser, with support for tabs and many other features.</li>
<li><a href="http://www.skype.com/intl/en/get-skype/on-your-mobile/download/skype-for-symbian/">Skype</a><br />
Call and chat worldwide with your friends, cheaper than using regular phones.</li>
<li><a href="http://www.fring.com/download/">Fring</a><br />
This application integrates all your contacts from your phone contacts, msn, yahoo, etc, and allows you to chat, call and video call them using internet as well as cellular calls. It could be used to replace the native contact list, as well as the log of the calls.</li>
<li><a href="http://www.google.com/mobile/mail/index.html">Gmail</a><br />
Read your email everywhere.</li>
<li><a href="http://symbian-freeware.web.id/download/s60spoton-version-007">S60SpotOn</a><br />
Use your camera flash and the LCD screen to illuminate your surroundings. Nice to have when the lights go out.</li>
<li><a href="http://www.qcontinuum.org/compass/">Compass</a><br />
This application uses the position of the sun and moon to indicate you where the north is. You only need to put the phone facing up, aligned with the shown diagram and you will know where the north is. Also, it gives you extra information such as sunrise, sunset and moon phase.</li>
<li><a href="http://sideralis.free.fr/download.html">Sideralis<br />
</a>If you like to watch the stars, this app is for you. Once you configure it for your location, it will show you the stars that are in your view. You can freely navigate the 3D display of the stars to match the part of the sky you are looking at. Information about the stars is available as well as some astronomic terms explained.</li>
<li><a href="http://www.mobilewitch.com/Mobilewitch-Bluetooth-Remote-Control_software_details_2.htm">RemoteWitch</a><br />
Control your PC with your phone. Specially useful for presentations or media playback.</li>
<li><a href="http://sourceforge.net/projects/pys60/files/pys60/1.4.5/">PyS60</a><br />
This is the Python port to the S60 phones. Install it to add the ability to run python scripts on your phone. You need to install both, first PythonForS60_1_4_5_3rdEd.sis and then PythonScriptShell_1_4_5_3rdEd.SIS. Note that there is a newer version of PyS60 <a href="https://garage.maemo.org/frs/?group_id=854">here</a> that features Python 2.5, but some applications need the older version installed. Well, you can actually have both versions installed without problems.</li>
<li><a href="http://code.google.com/p/ped-s60/">Ped</a><br />
This is a Python IDE as well as a general text editor. You need to install PyS60 first in order to install it. Also, you need to install it on the same place that you installed PyS60 (phone memory). It has many features, in particular auto completion. You can access the auto completion feature by holding the green button (call) and then pressing the enter button (center of d-pad). This app is also great for text editing in general.</li>
<li><a href="http://jbak.ru/jbaktaskman_en.php">JBakTaskMan<br />
</a>This is an advanced task manager. It has many nice features, such as launching applications by typing their name, among many others. A must have app for the power user.</li>
<li><a href="http://www.symbian-freeware.com/download-freetimebox.html">FreeTimeBox</a><br />
This is an awesome and simple application. It simply displays the current time at the menu bar, always. Now you will never need to go to the Home screen just for knowing the time when you are in the middle of something. You can configure it to disappear when certain applications are running (games for example), as well as the appearance and position. This app is a must.</li>
<li><a href="http://www.dreamstrikes.com/applications-series-60-3rd-edition-mobiles/89770-voyager-home-screen-vhome-v4-20-en-tuanloc.html">vHome 4.2</a><br />
If you want to change how the Home screen looks, you can install this app. It is a task manager that allows you to change the Home screen with many features. For example, if you need more than the normal 6 apps shortcuts, you can add up to 14 with this app. You can also add weather information or RSS feeds to your home screen. Recommended for the power user.</li>
<li><a href="http://notaz.gp2x.de/gpfce.php">GPFCe</a><br />
Nintendo emulator. This emulator supports sound. Re play your old NES games while you wait for the bus, or anywhere!.</li>
<li><a href="http://www.summeli.fi/?p=845">AntSnes<br />
</a>Super Nintendo emulator. It does not support sound though, but the  idea of having the ability to play your old Super NES games in your  phone is awesome.</li>
<li><a href="http://s60dosbox.sourceforge.net/">DOSBox</a><br />
DOS emulator. This is the port of the DOSBox project to the S60 platform. With this, you can run DOS on your phone, so you can use all your old DOS programs in your phone. You can even run big applications such as Windows 98.</li>
<li><a href="http://sourceforge.net/projects/pamp/files/pamp/1_00_02/">Pamp</a><br />
Personal Apache MySQL PHP. Really. You can have a whole web-server on your phone, with databases,  and dynamic pages. You could be hosting a whole CMS or a forum from your pocket. You could for example show a live feed from the camera without needing any external services. The possibilities are endless.</li>
<li><a href="http://www.symbian-freeware.com/download-sic-ftp-client.html">SICFTP</a><br />
This is an FTP client. Transfer files back and forth from any server.</li>
<li><a href="http://s2putty.sourceforge.net/download.html">Putty</a><br />
Good ol&#8217; Putty. Telnet and SSH client on your phone. Thanks to this you could be working on the bus ride to/from work.</li>
<li><a href="http://www.symbian-freeware.com/download-cpumonitor-v1-10.html">CpuMon</a><br />
This application displays the usage of CPU and Memory. Good for measuring performance of applications on real devices.</li>
<li><a href="http://store.ovi.com/content/17374">Energy Profiler</a><br />
Nokia released this nice application which shows the energy consumed by the device. This can be useful to developers and normal users. Developers can use this app for measuring the energy used by their applications to try to minimize it. Normal users can see the effects of applications and usage of the phone for extending battery life.</li>
<li><a href="http://betalabs.nokia.com/apps/nokia-device-status/download_and_installation">Device Status</a><br />
This app, developed by Nokia, shows you detailed information about the phone, such as the model, IMEI number, software version, memory available, installed applications, and network information, among other things.</li>
<li><a href="http://www.afischer-online.de/sos/celltrack/">CellTrack</a><br />
This application shows you information about the cell that you are connected to, such as the cell id and signal strength, among others.</li>
<li><a href="http://www.nokiamobiletalk.com/2009/07/free-unrar-for-symbian/">FreeUnRar</a><br />
This application allows you to open rar files.</li>
</ol>
<p>Please let me know if you think there is a cool application for the E71 that is missing from this list.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/02/40-great-apps-for-the-nokia-e71-or-how-to-make-cool-things-with-your-symbian-phone/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>How to control the orientation of an application in Qt</title>
		<link>http://www.samontab.com/web/2011/01/how-to-control-the-orientation-of-an-application-in-qt/</link>
		<comments>http://www.samontab.com/web/2011/01/how-to-control-the-orientation-of-an-application-in-qt/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 00:40:46 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=150</guid>
		<description><![CDATA[By default, S60 applications choose the current orientation automatically based on how the user is holding the device. This is convenient in general, but in some cases the developer needs more control regarding the orientation of the displayed content. In this post I will show you how to override this behavior and set the preferred [...]]]></description>
			<content:encoded><![CDATA[<p>By default, S60 applications choose the current orientation automatically based on how the user is holding the device. This is convenient in general, but in some cases the developer needs more control regarding the orientation of the displayed content. In this post I will show you how to override this behavior and set the preferred orientation for your application: portrait, landscape or automatic at run time.</p>
<p>The first thing that we need is to include a couple of libraries: <em>cone</em>, <em>eikcore</em> and <em>avkon</em>. This can be done by editing the Symbian specific part of the .pro file:</p>
<pre class="brush: plain; title: ; notranslate">
symbian {
TARGET.UID3 = 0xe9507491
# TARGET.CAPABILITY +=
TARGET.EPOCSTACKSIZE = 0x14000&lt;
TARGET.EPOCHEAPSIZE = 0x020000 0x800000
# We need these libs to change the orientation
LIBS += -lcone \
-leikcore \
-lavkon
}
</pre>
<p>Now we have to include the specific headers wherever we want to change the orientation of the device:</p>
<pre class="brush: plain; title: ; notranslate">
//These are the headers needed for changing the orientation
#ifdef Q_OS_SYMBIAN
#include &lt;eikenv.h&gt;
#include &lt;eikappui.h&gt;
#include &lt;aknenv.h&gt;
#include &lt;aknappui.h&gt;
#endif
</pre>
<p>Now we can just call to this function and the orientation will be changed to portrait, no matter how the user holds the device:</p>
<pre class="brush: plain; title: ; notranslate">
#ifdef Q_OS_SYMBIAN
CAknAppUi* appUi = dynamic_cast&lt;CAknAppUi*&gt; (CEikonEnv::Static()-&gt;AppUi());
    TRAPD(error,
    if (appUi) {
        appUi-&gt;SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);
    }
    )
#endif
</pre>
<p>You can do the same for Landscape or Automatic mode. Just change <em>EAppUiOrientationPortrait</em> to <em>EAppUiOrientationLandscape</em> or <em>EAppUiOrientationAutomatic</em> accordingly. Automatic is the default mode, that is, it will change the orientation depending on how the user holds the device.<br />
Make sure that you do not remove the Symbian OS checks (<em>#ifdef Q_OS_SYMBIAN</em>) because these libraries will only be available for the Symbian device, and not for the simulator for example.<br />
Feel free to <a title="Example of orientation" href="http://www.samontab.com/web/files/orientationExample.zip">download</a> the source code of an example that I made for controlling the orientation in Qt.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/double.png"><img class="size-medium wp-image-153 alignnone" title="double" src="http://www.samontab.com/web/wp-content/uploads/2011/01/double-300x191.png" alt="" width="300" height="191" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/01/how-to-control-the-orientation-of-an-application-in-qt/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How to easily sign a Nokia S60 unsigned application</title>
		<link>http://www.samontab.com/web/2011/01/how-to-easily-sign-a-nokia-s60-unsigned-application/</link>
		<comments>http://www.samontab.com/web/2011/01/how-to-easily-sign-a-nokia-s60-unsigned-application/#comments</comments>
		<pubDate>Sat, 15 Jan 2011 19:57:37 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=146</guid>
		<description><![CDATA[Sometimes you try to install a cool application on your Nokia S60 phone but you can&#8217;t do it because it is an unsigned application, or the signature has expired. This is to keep your phone and personal information safe from evil software developers that want to harm your phone or steal personal information, among others. [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes you try to install a cool application on your Nokia S60 phone but you can&#8217;t do it because it is an unsigned application, or the signature has expired. This is to keep your phone and personal information safe from evil software developers that want to harm your phone or steal personal information, among others.</p>
<p>Although, there are some cases where you trust the developer and want to install the unsigned software anyway. In this post I will show you how to sign it very easily (in less than 5 minutes).</p>
<p>The first step is to download and install a very useful software called <a title="SISContents" href="http://symbiandev.cdtools.net/">SISContents</a>.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/siscontents.png"><img class="alignnone size-medium wp-image-147" title="siscontents" src="http://www.samontab.com/web/wp-content/uploads/2011/01/siscontents-300x246.png" alt="" width="300" height="246" /></a></p>
<p>For this example, I will be using a very nice unsigned application that allows you to disable the camera sound when taking pictures. Once it is installed you only need to disable the warning tones in your profile (or enable and then disable them again) and your camera will be muted. You can download this cool unsigned application from <a href="http://www.samontab.com/web/files/mute-camera.zip">here</a>. Now you need to drag and drop the application you want to sign into  SISContents. You will see all the details of the application.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/sislisting.png"><img class="alignnone size-medium wp-image-148" title="sislisting" src="http://www.samontab.com/web/wp-content/uploads/2011/01/sislisting-300x246.png" alt="" width="300" height="246" /></a></p>
<p>The only thing that we need to do here is to change the Package UID so that it lies inside the Test Range defined by the Symbian Signed guys, which goes from 0xE0000000 to 0xEFFFFFFF. Basically, we want the UID to be an 8-digits <a href="http://en.wikipedia.org/wiki/Hexadecimal">hexadecimal number</a> starting with E and the rest does not really matter. In this example, I just changed the original UID <strong>0x10202BE9</strong> to <strong>0xE0202BE9</strong>. You can do the same, just<strong> </strong>change the first number of the UID to <em>E</em>). Then go to <em>File-&gt;Save As</em> and write a new file name to save the changes.</p>
<p>Now we need to sign the file you saved. The Symbian Signed guys offer a really easy to use Open Signed online service. You only need to provide the IMEI of your phone, your email and the application that you want to sign (the file you just saved). You can access their online signing service <a href="https://www.symbiansigned.com/app/page/public/openSignedOnline.do">here</a>. You can get your IMEI number easily by just typing *#06# in your phone.</p>
<p>You will then receive a confirmation email where you have to click on a link. Then, just wait and you will receive a second email with a download link for the signed application. Easy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/01/how-to-easily-sign-a-nokia-s60-unsigned-application/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to Create Your First Application for the Nokia N900 using Qt</title>
		<link>http://www.samontab.com/web/2011/01/how-to-create-your-first-application-for-the-nokia-n900-using-qt/</link>
		<comments>http://www.samontab.com/web/2011/01/how-to-create-your-first-application-for-the-nokia-n900-using-qt/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 02:16:47 +0000</pubDate>
		<dc:creator>samontab</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Qt]]></category>
		<category><![CDATA[app]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[demo]]></category>
		<category><![CDATA[first]]></category>
		<category><![CDATA[incompatible]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[n900]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[qt]]></category>
		<category><![CDATA[section]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[unknown]]></category>

		<guid isPermaLink="false">http://www.samontab.com/web/?p=124</guid>
		<description><![CDATA[Nokia&#8217;s N900 is a great smartphone. Actually it is a mobile computer running Linux. It has a touchscreen and a real keyboard as well as many embedded goodies: proximity and ambient light sensors, tri-axial accelerometer, camera, Bluetooth, Wi-Fi, GPS and IR. This makes the N900 the perfect device for your next hacking project or cool [...]]]></description>
			<content:encoded><![CDATA[<p>Nokia&#8217;s <a href="http://maemo.nokia.com/n900/">N900</a> is a great smartphone. Actually it is a mobile computer running Linux. It has a touchscreen and a real keyboard as well as many embedded goodies: proximity and ambient light sensors, tri-axial accelerometer, camera, Bluetooth, Wi-Fi, GPS and IR. This makes the N900 the perfect device for your next hacking project or cool new application.</p>
<p>The first step for creating apps for the N900 is to download and install the <a title="Nokia Qt SDK" href="http://www.forum.nokia.com/Develop/Qt/">Nokia Qt SDK</a>. Qt is a very powerful SDK for creating applications for many environments, such as Windows, Linux, Mac, Maemo (this is what the N900 runs), Symbian, and Windows CE. That means that you only need to code once and you have native applications for all those environments. Nice.</p>
<p>After Nokia Qt SDK is installed, open Qt Creator which is the IDE included with Qt. You should see something like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/qtwin1.png"><img class="size-medium wp-image-126 alignnone" title="qtwin" src="http://www.samontab.com/web/wp-content/uploads/2011/01/qtwin1-300x230.png" alt="Nokia qt sdk for windows" width="300" height="230" /></a></p>
<p>Now, you need to create a new project. Go to <strong>File-&gt;New File or Project</strong>. There, under <strong>Qt C++ Project</strong>, you need to select <strong>Mobile Qt Application</strong> and click <strong>Choose</strong>.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/mobileqt.png"><img class="alignnone size-medium wp-image-127" title="mobileqt" src="http://www.samontab.com/web/wp-content/uploads/2011/01/mobileqt-300x255.png" alt="" width="300" height="255" /></a></p>
<p>Now you need to input the name and path of the project. Make sure that you <strong>do not use any spaces or special characters</strong> in either the name or the path of the project.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/name.png"><img class="alignnone size-medium wp-image-129" title="name" src="http://www.samontab.com/web/wp-content/uploads/2011/01/name-300x210.png" alt="" width="300" height="210" /></a></p>
<p>In the next window you will define the targets of your project. The options shown will depend on the specific SDKs that you have installed on your computer. At least you should have Maemo, Qt Simulator and Symbian Device since all of them are part of the Nokia Qt SDK. <strong>Select Maemo and Qt Simulator</strong>. Maemo is the platform for the N900 and the Qt Simulator is useful for design and debug on the PC.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/maemo.png"><img class="alignnone size-medium wp-image-130" title="maemo" src="http://www.samontab.com/web/wp-content/uploads/2011/01/maemo-300x195.png" alt="" width="300" height="195" /></a></p>
<p>Next you will see the details of the classes that will be generated for you. Leave everything as default. It will create a  class called <em>MainWindow</em> derived from <em>QMainWindow</em>. Nothing to worry here, basically it is a class that represents a window. There are three files that will be created for this class; the <em>mainwindow.cpp</em> which holds the implementation of the methods of the class, <em>mainwindow.h</em> which defines the class itself and lists the methods, and<em> mainwindow.ui</em> which generates the UI based on the graphical designer inside Qt Creator.<strong> Just press Next</strong>.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/window.png"><img class="alignnone size-medium wp-image-131" title="window" src="http://www.samontab.com/web/wp-content/uploads/2011/01/window-300x230.png" alt="" width="300" height="230" /></a></p>
<p>Now you will see the summary of the project. <strong>Click on Finish</strong>.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/end.png"><img class="alignnone size-medium wp-image-135" title="end" src="http://www.samontab.com/web/wp-content/uploads/2011/01/end-300x223.png" alt="" width="300" height="223" /></a></p>
<p>Now you have a blank window and different controls that you can drag and drop into it. You can add buttons, text edits, combo boxes, calendars, and many more. Try dragging a couple of controls and looking at their properties on the right side. You can erase any control by just selecting it and pressing the Delete key.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/blankscreen2.png"><img class="alignnone size-medium wp-image-134" title="blankscreen" src="http://www.samontab.com/web/wp-content/uploads/2011/01/blankscreen2-300x189.png" alt="" width="300" height="189" /></a></p>
<p>Let&#8217;s create a very simple application, something that sums two numbers. First, we need to add a <em>Layout</em>. A Layout brings order to the application&#8217;s items, and makes sure that it will look good on any platform. There are different types of layouts: <em>horizontal</em>, <em>vertical</em>, <em>form </em>and <em>grid</em>. Vertical and horizontal layouts are straightforward since they represent just a list of items on each direction. If you want to put two items per row, you can use the form layout. This layout is perfectly suited for aligning each text label with its corresponding text edit. If you have a more complex application UI, you can use the grid layout which is more flexible. For this simple application I will use the Form Layout. Just drag it to the window. A red rectangle should appear.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/formLayout.png"><img class="alignnone size-medium wp-image-136" title="formLayout" src="http://www.samontab.com/web/wp-content/uploads/2011/01/formLayout-300x161.png" alt="" width="300" height="161" /></a></p>
<p>Now lets put some controls on the layout. I will be using three <em>Text Edits</em>, one for each number and one for the sum of them. You can find them under the <em>Input Widgets</em> category. Also, I will be using two <em>Labels</em>, found under <em>Display Widgets</em> and a <em>Push Button</em>, found under the <em>Buttons</em> category. Drag and drop them inside the red rectangle so that you see something like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/form.png"><img class="alignnone size-full wp-image-137" title="form" src="http://www.samontab.com/web/wp-content/uploads/2011/01/form.png" alt="" width="256" height="186" /></a></p>
<p>Now lets configure each item. You can double click on each of them to change the text or to input default values. If you click on an item it will be selected, and all of its properties will be shown on the right side. Select each line edit and change its <em>objectName</em> property to <em>number1</em>, <em>number2</em> and <em>sum</em> accordingly. Change the push button objectName to <em>sumNumbers</em>. The last thing that you need to do here is to set the <em>sizePolicy</em> for each item. Select every item and under sizePolicy, for horizontal and vertical select <strong>Expanding</strong>. This means that the items will expand to the correct size for any device. If you do not set these policies, probably you will not be able to see the items on the phone due to their small size.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/form2.png"><img class="alignnone size-full wp-image-138" title="form2" src="http://www.samontab.com/web/wp-content/uploads/2011/01/form2.png" alt="" width="211" height="148" /></a></p>
<p>OK, lets do some coding now. What we want the application to do is to sum <em>number1</em> and <em>number2</em> and output the result when the users clicks the <em>Sum</em> button. An easy way of accessing the code is to right click on the push button and select <strong>Go To Slot&#8230;</strong>. This will open a dialog with all the slots of that object. We are interested in the Clicked() slot, so select it and click OK. If you ask yourself what a slot is, just think of it as an event. Although if you really want to use Qt you should learn about <a title="Signals and Slots from Qt" href="http://en.wikipedia.org/wiki/Signals_and_slots">signals and slots</a>.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/slots.png"><img class="alignnone size-medium wp-image-139" title="slots" src="http://www.samontab.com/web/wp-content/uploads/2011/01/slots-300x125.png" alt="" width="300" height="125" /></a></p>
<p>Alright, now we are in the <em>Edit</em> tab of Qt Creator (before we were in the <em>Design</em> tab). This is where you can see all the source files and the actual code for the application. If you selected the Clicked() slot from the previous paragraph, a function will be created for you. Note that the function name, <strong>on_sumNumbers_clicked()</strong>,  has the name of the item (<em>sumNumbers</em>) and the slot (<em>clicked()</em>). This is the actual function that gets called when the sum button is pressed. Here is where we will do the actual coding.</p>
<pre class="brush: plain; title: ; notranslate">
void MainWindow::on_sumNumbers_clicked()
{
 //anything from the user interface that we created is inside the ui object.
//first, get the two numbers as ints
 int number1 = ui-&gt;number1-&gt;text().toInt();
 int number2 = ui-&gt;number2-&gt;text().toInt();
 //now sum the numbers
 int result = number1 + number2;
 //finally store the result as text in the sum line edit
 ui-&gt;sum-&gt;setText(QString::number(result));
}
</pre>
<p>OK, now the coding is done. Lets see it running on the emulator. Make sure that Qt Simulator is selected on the left side, above the green play button. To run it, just press the green play button. You should see something like this:</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/simulator2.png"><img class="alignnone size-medium wp-image-142" title="simulator2" src="http://www.samontab.com/web/wp-content/uploads/2011/01/simulator2-300x183.png" alt="" width="300" height="183" /></a></p>
<p>Note that this is the actual N900 simulator. If you see a different phone, you can change it in the simulator window: Under the <em>View</em> category you will see a <em>Device</em> selection, just select <strong>Maemo Freemantle</strong> and the N900 should appear. Now you can use the application, input some values and after you click Sum, the result should appear correctly. If the application does not work properly at this stage, go back to the code and correct any mistakes.</p>
<p>Once you have your application running in the simulator, it is time to compile it for the real N900 device. For doing that first close the simulator. Then, select <strong>Maemo</strong> above the green play symbol. Wait a couple of seconds until the Parsing, Scanning and Evaluating processes are done. After that, go to <strong>Build-&gt;Build All</strong>. Do not press the green arrow as you did before with the simulator. Wait until the building process is finished.</p>
<p>Although the application was built successfully, there are a couple of things that we need to do before we can send the application to the device. First, go to the directory where the project was created. You should see the source files as well as the compiled application, <strong>myfirstmobileapp_0.0.1_armel.deb </strong>and a <strong>debian</strong> folder. Go inside that folder. There you will find a file called <strong>control</strong>. We need to edit this file. Drag and drop it inside Qt Creator (or use any other editor). The contents of the file will be something similar to this:</p>
<pre class="brush: plain; title: ; notranslate">
Source: myfirstmobileapp
Section: unknown
Priority: extra
Maintainer: unknown &lt;&gt;
Build-Depends: debhelper (&gt;= 5)
Standards-Version: 3.7.3
Homepage: &lt;insert the upstream URL, if relevant&gt;
Package: myfirstmobileapp
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: &lt;insert up to 60 chars description&gt;
 &lt;insert long description, indented with spaces&gt;
</pre>
<p>The problem is in the <strong>Section: unknown</strong> statement. You need to change it to any valid section different than unknown. For example <strong>Section:  user/development</strong> or <strong>Section: user/other</strong> or any other valid section. If you don&#8217;t change this, you will receive an &#8220;<strong>incompatible application package</strong>&#8221; error when you try to install your application.</p>
<p>Now we are going to add an icon for the application. Inside the Debian directory, you will see a folder with the name of your application, in my case <strong>myfirstmobileapp</strong>. Go inside that folder. There you will see two folders, <em>DEBIAN</em> and <em>usr</em>. Go inside the <em>usr </em>folder. There you will see three folders: <em>bin</em>, <em>local</em> and <em>sbin</em>. Create a new folder there called <em>share</em>. Go inside the newly created <em>share</em> folder. There, create two folders: <em>icons</em> and <em>applications</em>. Inside the icons folder, place the icon for your application, in png format and 64&#215;64 in size. Name it <em>myfirstmobileapp.png</em> or your specific application name. You can use this image as a template.</p>
<p><a href="http://www.samontab.com/web/wp-content/uploads/2011/01/myfirstmobileapp.png"><img class="alignnone size-full wp-image-143" title="myfirstmobileapp" src="http://www.samontab.com/web/wp-content/uploads/2011/01/myfirstmobileapp.png" alt="" width="64" height="64" /></a></p>
<p>Now, go inside the Applications folder that you just created. There, create a folder called <em>hildon</em>. Go inside that folder. There, you have to create a text file called <strong>myfirstmobileapp.desktop</strong>. It should have the following contents:</p>
<pre class="brush: plain; title: ; notranslate">
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=myFirstMobileApp
Exec=/usr/local/bin/myFirstMobileApp
Icon=myfirstmobileapp
StartupWMClass=
X-Window-Icon=myfirstmobileapp
X-HildonDesk-ShowInToolbar=true
X-Osso-Type=application/x-executable
Terminal=false
</pre>
<p>Make sure that you change <em>myfirstmobileapp</em> with your application name. Note that the icon filename does not need to have the PNG extension. After doing that, you are ready. Delete the application (<strong>myfirstmobileapp_0.0.1_armel.deb</strong>), go to Qt Creator and build it again. Now the generated application should install without a problem in your N900.</p>
<p>Now you need to send the application deb file into your phone. You can do that easily by transferring the file via Bluetooth from your computer. You can select in the N900 to automatically open the file once the transfer is completed. That will launch the installation process. Also, you can use other methods such as an USB cable, or using internet and then use the file browser to navigate to the deb file and launch the installation process. That is all you need to install an application in the N900.</p>
<p>If you are having problems following this tutorial, or if you just want fast results, you can download my sample project and use it as a template for your applications. This way you can focus more on creating cool applications instead of trying to compile them on the N900.</p>
<p>Instructions:</p>
<p>First, download the <a title="The sample project for N900 from samontab" href="http://www.samontab.com/web/files/myFirstMobileApp.zip">project</a> and extract it. Then, double click on <em>myFirstMobileApp.pro</em>. This will open Qt Creator. Select Maemo and Qt Simulator on the Project Setup window. Then, select <strong>Maemo</strong> as the target (above the green arrow) and then build the project (<strong>Build-&gt;Build all</strong>).</p>
<p>Now you need to make the corrections so that it installs on the N900. Download <a title="Fix for the project" href="http://www.samontab.com/web/files/share.zip">this</a> and extract it. Put the <em>share</em> folder you just extracted inside the<em> debian/myfirstmobileapp/usr</em> folder . You should now see four directories under usr: bin, local, sbin and share.</p>
<p>The next step is to overwrite the <em>control</em> file. Download the corrected file from <a title="Fix for the control file" href="http://www.samontab.com/web/files/control.zip">here</a> and copy it into the <em>debian</em> directory. Overwrite the old control file.</p>
<p>Now go to Qt Creator and select <strong>Build-&gt;Rebuild All</strong>. Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.samontab.com/web/2011/01/how-to-create-your-first-application-for-the-nokia-n900-using-qt/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

