<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-7595014713520487723</atom:id><lastBuildDate>Fri, 24 Jul 2026 05:59:12 +0000</lastBuildDate><category>programming</category><category>linux</category><category>mysql</category><category>php</category><category>shell</category><category>couchdb</category><category>database</category><category>nosql</category><category>open source</category><category>ubuntu</category><category>Android</category><category>backup</category><category>css</category><category>ffmpeg</category><category>gimp</category><category>git</category><category>github</category><category>glossmaster</category><category>go</category><category>google</category><category>html</category><category>kigm</category><category>mplayer</category><category>mysqldump</category><category>pear</category><category>smart phone</category><category>synergy</category><category>tdd</category><category>terminology</category><category>video</category><category>watermark</category><category>web</category><category>windows</category><category>workshop</category><title>Feruzi Share-Point</title><description>Thoughts Shared</description><link>http://emanuelferuzi.blogspot.com/</link><managingEditor>noreply@blogger.com (Tri Labs)</managingEditor><generator>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4695128717365374731</guid><pubDate>Thu, 21 Oct 2010 10:57:00 +0000</pubDate><atom:updated>2010-10-21T03:57:22.447-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">css</category><category domain="http://www.blogger.com/atom/ns#">html</category><category domain="http://www.blogger.com/atom/ns#">mysql</category><category domain="http://www.blogger.com/atom/ns#">php</category><category domain="http://www.blogger.com/atom/ns#">web</category><category domain="http://www.blogger.com/atom/ns#">workshop</category><title></title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9V6tPkZu0QsQ90yN_d7MOCb6APxxJDNmQgvJk5-CXNmQwiQjYWMCeCJcOg37yGZD-RoU5qfQo9KJZlPPVK__ydDDOqABAlvt2DphVjo34IUct8OjWw7QRATsDbZRwL0XVximrpykSYc/s1600/poster.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9V6tPkZu0QsQ90yN_d7MOCb6APxxJDNmQgvJk5-CXNmQwiQjYWMCeCJcOg37yGZD-RoU5qfQo9KJZlPPVK__ydDDOqABAlvt2DphVjo34IUct8OjWw7QRATsDbZRwL0XVximrpykSYc/s1600/poster.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
Do not hesitate to call us if there is a need to clarify anything.</description><link>http://emanuelferuzi.blogspot.com/2010/10/do-not-hesitate-to-call-us-if-there-is.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv9V6tPkZu0QsQ90yN_d7MOCb6APxxJDNmQgvJk5-CXNmQwiQjYWMCeCJcOg37yGZD-RoU5qfQo9KJZlPPVK__ydDDOqABAlvt2DphVjo34IUct8OjWw7QRATsDbZRwL0XVximrpykSYc/s72-c/poster.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4383415137027689983</guid><pubDate>Mon, 12 Apr 2010 11:15:00 +0000</pubDate><atom:updated>2010-04-12T07:12:21.183-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">couchdb</category><category domain="http://www.blogger.com/atom/ns#">database</category><category domain="http://www.blogger.com/atom/ns#">nosql</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">shell</category><title>CouchDB 101 - 2 : Install and Get Started</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;https://svn.apache.org/repos/asf/couchdb/supplement/logo/couchdb-site.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;55&quot; src=&quot;https://svn.apache.org/repos/asf/couchdb/supplement/logo/couchdb-site.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
It is time to get down with the &lt;a href=&quot;http://couchdb.apache.org/&quot;&gt;CouchDB&lt;/a&gt;. As I work on there tutorial there a number of assumptions I am making, the platform being used.&lt;/div&gt;&lt;h2&gt;Platform Specifications&lt;/h2&gt;&lt;div&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;OS: &lt;b&gt;Ubuntu 9.10&lt;/b&gt; (Linux 2.6.31-20-generic #58-Ubuntu SMP Fri Mar 12 05:23:09 UTC 2010 i686 GNU/Linux)&lt;/li&gt;
&lt;li&gt;Apache: &lt;b&gt;Apache 2&lt;/b&gt; (Server version: Apache/2.2.12 (Ubuntu) |&amp;nbsp;Server built: &amp;nbsp; Mar &amp;nbsp;9 2010 21:20:44)&lt;/li&gt;
&lt;li&gt;Shell: &lt;b&gt;bash&lt;/b&gt; (GNU bash, version 4.0.33(1)-release (i486-pc-linux-gnu))&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;h2&gt;Installing on Ubuntu 9.10&lt;/h2&gt;Update source&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ sudo apt-get update
&lt;/pre&gt;Install couchdb&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ sudo apt-get install couchdb
&lt;/pre&gt;Install curl - &lt;i&gt;curl is a command line tool for transferring data with URL syntax, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3 and RTSP.&lt;/i&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ sudo apt-get install curl
&lt;/pre&gt;Testing if the CouchDB is installed and running correctly. CouchDB runs on port 5984 &lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl http://127.0.0.1:5984/
&lt;/pre&gt;if all is okay and the CouchDB is running correctly, you should get something like&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;couchdb&quot;:&quot;Welcome&quot;,&quot;version&quot;:&quot;0.10.0&quot;}
&lt;/pre&gt;If you get some message like this&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;curl: (7) couldn&#39;t connect to host
&lt;/pre&gt;then the CouchDB is nor running. Start it manual and test it again&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ sudo /etc/init.d/couchdb start&lt;/pre&gt;&lt;br /&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;Now that we know our CouchDB is installed and running correctly, lets do some basic task. We will make use of the &lt;b&gt;curl&lt;/b&gt; tool to make it all happen.&lt;br /&gt;
&lt;h3&gt;Creating a new database&lt;/h3&gt;Creating a database is as easy&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl -X PUT http://127.0.0.1:5984/your-database-name&lt;/pre&gt;where your-database-name is the name of your database. So for example here I will create the database with a name &lt;b&gt;ostools&lt;/b&gt; to store open source tools I use daily.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl -X PUT http://127.0.0.1:5984/ostools&lt;/pre&gt;on successful excutions you should get a message &lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;ok&quot;:true}&lt;/pre&gt;&lt;br /&gt;
To see the database created, list all the databases on your save, run&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl -X GET http://127.0.0.1:5984/_all_dbs&lt;/pre&gt;you should get &lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;[&quot;ostools&quot;]&lt;/pre&gt;Try to create another database.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl -X PUT http://127.0.0.1:5984/linuxdistro&lt;/pre&gt;and then list databases&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl -X GET http://127.0.0.1:5984/_all_dbs&lt;/pre&gt;you should get &lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;[&quot;linuxdistro&quot;,&quot;ostools&quot;]&lt;/pre&gt;&lt;h3&gt;Creating, updating, and deleting database documents&lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;&lt;b&gt;Creating.&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-weight: normal;&quot;&gt;CouchDB databases are schema-free, meaning that their structure is not strictly defined, and as a result you can change them on the fly as your needs require. If one tool has a graphical front-end, you include it in that ostools’s document. If another tool doesn’t have a graphical front-end, you simply don’t include it. If a tool has several dependencies, you can set the dependency field to be an array of dependencies objects—there is no need to define separate tables.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;
Lets create a document:-&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X PUT http://127.0.0.1:5984/ostools/fish -d &#39;{}&#39;&lt;/pre&gt;you should get a response similar to the following:&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;ok&quot;:true,&quot;id&quot;:&quot;fish&quot;,&quot;rev&quot;:&quot;1-967a00dff5e02add41819138abb3284d&quot;}&lt;/pre&gt;You’ve just created a document with the document ID of &lt;b&gt;fish&lt;/b&gt;. The CouchDB server has automatically generated a revision number and included this in its response.&lt;br /&gt;
&lt;br /&gt;
Now that your document is in the database, let’s issue a command to retrieve it from CouchDB:&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ curl -X GET http://127.0.0.1:5984/ostools/fish&lt;/pre&gt;You should receive a response like the following:&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;_id&quot;:&quot;fish&quot;,&quot;_rev&quot;:&quot;1-967a00dff5e02add41819138abb3284d&quot;}&lt;/pre&gt;At this point you’re probably thinking that this tool information isn’t very useful. All it has is a unique ID and a revision number; it has no tools-related data whatsoever. So, let’s just delete this contact altogether. Deleting a document in CouchDB is quite similar to deleting a database, except you must specify the latest revision number of the document you want to delete.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X DELETE http://127.0.0.1:5984/ostools/fish?rev=1-967a00dff5e02add41819138abb3284d&lt;/pre&gt;All going well, you should receive a response similar to the following:&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;ok&quot;:true,&quot;id&quot;:&quot;fish&quot;,&quot;rev&quot;:&quot;2-eec205a9d413992850a6e32678485900&quot;}&lt;/pre&gt;Passing the wrong revision number will result to &quot;Document update conflict.&quot; error.&lt;br /&gt;
&lt;br /&gt;
Now you will create a new tool with some datab for the document. A document in CouchDB is simply a JSON object, and you simply include this JSON in your&lt;br /&gt;
curl request using the -d flag to send it along with your HTTP request.&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{
 &quot;name&quot;:&quot;bash&quot;,
 &quot;type&quot;:&quot;shell&quot;,
 &quot;license&quot;:&quot;GPL&quot;,
 &quot;url&quot;:&quot;http://www.gnu.org/software/bash/&quot;
}&lt;/pre&gt;&lt;br /&gt;
Let create the document &lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X PUT http://127.0.0.1:5984/ostools/bash -d &#39;{&quot;name&quot;:&quot;bash&quot;,&quot;type&quot;:&quot;shell&quot;,&quot;license&quot;:&quot;GPL&quot;,&quot;url&quot;:&quot;http://www.gnu.org/software/bash/&quot;}&#39;&lt;/pre&gt;You should get&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;ok&quot;:true,&quot;id&quot;:&quot;bash&quot;,&quot;rev&quot;:&quot;1-41406722a8966f543acbf49e06c66968&quot;}&lt;/pre&gt;To get back this document from the database, use the following command:&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X GET http://127.0.0.1:5984/ostools/bash&lt;/pre&gt;And guess what your document is back&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;_id&quot;:&quot;bash&quot;,&quot;_rev&quot;:&quot;1-41406722a8966f543acbf49e06c66968&quot;,&quot;name&quot;:&quot;bash&quot;,&quot;type&quot;:&quot;shell&quot;,&quot;license&quot;:&quot;GPL&quot;,&quot;url&quot;:&quot;http://www.gnu.org/software/bash/&quot;}&lt;/pre&gt;Create another tool can be done using an existing tools as a template. Issue the following command:&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X COPY http://127.0.0.1:5984/ostools/bash -H &quot;Destination&quot;:&quot;kigm&quot;&lt;/pre&gt;Respond will be like&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;id&quot;:&quot;kigm&quot;,&quot;rev&quot;:&quot;1-41406722a8966f543acbf49e06c66968&quot;}&lt;/pre&gt;Checking on the document kigm, you will see it has the same informations as bash. So lets update that information to reflect the new information for kigm&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X GET http://127.0.0.1:5984/ostools/kigm&lt;/pre&gt;&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;_id&quot;:&quot;kigm&quot;,&quot;_rev&quot;:&quot;1-41406722a8966f543acbf49e06c66968&quot;,&quot;name&quot;:&quot;bash&quot;,&quot;type&quot;:&quot;shell&quot;,&quot;license&quot;:&quot;GPL&quot;,&quot;url&quot;:&quot;http://www.gnu.org&quot;}&lt;/pre&gt;So lets update that information to reflect the new information for kigm&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{
 &quot;name&quot;:&quot;kigm&quot;,
 &quot;type&quot;:&quot;webapp&quot;,
 &quot;license&quot;:&quot;GPL&quot;,
 &quot;url&quot;:&quot;http://wiki.github.com/eferuzi/kiGM/&quot;,
 &quot;requires&quot;:[&quot;apache&quot;,&quot;php&quot;,&quot;mysql&quot;],
 &quot;developer&quot;:&quot;Emanuel Feruzi&lt;emanuel.feruzi@trilabs.co.tz&gt;&quot;
}&lt;/emanuel.feruzi@trilabs.co.tz&gt;&lt;/pre&gt;When doing an update, you must include the revision field in your JSON document, with the revision identifier that the changes are based on, this is to prevent multiple users from making changes to the same document at the same time.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X PUT http://127.0.0.1:5984/ostools/kigm -d &#39;{&quot;_rev&quot;:&quot;1-41406722a8966f543acbf49e06c66968&quot;,&quot;name&quot;:&quot;kigm&quot;, &quot;type&quot;:&quot;webapp&quot;, &quot;license&quot;:&quot;GPL&quot;, &quot;url&quot;:&quot;http://wiki.github.com/eferuzi/kiGM/&quot;, &quot;requires&quot;:[&quot;apache&quot;,&quot;php&quot;,&quot;mysql&quot;],&quot;developer&quot;:&quot;Emanuel Feruzi&quot;}&#39;&lt;/pre&gt;Response&lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;ok&quot;:true,&quot;id&quot;:&quot;kigm&quot;,&quot;rev&quot;:&quot;2-f56ac37c3805fc6058c840462ae85756&quot;}&lt;/pre&gt;Let’s check it out with a GET request at any rate:&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;curl -X GET http://127.0.0.1:5984/ostools/kigm&lt;/pre&gt;&lt;pre class=&quot;brush: plain&quot;&gt;{&quot;_id&quot;:&quot;kigm&quot;,&quot;_rev&quot;:&quot;2-f56ac37c3805fc6058c840462ae85756&quot;,&quot;name&quot;:&quot;kigm&quot;,&quot;type&quot;:&quot;webapp&quot;,&quot;license&quot;:&quot;GPL&quot;,&quot;url&quot;:&quot;http://wiki.github.com/eferuzi/kiGM/&quot;,&quot;requires&quot;:[&quot;apache&quot;,&quot;php&quot;,&quot;mysql&quot;],&quot;developer&quot;:&quot;Emanuel Feruzi&quot;}&lt;/pre&gt;&lt;br /&gt;
Now you can experiment more and share your findings with us.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Next: CouchDB 101 - 3 Creating Views&lt;/i&gt;&lt;/b&gt;&lt;/div&gt;</description><link>http://emanuelferuzi.blogspot.com/2010/04/couchdb-101-2-install-and-get-started.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-8878167249672997497</guid><pubDate>Fri, 09 Apr 2010 15:16:00 +0000</pubDate><atom:updated>2010-04-12T07:11:37.355-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">couchdb</category><category domain="http://www.blogger.com/atom/ns#">database</category><category domain="http://www.blogger.com/atom/ns#">nosql</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">shell</category><title>CouchDB 101 - 1: What is CouchDB?</title><description>&lt;h2 style=&quot;text-align: justify;&quot;&gt;CouchDB Discovery&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;It&amp;nbsp;is my tradional to visit &lt;a href=&quot;http://www.linuxtoday.com/&quot;&gt;www.linuxtoday.com&lt;/a&gt;&amp;nbsp;daily to get updated as to what is happening. So as I was scrolling,&amp;nbsp;&lt;a href=&quot;http://www.linuxtoday.com/developer/2010040502635NWSW&quot;&gt;NoSQL&lt;/a&gt;&amp;nbsp;poped up and I was interested as to what that is. As  There was&amp;nbsp;another aricle that really cought my attention, &lt;a href=&quot;http://www.linuxtoday.com/developer/2010040701835OSSWDV&quot;&gt;CouchDB&amp;nbsp;basics for PHP developers&lt;/a&gt;. So the journey began.&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;What is CouchDB?&lt;/h2&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;Apache&amp;nbsp;CouchDB is a document-oriented database that can be queried and&amp;nbsp;indexed in a MapReduce fashion using JavaScript. CouchDB also offers&amp;nbsp;incremental replication with bi-directional conflict detection and&amp;nbsp;resolution.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://svn.apache.org/repos/asf/couchdb/supplement/logo/couchdb-site.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;55&quot; src=&quot;https://svn.apache.org/repos/asf/couchdb/supplement/logo/couchdb-site.png&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;/div&gt;CouchDB&amp;nbsp;provides a RESTful JSON API than can be accessed from any environment&amp;nbsp;that allows HTTP requests. There are myriad third-party client&amp;nbsp;libraries that make this even easier from your programming language&amp;nbsp;of choice. CouchDB’s built in Web administration console speaks&amp;nbsp;directly to the database using HTTP requests issued from your&amp;nbsp;browser.&lt;/div&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;From:&amp;nbsp;&lt;a href=&quot;http://couchdb.apache.org/&quot;&gt;The&amp;nbsp;CouchDB Project&lt;/a&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;&lt;h2 style=&quot;text-align: justify;&quot;&gt;Key Characteristics&lt;/h2&gt;&lt;div&gt;&lt;h3 style=&quot;text-align: justify;&quot;&gt;Documents&lt;/h3&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;A CouchDB document is an object that consists of named fields. Field values may be strings, numbers, dates, or even ordered lists and associative maps. A CouchDB database is a flat collection of these documents. Each document is identified by a unique ID.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;b&gt;Example&lt;/b&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;pre class=&quot;brush: plain&quot;&gt;{
  &quot;firstName&quot;: &quot;Emanuel&quot;,
  &quot;lastName&quot;: &quot;Feruzi&quot;,
  &quot;email&quot;: [
       &quot;emanuel.feruzi@trilabs.co.tz&quot;,
       &quot;feruzi@gmail.com&quot;
  ],
   &quot;web&quot;: &quot;http://www.joelennon.ie&quot;
} 
&lt;/pre&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
In the example above, the &lt;i&gt;firstName&lt;/i&gt;, &lt;i&gt;lastName&lt;/i&gt; and &lt;i&gt;web&lt;/i&gt; are &lt;b&gt;string&lt;/b&gt; values, where as &lt;i&gt;email&lt;/i&gt; contains a &lt;b&gt;list&lt;/b&gt; of emails addresses.&lt;br /&gt;
&lt;h3&gt;Schema-Free&lt;/h3&gt;Unlike SQL databases which are designed to store and report on highly structured, interrelated data, CouchDB is designed to store and report on large amounts of semi-structured, document oriented data. CouchDB greatly simplifies the development of document oriented applications, which make up the bulk of collaborative web applications.&lt;br /&gt;
&lt;br /&gt;
In an SQL database, as needs evolve the schema and storage of the existing data must be updated. This often causes problems as new needs arise that simply weren’t anticipated in the initial database designs, and makes distributed “upgrades” a problem for every host that needs to go through a schema update.&lt;br /&gt;
&lt;br /&gt;
With CouchDB, no schema is enforced, so new document types with new meaning can be safely added alongside the old. The view engine, using Javascript, is designed to easily handle new document types and disparate but similar documents.&lt;br /&gt;
&lt;h3&gt;Views&lt;/h3&gt;To address this problem of adding structure back to semi-structured data, CouchDB integrates a view model using Javascript for description. Views are the method of aggregating and reporting on the documents in a database, and are built on-demand to aggregate, join and report on database documents. Views are built dynamically and don’t affect the underlying document, you can have as many different view representations of the same data as you like.&lt;br /&gt;
&lt;h3&gt;Distributed&lt;/h3&gt;CouchDB is a peer based distributed database system. Any number of CouchDB hosts (servers and offline-clients) can have independent “replica copies” of the same database, where applications have full database interactivity (query, add, edit, delete). When back online or on a schedule, database changes are replicated bi-directionally.&lt;br /&gt;
CouchDB has built-in conflict detection and management and the replication process is incremental and fast, copying only documents and individual fields changed since the previous replication. Most applications require no special planning to take advantage of distributed updates and replication.&lt;br /&gt;
Unlike cumbersome attempts to bolt distributed features on top of the same legacy models and databases, it is the result of careful ground-up design, engineering and integration. The document, view, security and replication models, the special purpose query language, the efficient and robust disk layout are all carefully integrated for a reliable and efficient system.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Next: CouchDB 101 - 2: The First Encounter - Install and Get Started&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</description><link>http://emanuelferuzi.blogspot.com/2010/04/couchdb-101-what-is-couchdb.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4147085081446014540</guid><pubDate>Wed, 31 Mar 2010 10:33:00 +0000</pubDate><atom:updated>2010-03-31T05:28:47.442-07:00</atom:updated><title>Sasatel USB Modems :  Now with Linux Support</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2615076/templateimages/sasatel.gif&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://dl.dropbox.com/u/2615076/templateimages/sasatel.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;If you use &lt;a href=&quot;http://en.wikipedia.org/wiki/Linux&quot;&gt;Linux&lt;/a&gt; as your default working platform, you have gotten used to be out of the loop when it comes to hardware support. For me it has been on the whole USB Modem issues.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;I had tried USB Modems from &lt;a href=&quot;http://www.tz.zain.com/&quot;&gt;Zain&lt;/a&gt;, &lt;a href=&quot;http://www.zantel.co.tz/&quot;&gt;Zantel&lt;/a&gt; and &lt;a href=&quot;http://www.vodacom.co.tz/&quot;&gt;Vodacom&lt;/a&gt;, with little success only on Vodacom. But due to the price I was forced to continue using my phone as a modem, on &lt;a href=&quot;http://www.tigo.co.tz/&quot;&gt;Tigo&lt;/a&gt;. But GPRS was not fast enough. During X-Mas, I visited a friend of mine who was using a Sasatel USB Modem. The speed was &#39;tempting&#39; fast, and the price better as compare to the other telcoms. So I drove to&amp;nbsp;Sasatel headquarters to get myself connected. But I was a bit disappointed to be told that the modems only works on MS Windows. So I had to get a Wifi Router, luck them. But I was given hope that new modems with Linux support were coming soon.&amp;nbsp;&lt;/div&gt;&lt;blockquote&gt;I have sent lots of email to the address on the &lt;b&gt;Contacts&lt;/b&gt; page, Sasatel is a few of the companies have actually responded. I&amp;nbsp;&lt;b&gt;&lt;i&gt;commend&lt;/i&gt;&lt;/b&gt;&amp;nbsp;them for that.&lt;/blockquote&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Yesterday, I checked with them and guess what, they are here. Sasatel USB Modems [EVDO CDMA] now supports the following Linux flavours:&amp;nbsp;&lt;a href=&quot;http://www.redhat.com/&quot;&gt;Redhat Enterprise Linux&lt;/a&gt; 3+, &lt;a href=&quot;http://fedoraproject.org/&quot;&gt;Fedora Core&lt;/a&gt; 5+(execpt 11 version), &lt;a href=&quot;http://www.novell.com/linux/&quot;&gt;SUSE Desktop Linux&lt;/a&gt; 9+, &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian Linux&lt;/a&gt; 5+ and &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu Linux&lt;/a&gt; 5+. Because it support Debian and Ubuntu, its safe to assume that it will work with all derivatives of Ubuntu such as &lt;a href=&quot;http://www.linuxmint.com/&quot;&gt;Linux Mint&lt;/a&gt;.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;Muffadal &amp;nbsp;Essaji, Data Product Officer - Sasatel, was kind enough to send me the &lt;a href=&quot;http://dl.dropbox.com/u/2615076/manuals/sasatel_userguide_linux.pdf&quot;&gt;user manual&lt;/a&gt; and it share it with you.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
I can not wait to get an reason to purchase one of those and try on the &lt;a href=&quot;http://trilabs.co.tz/get-linux-order-a-your-copy&quot;&gt;Linux&amp;nbsp;flavors&lt;/a&gt;&amp;nbsp;we make available for you.&lt;br /&gt;
&lt;br /&gt;
I hope other telcoms will also look into making sure that Linux users are not left out.&lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;blockquote&gt;&lt;br /&gt;
&lt;/blockquote&gt;</description><link>http://emanuelferuzi.blogspot.com/2010/03/sasatel-usb-modems-now-with-linux.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-5145638420980044997</guid><pubDate>Tue, 08 Dec 2009 10:44:00 +0000</pubDate><atom:updated>2009-12-08T03:58:01.677-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">shell</category><title>Day 1: Shell Scripting From Scratch</title><description>&lt;p&gt;A friend of mine at UDSM is doing a course that requires shell scripting so I agree to take time out an cover the basic of shell scripting, and you are welcome to join us. It really for beginners in shell.&lt;br /&gt;
&lt;/p&gt;&lt;h2&gt;Day 1: Laying the Foundation&lt;/h2&gt;&lt;br /&gt;
&lt;h3&gt;What Is a Shell?&lt;/h3&gt;&lt;p&gt;A shell is a program that takes commands you typed and tell the operating system to run them. The shell interprets your commands. For example, you may use the shell to enter a command to list the files in a directory, such as &lt;b&gt;&lt;i&gt;ls&lt;/i&gt;&lt;/b&gt;, or a command to copy a file, such as &lt;b&gt;&lt;i&gt;cp&lt;/i&gt;&lt;/b&gt;.&lt;p&gt;&lt;p&gt;&lt;b&gt;Example&lt;/b&gt;: &lt;b&gt;&lt;i&gt;ls&lt;/i&gt;&lt;/b&gt; is a command to list the content of the current folder.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ ls
bin/    dev/         initrd.img.old@  media/  root/     sys/  vmlinuz@
boot/   etc/         lib/             mnt/    sbin/     tmp/  vmlinuz.old@
build/  home/        lib64/           opt/    selinux/  usr/
cdrom@  initrd.img@  lost+found/      proc/   srv/      var/
&lt;/pre&gt;The &lt;b&gt;$&lt;/b&gt; is the shell prompt, which tells you the shell awaits your commands. &lt;b&gt;&lt;i&gt;ls&lt;/i&gt;&lt;/b&gt; listed all the content of the current directory, worry not we will get to these in a moment.&lt;br /&gt;
&lt;/p&gt;&lt;h3&gt;How does it work?&lt;/h3&gt;&lt;p&gt;The shell looks for a program — that is, a file with execute permissions — with the name &lt;b&gt;&lt;i&gt;ls&lt;/i&gt;&lt;/b&gt;. The shell looks at all the directories in your command path. The shell runs the first program found that matches the name, checks if you have permission to excutes it and if you have its excutes it and then displays the results of the program to your screen, as in the second and third lines in the code example.&lt;br /&gt;
&lt;/p&gt;&lt;p &gt;&lt;b class=&quot;center&quot;&gt;&lt;i&gt;The command path is stored in the environment variable named PATH&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ $ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:
/home/eferuzi/apps/go/bin:/home/eferuzi/apps/go/bin
&lt;/pre&gt;&lt;/p&gt;&lt;p&gt;A shell acts as a form of wrapper around the OS, hence the term &lt;i&gt;shell&lt;/i&gt;.&lt;br /&gt;
&lt;/p&gt;&lt;h3&gt;Why Use Shells?&lt;/h3&gt;&lt;p&gt;Unix was the first popular operating system to break free of the single-shell monopoly, which can still be seen in MS-DOS shell on Windows. In Day 2: we will cover how to break free of the single-shell monopoly on Windows.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;The Unix philosophy is that one command should do one thing and do it well. So the complex commands are combination of small commands. In this context, a shell is simply another command — a command that facilitates combining other commands. The ability to combine commands allows you to create new commands, thereby adding value to your operating system.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;In addition, most shells allow you to group a number of commands in a file, called a &lt;i&gt;shell script&lt;/i&gt;. When you run the shell script file, the shell executes the commands in the script file in order.&lt;br /&gt;
&lt;/p&gt;&lt;h3&gt;What Kind of Shells Are There?&lt;/h3&gt;&lt;p&gt;Since there is no monopoly on shells, you are free to run any shell you desire. That’s all well and good,but choosing a shell without knowing the alternatives isn’t very helpful. So lets look at a few main shell out there.&lt;br /&gt;
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;The Bourne Shell&lt;/b&gt; - original Unix shell is known as sh, short for shell, created by Steven Bourne, and has been considered a standard part of Unix for decades.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The C Shell&lt;/b&gt; - was so named because much of its syntax parallels that of the C programming language, and added some neat features to the Bourne shell, especially the ability to recall previous commands (and parts of previous commands) to help create future commands.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;The Korn Shell&lt;/b&gt; - like the C shell but also backward compatible with the older Bourne shell syntax. &lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Bash, the Bourne Again Shell&lt;/b&gt; - it is said &quot;bash shell answered a clear need, a need shown by the initial success of the Korn shell&quot;. So &lt;b&gt;bash&lt;/b&gt; offers command-line editing like the Korn shell, file-name completion like the C shell, and a host of&lt;br /&gt;
other advanced features.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Other Shells&lt;/b&gt; - Over the years, a number of other shells have appeared, each with a small but devoted following. These shells include ash, zsh, and rc. &lt;i&gt;Ash is the default shell and appears as sh on the Cygwin environment for Windows.&lt;/i&gt;&lt;br /&gt;
&lt;li&gt;&lt;br /&gt;
&lt;/ul&gt;&lt;h3&gt;Choosing a Shell&lt;/h3&gt;&lt;p&gt;For example, when administrators assume everyone runs the Korn shell, they may set up parts of the environment that break in strange ways for users of other shells, particularly users of the C shells. So before choosing to another shell make sure it will work given the assumptions made before. Most modern shell are all pretty good anyway.&lt;/p&gt;&lt;h3&gt;Changing Your Default Shell&lt;/h3&gt;&lt;p&gt;The &lt;b&gt;chsh&lt;/b&gt; command, short for &lt;i&gt;change shell&lt;/i&gt;, allows you to change your default, or login, shell. &lt;/p&gt;&lt;p&gt;&lt;b&gt;Syntax&lt;/b&gt;: &lt;pre class=&quot;brush: bash&quot;&gt;chsh username new_default_shell
&lt;/pre&gt;&lt;b&gt;Example&lt;/b&gt;:change user jkpaul to use csh, run the chsh command as follows &lt;pre class=&quot;brush: bash&quot;&gt;$ chsh jkpaul /bin/bash
&lt;/pre&gt;Note that you need to enter the full path to the shell. You may required to type you password for security reasons.The new login shell will be available for use the next time you log in. &lt;/p&gt;&lt;p&gt;That is it for day one, so now we are ready to get into using shell. &lt;/p&gt;&lt;b&gt;NEXT: Day 2: Running Shell and Commands &lt;/b&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/12/day-1-shell-scripting-from-scratch.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>1</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-2669004843110636143</guid><pubDate>Thu, 03 Dec 2009 21:57:00 +0000</pubDate><atom:updated>2009-12-03T15:55:00.988-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">synergy</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><title>Use one keyboard and mouse on multiple cross platform computers</title><description>&lt;a href=&quot;http://synergy2.sourceforge.net/&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://synergy2.sourceforge.net/images/logo.gif&quot; vspace=&quot;5px&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;synergy&lt;/b&gt;: [noun] &lt;i&gt;a mutually advantageous conjunction of distinct elements&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;&lt;a href=&quot;http://synergy2.sourceforge.net/&quot;&gt;Synergy&lt;/a&gt; lets you easily share a single mouse and keyboard between multiple computers with different operating systems, each with its own display, without special hardware. Redirecting the mouse and keyboard is as simple as moving the mouse off the edge of your screen. Synergy also merges the clipboards of all the systems into one, allowing cut-and-paste between systems.&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;I have this old computer that as use as a backup and multimedia server. I have hooked it to an overhead projector and a decent sound system, now you know what I am up to over the weekends. For all this time &lt;i&gt;ssh&lt;/i&gt; and &lt;i&gt;Remote Desktop Viewer&lt;/i&gt; have served me very faithully. But I started wondering is this it, can I use my mouse and keyboard on both machines but on different displays, and lo and behold, ladies and gentlemen I present to you  &lt;a href=&quot;http://synergy2.sourceforge.net/&quot;&gt;Synergy&lt;/a&gt;.&lt;br /&gt;
&lt;/div&gt;So lets get to it.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Scenario &lt;/h3&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;There is a Dell (Inspiron 1520) aka WorkStation, running Ubuntu 9.10 also the Synergy server and as a second machine, home built server aka Storage running Ubuntu 8.04LTS.&lt;br /&gt;
&lt;/div&gt;&lt;b&gt;WorkStation&lt;/b&gt;: Side [left] | Hostname [feruzi.trilabs.co.tz] | IP Address [192.168.3.10]&lt;br /&gt;
&lt;b&gt;Storage&lt;/b&gt;: Side [right] | Hostname [storage.trilabs.co.tz] | IP Address [192.168.3.9]&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Installing from the Command Line &lt;/h3&gt;Start the terminal (you can also use Synaptic Package Manager) and run the following command on both machines.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ sudo aptitude update &amp;&amp; sudo aptitude install synergy&lt;/pre&gt;&lt;b&gt;PLEASE NOTE&lt;/b&gt;: For MS Windows and MacOS users visit the site for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Configuring the Synergy server&lt;/h3&gt;In your home directory create a file called &lt;pre&gt;synergy.conf&lt;/pre&gt;and in in it is where the configureation for my set up.  &lt;br /&gt;
&lt;pre class=&quot;brush: plain&quot;&gt;section: screens
 feruzi.trilabs.co.tz:       
 storage.trilabs.co.tz:
end
section: aliases
 feruzi.trilabs.co.tz:
    192.168.3.10
 storage.trilabs.co.tz:
    192.168.3.9
end
section: links
 feruzi.trilabs.co.tz:
    right = storage.trilabs.co.tz
 storage.trilabs.co.tz:
    left = feruzi.trilabs.co.tz
end
section: options
 screenSaverSync = false 
end
&lt;/pre&gt;&lt;br /&gt;
&lt;h4&gt;section: screens&lt;/h4&gt;&lt;b&gt;Screen&lt;/b&gt; section is a list of screen names, one name per line, each followed by a colon. Names are arbitrary strings but they must be unique. The hostname of each computer is recommended, and that is what I have used.&lt;br /&gt;
&lt;h4&gt;section: aliases&lt;/h4&gt;&lt;b&gt;aliases&lt;/b&gt; section is a list of screen names just like in the screens section except each screen is followed by a list of aliases, one per line, not followed by a colon. An alias is a screen name and must be unique. During screen name lookup each alias is equivalent to the screen name it aliases. Because my DNS was not setup properly I assigned it to my IP address.&lt;br /&gt;
&lt;h4&gt;section: links&lt;/h4&gt;&lt;b&gt;links&lt;/b&gt; section  is a list of screen names just like in the screens section except each screen is followed by a list of links, one per line. Each link has the form {left|right|up|down}[&lt;range&gt;] = name[&lt;range&gt;]. A link indicates which screen is adjacent in the given direction. So on the right of &lt;i&gt;feruzi.trilabs.co.tz&lt;/i&gt; there is &lt;i&gt;storage.trilabs.co.tz&lt;/i&gt; and on the left of &lt;i&gt;storage.trilabs.co.tz&lt;/i&gt; there is &lt;i&gt;feruzi.trilabs.co.tz&lt;/i&gt;. &lt;br /&gt;
PLEASE NOTE: There is more you can do here, again visit the site for more information. &lt;br /&gt;
&lt;h4&gt;section: options&lt;/h4&gt;&lt;b&gt;options&lt;/b&gt; section is a list of lines of the form name = value. These set the global options. There is a lot of other options you can set, visit the site for more information.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Starting up Synergy server and clients&lt;/h3&gt;&lt;br /&gt;
To start up the server, on &lt;i&gt;feruzi.trilabs.co.tz&lt;/i&gt; run the following command,&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ synergys -f --config synergy.conf
&lt;/pre&gt;the output should be something like this, depending on your setting and operating systems.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;INFO: synergys.cpp,1042: Synergy server 1.3.1 on Linux 2.6.31-15-generic #50-Ubuntu SMP Tue Nov 10 14:54:29 UTC 2009 i686
DEBUG: synergys.cpp,1051: opening configuration &quot;synergy.conf&quot;
DEBUG: synergys.cpp,1062: &lt;b&gt;configuration read successfully&lt;/b&gt;
DEBUG: CXWindowsScreen.cpp,847: XOpenDisplay(&quot;:0.0&quot;)
DEBUG: CXWindowsScreenSaver.cpp,339: xscreensaver window: 0x00000000
DEBUG: CXWindowsScreen.cpp,117: screen shape: 0,0 1280x800 
DEBUG: CXWindowsScreen.cpp,118: window is 0x04800004
DEBUG: CScreen.cpp,38: opened display
DEBUG: CXWindowsScreen.cpp,679: registered hotkey ScrollLock (id=ef14 mask=0000) as id=1
NOTE: synergys.cpp,500:&lt;b&gt; started server&lt;/b&gt;
INFO: CServer.cpp,1141: screen &quot;feruzi&quot; shape changed
&lt;/pre&gt;&lt;br /&gt;
And the cliet, in this case on &lt;i&gt;storage.trilabs.co.tz&lt;/i&gt;, ssh into the client machine and run the following command and we are ready to rumble. &lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;$ synergyc -f --name storage 192.168.3.10
&lt;/pre&gt;the output should be something like this, depending on your setting and operating systems.&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;INFO: synergyc.cpp,716: Synergy client 1.3.1 on Linux 2.6.27-15-generic #1 SMP Tue Oct 20 06:52:09 UTC 2009 i686
DEBUG: CXWindowsScreen.cpp,841: XOpenDisplay(&quot;:0.0&quot;)
DEBUG: CXWindowsScreenSaver.cpp,339: xscreensaver window: 0x00000000
DEBUG: CXWindowsScreen.cpp,111: screen shape: 0,0 1400x1050 
DEBUG: CXWindowsScreen.cpp,112: window is 0x03000004
DEBUG: CScreen.cpp,38: opened display
NOTE: synergyc.cpp,330: started client
DEBUG: CXWindowsClipboard.cpp,313: open clipboard 0
DEBUG: CXWindowsClipboard.cpp,266: empty clipboard 0
DEBUG: CXWindowsClipboard.cpp,289: grabbed clipboard 0
DEBUG: CXWindowsClipboard.cpp,348: close clipboard 0
DEBUG: CXWindowsClipboard.cpp,313: open clipboard 1
DEBUG: CXWindowsClipboard.cpp,266: empty clipboard 1
DEBUG: CXWindowsClipboard.cpp,289: grabbed clipboard 1
DEBUG: CXWindowsClipboard.cpp,348: close clipboard 1
NOTE: synergyc.cpp,247: connected to server
&lt;/pre&gt;&lt;br /&gt;
And that is it. Have fun, questions and comments are welcome.</description><link>http://emanuelferuzi.blogspot.com/2009/12/use-one-keyboard-and-mouse-on-multiple.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-5547406360635585794</guid><pubDate>Sun, 29 Nov 2009 01:58:00 +0000</pubDate><atom:updated>2009-11-29T01:15:26.961-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">go</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">programming</category><title>Google&#39;s Go - a systems programming language</title><description>&lt;a href=&quot;http://golang.org/doc/go-logo-black.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://golang.org/doc/go-logo-black.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
November 10, Google&amp;nbsp;release&amp;nbsp;it&#39;s &amp;nbsp;new systems programming language called Go. &amp;nbsp;According to the website&amp;nbsp;&lt;a href=&quot;http://golang.org/&quot;&gt;http://golang.org&lt;/a&gt;&amp;nbsp;Go has the following outstanding features:-&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;simple&lt;/b&gt; in term of programming syntax, less typing&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fast&lt;/b&gt; &amp;nbsp;compilers produce fast code fast. Typical Go builds take a fraction of a second yet the resulting programs run nearly as quickly as comparable C or C++ code.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;safe&lt;/b&gt; in type safe and memory safe. Go has pointers but no pointer arithmetic. For random access, use slices, which know their limits.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;concurrent&lt;/b&gt; is a core part of the language.&amp;nbsp;Go promotes writing systems and servers as sets of lightweight communicating processes, called goroutines, with strong support from the language. Run thousands of goroutines if you want—and say good-bye to stack overflows.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fun&lt;/b&gt; to work with.&amp;nbsp;Go has fast builds, clean syntax, garbage collection, methods for any type, and run-time reflection. It feels like a dynamic language but has the speed and safety of a static language. It&#39;s a joy to use&lt;/li&gt;
&lt;li&gt;open source, Go is realised under the&amp;nbsp;&lt;a href=&quot;http://www.linfo.org/bsdlicense.html&quot;&gt;BSD licence&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;After watching a video on Google TechTalk by one of the archtechts of the language, I thought of giving a try. I have installed it on my Ubuntu, with no difficulty at all, and have done a few example. I have not done anything worth showing, but during the course I will blog more about it.&lt;/p&gt;&lt;p&gt;Visit their site,&lt;a href=&quot;http://golang.org/&quot;&gt;http://golang.org&lt;/a&gt;, and see if you can make use of this language. &lt;br /&gt;
&lt;/p&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/11/googles-go-systems-programming-language.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-7795376802368207804</guid><pubDate>Sat, 28 Nov 2009 17:35:00 +0000</pubDate><atom:updated>2009-11-28T15:33:59.575-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">php</category><category domain="http://www.blogger.com/atom/ns#">programming</category><category domain="http://www.blogger.com/atom/ns#">tdd</category><title>Introduction to TDD with PHPUnit</title><description>&lt;h3&gt;&lt;br /&gt;
&lt;/h3&gt;&lt;h3&gt;What is TDD?&lt;/h3&gt;Test Drive Development [TDD] is an approach to development which combines test-first development where you write a test before you write just enough production code to fulfill that test and refactoring. So basically you first decide the functions or sections of your code you want to test. Then write test for these functions for different scenarios with expected values. Then write the implement the functions while checking if they meet the different scenarios you captured in the tests, if not refactoring is done till all tests have passed.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;Why use TDD?&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;by focusing on the different test cases first, developer(s) focuses on the functionality more than the implementation&lt;/li&gt;
&lt;li&gt;it allows the developer to focus on a small section of the implementations at a time till its working as expected&lt;/li&gt;
&lt;li&gt;can lead to more modularized, flexible, and extensible code&lt;/li&gt;
&lt;li&gt;no more code is written than necessary to pass a failing test case, automated tests tend to cover every code path&lt;/li&gt;
&lt;li&gt;while it is true that more code is required with TDD than without TDD because of the unit test code, total code implementation time is typically shorter&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;TDD Example with PHP&lt;/h3&gt;There are many ways in which one can implement a TDD. In this example, we will create a simple calculator with the four basic operations that is (add, subtract, multiply and divide).&lt;br /&gt;
But after looking around and looking back to my exprience, it looks like there is one way that most developers agree on:-&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;design your class/API&lt;/li&gt;
&lt;li&gt;create a test suite&lt;/li&gt;
&lt;li&gt;run the test, and in this case all tests should fail&lt;/li&gt;
&lt;li&gt;implement the class&lt;/li&gt;
&lt;li&gt;run the test, an this time some test will pass and some will fail&lt;/li&gt;
&lt;li&gt;fix failures or errors&lt;/li&gt;
&lt;li&gt;repeat 5 and 6 till all tests have passed&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2615076/calculator-intrototdd.zip&quot;&gt;Download Source Code&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Designing the class/API&lt;/h3&gt;This basically mean&amp;nbsp;designing&amp;nbsp;the skeleton of the class, so the class body with its functions signatures without the actually implementation&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;/* === calculator.php === */
class Calculator{
/**
* Constructor
* NOTE: if you are using function __constructor() can also be used for older version of PHP
* @return unknown_type
*/
function Calculator(){

}

/**
* add two numbers (a + b)
* @param $a an integer
* @param $b an integer
* @return a + b or null otherwise
*/
function add($a, $b){

}

/**
* subtact b from a numbers (a - b)
* @param $a an integer
* @param $b an integer
* @return a - b or null otherwise
*/
function subtract($a, $b){

}

/**
* multipy a and b numbers (a x b)
* @param $a an integer
* @param $b an integer
* @return a x b or null otherwise
*/
function  multiply($a, $b){

}

/**
* divide a by b numbers (a / b)
* @param $a an integer
* @param $b an integer
* @return a / b or null otherwise
*/
function  multiply($a, $b){

}
}
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Creating the test class&lt;/h3&gt;To test a function there is two (or more depending on the test used) things that are &amp;nbsp;needed, value returned by the function and the values&amp;nbsp;expected. Then using a once of the many&amp;nbsp;&lt;span style=&quot;font-family: monospace; white-space: pre;&quot;&gt;assert &lt;/span&gt;functions to establish if the test has passed or not. Look at the comments on the code.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;/* === calculatortest.php === */
require_once &#39;calculator.php&#39;;
require_once &#39;PHPUnit.php&#39;;

class CalculatorTest extends PHPUnit_TestCase{
 /**
  * Constructor
  * NOTE: if you are using function __constructor() can also be used for older version of PHP
  * @return unknown_type
  */
 var $calc;

 function CalculatorTest($name){
  $this-&amp;gt;PHPUnit_TestCase($name);
 }

 /**
  * Used to set up and default values
  *
  * (non-PHPdoc)
  * @see PHPUnit/PHPUnit_TestCase#setUp()
  */
 function setUp(){
  // creating the Calculator object
  $this-&amp;gt;calc = new Calculator();
 }

 /**
  * Used to destroy values that where set in the setUp()
  *
  * (non-PHPdoc)
  * @see PHPUnit/PHPUnit_TestCase#tearDown()
  */
 function tearDown(){
  // destroying the  calculator object 
  unset($this-&amp;gt;calc);
 }

 /**
  * Testing add two numbers (a + b)
  */
 function testAdd(){
  $actual = $this-&amp;gt;calc-&amp;gt;add(2,3);
  $expected = 5;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing subtact b from a numbers (a - b)
  */
 function testSubtract(){
  $actual = $this-&amp;gt;calc-&amp;gt;subtract(5,2);
  $expected = 3;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing multipy a and b numbers (a x b)
  */
 function  testMultiply(){
  $actual = $this-&amp;gt;calc-&amp;gt;multiply(5,2);
  $expected = 10;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing divide a by b numbers where b=0
  */
 function  testDivideByZero(){
  $actual = $this-&amp;gt;calc-&amp;gt;divide(3,0);
  $expected = NULL;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing divide a by b numbers (a / b)
  */
 function  testDivide(){
  $actual = $this-&amp;gt;calc-&amp;gt;divide(10,2);
  $expected = 5;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }
}&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Write the Testing &lt;/h3&gt;Now we need to write the code to actual run the code&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;/* ==== test.php ==== */

require_once &#39;calculatortest.php&#39;;
require_once &#39;PHPUnit.php&#39;;

/* the value passed duing the instantiating must be the name of the test class */
$suite  = new PHPUnit_TestSuite(&quot;CalculatorTest&quot;);
/*rin the test*/
$result = PHPUnit::run($suite);
/*dispay the result */
echo $result-&amp;gt;toString();
&lt;/pre&gt;&lt;h3&gt;Running the test&lt;/h3&gt;Start up your terminal and run the test.php with php or if run it through your apache and view the result on the browser&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;eferuzi@feruzi /v/w/phpunit&amp;gt; php5 test.php
TestCase CalculatorTest-&amp;gt;testDivideByZero() passed
TestCase CalculatorTest-&amp;gt;testAdd() failed: expected 5, actual  in /var/www/phpunit/calculatortest.php:56
TestCase CalculatorTest-&amp;gt;testSubtract() failed: expected 3, actual  in /var/www/phpunit/calculatortest.php:66
TestCase CalculatorTest-&amp;gt;testMultiply() failed: expected 10, actual  in /var/www/phpunit/calculatortest.php:76
TestCase CalculatorTest-&amp;gt;testDivide() failed: expected 5, actual  in /var/www/phpunit/calculatortest.php:96
&lt;/pre&gt;As you can see we have one passing because the functions are not returning anything at the moment and that test checks if NULL is returned.&lt;br /&gt;
&lt;h3&gt;Implementations of the Calculator&lt;/h3&gt;So now we add implementation into the functions in the Calculator class&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;/* === calculatortest.php === */


require_once &#39;calculator.php&#39;;
require_once &#39;PHPUnit.php&#39;;

class CalculatorTest extends PHPUnit_TestCase{
 /**
  * Constructor
  * NOTE: if you are using function __constructor() can also be used for older version of PHP
  * @return unknown_type
  */
 var $calc;

 function CalculatorTest($name){
  $this-&amp;gt;PHPUnit_TestCase($name);
 }

 /**
  * Used to set up and default values
  *
  * (non-PHPdoc)
  * @see PHPUnit/PHPUnit_TestCase#setUp()
  */
 function setUp(){
  // creating the Calculator object
  $this-&amp;gt;calc = new Calculator();
 }

 /**
  * Used to destroy values that where set in the setUp()
  *
  * (non-PHPdoc)
  * @see PHPUnit/PHPUnit_TestCase#tearDown()
  */
 function tearDown(){
  // destroying the  calculator object
  unset($this-&amp;gt;calc);
 }

 /**
  * Testing add two numbers (a + b)
  */
 function testAdd(){
  $actual = $this-&amp;gt;calc-&amp;gt;add(2,3);
  $expected = 5;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing the add method with wrong or none numerical input
  */
 function testAddInvalidValues(){
  $actual = $this-&amp;gt;calc-&amp;gt;add(&#39;ugali&#39;,3);
  //checking if value returned value is what we expected
  $this-&amp;gt;assertNull($actual);
 }


 /**
  * Testing subtact b from a numbers (a - b)
  */
 function testSubtract(){
  $actual = $this-&amp;gt;calc-&amp;gt;subtract(5,2);
  $expected = 3;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing multipy a and b numbers (a x b)
  */
 function  testMultiply(){
  $actual = $this-&amp;gt;calc-&amp;gt;multiply(5,2);
  $expected = 10;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing divide a by b numbers where b=0
  */
 function  testDivideByZero(){
  $actual = $this-&amp;gt;calc-&amp;gt;divide(3,0);
  $expected = NULL;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }

 /**
  * Testing divide a by b numbers (a / b)
  */
 function  testDivide(){
  $actual = $this-&amp;gt;calc-&amp;gt;divide(10,2);
  $expected = 5;
  //checking if value returned value is what we expected
  $this-&amp;gt;assertEquals($expected, $actual);
 }
&lt;/pre&gt;&lt;br /&gt;
&lt;h3&gt;Re-run the test&lt;br /&gt;
&lt;/h3&gt;Re-run the test again and this time you should see some more passes if not refactor your code till you get all passes.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: bash&quot;&gt;eferuzi@feruzi /v/w/phpunit&amp;gt; php5 test.php
TestCase CalculatorTest-&amp;gt;testAdd() passed
TestCase CalculatorTest-&amp;gt;testAddInvalidValues() passed
TestCase CalculatorTest-&amp;gt;testSubtract() passed
TestCase CalculatorTest-&amp;gt;testMultiply() passed
TestCase CalculatorTest-&amp;gt;testDivideByZero() passed
TestCase CalculatorTest-&amp;gt;testDivide() passed

&lt;/pre&gt;&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/2615076/calculator-intrototdd.zip&quot;&gt;Download Source Code&lt;/a&gt;&lt;/p&gt;More information:-&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;TDD:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;http://en.wikipedia.org/wiki/Test-driven_development&lt;/li&gt;
&lt;li&gt;http://www.extremeprogramming.org/rules.html&lt;/li&gt;
&lt;/ul&gt;&lt;li&gt;PHPUnit:&lt;/li&gt;
&lt;ul&gt;&lt;li&gt;http://www.phpunit.de/&lt;/li&gt;
&lt;/ul&gt;&lt;/ul&gt;&lt;div&gt;Do not&amp;nbsp;hesitate&amp;nbsp;to ask me questions.&lt;br /&gt;
&lt;/div&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/11/introduction-to-tdd-with-phpunit.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-1270709584529151337</guid><pubDate>Sun, 22 Nov 2009 08:52:00 +0000</pubDate><atom:updated>2009-11-22T01:10:56.282-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">git</category><category domain="http://www.blogger.com/atom/ns#">github</category><category domain="http://www.blogger.com/atom/ns#">glossmaster</category><category domain="http://www.blogger.com/atom/ns#">kigm</category><category domain="http://www.blogger.com/atom/ns#">mysql</category><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">pear</category><category domain="http://www.blogger.com/atom/ns#">php</category><category domain="http://www.blogger.com/atom/ns#">terminology</category><title>kiGM : A Terminology Tool</title><description>&lt;span style=&quot;font-family: helvetica, arial, freesans, clean, sans-serif; font-size: 13px; line-height: 18px;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;main&quot; style=&quot;float: left; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; width: 50em;&quot;&gt;&lt;div class=&quot;wikistyle&quot; style=&quot;line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div style=&quot;line-height: 1.5em !important; margin-bottom: 1em !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 1em !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsH6ponshHSZiMu8ZvvTVRiv0aZONv2cV75ng9PoFkwKHTMX82k74m4gvlzm6eFABhFa6ON0kiWq6TRtzT169W-XMiN4EY8vXKfHIuaCCZuADWXGdI0uogKQ7oMZBW2nca75T4DxTG2mSm/s1600/kigm.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsH6ponshHSZiMu8ZvvTVRiv0aZONv2cV75ng9PoFkwKHTMX82k74m4gvlzm6eFABhFa6ON0kiWq6TRtzT169W-XMiN4EY8vXKfHIuaCCZuADWXGdI0uogKQ7oMZBW2nca75T4DxTG2mSm/s640/kigm.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;&lt;br /&gt;
To explain kiGM one has to start with&amp;nbsp;&lt;a href=&quot;http://www.it46.se/glossmaster/&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;GlossMaster&lt;/a&gt;.&amp;nbsp;&lt;a href=&quot;http://www.it46.se/glossmaster/&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;GlossMaster&lt;/a&gt;&amp;nbsp;is the fabulous multi-lingual terminology tool developed for&amp;nbsp;&lt;a href=&quot;http://www.africanlocalization.net/&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;ANLoc&lt;/a&gt;, the African Network for Localization. kiGM is a very lightweght version&amp;nbsp;&lt;a href=&quot;http://www.it46.se/glossmaster/&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;GlossMaster&lt;/a&gt;&amp;nbsp;with an aim of allowing user with low or no internet connection to work and sycn data with&amp;nbsp;&lt;a href=&quot;http://www.it46.se/glossmaster/&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;GlossMaster&lt;/a&gt;&amp;nbsp;periodically.&lt;a href=&quot;http://www.it46.se/glossmaster/&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;GlossMaster&lt;/a&gt;. kiGM has a verys small subset of the functionality that&amp;nbsp;&lt;a href=&quot;http://www.it46.se/glossmaster/has&quot; style=&quot;color: #4183c4; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: none; outline-width: initial; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-decoration: none;&quot;&gt;Glossmaster&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Source Code:&amp;nbsp;&lt;a href=&quot;http://github.com/eferuzi/kiGM/archives/master&quot;&gt;http://github.com/eferuzi/kiGM/archives/master&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Public Clone URL:&amp;nbsp;&lt;a href=&quot;git://github.com/eferuzi/kiGM.git&quot;&gt;git://github.com/eferuzi/kiGM.git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;git://github.com/eferuzi/kiGM.git&quot;&gt;&lt;/a&gt;Documentation:&amp;nbsp;&lt;a href=&quot;http://wiki.github.com/eferuzi/kiGM&quot;&gt;http://wiki.github.com/eferuzi/kiGM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Please come in and help.&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;line-height: 1.5em !important; margin-bottom: 1em !important; margin-left: 0px !important; margin-right: 0px !important; margin-top: 1em !important; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;sidebar&quot; style=&quot;border-left-color: rgb(230, 230, 230); border-left-style: solid; border-left-width: 4px; float: right; line-height: 1.4em; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 2.1em; padding-bottom: 0px; padding-left: 1em; padding-right: 0px; padding-top: 0px; width: 15em;&quot;&gt;&lt;/div&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/11/kigm-terminology-tool.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgsH6ponshHSZiMu8ZvvTVRiv0aZONv2cV75ng9PoFkwKHTMX82k74m4gvlzm6eFABhFa6ON0kiWq6TRtzT169W-XMiN4EY8vXKfHIuaCCZuADWXGdI0uogKQ7oMZBW2nca75T4DxTG2mSm/s72-c/kigm.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-8861642055357518936</guid><pubDate>Mon, 05 Oct 2009 13:49:00 +0000</pubDate><atom:updated>2009-11-28T13:35:36.653-08:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">backup</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">mysql</category><category domain="http://www.blogger.com/atom/ns#">mysqldump</category><category domain="http://www.blogger.com/atom/ns#">windows</category><title>Backup with mysqldump with PHP</title><description>Have you ever wanted to create a script a script that will create a mysqldump of a database using PHP? Here is a good starting point. More can be done to extend this to make it more useful, things like emailing the dump, restoring the database on fly and so much more.&lt;br /&gt;
&lt;br /&gt;
There is a minor difference between the script for a server running on MS Windows as compate to the Linux/UNIX&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;MS Windows&lt;/span&gt;: XAMMP or WAMP&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;/* variable declaration */
$db_user = &quot;yourUsername&quot;;
$db_password = &quot;yourPassword&quot;;
$db_database = &quot;yourDatabaseName&quot;;
$db_server = &quot;yourHostName&quot;; //default: localhost
$backup_path = &quot;C:\\path\\to\\backup\\folder\\&quot;;
//e.g $backup_path = &quot;C:\\backups\\sqldumps\\&quot;;
$path_to_mysqldump = &quot;C:\\path\\to\\mysql\\bin\\&quot;;
//e.g $path_to_mysqldump = &quot;C:\\xampp\\mysql\\bin\\&quot;;
$filename = &quot;backup&quot;.date(&quot;YmdHis&quot;).&quot;.sql&quot;; //filename with a timestamp

/*construction the command to be run */
$command= &quot;$path_to_mysqldump\\mysqldump.exe --add-drop-table --add-drop-database -h $db_server -u $db_user --password=$db_password $db_database &gt; $filename &quot;;

/* excution of the command */ 
exec($command, $dump, $status); 

/*checking the status of the command after runing */
if($status!=0){
echo &quot;The execution was not successful. An empty file has been created&quot;;
}else{
echo &quot;The execution was successful. Backup files is &quot; . $backup_path.$filename ;
}
&lt;/pre&gt;&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Linux/UNIX&lt;/span&gt; &lt;br /&gt;
&lt;pre class=&quot;brush: php&quot;&gt;* variable declaration */
$db_user = &quot;yourUsername&quot;;
$db_password = &quot;yourPassword&quot;;
$db_database = &quot;yourDatabaseName&quot;;
$db_server = &quot;yourHostName&quot;; //default: localhost
$backup_path = &quot;/path/to/backup/folder/&quot;; //you must have permission to write in this folder
//e.g $backup_path = &quot;/servers/backups/sqldumps/&quot;; 
$filename = $backup_path.&quot;backup&quot;.date(&quot;YmdHis&quot;).&quot;.sql&quot;; //filename with a timestamp

/*construction the command to be run */
$command= &quot;mysqldump.exe --add-drop-table --add-drop-database -h $db_server -u $db_user --password=$db_password $db_database &gt; $filename &quot;;

/* excution of the command */ 
exec($command, $dump, $status); 

/*checking the status of the command after runing */
if($status!=0){
echo &quot;The execution was not successful. An empty file has been created&quot;;
}else{
echo &quot;The execution was successful. Backup files is &quot; . $backup_path.$filename ;
}
&lt;/pre&gt;&lt;br /&gt;
Differences highlighted:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;in windows it, unless you have added the mysql bin to the path, you must specify the full path to the mysqldump.exe, as in Linux it accessible with out the full path&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;also the \\ used in the path, as in Linux we use /&lt;/li&gt;
&lt;li&gt;in Linux remember you mush have write asses to the folder you are&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;code style=&quot;white-space: nowrap;&quot;&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/code&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/10/backup-with-mysqldump-with-php.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4214904065504175439</guid><pubDate>Fri, 24 Jul 2009 07:48:00 +0000</pubDate><atom:updated>2009-07-24T02:39:51.785-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">ffmpeg</category><category domain="http://www.blogger.com/atom/ns#">gimp</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">mplayer</category><category domain="http://www.blogger.com/atom/ns#">ubuntu</category><category domain="http://www.blogger.com/atom/ns#">video</category><category domain="http://www.blogger.com/atom/ns#">watermark</category><title>Watermark your Videos</title><description>&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;fsp:Creative Series&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNhs2udOOTrM1ZxLXntTW5Sw_oLUd4lmnLYNZs-TGZ2Me5nIWNxpeoT6b45BtaEG1ApXCJBBjRbS8oEoWm-mqX41wN4BJLEPmW0wQYHeK9pTtoCu6ae3PUje6kmM4zsPT6VCMv1Tj6nSe/s1600-h/Anonymous_Light_Bulb.png&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 98px; height: 98px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNhs2udOOTrM1ZxLXntTW5Sw_oLUd4lmnLYNZs-TGZ2Me5nIWNxpeoT6b45BtaEG1ApXCJBBjRbS8oEoWm-mqX41wN4BJLEPmW0wQYHeK9pTtoCu6ae3PUje6kmM4zsPT6VCMv1Tj6nSe/s320/Anonymous_Light_Bulb.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5361934593977345458&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;Have you ever wanted to &lt;a href=&quot;http://en.wikipedia.org/wiki/Digital_watermarking&quot;&gt;watermark&lt;/a&gt; your video with your name or company or whatever? I mean like how YouTube stamps its logo an all videos, it is easy that I thought. I have been working on it for a good one hour and guess what it works and its not rocket science, even I can do it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Platform: the tools used&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;li&gt;platform: &lt;a href=&quot;http://www.ubuntu.com/&quot;&gt;Ubuntu&lt;/a&gt; Jaunty (9.04)&lt;/li&gt;&lt;li&gt;media player: &lt;a href=&quot;http://www.mplayerhq.hu/design7/news.html&quot;&gt;mplayer&lt;/a&gt;&lt;/li&gt;&lt;li&gt;image editor: &lt;a href=&quot;http://www.gimp.org/&quot;&gt;gimp&lt;/a&gt;&lt;/li&gt;&lt;li&gt;watermarking  tool: &lt;a href=&quot;http://ffmpeg.org/&quot;&gt;ffmpeg&lt;/a&gt; using the vhook library&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;NOTE: The default ffmpeg on the Ubuntu repository does not have vhook enabled. You may have get the source code and compile it with vhook enabled.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div  style=&quot;text-align: right;font-family:trebuchet ms;&quot;&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Compiling ffmpeg&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ol style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://www.ffmpeg.org/releases/ffmpeg-0.5.tar.bz2&quot;&gt;Download&lt;/a&gt; the ffmpeg &lt;/li&gt;&lt;li&gt;Untar it: &lt;span style=&quot;font-family:courier new;&quot;&gt;tar jxfv ffmpeg-xx.xx.tar.bz2&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Get into the untared folder: &lt;span style=&quot;font-family:courier new;&quot;&gt;cd ffmpeg-xx.xx/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Configure with the vhook enabled:&lt;span style=&quot;font-family:courier new;&quot;&gt; ./configure --enable-gpl --enable-nonfree --enable-vhook&lt;/span&gt;. Run &lt;span style=&quot;font-family:courier new;&quot;&gt;./configure --help&lt;/span&gt; to get a full list of options. &lt;span style=&quot;font-weight: bold;&quot;&gt;NOTE&lt;/span&gt;: the &lt;span style=&quot;font-weight: bold;&quot;&gt;.&lt;/span&gt; in the commands above is part of the command, so put it there.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Compile and Install: &lt;span style=&quot;font-family:courier new;&quot;&gt;make &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/li&gt;&lt;li&gt;vhook files will be located in the &lt;span style=&quot;font-style: italic;&quot;&gt;/usr/local/lib/vhook&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Ingredients: the verges and spices&lt;/span&gt;&lt;ul&gt;&lt;li&gt;video to be watermarked:&lt;/li&gt;&lt;/ul&gt; &lt;div style=&quot;text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dxOW716umo9Vm2iM4yVeQ68rxeAwtkXR5SZvu-zg2wl9Styh4XboZQQoNI7_eY8cdNGTMB0CAvLAQzUIsiQXw&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;the image to watermark the video. NOTE: the image background must be of color: &lt;span style=&quot;font-style: italic;&quot;&gt;#808080&lt;/span&gt; and of the same size as the video.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: right;&quot;&gt;&lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;Creating the watermarking images&lt;/span&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Play the video from the console/terminal to get the size of the video: &lt;span style=&quot;font-family:courier new;&quot;&gt;mplayer thetrain.mpg&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Read the size of the video from the info displayed when mplayer loads the video, see the image below.&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvJN90mPVvKYbr0Z7NogfMb_teQxxIbUBjHpoDTlyWYRFDtynFIzFciKmVUghMSppplcvId42DnfJI9z9g9Tj4Zx2thog2OoKtFNI0cjZB8UoD0KdS1Vhl4HRJTpGoVvV3ByxuNcn4mpD8/s1600-h/stage1.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 227px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhvJN90mPVvKYbr0Z7NogfMb_teQxxIbUBjHpoDTlyWYRFDtynFIzFciKmVUghMSppplcvId42DnfJI9z9g9Tj4Zx2thog2OoKtFNI0cjZB8UoD0KdS1Vhl4HRJTpGoVvV3ByxuNcn4mpD8/s320/stage1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5361945684529760610&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;So the create an image with the same size as the video, in this case it is &lt;span style=&quot;font-style: italic; font-weight: bold;&quot;&gt;640x480&lt;/span&gt; pixels. Remember the background of the image must be &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;#808080&lt;/span&gt;, then add all that you want. Here is mine.&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdd9DYaHm6deOL7u_e9w_0ViGKCurSSMjsh8SZecmwl1uEZzEKolHg6jKRbwt6hc419lP1Kt0Q72oPsDl1lcyXV7F1xgK5RDA9Cm1TZCmZZABr87iKViNxloS_MDNj_a7Ps-yo8Tbf9RQ2/s1600-h/overlay.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 240px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdd9DYaHm6deOL7u_e9w_0ViGKCurSSMjsh8SZecmwl1uEZzEKolHg6jKRbwt6hc419lP1Kt0Q72oPsDl1lcyXV7F1xgK5RDA9Cm1TZCmZZABr87iKViNxloS_MDNj_a7Ps-yo8Tbf9RQ2/s320/overlay.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5361948588420452834&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Now we set, its time to cook&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKd9FzpyKsXWDEZTK96NZHecz7Kw3_c3C1G87r_PIdzYJczJZy5ZiCM8I0JgULhRzQgbocUWV7bgeBCzpDoKirF_olJo5hhQB7c_-8AMZfjvFRQwHZxuVp9XNqzG7e0BBFsDDcB__Q3IEc/s1600-h/stage1.png&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Cooking: frying and boiling&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To make it easy, put all the ingredients in on &lt;span style=&quot;font-style: italic;&quot;&gt;pot&lt;/span&gt;, oops sorry, in one folder. The naviget on the terminal to that folder. Here is the generic structure of the command to watermark: &lt;span style=&quot;font-family:courier new;&quot;&gt;ffmpeg -sameq -i original-video -vhook &#39;path-to-watermark.so-library -f overlaying-image&#39; output-file&lt;/span&gt;. The sameq force the ffmpeg to maintain the same quality in and out. There is my cooking: &lt;span style=&quot;font-family:courier new;&quot;&gt;ffmpeg -sameq -i  thetrain.mpg -vhook &#39;/usr/local/lib/vhook/watermark.so -f overlayer.png&#39; thetrain.fsp.mpg&lt;/span&gt;. &lt;/li&gt;&lt;li&gt;Prepare the table and save the food. Use mplayer to try your newly watter marked file&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Delicious: what goes to the table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;See what we served on  the table&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&#39;allowfullscreen&#39; webkitallowfullscreen=&#39;webkitallowfullscreen&#39; mozallowfullscreen=&#39;mozallowfullscreen&#39; width=&#39;320&#39; height=&#39;266&#39; src=&#39;https://www.blogger.com/video.g?token=AD6v5dzRq8PLRZqmdMQooFiTrXJe1AcDQW8crXMBpmney5YgNz7H-070kV4Ry_hDdg22ry_1Rhc2jQBITsuioZJ1TQ&#39; class=&#39;b-hbp-video b-uploaded&#39; frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Try It and tell me! Have fun guys!.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description><enclosure type='video/mp4' url='http://www.blogger.com/video-play.mp4?contentId=e4621c4f9199c239&amp;type=video%2Fmp4' length='0'/><link>http://emanuelferuzi.blogspot.com/2009/07/watermark-your-videos.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhrNhs2udOOTrM1ZxLXntTW5Sw_oLUd4lmnLYNZs-TGZ2Me5nIWNxpeoT6b45BtaEG1ApXCJBBjRbS8oEoWm-mqX41wN4BJLEPmW0wQYHeK9pTtoCu6ae3PUje6kmM4zsPT6VCMv1Tj6nSe/s72-c/Anonymous_Light_Bulb.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-2367452602879210536</guid><pubDate>Mon, 20 Jul 2009 15:31:00 +0000</pubDate><atom:updated>2009-07-20T09:06:57.802-07:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">Android</category><category domain="http://www.blogger.com/atom/ns#">linux</category><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">smart phone</category><title>Linux threatens giants in the smart phone arena</title><description>&lt;span style=&quot;font-family: trebuchet ms;font-family:trebuchet ms;&quot; &gt;If you do not have one and you are CEO, the your company is a start up and we understand. What is it?  It is a smart phone. According to Wikipedia, a smart phone is a mobile phone offering advanced capabili&lt;/span&gt;&lt;a style=&quot;font-family: trebuchet ms;&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.ringhk.com/news-week/20080105_2008ces01.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 295px; height: 234px;&quot; src=&quot;http://www.ringhk.com/news-week/20080105_2008ces01.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family: trebuchet ms;font-family:trebuchet ms;&quot; &gt;ties, often with PC-like functionality. Today these come in all shapes and sizes. With fe&lt;/span&gt;&lt;span style=&quot;font-family: trebuchet ms;font-family:trebuchet ms;&quot; &gt;atures ranging from touch screen to office document applications, smart phone as moved office into people hands.&lt;/span&gt;&lt;br /&gt;&lt;div  style=&quot;text-align: justify; font-family: trebuchet ms;font-family:trebuchet ms;&quot;&gt;&lt;br /&gt;But what of under the hood, what is happening there? In a much as the normal user will not bother about what goes in the hood, at times its good to see who are the major players there. For a while Mac with the iPhone series rules that area. But it was not long before BlackBerry, HTC, Nokia and others join the race and made it very difficult for me to choice a smart phone. This is why I am still sticking to my “&lt;span style=&quot;font-style: italic;&quot;&gt;cellphone&lt;/span&gt;”.&lt;br /&gt;&lt;br /&gt;If you are like me, &lt;span style=&quot;font-weight: bold; font-style: italic;&quot;&gt;if its not open source then its not for me&lt;/span&gt;. This philosophy has kept with the SonyEricson K320i for a years. I have been looking and following what is happening out there and now I can say I have options that are good enough to make iPhone and friends work overtime.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://wiki.openmoko.org/&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Openmoko&lt;/span&gt;&lt;/a&gt; is a project dedicated to delivering mobile phones with an open source software stack. Openmoko is currently selling the Neo FreeRunner phone to advanced users and will start selling it to the general public as soon as the software is more developed.&lt;br /&gt;&lt;br /&gt;I have had the privilege of playing around the the model before the FreeRunner, Neo 1973. I liked it, but it was a bit heavy. But I saw the terminal and we could run Linux commands on it.&lt;br /&gt;&lt;br /&gt;A few months after I started working at FreeCode, I saw &lt;a href=&quot;http://www.engadget.com/2007/10/17/nokia-n810-gets-official/&quot;&gt;Nokia N810&lt;/a&gt; running on Debian. I was so impressed to see that Linux is getting some where. I spent a lot of time looking, despite the fact that it was a bit slow when you start heavy application, but it work.&lt;br /&gt;&lt;br /&gt;All along I had been reading and looking at the T-Mobile G1 running on Android. &lt;a href=&quot;http://www.android.com/about/&quot;&gt;Android™ &lt;/a&gt;delivers a complete set of software for mobile devices: an operating system, middleware and key mobile applications. Now here was one smart phone that almost made me got to shop. It was slick, clean and open source. Mind you, Android is built on the o&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://images.intomobile.com/wp-content/uploads/2009/03/htc-magic.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 297px; height: 282px;&quot; src=&quot;http://images.intomobile.com/wp-content/uploads/2009/03/htc-magic.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;pen Linux Kernel. And because of this, Android is open source; it can be liberally extended to incorporate new cutting edge technologies as they emerge. And this can be seen in the the HTC Magic.&lt;br /&gt;&lt;br /&gt;“&lt;a style=&quot;font-weight: bold;&quot; href=&quot;http://www.htc.com/www/product/magic/overview.html&quot;&gt;The HTC Magic&lt;/a&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;, powered by Android™, is designed to turn heads with its chic looks, and command attention with its advanced list of capabilities.&lt;/span&gt;”&lt;br /&gt;&lt;br /&gt;After looking at features and reading reviews, its now a question of time before I visit the shop, &lt;span style=&quot;font-style: italic;&quot;&gt;actually I am broke at the moment&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;But the list is not over, &lt;a href=&quot;http://linuxdevices.com/news/NS2028218108.html&quot;&gt;Motorola Evoke QA4&lt;/a&gt;  Motorola&#39;s EV-DO smartphone offers both a slide-out keypad and a virtual QWERTY keyboard. The Evoke QA4 runs Motorola&#39;s MotoMAGX Linux/Java stack, and is equipped with a 2.8-inch touchscreen, accelerometers, and widgets, as well as OK Labs&#39; OKL4 embedded hypervisor.  &lt;a href=&quot;http://linuxdevices.com/news/NS5349783759.html&quot;&gt;General Mobile DSTL1&lt;/a&gt; General Mobile&#39;s dual-SIM, XScale-based Android cameraphone is based on a design by Yuhua (see entry above). The DSTL1 runs Android on a Marvell PXA-310 clocked to 624MHz, offers WiFi, Bluetooth, accelerometers, and a 5-megapixel camera, and is equipped with dual SIMs and dual baseband radios, enabling simultaneous reception for two different phone numbers.  The list is long. See more at &lt;a href=&quot;http://www.linuxfordevices.com/c/a/Linux-For-Devices-Articles/Linux-Mobile-Phones/&quot;&gt;Linux Mobile Phones.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;With big players such as Samsung, LG, Sony Ericsson, NVIDIA and Archos all working on releasing a handset for Android, soon there will be more options  for you, especially is you like playing and fine ture your devices.&lt;br /&gt;&lt;br /&gt;Open Minds use &lt;a href=&quot;http://www.opensource.org/&quot;&gt;Open Source&lt;/a&gt;. Are you open minded? If yes, are using Open Source Technologies?&lt;br /&gt;&lt;/div&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/07/linux-threatens-giants-in-smart-phone.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4302846065408892790</guid><pubDate>Sun, 19 Jul 2009 18:20:00 +0000</pubDate><atom:updated>2009-07-19T11:32:57.649-07:00</atom:updated><title>Free lecture notes, exams, and videos from MIT.</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ6cqoYRfHEzOfkR0JpZXpJqLF8oY2XP3XhB2Ek5qSV89FVFdlPMT1XS6hBJuZ-nRZolqiu5Cq44mgZDd0j3aEysVSUiYIUngCT0T8UjspbtjlGHrYIAapWM-Cz8G6xUcjg3U4cB1ZFS71/s1600-h/ocw.gif&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 400px; height: 114px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ6cqoYRfHEzOfkR0JpZXpJqLF8oY2XP3XhB2Ek5qSV89FVFdlPMT1XS6hBJuZ-nRZolqiu5Cq44mgZDd0j3aEysVSUiYIUngCT0T8UjspbtjlGHrYIAapWM-Cz8G6xUcjg3U4cB1ZFS71/s400/ocw.gif&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5360238445979159586&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;  &lt;div style=&quot;text-align: center;&quot;&gt;“&lt;span style=&quot;font-weight: bold;&quot;&gt;Unlocking Knowledge, Empowering Minds&lt;/span&gt;.”&lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: left;&quot;&gt;   	&lt;meta equiv=&quot;CONTENT-TYPE&quot; content=&quot;text/html; charset=utf-8&quot;&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } 	--&gt; 	&lt;/style&gt;  &lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot; align=&quot;JUSTIFY&quot;&gt;I have been working on a database for an application that is to be used at my office for recruiting and after a while I decided to break on &lt;a href=&quot;http://www.youtube.com&quot;&gt;YouTube&lt;/a&gt;. If I am not on &lt;a href=&quot;http://www.youtube.com/members?s=mv&amp;amp;t=w&amp;amp;g=0&amp;amp;c=27&quot;&gt;Education Channel&lt;/a&gt; then it will be &lt;a href=&quot;http://www.youtube.com/user/googletechtalks&quot;&gt;Google TechTalk&lt;/a&gt;,  just to be updated as to what the rest of the world is doing as far as IT and Science is concerned.&lt;/p&gt; &lt;p style=&quot;margin-bottom: 0in;&quot; align=&quot;JUSTIFY&quot;&gt;Today I landed on something I though of sharing with the rest of you. It is the MIT &lt;a href=&quot;http://ocw.mit.edu/&quot;&gt;OpenCourse Wave&lt;/a&gt; (OCW). OpenCourseWare is a web-based publication of virtually all MIT course content. OCW is open and available to the world and is a permanent MIT activity.&lt;/p&gt;  &lt;p style=&quot;margin-bottom: 0in;&quot; align=&quot;JUSTIFY&quot;&gt;After clicking around, I reallied that this can be a good resource especially to countries where we do not have access to update academic materials. What is more fascinating is that you can mirror the content. I can only imagine how this will be of use for universities in  my home country,  especially engineering courses where things change on a daily bases. I will be more than happy to work with any universities or colleges to try and figure out how to mirror this material.  There is a number of countries in Africa that are already mirroring these materials. Let take advantage of this source of information.&lt;/p&gt; &lt;p style=&quot;margin-bottom: 0in;&quot; align=&quot;JUSTIFY&quot;&gt;One step further, the content can be localized to your language. As I was going through this site, I learned that there is so much in OCW than I thought. Please pay a visit to this site and see how you can take advantage of these open available materials.  &lt;/p&gt;  &lt;p style=&quot;margin-bottom: 0in; font-weight: bold;&quot; align=&quot;CENTER&quot;&gt;“Unlocking Knowledge, Empowering Minds.”&lt;/p&gt; &lt;p&gt;&lt;/p&gt;    	&lt;meta equiv=&quot;CONTENT-TYPE&quot; content=&quot;text/html; charset=utf-8&quot;&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;   </description><link>http://emanuelferuzi.blogspot.com/2009/07/free-lecture-notes-exams-and-videos.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZ6cqoYRfHEzOfkR0JpZXpJqLF8oY2XP3XhB2Ek5qSV89FVFdlPMT1XS6hBJuZ-nRZolqiu5Cq44mgZDd0j3aEysVSUiYIUngCT0T8UjspbtjlGHrYIAapWM-Cz8G6xUcjg3U4cB1ZFS71/s72-c/ocw.gif" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-8505028079744013142</guid><pubDate>Thu, 16 Jul 2009 22:37:00 +0000</pubDate><atom:updated>2009-07-16T16:00:21.315-07:00</atom:updated><title>Kiswahili Language Pack Addon</title><description>&lt;div style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQoe5gztnvh2zRddHhCvj582kBHB9GmdC8P82TYl7JMrXby1K1fAkaSXck9pFVb5j2SEbhcsSWdj0YpOir_Zp0AV7BplXWQ312Y_9hlBj2GICy6wtju6TXkwqblA4diWcdpWAoQZQpimp-/s1600-h/ff-1.png&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 175px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQoe5gztnvh2zRddHhCvj582kBHB9GmdC8P82TYl7JMrXby1K1fAkaSXck9pFVb5j2SEbhcsSWdj0YpOir_Zp0AV7BplXWQ312Y_9hlBj2GICy6wtju6TXkwqblA4diWcdpWAoQZQpimp-/s400/ff-1.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5359191372028194386&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;   	&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;  &lt;/div&gt;&lt;p  style=&quot;margin-bottom: 0in; text-align: justify;font-family:trebuchet ms;&quot;&gt;&lt;span style=&quot;font-weight: bold;font-size:130%;&quot; &gt;&lt;span style=&quot;color: rgb(0, 0, 153);&quot;&gt;Try it Now!&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt; &lt;/span&gt;then tell us what you think.&lt;/p&gt;&lt;p face=&quot;trebuchet ms&quot; style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;Its as easy as A-B-C&lt;/p&gt;&lt;p face=&quot;trebuchet ms&quot; style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;A. &lt;a href=&quot;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-1.9.1/&quot;&gt;Download&lt;/a&gt; and install Firefox 3.5&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify; font-family: trebuchet ms;&quot;&gt;B. Install in K&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/12788/&quot;&gt;iswahili Language Add-On&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify; font-family: trebuchet ms;&quot;&gt;C.  Install the following add-on &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/356&quot;&gt;Locale Switcher&lt;/a&gt; and enable Swahili by selecting it from the Tools - Language Menu&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify; font-family: trebuchet ms;&quot;&gt;Your comment and suggestions are most welcome.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;A word from tzLUG&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;After six long and hard months of working tirelessly as the &lt;/span&gt;&lt;a style=&quot;font-family: trebuchet ms;&quot; href=&quot;http://linuxgroup.co.tz/&quot;&gt;tzLUG&lt;/a&gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt; community, we are finally done with our translation of Firefox 3.5. Actually we are not done, we are still keeping a close eye on the new strings on a daily bases.&lt;/span&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify; font-family: trebuchet ms;&quot;&gt;   	&lt;meta equiv=&quot;CONTENT-TYPE&quot; content=&quot;text/html; charset=utf-8&quot;&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;  &lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;We of course could not have completed this great task without the help and support of our mentors: &lt;a href=&quot;http://www.it46.se/&quot;&gt;IT+46&lt;/a&gt;, &lt;a href=&quot;http://www.freecodeint.com/&quot;&gt;FreeCode&lt;/a&gt; and &lt;a href=&quot;http://translate.org.za/&quot;&gt;translate.org.za&lt;/a&gt; who have been with us throughout the duration of project.&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;Can you imagene what we would have to do if &lt;a href=&quot;http://translate.sourceforge.net/wiki/toolkit/pocount&quot;&gt;pocount&lt;/a&gt; refused to work? Lets the tools given to us by our mentors have been of great help.&lt;br /&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;   	&lt;meta equiv=&quot;CONTENT-TYPE&quot; content=&quot;text/html; charset=utf-8&quot;&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;  &lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;Although the tzLUG single handedly did all the work on this translation project, from start to finish, we’d like to acknowledge the &lt;a href=&quot;http://kamusiproject.org/&quot;&gt;Kamusi Project&lt;/a&gt; and the &lt;a href=&quot;http://www.kilinux.udsm.ac.tz/&quot;&gt;Kilinux&lt;/a&gt; – translations which formed the foundation for our work.&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;   	&lt;meta equiv=&quot;CONTENT-TYPE&quot; content=&quot;text/html; charset=utf-8&quot;&gt; 	&lt;title&gt;&lt;/title&gt; 	&lt;meta name=&quot;GENERATOR&quot; content=&quot;OpenOffice.org 3.0  (Linux)&quot;&gt; 	&lt;style type=&quot;text/css&quot;&gt; 	&lt;!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 	--&gt; 	&lt;/style&gt;  &lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;Now that all the work is done, it’s now ready for you to test and review, we’d like to know what you think of our work and what we can do to improve on it. So please know that your comments and suggestions will be greatly appreciated. Thank you.&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify; font-family: trebuchet ms;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/07/kiswahili-language-pack-addon.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQoe5gztnvh2zRddHhCvj582kBHB9GmdC8P82TYl7JMrXby1K1fAkaSXck9pFVb5j2SEbhcsSWdj0YpOir_Zp0AV7BplXWQ312Y_9hlBj2GICy6wtju6TXkwqblA4diWcdpWAoQZQpimp-/s72-c/ff-1.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4154886393299967717</guid><pubDate>Sun, 19 Apr 2009 18:46:00 +0000</pubDate><atom:updated>2009-04-19T12:34:13.199-07:00</atom:updated><title>Pata Linux kiurahisi zaidi</title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOr4FFpwKpjWUPswi3-ZtLv1ljssWkCgGsRH7yDhpUbsLHmHmumBBX2P3CdTNpRqjndUi5su295p0hUufzu2ITMS0toP6zrs43g-YsmM5mhuMJc_Ag06jPdEEEVBqnzyBng0rLSybECuDd/s1600-h/rado.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 342px; height: 400px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOr4FFpwKpjWUPswi3-ZtLv1ljssWkCgGsRH7yDhpUbsLHmHmumBBX2P3CdTNpRqjndUi5su295p0hUufzu2ITMS0toP6zrs43g-YsmM5mhuMJc_Ag06jPdEEEVBqnzyBng0rLSybECuDd/s400/rado.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5326485619678634482&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Baada ya kutafisri Firefox kwa miezi minne, niliamua kujikumbusha PHP kidogo. Kwa hiyo mwisho wa wiki huu likaipeka tovuti ya &lt;a href=&quot;http://linuxgroup.co.tz/&quot;&gt;tzLUG&lt;/a&gt; shopping na kupiga pasi baadhi ya kurasa.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Kurasa nilizifanyia kazi zaidi ni ya kuonyesha &lt;a href=&quot;http://linuxgroup.co.tz/distro.php&quot;&gt;Linux Distro&lt;/a&gt; &lt;/span&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;tulizonazo&lt;/span&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt; na matoleo  yake. Pia nimebadili muonekano wa tovuti nzima. Nimekurahisisha uchaguaji wa Linux na toleo unalolitaka. Sasa unaweza kupata  &lt;a href=&quot;http://linuxgroup.co.tz/distro.php?distroid=6&quot;&gt;FreeBSD&lt;/a&gt; na &lt;a href=&quot;http://linuxgroup.co.tz/distro.php?distroid=5&quot;&gt;openSolaris&lt;/a&gt;, ambazo sio Linux ila ni &lt;/span&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;chanzo huria (open source).&lt;/span&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt; Ushindwe wewe tu. Tafadhali kama una maoni usisite kunitumia. Pia nimeongeza ukurasa wa &lt;a href=&quot;http://linuxgroup.co.tz/review.php&quot;&gt;Review&lt;/a&gt; ambao utatumika kuonyesha kazi ambazo unaweza jaribu kabla ya toleo la mwisho.&lt;/span&gt;&lt;/p&gt;  &lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Mwisho wa wiki ijayo, nitatengeneza kurasa ya miradi na kusakinisha Moodle ili tuweze kuwa na Online Course, tutaanza na Linux kwa Wabongo.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Programu nilizotumia ni:-&lt;a href=&quot;http://www.eclipse.org/&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;&lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt;  ikiwa na programu-jalizi la PHP, kama kihariri&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;&lt;a href=&quot;http://www.gimp.org/&quot;&gt;GIMP&lt;/a&gt;  kwa ajili ya kuhariri na kutenegeneza picha na kodi za rangi&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Majaribio  ya mefanyika kwe &lt;a href=&quot;http://linuxgroup.co.tz/review.php&quot;&gt;Swahili Firefox&lt;/a&gt; (RC1), &lt;a href=&quot;http://www.opera.com/&quot;&gt;Opera&lt;/a&gt; and&lt;a href=&quot;http://www.microsoft.com/windows/products/winfamily/ie/default.mspx&quot;&gt; Internet Explorer &lt;/a&gt; (ikiendeshwa juu ya &lt;a href=&quot;http://www.virtualbox.org/&quot;&gt;VirtualBox OSE&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://gftp.seul.org/&quot;&gt;gFTP&lt;/a&gt;  imetumika kuhamisha mafaili kwenye seva&lt;/li&gt;&lt;/ul&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;&lt;/span&gt; &lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Ukiachana na Opera na Internet Explorer, programu zingine zote ni za chanzo huria (open source). Kama una maona maoni au maswali tafadhali usisite kuniuliza.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;span style=&quot;font-family:Trebuchet MS,sans-serif;&quot;&gt;Kama Linux unayoitaka haipo basi tuambie na titaiweka&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/04/pala-linux-distributions-kiurahisi.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOr4FFpwKpjWUPswi3-ZtLv1ljssWkCgGsRH7yDhpUbsLHmHmumBBX2P3CdTNpRqjndUi5su295p0hUufzu2ITMS0toP6zrs43g-YsmM5mhuMJc_Ag06jPdEEEVBqnzyBng0rLSybECuDd/s72-c/rado.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-4894044762049228418</guid><pubDate>Sat, 11 Apr 2009 00:47:00 +0000</pubDate><atom:updated>2009-04-11T07:37:02.788-07:00</atom:updated><title>Taste of Swahili Firefox 3.5b4pre - sw-TZ.linux</title><description>It about time we start showing what we have been working on. If you have the time please download and test this Linux version localization of Firefox.&lt;br /&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhxXptH7A7DqdNlNRpQy3Y-QOZtjbm3bu_o4PPZKHSFoNs8ZTFec0q78albLxMizmTwCd9OMdbhuJzIHIV4o7nExeBbeNT7zHjQm-fx2Yzj8vKjnmGBQF3SnyVY97SmsrbYtakFG3XV7YY/s1600-h/sw-TZ.jpg&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 80px;&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhxXptH7A7DqdNlNRpQy3Y-QOZtjbm3bu_o4PPZKHSFoNs8ZTFec0q78albLxMizmTwCd9OMdbhuJzIHIV4o7nExeBbeNT7zHjQm-fx2Yzj8vKjnmGBQF3SnyVY97SmsrbYtakFG3XV7YY/s400/sw-TZ.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5323237187020961458&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;We are still doing some Quality Assurance and we should do the build for Windows too may be with in the next 48 hours.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Current known issues are&lt;/b&gt;:-&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Consistence - this has been looked at on the raw files so it about 95% complete&lt;/li&gt;&lt;li&gt;Access Keys - we will look into this as soon as possible&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;HowTo&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download &lt;a href=&quot;http://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-1.9.1/firefox-3.5b4pre.en-US.linux-i686.tar.bz2&quot;&gt;firefox-3.5b4pre.en-US.linux-i686.tar.bz2&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://linuxgroup.co.tz/files/firefox-3.5b4pre.sw-TZ.linux-i686.tar.gz&quot;&gt;&lt;/a&gt;Download &lt;a href=&quot;http://linuxgroup.co.tz/files/firefox-3.5b4pre.sw.langpack.xpi&quot;&gt;firefox-3.5b4pre.sw.langpack.xpi&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Navigate to where you place the file(mine are downloaded onto my desktop)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;# cd /home/eferuzi/Desktop/&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Untar the file, this will create a folder &lt;span style=&quot;font-weight: bold;&quot;&gt;firefox&lt;/span&gt; with the untared files in it&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;# tar jxfv firefox-3.5b4pre.en-US.linux-i686.tar.bz2&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Get into the folder created folder, &lt;span style=&quot;font-weight: bold;&quot;&gt;firefox&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;# cd firefox/&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Launch Firefox, with the language pack file, &lt;span style=&quot;font-weight: bold;&quot;&gt;firefox-3.5b4pre.sw.langpack.xpi&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;# ./firefox  ../firefox-3.5b4pre.sw.langpack.xpi&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;You will prompt to install the install the language pack, click &lt;span style=&quot;font-weight: bold;&quot;&gt;Install &lt;/span&gt;then click  &lt;span style=&quot;font-weight: bold;&quot;&gt;OK &lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;and &lt;span style=&quot;font-weight: bold;&quot;&gt;Quit&lt;/span&gt; Fireforx&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;/span&gt;Replace, using a text editor of your choice, the string &lt;span style=&quot;font-weight: bold;&quot;&gt;en-US&lt;/span&gt; with &lt;span style=&quot;font-weight: bold;&quot;&gt;sw-TZ &lt;/span&gt;in the file &lt;span style=&quot;font-weight: bold;&quot;&gt;firefox-l10n.js&lt;/span&gt; found in the &lt;span style=&quot;font-weight: bold;&quot;&gt;firefox/defaults/pref&lt;/span&gt; folder&lt;/li&gt;&lt;li&gt;Launch Firefox&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;# ./firefox&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;And enjoy the fun.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; We will appreciate your comments, corrections and ideas are all &lt;a href=&quot;mailto:emanuel.feruzi@trilabs.co.tz&quot;&gt;welcome&lt;/a&gt;. Again we will like to apologies for not having the MS Windows version ready but we will make sure you are updated as soon as we have built it.</description><link>http://emanuelferuzi.blogspot.com/2009/04/taste-of-swahili-firefox.html</link><author>noreply@blogger.com (Tri Labs)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhxXptH7A7DqdNlNRpQy3Y-QOZtjbm3bu_o4PPZKHSFoNs8ZTFec0q78albLxMizmTwCd9OMdbhuJzIHIV4o7nExeBbeNT7zHjQm-fx2Yzj8vKjnmGBQF3SnyVY97SmsrbYtakFG3XV7YY/s72-c/sw-TZ.jpg" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-5397683093389531516</guid><pubDate>Thu, 09 Apr 2009 01:11:00 +0000</pubDate><atom:updated>2009-04-08T19:45:22.334-07:00</atom:updated><title>Umoja Project joins The African Network for Localization</title><description>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.africanlocalisation.net/sites/default/files/images/anloc-banner4.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 220px; height: 92px;&quot; src=&quot;http://www.africanlocalisation.net/sites/default/files/images/anloc-banner4.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;Our mission is to empower Africans to participate in the digital age by removing the last inch limitations imposed on language usage by the limitation of technology. &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt;   &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;At &lt;a href=&quot;http://www.africanlocalization.net/&quot;&gt;The African Network for Localization&lt;/a&gt; (ANLoc) it is believed that since languages were there before technologies then technologies should adopt the languages and not the other way round.  Thus this group of very hard working people is toiling to archive that. The project has a number of sub-project that are carried out all with the mission in mind.  &lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;So what is a &lt;a href=&quot;http://www.africanlocalization.net/&quot;&gt;ANLoc&lt;/a&gt; all about and why Umoja Project partnered with them? Here are the reasons:-&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;ul style=&quot;text-align: justify;&quot;&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/en/fonts&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Fonts&lt;/span&gt;&lt;/a&gt;  - many of African language  make use addition characters and in some case completely different  characters. With languages such as a Arabic and Amharic, fonts have  to designed and built from scratch.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/en/keyboards&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Keyboards&lt;/span&gt;&lt;/a&gt; -  once there fonts have  been designed, then the keyboard layout have to designed to meet the  needs of a particular language. At the moment ANLoc is developing  software version of the keyboard layout and may be someday we will  have the hardware implementations for these layouts&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/en/policy&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Languages and ICT Policy&lt;/span&gt;&lt;/a&gt; – to  comply with different languages and their ICT Policy, ANLoc studies  and examines the ICT Policy of each country so as to gain a deeper  understanding and eventually to accurately inform the policy  maker on localization and language issues.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/locales&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Locales&lt;/span&gt;&lt;/a&gt; – today only 36  languages in Africa&#39;s many languages have their LOCALES. ANLoc,  through the &lt;a href=&quot;http://o2.it46.se/afrigen/&quot;&gt;Afrigen&lt;/a&gt; Project is aiming at having 100 locales for  African Languages. Is your language in yet and complete? &lt;a href=&quot;http://o2.it46.se/afrigen/statistics.php&quot;&gt;Check the Stats&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/localisation-tools&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Localization Tools&lt;/span&gt;&lt;/a&gt; – a bonus for  the Umoja Project. ANLoc is investing its energy in developing tools  that will easy the task of localization. With tools such as &lt;a href=&quot;http://translate.sourceforge.net/wiki/virtaal/index&quot;&gt;Virtaal&lt;/a&gt;  and &lt;a href=&quot;http://translate.sourceforge.net/wiki/toolkit/index&quot;&gt;Translate Toolkit&lt;/a&gt;, localization is becoming so easy that almost  everyone is invited. And with time everyone should be able to take  part in localization.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/en/localising&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Localize Software&lt;/span&gt;&lt;/a&gt; – after all  is said and done, it will be good for software to also  speak my language. This sub-project is working at localization  software and maintain the localizations. The Umoja Project is doing  this at the moment. Now we have a network that has done this for  many other languages, from which we will learn from their experience  and avoid the mistakes they made.   &lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.africanlocalization.net/spell-checkers&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Spell Checkers&lt;/span&gt;&lt;/a&gt; – creating spell  checker enables creators of local contents to be confident with  their work. But not many of these exist for African Languages and its  ANLoc wish that as many as possible languages will have Spell  Checkers. We are lagging behind on this one and the Umoja Project  has noted this and making plans to address it.  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/en/terminology&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Terminology&lt;/span&gt;&lt;/a&gt; – to ensure  consistence and public translation memory, ANLoc has initiated a  Terminology project, whose aim and purpose is to create a 2 500 word  ICT term list for use in localization. To ensure that our future  localizations are consistent, the Umoja Project is taking on this  project immediately so as to have a that as the translation memory  for all other localization projects.&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in;&quot;&gt;&lt;a href=&quot;http://www.africanlocalization.net/en/training&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Training&lt;/span&gt;&lt;/a&gt; – just like it is with  other ICT disciplines, localization requires training. Localization  is not all about translation, no there is more to it. ANLoc is  aiming at equipping localizers with all the necessary knowledge and  skills to manage and execute localizations at professional  standards. This includes training them to use the tools developed by ANLoc.&lt;br /&gt;&lt;/p&gt;  &lt;/li&gt;&lt;li&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;a style=&quot;font-weight: bold;&quot; href=&quot;http://www.africanlocalization.net/en/network&quot;&gt;Network Activities&lt;/a&gt; – the Network  organizes and conducts numerous workshops to allow its partners to  learn from each others experiences. Also to generate ideas on how  best to move forward.&lt;br /&gt;&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;For the Umoja Project, ANLoc has open our eyes to bigger challenges that we may have to address to make an impact in the generaton of Swahili content. But apart from that, ANLoc has exposed to us a sea of knowledge, experience and tools that have been tried and tested.&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;The challenge for Umoja Project team is to make use of all these and also contribute to the Network what we have learned and developed.&lt;/p&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;Join In Lets Make a Difference.&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;text-align: justify;&quot;&gt; &lt;/div&gt;&lt;p style=&quot;margin-bottom: 0in; text-align: justify;&quot;&gt;&lt;br /&gt;&lt;/p&gt;</description><link>http://emanuelferuzi.blogspot.com/2009/04/umoja-project-join-anloc.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-2529262792846056890</guid><pubDate>Wed, 04 Mar 2009 15:47:00 +0000</pubDate><atom:updated>2009-03-04T07:49:29.078-08:00</atom:updated><title>Swahili Firefox: Be a part and Share the fun</title><description>&lt;p&gt;&lt;/p&gt;&lt;p&gt;Utajisikiaje kama nikikupa kompyuta ambayou haikulazimu kujua Kiingereza ili kuitumia. Sema iwe ya Kiswahili. Kompyuta yote ikawa ya Kiswahili. Najua, inaonekana kama haiwezekani.Inawezekana na ninao uthibitisho.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Kuswahilisha&lt;br /&gt;&lt;br /&gt;Mwishoni mwa mwaka jana, timu ndogo ya watumiajo tabaruki wa Linux (tzLUG) walianza kazi kiswahilisha Firefox. Neno moja lipelekea mawili ambayo yalipelekea nyuzo ya matini na leo tumekamilisha 93% ya kazi yote. Sasa tunamalizi kilichobaki ili tutoe toleo la kwanza la majaribio tarehe 17 ya Machi.&lt;br /&gt;&lt;br /&gt;Je wewe inaingia wapi? Unaweza jiunga kwenye uswahilishaji au ukafurahia kazi tulioifanya na kututumia maoni kwa vile tulivyoviruka ama marekebisho. Kwa sasa tunamalizi 7% ya marekebisho yaliyobakia ili iwe tayari kwa matumizi yako.&lt;br /&gt;&lt;br /&gt;Tunatarajia kuwa na OpenOffice.Org (programu za ofisini kama Microsoft Office, ila ni imara zaidi ya MS Office na itakugharimu TZS 0/=) ifikiapo mwisho mwa 2009. Kwahiyo tungefurahia sana make tugepata jozi za mikono na macho toka kwako katika kukamilishsa zoezi hili. Kwa sasa bado hatujakamilisha mipango kwa ajili ya OpenOffice.Org. Programu moja baada ya nyingine na hivi karibuni tutakuwa na gawio kamili la Linux la Kiswahili.&lt;br /&gt;&lt;br /&gt;Magawio ya Linux&lt;br /&gt;&lt;br /&gt;Katika tzLUG, tunajitahidi kurahusisha upatikanaji wa magawio ya Linux. Kama unahitaji magawio ya Linux, tafadhali tifahamishe ili tupange jinsi ya kukupatia. Utaratibu wetu wa ugawaji si mzuri lakini tinaufanyia kazi.&lt;br /&gt;&lt;br /&gt;Kwa sasa tunayo magawio yafuatayo:-&lt;br /&gt;&lt;br /&gt;    * OpenSuse 11 - DVD&lt;br /&gt;    * Fedora core 10 - DVD&lt;br /&gt;    * CentOs linux - DVD&lt;br /&gt;    * Ubuntu desktop 8.10 - CD&lt;br /&gt;    * Ubuntu 8.10 server - CD&lt;br /&gt;    * Ubuntu 8.04 - LTS - CD&lt;br /&gt;    * Mythubuntu 8.10 - CD&lt;br /&gt;    * Ubuntu studio 8.10 - CD&lt;br /&gt;&lt;br /&gt;Tuna mpango wa kutuma mengine, kama kuna gawio unalitaka tufahamishe tufuta na kulituma. Kupata gawio wasiliana na Mratibu wa tzLUG kwa +255717566504 (Sebastian).&lt;br /&gt;&lt;br /&gt;Magawio yafuatayo yatatumwa Ijumaa hii:-&lt;br /&gt;&lt;br /&gt;    * Knoppix&lt;br /&gt;    * Mandriva&lt;br /&gt;    * Slackware&lt;br /&gt;    * Linux Mint&lt;br /&gt;    * FreeBSD - (sio Linux distribution but its Open Source)&lt;br /&gt;    * 64 Studio - specialising in multimedia and digital content creation platforms&lt;br /&gt;&lt;br /&gt;Juinge na tzLUG leo kupitia tzLUG Register  na tugawane tukijuacho juu ya Linux, msaidie mtu ama pata msaada. Ni kwa ushirikiano ndio tutafanikisha. </description><link>http://emanuelferuzi.blogspot.com/2009/03/swahili-firefox-be-part-and-share-fun.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-7595014713520487723.post-8745921679626996138</guid><pubDate>Wed, 04 Mar 2009 10:49:00 +0000</pubDate><atom:updated>2009-03-04T03:57:27.601-08:00</atom:updated><title></title><description>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.it46.se/projects/2009/TZ_Umoja/umoja_firefox_installer1.jpeg&quot;&gt;&lt;img style=&quot;float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 1004px; height: 714px;&quot; src=&quot;http://www.it46.se/projects/2009/TZ_Umoja/umoja_firefox_installer1.jpeg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A few months ago, IT46 has joined a community effort to build Firefox 3.1 in Swahili language. The effort comes from the Tanzanian Linux User Group, a grass-root organization that wants to promote open source and software in Swahili language.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Today, we have completed the first full build of the software that contains 93% of the total strings. Screenshoots of the software are available now here. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;There is still some work regarding acceleration keys and reviewing the glossary for consistency among translators but the software should be ready for public testing in less than one month.&lt;br /&gt;&lt;br /&gt;Congrats to all that have taken part in this translation.</description><link>http://emanuelferuzi.blogspot.com/2009/03/few-months-ago-it46-has-joined.html</link><author>noreply@blogger.com (Tri Labs)</author><thr:total>0</thr:total></item></channel></rss>