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

<channel>
	<title>Strangeparty &#187; Linux</title>
	<atom:link href="http://www.strangeparty.com/taxonomy/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.strangeparty.com</link>
	<description>A blog about life, linux and photography</description>
	<lastBuildDate>Mon, 16 Jan 2012 14:44:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Message Broker v8 with MySQL</title>
		<link>http://www.strangeparty.com/2011/12/15/message-broker-v8-with-mysql/</link>
		<comments>http://www.strangeparty.com/2011/12/15/message-broker-v8-with-mysql/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 09:22:30 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Message Broker]]></category>
		<category><![CDATA[My Job]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[messagebroker]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[odbc]]></category>
		<category><![CDATA[wmb]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=884</guid>
		<description><![CDATA[<p>Now that you know that you can use Message Broker v8 on Ubuntu for development, you may be wondering if you can use some of the databases that are more common on Linux, such as MySQL. You can!</p> <p>IBM WebSphere Message Broker now uses UnixODBC to connect to many databases. Though not supported by IBM, <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2011/12/15/message-broker-v8-with-mysql/">Message Broker v8 with MySQL</a></span>]]></description>
			<content:encoded><![CDATA[<p>Now that you know that you can use <a href="http://www.strangeparty.com/2011/12/14/websphere-message-broker-on-ubuntu/">Message Broker v8 on Ubuntu</a> for development, you may be wondering if you can use some of the databases that are more common on Linux, such as MySQL. You can!</p>
<p>IBM WebSphere Message Broker now uses UnixODBC to connect to many databases. Though not supported by IBM, you can actually connect to MySQL from Message Broker using UnixODBC.</p>
<p><span id="more-884"></span></p>
<p>If you are on Ubuntu, you can install the MySQL UnixODBC dirver and the MySQL server with apt-get:</p>
<blockquote>
<pre>apt-get install libmyodbc mysql-server</pre>
</blockquote>
<p>Your environment variable <em>$ODBCINI</em> should point to your <em>odbc.ini</em>, mine points to /var/mqsi/odbc/odbc.ini and the base file was copied from <em>/opt/IBM/mqsi/8.0.0.0/ODBC/unixodbc/odbc.ini</em></p>
<p>You need to set a database definition for a mysql database, something like the following (assuming &#8220;wmb&#8221; is the name of your MySQL database created later)</p>
<blockquote>
<pre>[MYSQL]
Description     = MYSQL DB
Driver          = MySQL
Database        = wmb
Server          = 127.0.0.1
Port            = 3306</pre>
</blockquote>
<p>You also need to make sure your <em>$ODBCSYSINI</em> points to the folder (not the file) where your <em>odbcinst.ini</em> file has been copied to. Mine is set to <em>/var/mqsi/odbc</em> and the <em>odbcinst.ini</em> file was copied from <em>/opt/mqsi/8.0.0.0/ODBC/unixodbc/odbcinst.ini</em>, you also need to add a definition to explain to UnixODBC how to connect to a mysql database</p>
<p>The following should be enough to get UnixODBC working with MySQL</p>
<blockquote>
<pre>#Sample from package libmyodbc
[MySQL]
Description     = MySQL driver
Driver          = /usr/lib/odbc/libmyodbc.so
Setup           = /usr/lib/odbc/libodbcmyS.so
CPTimeout       =
CPReuse         =</pre>
</blockquote>
<p>Now create a mysql database (<em>mysqladmin create wmb</em>). You may need to GRANT some permissions to your user in MySQL, or add yourself to the mysql group and logout and back in again.</p>
<p>You can now check the database connection using the WMB mqsicvp command, which will also describe which database functions are available:</p>
<pre>mqsicvp -n MYSQL -u anton -p password</pre>
<pre>BIP8270I: Connected to Datasource 'MYSQL' as user 'anton'. The datasource platform is 'MySQL', version '5.1.58-1ubuntu1'.
===========================
databaseProviderVersion      = 5.1.58-1ubuntu1
driverVersion                = 05.01.0006
driverOdbcVersion            = 03.51
driverManagerVersion         = 03.52.0002.0002
driverManagerOdbcVersion     = 03.52
databaseProviderName         = MySQL
datasourceServerName         = 127.0.0.1 via TCP/IP
databaseName                 = wmb
odbcDatasourceName           = MYSQL
driverName                   = libmyodbc5.so
supportsStoredProcedures     = Yes
procedureTerm                = stored procedure
accessibleTables             = No
accessibleProcedures         = No
identifierQuote              = `
specialCharacters            = None
describeParameter            = No
schemaTerm                   =
tableTerm                    = table
sqlSubqueries                = 31
activeEnvironments           = 0
maxDriverConnections         = 0
maxCatalogNameLength         = 192
maxColumnNameLength          = 192
maxSchemaNameLength          = 0
maxStatementLength           = 8192
maxTableNameLength           = 192
supportsDecimalType          = Yes
supportsDateType             = Yes
supportsTimeType             = No
supportsTimeStampType        = No
supportsIntervalType         = No
supportsAbsFunction          = Yes
supportsAcosFunction         = Yes
supportsAsinFunction         = Yes
supportsAtanFunction         = Yes
supportsAtan2Function        = Yes
supportsCeilingFunction      = Yes
supportsCosFunction          = Yes
supportsCotFunction          = Yes
supportsDegreesFunction      = Yes
supportsExpFunction          = Yes
supportsFloorFunction        = Yes
supportsLogFunction          = Yes
supportsLog10Function        = Yes
supportsModFunction          = Yes
supportsPiFunction           = Yes
supportsPowerFunction        = Yes
supportsRadiansFunction      = Yes
supportsRandFunction         = Yes
supportsRoundFunction        = Yes
supportsSignFunction         = Yes
supportsSinFunction          = Yes
supportsSqrtFunction         = Yes
supportsTanFunction          = Yes
supportsTruncateFunction     = Yes
supportsConcatFunction       = Yes
supportsInsertFunction       = Yes
supportsLcaseFunction        = Yes
supportsLeftFunction         = Yes
supportsLengthFunction       = Yes
supportsLTrimFunction        = Yes
supportsPositionFunction     = Yes
supportsRepeatFunction       = Yes
supportsReplaceFunction      = Yes
supportsRightFunction        = Yes
supportsRTrimFunction        = Yes
supportsSpaceFunction        = Yes
supportsSubstringFunction    = Yes
supportsUcaseFunction        = Yes
supportsExtractFunction      = Yes
supportsCaseExpression       = Yes
supportsCastFunction         = Yes
supportsCoalesceFunction     = Yes
supportsNullIfFunction       = Yes
supportsConvertFunction      = No
supportsSumFunction          = Yes
supportsMaxFunction          = Yes
supportsMinFunction          = Yes
supportsCountFunction        = Yes
supportsBetweenPredicate     = Yes
supportsExistsPredicate      = Yes
supportsInPredicate          = Yes
supportsLikePredicate        = Yes
supportsNullPredicate        = Yes
supportsNotNullPredicate     = Yes
supportsLikeEscapeClause     = Yes
supportsClobType             = Yes
supportsBlobType             = Yes
charDatatypeName             = char
varCharDatatypeName          = varchar
longVarCharDatatypeName      = long varchar
clobDatatypeName             = N/A
timeStampDatatypeName        = N/A
binaryDatatypeName           = binary
varBinaryDatatypeName        = varbinary
longVarBinaryDatatypeName    = long varbinary
blobDatatypeName             = N/A
intDatatypeName              = integer
doubleDatatypeName           = double
varCharMaxLength             = 0
longVarCharMaxLength         = 0
clobMaxLength                = 0
varBinaryMaxLength           = 0
longVarBinaryMaxLength       = 0
blobMaxLength                = 0
timeStampMaxLength           = 0
identifierCase               = Mixed
escapeCharacter              = \
longVarCharDatatype          = -1
clobDatatype                 = 0
longVarBinaryDatatype        = -4
blobDatatype                 = 0

BIP8273I: The following datatypes and functions are not natively 
supported by datasource 'MYSQL' using this ODBC driver:
Unsupported datatypes: 'TIME, TIMESTAMP, INTERVAL' Unsupported functions: 'CONVERT'</pre>
<pre>Examine the specific datatypes and functions not supported
natively by this datasource using this ODBC driver.
When using these datatypes and functions within ESQL, the
associated data processing is done within WebSphere Message
Broker rather than being processed by the database provider.  

Note that "functions" within this message can refer to functions or predicates. 

BIP8071I: Successful command completion.</pre>
<p>There &#8211; done! Now you can use MySQL with WebSphere Message Broker on Ubuntu. Don&#8217;t forget to set the database password with <em>mqsisetdbparms</em> before trying to actually connect from your database nodes.</p>
<p>Also, the name of the database according to WMB is &#8220;MYSQL&#8221; as that is what I defined in the odbc.ini. The name of the database according to mysql is &#8220;wmb&#8221;. They don&#8217;t need to be different, but it might help having unique names if you are trying to track down a database connection issue.</p>
<p>Of course, the mysql database server does not need to be local to the broker &#8211; The mysql odbc driver should allow you connect to any accessible tcpip mysql server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2011/12/15/message-broker-v8-with-mysql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WebSphere Message Broker on Ubuntu</title>
		<link>http://www.strangeparty.com/2011/12/14/websphere-message-broker-on-ubuntu/</link>
		<comments>http://www.strangeparty.com/2011/12/14/websphere-message-broker-on-ubuntu/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 09:22:13 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Message Broker]]></category>
		<category><![CDATA[My Job]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[messagebroker]]></category>
		<category><![CDATA[mq]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wmb]]></category>
		<category><![CDATA[wmq]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=714</guid>
		<description><![CDATA[<p>WebSphere Message Broker v8 now supports Ubuntu for development systems (i.e. not production use) - http://www-01.ibm.com/support/docview.wss?uid=swg27023600#Ubuntu</p> <p>I have been running MQ and Message Broker on Ubuntu and Debian since shortly after I joined IBM in 2005, and it seems there are lots of other people doing this too despite it not being a supported platform before <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2011/12/14/websphere-message-broker-on-ubuntu/">WebSphere Message Broker on Ubuntu</a></span>]]></description>
			<content:encoded><![CDATA[<p>WebSphere Message Broker v8 now supports Ubuntu for development systems (i.e. not production use) - <a href="http://www-01.ibm.com/support/docview.wss?uid=swg27023600#Ubuntu">http://www-01.ibm.com/support/docview.wss?uid=swg27023600#Ubuntu</a></p>
<p>I have been running MQ and Message Broker on Ubuntu and Debian since shortly after I joined IBM in 2005, and it seems there are <a href="http://www.google.co.uk/search?q=mq+on+ubuntu">lots of other people doing this too</a> despite it not being a supported platform before now.</p>
<p>Lots of people have advice on how to install MQ and WMB, and it is worth mentioning them in case you have problems.</p>
<p><a href="http://www.reidmorrison.com/linux/install-websphere-mq-on-ubuntu">http://www.reidmorrison.com/linux/install-websphere-mq-on-ubuntu</a></p>
<p><a href="http://www.gefira.pl/blog/2010/07/03/websphere-mq-and-ubuntu-howto/">http://www.gefira.pl/blog/2010/07/03/websphere-mq-and-ubuntu-howto/</a></p>
<p><a href="http://blog.herbert.groot.jebbink.nl/2009/06/wmb-61-ubuntu-904.html">http://blog.herbert.groot.jebbink.nl/2009/06/wmb-61-ubuntu-904.html</a></p>
<p>The best advice I can give for installing MQ and WMB on Ubuntu is:</p>
<ul></ul>
<ul>
<li>change the /bin/sh symlink to point to /bin/bash &#8211; MQ Doesn&#8217;t like installing with dash as the default shell.</li>
<p>
</ul>
<ul>
<li>use rpm to install MQ &#8211; Alien is a bit of a hack, and does not work well. You will need to use the &#8220;&#8211;force-debian&#8221; flag on rpm to make it install.</li>
<p>
</ul>
<ul>
<li>One other thing which might help is to run the mqlicense.sh script with the &#8216;-console&#8217; flag as it may not find your X applications properly.</li>
<p>
</ul>
<p>Some user&#8217;s have noticed that chown on Debian and Ubuntu strips the setuid bit from the binaries (Debian and Ubuntu consider leaving setuid set on an executable when you change it&#8217;s owner a security flaw, whereas Redhat and SuSE appear not to) so you may need to fix the permissions (best to check the permissions of the same level of MQ from a RHEL or SLES box and set them the same) though I have not seen this with recent versions of MQ.</p>
<p>Message Broker v8 installs quite happily on Ubuntu. The only issues that I know of are that some of the eclipse based gui applications do not draw everything correctly. This is a known eclipse-GTK bug, and is more common on releases after Lucid Lynx (10.04). A workaround is to set the environment variable  <em>GDK_NATIVE_WINDOWS=1</em></p>
<p>Update 05/01/12 &#8211; I have just noticed that the script &#8216;mqsicreateworkpath&#8217; which is used to initialise /var/mqsi correctly still uses ksh. Either install ksh on your system or edit the script to say bash in the first line instead of ksh (it should work fine then)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2011/12/14/websphere-message-broker-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Frequently Asked Questions about the GNU GPL</title>
		<link>http://www.strangeparty.com/2011/12/08/frequently-asked-questions-about-the-gnu-gpl/</link>
		<comments>http://www.strangeparty.com/2011/12/08/frequently-asked-questions-about-the-gnu-gpl/#comments</comments>
		<pubDate>Thu, 08 Dec 2011 11:18:45 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Rights]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[gpl]]></category>
		<category><![CDATA[patents]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=250</guid>
		<description><![CDATA[<p>I have been flicking through the following FAQ on the GNU GPL: Frequently Asked Questions about the GNU GPL &#8211; GNU Project &#8211; Free Software Foundation (FSF). I am trying to understand the risks that we are told about regularly in IBM of working with/on Open Source code.</p> <p>I have to say that most of <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2011/12/08/frequently-asked-questions-about-the-gnu-gpl/">Frequently Asked Questions about the GNU GPL</a></span>]]></description>
			<content:encoded><![CDATA[<p>I have been flicking through the following FAQ on the GNU GPL: <a href="http://www.gnu.org/copyleft/gpl-faq.html">Frequently Asked Questions about the GNU GPL &#8211; GNU Project &#8211; Free Software Foundation (FSF)</a>. I am trying to understand the risks that we are told about regularly in IBM of working with/on Open Source code.</p>
<p>I have to say that most of the risks are rather undefined, and no real examples are given. I am having trouble figuring out why IBM is so scared of its employees working with Open Source, and yet at the same time encouraging it (I run Debian on my laptop, and in fact run a Debian server distributing internal tools packaged specially for other Debian users).</p>
<p>The one big concern is of course patents. Personal views on software patents aside, if I were to code a patented idea into some GPL&#8217;d code and release it (as an IBM employee) then quite likely that patent will be considered GPL&#8217;d and could be used by others &#8211; the extent of patents in GPL&#8217;d code is untested in court, hence the reason for v3 of the GPL, which will probably explicitly state that any patents are given away under the terms of the GPL if in GPL&#8217;d code.</p>
<p>However, even if not modifying the code there is still a huge concern about working with it. Even releasing code that is dynamically linked against a LGPL&#8217;d library is incredibly hard to get approved. Why should it be? The FAQ above makes clear that if the library is LGPL&#8217;d, then dynamic linking (i.e. using a JAR file in Java) means that the library source must be available and some reverse engineering of the interaction between the two is allowed (in case someone wanted to rewrite the library). Your code does not have to be Open Sourced. Is it simply that shipping the source code is too much effort? Surely if I use a prebuilt JAR, and dump a zip of the corresponding source of a LGPL&#8217;d library in the zip I am shipping then that is it. I am complying with the terms of the GPL.</p>
<p>The only thing I can think of is the other side of Patents &#8211; somebody else has a patent on something in the GPL code, but the authors of the GPL code were not aware of this. If IBM were to ship GPL&#8217;d code that a competitor had a Patent on part of then indeed they would be liable for infringement, not just the author of the code. Is this risk likely? Well, SuSE have just signed a deal with Microsoft for this reason, but RedHat and Ubuntu have declined the deal. Maybe with the GPLv3 this will be less of a problem, as if another company releases GPL code then they will be explicitely releasing any patents on it too.</p>
<p>What if the patent holder is another third party. IBM could still be in trouble if a competitor finds they have a patent on some GPL&#8217;d code we are shipping. They won&#8217;t bother suing small linux vendors, but IBM has lots of money to claim from, that would be worth going to court for. Could they claim only for IBM and not all the little guys who have already been using it?</p>
<p>Is it too much risk to work on the fact that we could always change the code to avoid the patent at a later date?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2011/12/08/frequently-asked-questions-about-the-gnu-gpl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrading cyanogenmod</title>
		<link>http://www.strangeparty.com/2011/12/05/upgrading-cyanogenmod/</link>
		<comments>http://www.strangeparty.com/2011/12/05/upgrading-cyanogenmod/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 13:48:00 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cyangenmod]]></category>
		<category><![CDATA[roms]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=887</guid>
		<description><![CDATA[<p>I previously wrote about rooting a HTC Desire and installing CyanogenMod 7. A month or so ago, a new CyanogenMod rom was released, and I finally found the time to upgrade it.</p> <p>Of course I first did a full backup, as described in my previous post, using the recover mod.</p> <p>I first tried updating the <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2011/12/05/upgrading-cyanogenmod/">Upgrading cyanogenmod</a></span>]]></description>
			<content:encoded><![CDATA[<p>I previously wrote about<a href="http://www.strangeparty.com/2011/06/23/cyanogenmod-on-htc/"> rooting a HTC Desire and installing CyanogenMod 7</a>. A month or so ago, a new <a href="http://www.cyanogenmod.com/">CyanogenMod</a> rom was released, and I finally found the time to upgrade it.</p>
<p>Of course I first did a full backup, as described in my previous post, using the recover mod.</p>
<p>I first tried updating the rom via <a href="https://market.android.com/details?id=com.koushikdutta.rommanager&amp;hl=en">RomManager</a>, which is apparently the preferred way to upgrade CyangonMod roms. Updating the Clockwork Recovery Mod went fine, and the app allows very easy downloading of alternate roms, however actually intalling did not go so well. It failed due to some error in the upgrade script. I decided to simply report the error and move on to a manual upgrade.</p>
<p>Manually updating was pretty much the same as installing the roms in my previous post. Using the reovery mod I installed the new Rom from the zip which was downloaded via RomManager, followed by the Google Aps zip. Then I cleared the Dalvik cache, as I wasnt sure if it would interfere (it doesn&#8217;t hurt to clear it anyway).</p>
<p>The update was quite smooth, and after a reboot or two nearly everything was working as before, though it took a while for all the app icons to come back on my desktops. As I did not reset any application data I did not have to reinstall any of my apps or restore the data.</p>
<p>The only issue I found is that the calendar would crash upon starting. I installed <a href="https://market.android.com/details?id=com.nolanlawson.logcat">CatLog</a>, which allows you to view the android system logs, and very quickly found a stack trace from the calendar app saying it could not find a database column.<br />
<img style="display: block; margin-right: auto; margin-left: auto;" src="http://www.strangeparty.com/wordpress/uploads/2011/12/wpid-screenshot-1323091961687.png" alt="image" width="288" height="480" /><br />
I guessed that the storage format must have changed, and as it is all synced from my Google calendar anyway, I thought I would just clear the data and let it resync. Under System-&gt;Applications I found the app CalendarStorage, and simply deleted all its data. After a moment to resync from the cloud, everything looks fine.</p>
<p>The latest CyanogenMod 7.1 seems to have some fixes I have been waiting for. In particular, I quite liked the dual lockscreen. A shorter timeout for a swype unlock, where the lockscreen has a music widget. The longer timeout is the unlock pattern. This was not possible in the older CyanogenMod 7.0.3 as a bug seemed to only show the pattern unlock screen.</p>
<p>There is quite a list of new fixes, but I don&#8217;t think I needed any of them. One new thing I noticed is that holding down the power button gives not only the usual shutdown/reboot options, but also a screenshot option, which is quite useful and removes the need for a separate app to do this.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2011/12/05/upgrading-cyanogenmod/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guest presenting on the Ubuntu UK PodCast</title>
		<link>http://www.strangeparty.com/2011/09/28/guest-presenting-on-the-ubuntu-uk-podcast/</link>
		<comments>http://www.strangeparty.com/2011/09/28/guest-presenting-on-the-ubuntu-uk-podcast/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 20:41:00 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[southackton]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[UUPC]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/2011/09/28/guest-presenting-on-the-ubuntu-uk-podcast/</guid>
		<description><![CDATA[<p>I was a guest presenter on this weeks Ubuntu UK PodCast. I talked about Southackton, and IBM&#8217;s use of Ubuntu on the desktop. Listen to the podcast at http://t.co/vVL5M3YJ </p> ]]></description>
			<content:encoded><![CDATA[<p>I was a guest presenter on this weeks Ubuntu UK PodCast. I talked about Southackton, and IBM&#8217;s use of Ubuntu on the desktop.<br />
Listen to the podcast at <a href="http://t.co/vVL5M3YJ"><br />
http://t.co/vVL5M3YJ</a> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2011/09/28/guest-presenting-on-the-ubuntu-uk-podcast/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rooting and upgrading a HTC Desire to android 2.3 (CyanogenMod 7)</title>
		<link>http://www.strangeparty.com/2011/06/23/cyanogenmod-on-htc/</link>
		<comments>http://www.strangeparty.com/2011/06/23/cyanogenmod-on-htc/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 20:20:28 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[htc]]></category>
		<category><![CDATA[phone]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=848</guid>
		<description><![CDATA[<p>I started writing this as I was actually doing this to my phone. The problem I found with most existing instructions is they seem to slightly contradict other instructions you find. Many have steps which are not well laid out and often don&#8217;t give a reason for doing things which can be a bit annoying. Often the <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2011/06/23/cyanogenmod-on-htc/">Rooting and upgrading a HTC Desire to android 2.3 (CyanogenMod 7)</a></span>]]></description>
			<content:encoded><![CDATA[<p>I started writing this as I was actually doing this to my phone. The problem I found with most existing instructions is they seem to slightly contradict other instructions you find. Many have steps which are not well laid out and often don&#8217;t give a reason for doing things which can be a bit annoying. Often the instructions are from ancient Android OS version days, so steps like installing hboot versions, and recovery roms are now all covered with the one unrevoked3 step, but not all instructions are clear that this is the case.</p>
<p>These instructions are heavily based on the instructions from CyanogenMod 7 for HTC Desire:<a href=" http://wiki.cyanogenmod.com/wiki/HTC_Desire_(GSM):_Full_Update_Guide"> http://wiki.cyanogenmod.com/wiki/HTC_Desire_(GSM):_Full_Update_Guide</a> but also some other sites I found along the way, often for other phone models so only parts apply. I also had some direct feedback from various IRC channels.</p>
<p>The following links were useful to me, so I mention in case you want to read some more:<br />
<a href="http://forum.xda-developers.com/forumdisplay.php?f=628">http://forum.xda-developers.com/forumdisplay.php?f=628</a><br />
<a href="http://forum.xda-developers.com/showthread.php?s=ea2964d1e59f99d394ca758037ee6bc1&amp;t=696189">http://forum.xda-developers.com/showthread.php?s=ea2964d1e59f99d394ca758037ee6bc1&amp;t=696189</a><br />
<a href="http://forum.xda-developers.com/showthread.php?t=788044">http://forum.xda-developers.com/showthread.php?t=788044</a></p>
<h2>1. Preparations</h2>
<p>The first thing that may be of use, especially if you are checking other instructions, is to grab a few version numbers of the rom levels on your phone:</p>
<p>power off, hold vol down and power &#8211; get hboot version page, includes radio version<br />
mine was hboot 0.93.0001<br />
and my radio version is 5.11.05.27<br />
hboot version shouln&#8217;t matter for unrevoked3 though unless on very new phone like EVO4<br />
You can also check the radio version from &#8220;Settings-&gt;About Phone-&gt;Software information&#8221;.<br />
You should see &#8220;Basebane version&#8221;, mine is 32.49.00.32U_5.11.05.27<br />
The last part of that, after the _, is the radio rom version</p>
<h2>2. Rooting your phone</h2>
<p>Go to <a href="http://unrevoked.com/recovery/">http://unrevoked.com/recovery</a>/ and download the rooting program.</p>
<p>This uses an exploit in the phone to install a new recovery rom, the &#8220;clockwork recovery&#8221; rom, which can then be used to do complete phone backups and install new roms.</p>
<p>You will need the &#8220;usb debugging&#8221; enabled on the phone, and the phone connected only to charge, not as disk access or tethering</p>
<p>It is straight forward on linux (run the downloaded file, and follow the instructions on screen), but I believe on windows there are soe extra drivers to install so check the unrevoked site for more instructions if you are on windows. .</p>
<p>I tried unrevoked3 with only 14mb available, and got &#8220;internal error: installing package failed&#8221;. Getting the space up to 25mb and it worked fine (I just uninstalled the gmail updates)</p>
<h2>3. Backup your current OS (nandroid backup)</h2>
<p>Reboot into the hboot screen as in step 1 for version numbers, then use use vol up/down to select &#8220;recovery&#8221;. The power button acts as the &#8220;ok&#8221; button here.</p>
<p>This boots the clockwork recovery rom which was installed when you ran unrevoked.</p>
<p>Then use trackball to select backup.</p>
<p>This does a complete backup to SD, also referrred to as a &#8220;nandroid backup&#8221; which should include the system OS, all installed apps and user data.<br />
You probably need as much space as your phone has on internal memory (512mb for desire).<br />
This will take a little while, so do it on power or a full battery.</p>
<p>The backup should appear in your sdcard in /sdcard/clokworkmod/backups/</p>
<p>Then press back and select the reboot option.</p>
<h2>4. Backup apps and app data for migration</h2>
<p>Why do you need this if you just did a complete backup? Well, when you install the new OS you will be erasing everything from the internal memory, so this backs up your apps so you can install them again, and also the app-data so you don&#8217;t lose it all.</p>
<p>I used the free version of &#8220;<a href="https://market.android.com/details?id=com.keramidas.TitaniumBackup&amp;feature=search_result">Titanium Backup</a>&#8221; but &#8220;<a href="https://market.android.com/details?id=com.metago.astro&amp;feature=search_result">Astro File manager</a>&#8221; has been suggested too, and it looks like &#8220;<a href="https://market.android.com/details?id=com.seasmind.android.gmappmgr&amp;feature=search_result">Gemini App manager</a>&#8221; can do this as well.<br />
It is pretty straightforward, but see <a href="http://www.incredibleforum.com/forum/htc-incredible-hacks/7893-titanium-backup-how.html">http://www.incredibleforum.com/forum/htc-incredible-hacks/7893-titanium-backup-how.html</a> if you want specific steps.</p>
<h2>5. Backup your whole SD card</h2>
<p>Ok, maybe I am paranoid, but at this point I plugged in my phone via USB and zipped up the entire SD card onto my computer. This way I have a backup of my SD card, which includes all the above backups, so if anything goes badly wrong I still have the restore files</p>
<p>I had to disable the usb debug mode to get the disk to mount</p>
<h2>6. Update radio rom</h2>
<p>Before applying the cyanogenmod, or any other, you may need to update your radio rom version.</p>
<p>According to <a href="http://wiki.cyanogenmod.com/wiki/HTC_Desire_(GSM):_Full_Update_Guide">http://wiki.cyanogenmod.com/wiki/HTC_Desire_(GSM):_Full_Update_Guide</a> the version of mine is good enough for CM7, so I didn&#8217;t update it.</p>
<h2>7. Now install new rom</h2>
<p>Installing the mod is straightfowrard (there are<a href="http://wiki.cyanogenmod.com/wiki/HTC_Desire_(GSM):_Full_Update_Guide"> instructions in the first link of this page</a>).</p>
<p>Basically download the mod, and google apps if you want it, and drop the zip files in the root folder of the SD card.<br />
Then use the clockwork recovery mod as we did earlier and select &#8220;Wipe data/factory reset&#8221; to clear the flash (I have seen reports that this may not be required, but as it is such a large change of version numbers, I decided to do a full wipe), then &#8220;Wipe cache partition&#8221; to clear that too.</p>
<p>Then simply select &#8220;install zip from SD card&#8221; and install the new mod, and google apps if you wanted it.</p>
<p>Alternatively, you can use <a href="https://market.android.com/details?id=com.koushikdutta.rommanager">Rom Manager</a> to do it as an app.</p>
<p>After the reboot, use your chosen backup program to then restore all your apps and data, however read the next step first as you may find space to still be an issue.</p>
<h2>8. Space savings with CyanogenMod 7</h2>
<p>After rebooting into the new OS, I had over 100mb free for base image (out of 148mb capacity reported by OS). 83mb free after installing a similar set of google apps from the market.</p>
<p>After then restoring all my backed up apps and data I found out I only had 25mb free, which is only about 10mb better than on the original android 2.2 from HTC.</p>
<p>You will probably find you have to install an app to force apps to install on SD card by default. Note that CyanogenMod 7 has an option to force all apps there by default, but it will put apps with widgets on there, which breaks the widgets.</p>
<p><strong>There is a way to get even more space for apps with CM7:</strong></p>
<p>All you have to do is add an ext4 partition to your SD card and then install &#8220;<a href="https://market.android.com/details?id=ru.krikun.s2e">simple2ext</a>&#8221; from the android market.</p>
<p>This is a feature only available on the CyanogenMod 7 roms, and allows you to move all apps, app data, and caches to SD card. There is a performance hit for this, but it seems worth it.</p>
<p>I used a microSD adapter to plug in my SD card into my PC and used &#8220;gparted&#8221; on Ubuntu (a Live CD will do fine) to shrink the current partition and add an ext4 one<br />
without losing data (but you backed up above in any case, right?)</p>
<p>I created a 1GB partition and after installing simple2ext, I set it to move my apps and dalvik cache to the ext4 partition.</p>
<p>After a reboot I now have loads of space for apps to install to, about 80mb free despite installing another dozen apps without bothering to move them to SD.</p>
<p>To help you decide what to move, the Dalvik cache appears to be a binary cache for the Android implementation of Java. There is a performance hit to moving anything to SD unless you have quite a fast card (<a href="http://forum.xda-developers.com/showthread.php?t=1175707">http://forum.xda-developers.com/showthread.php?t=1175707</a> recommends ﻿minimum class 4, better yet a class 6). Mine is class 2, and I found that moving the application data seems to<br />
cause the phone to be very noticably slower, so it is probably best avoided unless you have a fast SD card.</p>
<p>Moving the Davlik cache did slow things down a little, but mostly only the boot time and first launch of an app. I decided that for an extra 80mb of space that I could live with that (I have also just ordered a new class 6 SD card, so that should help).</p>
<h2>Conclusions</h2>
<p>Rooting, and modding was actually incredibly simple. It sounds so scary, but I think it is actually very, very hard to mess it up to a point where you cannot just overwrite with a new mod (or your backup) and start again. Once you get to the nandoid backup point you have a very good recovery strategy!</p>
<p>I have loads more space, which is good, because counting the bytes is annoying. I now don&#8217;t have to worry about if I have space to install something.</p>
<p>You do lose the HTC apps and widgets, but I found I could live without them fairly easily (I haven&#8217;t used peep since I discovered TweetDeck, and that was my most used HTC app). If you miss the clock widget, search for &#8220;<a href="https://market.android.com/details?id=factory.widgets.SenseAnalogGlass&amp;feature=search_result">sense analog glass clock</a>&#8221; on the android market, that is a nice replacement for me. &#8220;<a href="https://market.android.com/details?id=dk.nicolai.buch.andersen.glasswidgets">glass widgets</a>&#8221; is a replacement calendar widget, which I now actually prefer.</p>
<p>The battery manager in the new rom is awesome compared to the old 2.2 one. It really shows where the battery is going. I think I possibly get longer battery life with this rom too.</p>
<p>I much prefer the android 2.3 native keyboard to the HTC sense one.</p>
<p>There are some niggles &#8211; I have a few gui glitches which cause me to reboot the phone every few weeks, but I am hoping they will be fixed in the next stable build (I have not been brave enough to try the nightly builds :-s )</p>
<p>Overall, I quite like the new UI though it did take some getting used to. The fact I dont have to worry about space is the biggest reason I will keep this rom, though it does sound like <a href="http://starburst.droidzone.in/">starburst rom</a> which is much closer to vanilla HTC sense branded android also allows the &#8220;data2sd&#8221; hack to get more space</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2011/06/23/cyanogenmod-on-htc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fix your Arduino Uno for Linux</title>
		<link>http://www.strangeparty.com/2010/12/13/fix-your-arduino-uno-for-linux/</link>
		<comments>http://www.strangeparty.com/2010/12/13/fix-your-arduino-uno-for-linux/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 17:25:46 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=764</guid>
		<description><![CDATA[<p>Are you using an Arduino Uno on Linux? If so, you may have noticed that writing to the serial port in a loop can cause the Arduino Editor/Programmer software to appear to lock up, or even Linux having trouble using the serial port for your Uno.</p> <p>It turns out there was a bug in the <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/12/13/fix-your-arduino-uno-for-linux/">Fix your Arduino Uno for Linux</a></span>]]></description>
			<content:encoded><![CDATA[<p>Are you using an Arduino Uno on Linux? If so, you may have noticed that writing to the serial port in a loop can cause the Arduino Editor/Programmer software to appear to lock up, or even Linux having trouble using the serial port for your Uno.</p>
<p>It turns out there was a bug in the USB-&gt;Serial firmware on the chip which caused this [1], and it is quite easy to update your arduino to fix it. According to the author of the USB-&gt;Serial firmware, it is not possible to break your Arduino permenantly doing this [1], but I can&#8217;t promise anything (though it worked fine for me and others)</p>
<p>From <a href="https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/arduino-usbserial/">https://github.com/arduino/Arduino/tree/master/hardware/arduino/firmwares/arduino-usbserial/</a> download your hex file for your board, i.e. either <em>Arduino-usbserial-mega.hex</em> or <em>Arduino-usbserial-uno.hex</em>. As it is github, click on the file in the list then right click on &#8220;<em>raw</em>&#8221; and click &#8220;<em>Save as</em>&#8220;.</p>
<p>The md5sum of the Arduino Uno file from the 4th December is 8e01ee236e70bbea43f7eb4e11c9688a</p>
<p>You will need the dfu programmer tools, which are conveniently in Lucid/Universe, so just run</p>
<blockquote>
<pre>sudo aptitude install dfu-programmer</pre>
</blockquote>
<p>You need to do a hardware-reset to put the chip into the correct DFU programming mode, which is simply best explained with the picture at <a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1285962838/10#10">http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1285962838/10#10</a> (you will need to register on the arduino site to login, but a picture speaks a thousand words)</p>
<p>The Uno&#8217;s use a AT90USB82 serial-usb chip, so we then reflash the firmware with the following commands</p>
<blockquote>
<pre>sudo dfu-programmer at90usb82 erase
sudo dfu-programmer at90usb82 flash --debug 1 Arduino-usbserial-uno.hex
sudo dfu-programmer at90usb82 reset</pre>
</blockquote>
<p>Finally, just disconnect the USB lead and reconnect to reset the device back to normal mode.</p>
<p>Done &#8211; You no longer have to worry about writing to your serial port on your Arduino.</p>
<blockquote><p><em>References:<br />
[1] <a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286088093/38#38">http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286088093/38#38 &#8211; Author of Arduino USB stack talks about</a><br />
[2] <a href="http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286088093/34#34">http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1286088093/34#34 &#8211; First person to find fix and author of instructions that these are heavily based on</a></em></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/12/13/fix-your-arduino-uno-for-linux/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu in Business</title>
		<link>http://www.strangeparty.com/2010/07/15/ubuntu-in-business/</link>
		<comments>http://www.strangeparty.com/2010/07/15/ubuntu-in-business/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 14:33:01 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=712</guid>
		<description><![CDATA[<p>On Tuesday I attended the Ubuntu in Business event run by the Ubuntu UK Community and Canonical, and unlike Proactive Paul I really enjoyed the day and thought it was a success.</p> <p>I will agree and say that there should have been more introductory talks on Ubuntu and Open Source for those people that were not <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/07/15/ubuntu-in-business/">Ubuntu in Business</a></span>]]></description>
			<content:encoded><![CDATA[<p>On Tuesday I attended the Ubuntu in Business event run by the Ubuntu UK Community and Canonical, and unlike <a href="http://www.dontreadmyblog.com/?p=2969">Proactive Paul</a> I really enjoyed the day and thought it was a success.</p>
<p>I will agree and say that there should have been more introductory talks on Ubuntu and Open Source for those people that were not familiar, especially as they were trying to target new and potential users, however given half the audience was already running Ubuntu I am not sure if that would have been a waste. Certainly introduction demo&#8217;s are always good and especially for someone new to Ubuntu or Linux this would show that really it is not very different from using windows and is certainly not scary!</p>
<p>The talks and targetted demo&#8217;s were good, in particular I was curious about the <a href="http://www.ubuntu.com/cloud">Ubuntu Cloud</a> and <a href="http://www.canonical.com/enterprise-services/landscape">Landscape</a> which both seem really good. For me the best part of the day was when the guest speakers and Canonical hosts got up on a panel and were interviewed by <a href="http://en.wikipedia.org/wiki/Glyn_Moody">Glyn Moody</a> which resulted in some fantastic discussion, excellent answers and some good questions and responses from the audience.</p>
<p>Of course the <a href="https://wiki.ubuntu.com/ubuntini">ubuntini</a> cocktail afterwards was interesting too &#8211; not really my thing, but was nice to try.</p>
<p>The conversation after the cocktail was possibly the best part of the evening &#8211; actually getting to talk to some of the Canonical folks and forging a few new links. Some good conversations about IBM and Ubuntu, hopefully it won&#8217;t take too long for sanity to break-out and IBM to consider Ubuntu seriously<br />
(If you are a business buying IBM software and want to use it on Ubuntu, make sure you tell your salesman this &#8211; If IBM doesn&#8217;t hear people asking for software on Ubuntu then there is no reason to ship it for Ubuntu).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/07/15/ubuntu-in-business/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Running a personal server</title>
		<link>http://www.strangeparty.com/2010/06/27/running-a-personal-server/</link>
		<comments>http://www.strangeparty.com/2010/06/27/running-a-personal-server/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 18:18:00 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[admin]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[exim]]></category>
		<category><![CDATA[logwatch]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[maintenance]]></category>
		<category><![CDATA[munin]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=693</guid>
		<description><![CDATA[<p>Maybe you read some of my posts on software raid and lvm, or maybe you have a spare pc lying around and want a box you can use as a small personal server and are wondering about some tips for running it with less hassle. I am sharing a few things that I have learnt <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/06/27/running-a-personal-server/">Running a personal server</a></span>]]></description>
			<content:encoded><![CDATA[<p>Maybe you read some of my posts on <a href="http://www.strangeparty.com/2008/05/24/software-raid1-and-lvm-on-debian-etch/">software raid and lvm</a>, or maybe you have a spare pc lying around and want a box you can use as a small personal server and are wondering about some tips for running it with less hassle. I am sharing a few things that I have learnt about running a personal server (though some will apply to any Linux server or always-on machine) that make my life as a part-time admin easier. This is by no means an exhaustive list, nor necessarily the <em>correct way</em> to run a box, but it works well for me and so should be useful to others as well.<br />
<span id="more-693"></span></p>
<h2>ADSL port forwarding</h2>
<p>If your box is behind an ADSL modem (and unless you have a professional server and datacentre to put it in, it probably is) then by default the NAT addressing and firewall will mean that you cannot get in remotely to your box. This may be fine if you don&#8217;t want anything from the box accessible, but I tend to like being able to ssh in from anywhere, so you need to set up some port forwarding from your ADSL router/modem to get into your box</p>
<p>I wont attempt to describe how your ADSL modem/router config works, you&#8217;ll have to read it&#8217;s manual, but the ports you probably want are:</p>
<blockquote><p>ssh 22 &#8211; if you want to log from outside your home network with ssh<br />
smtp 25 &#8211; if you want your box to be able to receive email<br />
ftp 21 &#8211; if you want ftp (though I recommend sftp or scp which use ssh and therefore encrypt your password and data)<br />
http 80 &#8211; if you want webpages visible from the internet<br />
https 443 &#8211; if you want webpages visible from the internet and want to use https encrypted http</p></blockquote>
<h2>Dynamic DNS</h2>
<p>Unless you have a fixed IP address from your ISP, you will probably want some sort of Dynamic DNS system that sets a hostname to have your current IP address. I use <a href="http://dyndns.afraid.org">http://dyndns.afraid.org</a> as they are free, you can host your own domain there and there are plenty of domains you can use for sub-domains if you don&#8217;t want to buy a domain. They provide lots of scripts to help you keep your IP address recorded correctly whenever it changes</p>
<h2>Mail</h2>
<p>I really want mail configured for delivery, as that is one of the easiest ways to get alerts from your machine (though twitter could be cool too though). If you have a email to smms gateway or smartphone with push email then these alerts can be very fast and direct.</p>
<p>I use exim, not because it is the fastest or most configurable mail system available, but because it is very easy to get configured and running on Debian or Ubuntu. Simply install the exim4 package and the debconf wizard will get you up and running.</p>
<blockquote><pre>sudo aptitude install exim4</pre>
</blockquote>
<p>The wizard, which can be re-run with the command <em>sudo dpkg-reconfigure exim4-config</em>, asks you how you want to configure exim. Normally you select the first or second option (&#8220;internet site; mail is sent and received directly using SMTP&#8221; or &#8220;mail sent by smarthost; received via SMTP or fetchmail&#8221;). Most of the questions come with sensible defaults. If you selected the second option you will get asked what your smarthost for sending mail is, in many cases this is just mail.your.isp or you can use google if you have an account, but it will require authentication which  which is a little more complicated to set up.</p>
<p>Next you want to set all email for &#8216;root&#8217; to forward to you preferred email address.<br />
Edit <em>/root/.forward</em> to look like this</p>
<blockquote><pre># Exim filter   &lt; &lt;== do not edit or remove this line!

if error_message then finish endif

deliver me@myemail.com</pre>
</blockquote>
<p>You can test sending email with a simple command line of <em>mail root -s test</em> followed by a message and then CTRL+d. You should get the email at your address set above.</p>
<h2>Logwatch</h2>
<p>I like to know what is happening on my boxes, and logwatch does a great job at summarising the changes that have happened very day. Install logwatch with</p>
<pre>sudo aptitude install logwatch</pre>
<p>and it will email root every day with a summary of log changes and other useful info.</p>
<p>As I don&#8217;t actually want this information every day, I moved the cronjob for logwatch from daily to weekly with</p>
<blockquote><pre>sudo mv /etc/cron.daily/00logwatch /etc/cron.weekly/00logwatch</pre>
</blockquote>
<p>so now I get a weekly summary for my box, which is good enough for me</p>
<h2>Raid emails</h2>
<p>As I use software raid to make my disks a little more redundant (Warning: RAID is not a backup strategy. 2 disks CAN (and sod&#8217;s law / murphey&#8217;s law says that at the worst possible time they actually will) both die at the same time. RAID simply gives you an extra chance to get a new disk without having to get your data from a backup)</p>
<p>If you use software RAID, make sure your raid config<br />
<em>cat /etc/mdadm/mdadm.conf</em><br />
has the following lines set appropriately</p>
<blockquote><pre>MAILADDR root
MAILFROM raid@myserver.com</pre>
</blockquote>
<h2>Smart disk monitoring</h2>
<p>As I don&#8217;t trust disks (and you shouldn&#8217;t either, as they will die on you at the most annoying time) I like to have the S.M.A.R.T disk monitoring installed, which does occasional tests on the disks, and can warn you if the disk starts showing bad sectors. If your disk does have bad sectors, it is probably best to replace it pretty soon, though sometimes you can just get a very small set of bad sectors and live with the disk for a long time.</p>
<p>Install smart with</p>
<blockquote><pre>sudo aptitude install smartmontools</pre>
</blockquote>
<p>and if you have logwatch installed too, then the SMART reports get added to your logwatch summaries (including disk temperatures which can be a good indication of airflow in your box)</p>
<h2>Toughening SSH</h2>
<p>I found that I had a lot of attempted logins on my box because SSH was open on the default port. One solution is to move the default port, but I am likely to forget to use that port number and just confuse myself&#8230; So I started looking at other ways to reduce the risk of having someone brute-force their way into an account.</p>
<p>You can use some really good stuff like fail2ban to take failed logins and firewall that IP off for a while, but I decided that I wanted something even stronger. I disabled password logins completely via SSH! To do this you will need  to have created a ssh keypair and set up the public key on your server and make sure it works to log you in BEFORE you disable password logins.</p>
<p>To disable password logins, simply edit<br />
<em>/etc/ssh/sshd_config</em><br />
and change</p>
<blockquote><pre>PasswordAuthentication yes</pre>
</blockquote>
<p>to say &#8220;no&#8221; instead. This will mean that you can never log in with a password, and have to use a ssh key. This will be almost impossible to brute-force, though you do have to keep your private ssh keyfile secure.</p>
<p>As a minimum, you may want to think about setting</p>
<blockquote><pre>PermitRootLogin no</pre>
</blockquote>
<p>in your sshd config so that the root account cannot be brute-forced, as this is probably the most common account that attempts are made on.</p>
<h2>Monitoring with Munin</h2>
<p>To keep an idea of how busy the box is, the cpu and ram usage, disk usage and many more things I have installed munin to monitor my servers. Munin logs system activity and automatically creates web-accessible charts of the status of your box. An example is online at <a href="http://munin.ping.uio.no">http://munin.ping.uio.no/</a>. I have set mine as password protected via an apache htaccess file with htpassword (there are plenty of resources online for how to do this), so that only I can see how busy my box is.</p>
<p>If you also install <em>sensord</em> and <em>lm-sensors</em> then munin can also chart things like fan speeds and temperatures</p>
<h2>Security updates</h2>
<p>Whether you are running Debian, Ubuntu or any other linux OS, make sure you check how to setup security updates for your distribution and install updates regularly. Having old packages is possibly the easiest way to get your box exploited.</p>
<p>If you don&#8217;t like having to remember to install packages you can install <em>cron-apt</em> to download the packages and tell you, so you can install them, or even install them for you (however it is generally a good idea to know what is going onto your system before it goes in, just in case anything looks suspicious or might break something)</p>
<h2>/etc in revision control</h2>
<p>Have you ever made a change to your system config, then realised not long later that it was a bad change, but can&#8217;t remember what you did?</p>
<p>Introducing <em>etckeeper</em>. etckeeper is a very clever package that takes /etc and puts it all in git. It can easily be configured to automatically commit every time you install or remove a package, so that all you have to do if you found something in /etc is broken is check the recent changes!</p>
<p>Simply install it with<br />
<blockquote>
<pre>sudo aptitude install etckeeper</pre>
</blockquote>
<p> and it pretty much works out of the box (It also supports other code control tools other than git, but the default is git)</p>
<h2>Anything Else?</h2>
<p>This list is by no means complete, and there are probably many more common tweaks you can do &#8211; Please leave a comment if you think of anything else that fits in or anything I might be doing wrong (hey, nobody&#8217;s perfect!) as I am always looking to improve how I run my little servers.</p>
<p>If you have several machines and static IP addresses then you can configure syslog to log to across the network, which would be cool as you could have errors logged from a box that has had bad disk crashes and dies and still know why. However I don&#8217;t have static IP&#8217;s so have not looked into this much</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/06/27/running-a-personal-server/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Debian Packaging Howto</title>
		<link>http://www.strangeparty.com/2010/06/17/a-debian-packaging-howto/</link>
		<comments>http://www.strangeparty.com/2010/06/17/a-debian-packaging-howto/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 18:59:36 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=665</guid>
		<description><![CDATA[<p>I do a fair bit of Debian/Ubuntu packaging at work (kind of on the side) and have had several people tell me that although the New Maintainer&#8217;s guide (http://www.debian.org/doc/maint-guide/ or it is available offline in the package maint-guide and also has some translations) does do an introduction it is a bit hard to follow, particularly <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/06/17/a-debian-packaging-howto/">A Debian Packaging Howto</a></span>]]></description>
			<content:encoded><![CDATA[<p>I do a fair bit of Debian/Ubuntu packaging at work (kind of on the side) and have had several people tell me that although the New Maintainer&#8217;s guide (<a href="http://www.debian.org/doc/maint-guide/">http://www.debian.org/doc/maint-guide/</a> or it is available offline in the package <em>maint-guide</em> and also has some translations) does do an introduction it is a bit hard to follow, particularly if you have a really simple program you want to package up and release. The New Maintainer&#8217;s guide does assume you have an existing tarball to work from, and that is often not the case if you just want to package up something you have made so I thought I would write a detailed walkthrough of packaging up something simple.<br />
<span id="more-665"></span><strong>Edit: 2010/06/07 </strong><em>I initially wrote this post to use &#8220;cdbs&#8221;, but have since rewritten it to use debhelper 7 as I am told that it is far more popular among Debian Developers and slightly more powerful. cdbs is still used in some places, but I understand debhelper 7 is used far more</em></p>
<p>While you can just use something like dpkg-deb to turn the right files into a .deb, this only works for already-compiled files and loses some of the great features about Debian-based systems such as changelogs, so I am only going to describe how to make a full source-format package that is built using the Debian tools</p>
<h4>Prereqs</h4>
<p>You will want to install a few packages before you go any further &#8211; these are very useful helper tools for packaging. Install <strong>dh-make</strong>, <strong>dpkg-dev</strong>, <strong>debhelper </strong>and <strong>devscripts<br />
</strong></p>
<p><em>sudo aptitude install dh-make dpkg-dev debhelper devscripts</em></p>
<p>I chose debhelper here as it is a very powerful and yet often simple way of quickly creating packages. It takes a lot of the slow work away from the packager and does very sensible default things. My example package does not really need compiling so it could be simple to just create it by hand, but using debhelper to do the default packaging rules gives you more time to do other things</p>
<p>It is worth mentioning here that all aspects of the parts of a Debian package are covered in detail in the Debian Policy document (<a href="http://www.debian.org/doc/debian-policy/">http://www.debian.org/doc/debian-policy/</a>, which although Debian specific will not steer you wrong for getting started with Ubuntu packages (the Ubuntu Policy Manual appears to be at<a href="http://people.canonical.com/~cjwatson/ubuntu-policy/policy.html/">http://people.canonical.com/~cjwatson/ubuntu-policy/policy.html/</a>). (The Policy is also packaged up in the package <em>debian-policy</em>, though <em>ubuntu-policy</em> might be of interest too<em>)</em></p>
<h4>Lets Begin</h4>
<p>So, where do we start. Let&#8217;s start at the point where you have a simple program, perhaps a shell/perl/python script that you simply want to package up as a deb for easy installation. The first thing we want to do is make a folder formed out of the package name and version, and put the script in it in the correct place.</p>
<p>Here is my example folder with me example program (called simple-program):</p>
<blockquote><p><em>simple-package-0.1/usr/bin/simple-program</em></p></blockquote>
<p><em></em>Note that the folder is the package name followed by a hyphen and a version number (simple point versions are the easiest to work with, so stick with them if possible)</p>
<p>Now, all work is done from within the package folder normally, so cd into that folder<br />
<em></em></p>
<blockquote><p><em>cd simple-package-0.1</em></p></blockquote>
<p>So far, all we have is just a folder with a binary in the place we want it to end up in. Now we have to &#8220;Debianise&#8221; (or Debianize if you prefer) this into a package<br />
<em></em></p>
<blockquote><p><em><code>dh_make --single  --createorig</code></em></p></blockquote>
<p>This command takes a source tree and turns it into a Debian source package format. The first flag tells dh_make that our source package is only going to build a single binary package (which is the most common). The second argument tells it that we do not have a tarball of our package so it should create a new one for us.</p>
<p>Now if you look in the current folder, you will see a debian/ folder. This is where all the Debian-specific magic happens.</p>
<p>The next thing we do is edit debian/rules</p>
<p>The rules file is the main makefile (or build script) which is run by &#8220;make&#8221; to produce your package. Everything starts from here.<br />
(If you have a new version of dh-make, then your rules file may already look like this, if your dh-make is older then you will end up with a longer file, so edit it to look like this )</p>
<blockquote><p><em><code>$ cat debian/rules<br />
#!/usr/bin/make -f<br />
# -*- makefile -*-<br />
# Sample debian/rules that uses debhelper.<br />
# This file was originally written by Joey Hess and Craig Small.<br />
# As a special exception, when this file is copied by dh-make into a<br />
# dh-make output file, you may use that output file without restriction.<br />
# This special exception was added by Craig Small in version 0.37 of dh-make.</p>
<p># Uncomment this to turn on verbose mode.<br />
#export DH_VERBOSE=1<br />
%:<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dh $@<br />
</code></em></p></blockquote>
<p>Note that on the last line, the indent is a TAB character. Make sure you use a tab and not several spaces, as make is very particular about tabs</p>
<p>This debian/rules is really simple &#8211; all it does is says &#8220;whatever I was asked to do, tell the command &#8216;dh&#8217; to do it instead&#8221;. dh has sensible default rules, and you can find more about dh by running the command &#8220;man dh&#8221; to look at it&#8217;s manpage</p>
<p>(If you ever want lots more detail about what each step of building is doing, you can uncomment the line &#8220;export DH_VERBOSE=1&#8243; and each helper script will print out more info)</p>
<p>As the above build file doesn&#8217;t say anywhere which files to copy to the output package, we have to do something to make that happen. We are going to use the debhelper script called dh_install  to do this.</p>
<p>Edit a new file at <em>debian/simple-package.install</em></p>
<p>dh_install looks for this file (actually, it will also look for just <em>debian/install</em>) and will copy any files listed in it into your package. In this file we will put a list of files we want installed, one per line (wildcards work too, but I will list our only file for explicitness)</p>
<blockquote><p><em>$ cat debian/simple-package.install<br />
usr/bin/simple-program</em></p></blockquote>
<p>Notice that we do not have a leading &#8216;/&#8217;, this is deliberate. Also, if you check <em>man dh_install</em> then you will notice that dh_install will not move files to other directories as it is expected that your makefile will do this for you. For now I will assume that your simple package comes with all the files in the correct places.</p>
<h4>Building</h4>
<p>Now let&#8217;s try building. Run <em>dpkg-buildpackage</em> and this will turn your little folder into a Debian source package and then go and create a .deb (It is worth mentioning that the command <em>debuild</em> is also available, but as it is a wrapper around dpkg-buildpackage and other tools I will write more about it later, and just start simply with dpkg-buildpackage)</p>
<p>Have a look:</p>
<blockquote><p><em>$ ls ../simple-package_0.1-1_i386.deb<br />
../simple-package_0.1-1_i386.deb</em></p></blockquote>
<p>See &#8211; you have a .deb</p>
<p>Now let&#8217;s have a look inside it (this is just converting the file to a tar and then asking tar to list it&#8217;s contents):</p>
<blockquote><p><em>$ dpkg &#8211;fsys-tarfile ../simple-package_0.1-1_i386.deb |tar -tv<br />
tar: Record size = 8 blocks<br />
drwxr-xr-x root/root         0 2010-06-16 18:48 ./<br />
drwxr-xr-x root/root         0 2010-06-16 18:48 ./usr/<br />
drwxr-xr-x root/root         0 2010-06-16 18:48 ./usr/sbin/<br />
drwxr-xr-x root/root         0 2010-06-16 17:41 ./usr/bin/<br />
-rwxr-xr-x root/root         0 2010-06-16 17:41 ./usr/bin/simple-program<br />
drwxr-xr-x root/root         0 2010-06-16 18:48 ./usr/share/<br />
drwxr-xr-x root/root         0 2010-06-16 18:48 ./usr/share/doc/<br />
drwxr-xr-x root/root         0 2010-06-16 18:48 ./usr/share/doc/simple-package/<br />
-rw-r&#8211;r&#8211; root/root       193 2010-06-16 17:44 ./usr/share/doc/simple-package/README.Debian<br />
-rw-r&#8211;r&#8211; root/root       178 2010-06-16 17:44 ./usr/share/doc/simple-package/changelog.Debian.gz<br />
-rw-r&#8211;r&#8211; root/root       693 2010-06-16 17:44 ./usr/share/doc/simple-package/copyright<br />
</em></p></blockquote>
<p>Notice that your program is listed in <em>./usr/bin/simple-program</em>, and also that there is a changelog, a readme and a copyright file &#8211; I will come on to those later.</p>
<p>So, we&#8217;re done? I can just give this to people?</p>
<p>Erm, no&#8230; Not really</p>
<p>While you may have a package, you will notice that it is a rather dumb package</p>
<blockquote><p><em>$ dpkg-deb -I ../simple-package_0.1-1_i386.deb<br />
new debian package, version 2.0.<br />
size 1730 bytes: control archive= 524 bytes.<br />
303 bytes,    10 lines   control<br />
290 bytes,     4 lines   md5sums<br />
Package: simple-package<br />
Version: 0.1-1<br />
Architecture: i386<br />
Maintainer: anton &lt;anton@unknown&gt;<br />
Installed-Size: 32<br />
Section: unknown<br />
Priority: extra<br />
Homepage: &lt;insert the upstream URL, if relevant&gt;<br />
Description: &lt;insert up to 60 chars description&gt;<br />
&lt;insert long description, indented with spaces&gt;</em></p></blockquote>
<p>See &#8211; it really is a but dumb as we have not configured much about it. Lets start fixing that now as we really don&#8217;t want to be giving this to everyone in it&#8217;s current state</p>
<h4>Package control files</h4>
<p>Let&#8217;s start with the file <em>debian/control</em></p>
<blockquote><p><em><br />
$ cat debian/control<br />
Source: simple-package<br />
Section: unknown<br />
Priority: extra<br />
Maintainer: anton &lt;anton@unknown&gt;<br />
Build-Depends: debhelper (&gt;= 7)<br />
Standards-Version: 3.8.1<br />
Homepage: &lt;insert the upstream URL, if relevant&gt;</em></p>
<p><em> </em><em>Package: simple-package<br />
Architecture: any<br />
Depends: ${shlibs:Depends}, ${misc:Depends}<br />
Description: &lt;insert up to 60 chars description&gt;<br />
&lt;insert long description, indented with spaces&gt;<br />
</em></p></blockquote>
<p>We will want to edit several of these fields. Of course these are all explained in <a href="http://www.debian.org/doc/debian-policy/ch-controlfields.html">Chapter 5 of the Debian Policy</a>. The first thing to note is that the first chunk applies to the source package. Here we want to set our Maintainer name and email.<br />
The build-depends are a default guess too, and should be enough for us for now (build-depends is all the packages needed to build this program, which often include any extra libraries you might need or extra tools such as unzip).<br />
<span style="font-size: 13.3333px;"><strong>Important:</strong> As we are using a somewhat new debhelper way of building, and this might not exist on older boxes, we really need the line here that says to use version 7 or newer of debhelper (otherwise someone might try building with only version 6 and it will fail badly)</span></p>
<p>The homepage is also worth filling in if your package has one, but the whole line can be deleted if not required. The section and priority I will leave you to look up in the Debian policy manual if you want to know more about them, but can be left as-is for now</p>
<p>The second block is all about the binary .deb we want to produce. Note that the Package: section has the same name &#8211; This is the default for a &#8220;single package&#8221; that we asked dh_make to create for us, though you can have more than one block if your source package should produce multiple debs.<br />
The Architecture: fields is worth getting correct. You can put in values like <em>i386</em> or <em>amd64</em> if your package will only work there, or if it should compile and work on any architecture you use <em>any</em>. As my package is a simple script-type application, it is actually slightly more special than that and only needs building once and will not need recompiling for any architecture, so I am going to change this to <em>all</em>. &#8220;all&#8221; has a special meaning, telling dpkg-buildpackage to only compile it once and use that on any architecture.</p>
<p>The Depends: field is also another important field to get correct. This says what you will need installed to actually use this package. So if your package is written in Python, then you want to put the correct Python package name in here (and a version in brackets like &#8220;<em>python (&gt;=2.6)</em>&#8220;﻿ if your package needs a minimum level of that package. You can also do OR&#8217;s if you use a pipe &#8220;|&#8221;.<br />
The two magic variable depends are filled in by various debhelper scripts and can be left alone (in this case they will end up empty.</p>
<p>The Description: field has a special formatting. The first line is a short description of less than 60 characters, and then after that is a long description where each line starts with a space. If you want to put an empty line in your long description put a space then a period/dot ( &#8220;.&#8221;) on this line (do not use an empty line). Full explanation is in the Debian Policy.</p>
<p>&#8220;Where do I set the version number&#8221; I hear you ask&#8230; well, I&#8217;m coming to that now</p>
<h4>debian/changelog</h4>
<p>Package versioning is controlled from the <em>debian/changelog</em> file. You can edit this file directly, but it is often easier to use the command <em>dch</em> as it will fill in various fields for you, and can even do simple increments and comments completely from the command line. If you run <em>dch</em> from the main folder of your package it will launch the default editor with a new comment line created for you. If you want to quickly increment the version you can use <em>dch -i</em> and this will do the same, but increment the version number for you first (creating a new changelog entry in doing so).</p>
<p>Let&#8217;s have a quick look at a changelog (you might want to look at <a href="http://www.debian.org/doc/debian-policy/ch-source.html#s-dpkgchangelog">Section 4.4 of the Debian Policy</a> too)</p>
<blockquote><p><em>$ cat debian/changelog<br />
simple-package (1.0-1) unstable; urgency=low</em></p>
<p><em>* Initial release (Closes: #nnnn)</em></p>
<p><em> </em><em> &#8212; anton &lt;anton@unknown&gt;   Wed, 16 Jun 2010 19:32:10 +0100<br />
</em></p></blockquote>
<p>A changelog file is a colletion of repeated blocks like the above. The first line of a block shows the package name, then the version in brackets, then the release this package was built for and then it&#8217;s urgency. The version here is what comes out when we build our package. The release is only really used when uploading a package as the build-systems look for this field to work out where your package should go (in Debian you would have something like stable or testing, whereas in Ubuntu you would use the release name such as lucid or maverick)</p>
<p>Then we have a set of specially formatted bullet points. You can have many of these, but check the policy for allowed formatting. Notice that we have a Closes section here. This is used by bugtrackers that are attached to the package building systems, and unless you are uploading to one of these is probably simplest to remove.</p>
<p>Then we have the signature line which should have your name and email address, followed by two spaces and a timestamp. If you use <em>dch -i</em> then dch will create all this for you, and if you check the man page for it you can see how to set environment variables in your shell so that you do not have to tell it your correct name or email address. (It is worth mentioning the -v flag to dch. This lets you set a specific version to be put in the changelog, which is useful when you want to go up to version 2.0 or similar.)</p>
<p>It is perhaps worth mentioning that there are two types of source packages.</p>
<p>The usual type of package has version numbers that have a hyphen in them and the part before the hyphen is the upstream number, and the part after is the Debian revision. This is used to show that the upstream code has a specific version number but allows us to have our own incremented versions that clearly show that we are not shipping a new version of the upstream code but merely patches or even just packaging fixes which do not change the upstream code at all.<br />
When built, these types of packages output a .orig.tar.gz file and a .diff.gz file. This allows the upstream code only to be in the orig.tar.gz, and the diff.tar.gz to be a diff file of all the changes we have made, including the entire contents of the debian/ folder</p>
<p>The second type of package is a &#8220;native Debian&#8221; package. This package has simpler version numbers and only builds a .tar.gz file. This format is normally only used for packages that are entirely owned by Debian (or Ubuntu) and the source code was created entirely for use in Debian (or Ubuntu).</p>
<p>You can choose which type of package your&#8217;s is by how the version number is structured. Without a hyphen it will be a &#8220;native&#8221; package, however I recommend you use the first type by default (you can also force the type with flags to dpkg-buildpackage).<br />
The advantage of the first type of package is that because you have a .diff.gz and a .orig.tar.gz if you are uploading a very large package you only need to upload the .orig.tar.gz if the code in it has changed. If you are just making packaging fixes, or small patches then these are all in the .diff.gz and will be a much smaller upload.</p>
<h4>Other files</h4>
<p>Of course there are many other files in debian/ which are mostly templates created by dh_make. I will only explain a few here as they are all pretty well covered in the Debian Policy</p>
<p><em>debian/copyright</em> &#8211; You should put a full license in this file so that people know what license your code is under (see S<a href="http://www.debian.org/doc/debian-policy/ch-docs.html#s-copyrightfile">ection 12.5 of the Debian Policy manual</a>)</p>
<p><em>debian/README.Debian</em> &#8211; This file is a readme file that is normally used to supplement any upstream readme file. It is copied out to /usr/share/doc/package-name/ as you saw above in the .deb. It should explain anything you have to do to make this package work that may be different from the upstream readme (if any) and normally contains the &#8220;Debian way&#8221; of getting your program running.</p>
<p><em>debian/compat</em> &#8211; This file sets the compatibility level of the debhelper tools &#8211; you normally don&#8217;t need to change this</p>
<p><em>debian/package-name.dirs</em> or <em>debian/dirs</em> &#8211; This file will create empty directories that your package might need. Note that you rarely ever need this as dh_install will create any directories that will be needed to hold the files it copies (I mention this as I frequently see it being used unnecessarily)</p>
<p><em>debian/preinst, debian/postinst, debian/prerm, debian/postrm</em> &#8211; These files (also can be done as package-name.preinst) are the Pre and Post install/remove scripts. I won&#8217;t talk much about them now as you shouldn&#8217;t need to use them in simple packages. Note that dh_make creates some .ex files as example scripts. As usual see the Debian Policy if you need these</p>
<p><em>debian/docs</em> &#8211; This file lists any doc files you want copied into the /usr/share/doc/package-name/ in your package. It works like dh_install but see the manpage of  dh_installdocs for more information</p>
<p>That is probably all the interesting files for now, you can probably remove all the other files as they are simply template or example files.</p>
<h4>Other build output files</h4>
<p>You might have noticed that when you built your package, as well as the .orig.tar.gz, the diff.gz and the .deb you also got a .dsc file and a .changes file.</p>
<p>The .changes file is used to describe this version of your package, and contains the latest chunk of your changelog. It also is used by tools such as dput to describe which files to upload and contains the checksums/hashes of these files. This file is usually signed with gpg to prove that this package was built by you.</p>
<p>The .dsc file is kind of similar, except it is purely about the source package. It has the checksums of the source files and is also signed. It also contains details such as the build-dependencies of your package so that systems can use it to work out what needs to be installed to build your package correctly.</p>
<p>You will probably only need either of these files if you are uploading files to some sort of repository, as they are mostly consumed by other programs.</p>
<p>If you try getting the source of a package, try <em>apt-get source hostname</em> then you will see that this downloads the .dsc file, and the releveant source files. If you want to unpack the source, you can use <em>dpkg-source -x *.dsc</em> (or if you want to build the binary package straight away, try <em>apt-get -b source hostname</em> and it will download and build though you might need to run <em>apt-get build-dep hostname</em> to install all the build packages needed for the hostname package)</p>
<h4>Advanced building</h4>
<p>So you can now create a simple package, you know how to set all the control files and how to increment the version in the changelog (hopefully using <em>dch</em>). Let&#8217;s look briefly at some more advanced building with dpkg-buildpackage.</p>
<p>Some packages want to be root to build. What they really want is to feel like they are root, so you can use the program <em>fakeroot</em> to build a package that complains it is not root (this way you don&#8217;t actually need root)<br />
<em>$ fakeroot dpkg-buildpackage</em> &#8230;.</p>
<p>If you have gpg set up, then you will have noticed that every time you build a package dpkg-buildpackage asks you to enter your passphrase. While this is great for giving the package to others, it can be really annoying if you are doing test builds. The flags <em>-us</em> and <em>-uc</em> (unsigned source, unsigned changes) will stop it asking you.</p>
<p>If you just want to build the source package you can use <em>-S</em> to force that.<br />
Similarly to just build the binary use the <em>-b</em> flag.</p>
<p>If your package is a non-native package, then dpkg-buildpackage will only put the .orig.tar.gz in the .changes file if the version ends in &#8220;-1&#8243;, otherwise it assumes your .orig.tar.gz is already on the server you are going to copy to (normally using dput). If you want to force it to include the .orig.tar.gz use the <em>-sa</em> flag</p>
<p>One thing worth doing if you do much packaging, is creating a chroot for building in. This way you will know that your build-depends are complete and that if you give the package to someone else (or use another computer) it will definitely build (it is easy to forget all the packages you installed on your box to make it build).</p>
<p>The simplest way to do this is to setup either a pbuilder environment or an sbuild environment, but I will leave an explanation of this for another post.</p>
<p>Enjoy creating your new .deb packages</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/06/17/a-debian-packaging-howto/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Fixing broken LVM and Sofware Raid on Linux</title>
		<link>http://www.strangeparty.com/2010/05/23/fixing-broken-lvm-and-sofware-raid-on-linux/</link>
		<comments>http://www.strangeparty.com/2010/05/23/fixing-broken-lvm-and-sofware-raid-on-linux/#comments</comments>
		<pubDate>Sun, 23 May 2010 14:23:17 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=632</guid>
		<description><![CDATA[<p>I have been building a backup pc our of mostly spare parts, including several old disks. To get the most reliability and space our of the disks, which are all different sizes, I decided to use software raid to mirror each chunk of data in pairs (raid 0) and then use LVM on top of <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/05/23/fixing-broken-lvm-and-sofware-raid-on-linux/">Fixing broken LVM and Sofware Raid on Linux</a></span>]]></description>
			<content:encoded><![CDATA[<p>I have been building a backup pc our of mostly spare parts, including several old disks. To get the most reliability and space our of the disks, which are all different sizes, I decided to use software raid to mirror each chunk of data in pairs (raid 0) and then use LVM on top of each piece of raid to make all the raid volumes appear as one storage device to the linux OS.</p>
<p>The disks are as follows: 250G, 200G, 160G 120G, so to get the most space out of them I divided them as follows (Note: this is a simplification for the purpose of explanation, the real disk also has a raid 0, mirrored /boot/ partition which is not mentioned below. You need this because LVM is not supported by GRUB, so you can&#8217;t boot from a LVM volume):<br />
250G: A (200G), C (40G)<br />
200G: A (200G)<br />
160G: B (120G) C (40G)<br />
120G: B (120G)</p>
<p>A,B,C are partitions on the disks for software raid &#8211; I then set up software raid for each pair of A,B,C and set the created LVM physical volumes on top of them, which then are grouped together into one large volume group, giving me around 360G (actually less once you convert to base 2 rather than 10) of mirrored data storage. Note that I can lose any one disk and still have all my data (though I wouldn&#8217;t want to hang around too long replacing the disk as a second disk failing could mean you lose most of your data).</p>
<p>I actually created 3 LVM logical volumes, one for mounting each of / (the root of the disk for all OS data), /home (for all the stuff I actually really care about), and a volume for swap that doesn&#8217;t really need to be in lvm or raid, but it was just easier to do.</p>
<p>I previously wrote instructions about <a href="http://">how to setup LVM and software raid</a>, but this time round managed to completely screw the whole lot up just near the end. I forgot to define one of the raid devices in /etc/mdadm/mdadm.conf so next time I rebooted this raid device was not found in the early boot stages. As this raid volume is needed to create the full set of LVMs for my root filesystem, the system stopped booting right at the beginning because the LVM array was incomplete.</p>
<p>Fixing it was actually not to difficult, but I mention it here in case it is of help to anyone else (or in case I manage to do it again, which is probably likely)</p>
<p>Fist I booted a Ubuntu Live CD (actually a USB stick image created from my running Ubuntu laptop and a spare Ubuntu CD), but nearly any live cd should do. Once booted, I had to install (in the live session) mdadm and lvm2 as Ubuntu does not have these installed by default. Once you have these tools you can start your recovery (note that this needs to be done with root permissions, so <em>sudo -s</em> or similar to get a root shell)</p>
<p>Find the raid devices with <em>mdadm &#8211;assemble &#8211;scan</em> and then use <em>pvscan</em> and <em>lvscan</em> as required until your system has found your lvm config, then mount it (don&#8217;t forget to mount /boot/ too as we will need to rebuild the initrd)</p>
<pre>mkdir /tmp/root
mount /dev/mapper/main-root /tmp/root
mount /dev/md0 /tmp/root/boot
chroot /tmp/root</pre>
<p>Now you should be pretty much inside your root filesystem on your lvm array. Now we need to make sure all the raid arrays are configured in /etc/mdadm/mdadm.conf</p>
<p>Run <em>mdadm &#8211;detail &#8211;scan</em> to generate the lines for the config file, and make sure each array is listed in /etc/mdadm/mdadm.conf</p>
<p>From here it is pretty simple, all we have to do is rebuild the initrd so that it knows how to find all the raid and lvm devices needed during boot. <em>dpkg-reconfigure linux-image-&lt;your current kernel version&gt; </em>It is imporant to<em> </em>make sure that you get the right kernel, so have a look in /boot to check you get the right version (<em>uname -r</em> wont work here because you have booted your live cd image and not the kernel your box will run)</p>
<p>I got several warnings about /proc/ not being mounted, but this did not appear to be a problem.</p>
<p>Reboot, and you should be ok. You may want to make a copy of your current kernel in case you accidentally break it, just copy the linux-image&#8230;gz and initrd&#8230;gz from /boot/ to new names and run <em>update-grub</em> and that should give you two kernels to choose from (hopefully booting choosing them in the right order, the order should be based on the version numbers in your kernel files so adjust if needed)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/05/23/fixing-broken-lvm-and-sofware-raid-on-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>O2 Joggler</title>
		<link>http://www.strangeparty.com/2010/05/19/o2-joggler/</link>
		<comments>http://www.strangeparty.com/2010/05/19/o2-joggler/#comments</comments>
		<pubDate>Wed, 19 May 2010 17:08:27 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[joggler]]></category>
		<category><![CDATA[o2]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=640</guid>
		<description><![CDATA[<p>My O2 Joggler just arrived and it is quite an interesting piece of kit.</p> <p>I&#8217;ve not had much time to play with it yet, but the O2 software stack seems a bit limited. Google calendar can be installed, but no mail, and I&#8217;m not sure the calendar will pop-up if something is approaching. No web <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/05/19/o2-joggler/">O2 Joggler</a></span>]]></description>
			<content:encoded><![CDATA[<p>My O2 Joggler just arrived and it is quite an interesting piece of kit.</p>
<p>I&#8217;ve not had much time to play with it yet, but the O2 software stack seems a bit limited. Google calendar can be installed, but no mail, and I&#8217;m not sure the calendar will pop-up if something is approaching.<br />
No web browser was a major failing in my opinion &#8211; Sure you get Sky News, but the interface for that is rather simple and I expected better (feels like WAP on a phone!)</p>
<p>The weather apps (for some reason there are two) are ok, but the default one seems to show some odd forecasts (<a title="Joggler weather fail on Twitpic" href="http://twitpic.com/1p6s0h"><img src="http://twitpic.com/show/thumb/1p6s0h.jpg" alt="Joggler weather fail on Twitpic" width="150" height="150" /></a>Friday, Thursday, Saturday with Friday and Thursday showing night forecasts for some reason)</p>
<p>I have yet to try uPnP for pictures and music, but the internet radio plays BBC stations fine.</p>
<p>The traffic app looks a bit simple, though the google maps app is nice. The messaging could be interesting as it can send/receive texts, but as I can&#8217;t see me using it much. The O2 calendar I have yet to try.</p>
<p>After poking that far, I decided to boot Ubuntu, so following <a href="http://www.stephenford.org/joggler/">http://www.stephenford.org/joggler/</a> I downloaded the Ubuntu image that has been customised for the Joggler, copied it to my usb key and it booted fine.</p>
<p>Getting wireless up was ok (at least I could copy and paste the wpa2 key from a file I put on the USB key before booting it, rather than typing the rather long random string I have on the on-screen keyboard as I had to for the O2 software), but I did find that using the touch-screen is not a good alternative to a mouse (and the on-screen keyboard can be really annoying!)</p>
<p>At least Ubuntu gives you a web browser (Chrome and Midori are installed by default in this image), but it is still tricky to use.<br />
I had to increase the font sizes just to get windows that I could click the menus on.</p>
<p>So far the only thing it is actually great for is solitaire &#8211; which is a rather expensive deck of cards!</p>
<p>I need to try some of the hacks at <a href="http://www.jogglerwiki.info/">http://www.jogglerwiki.info/</a> like installing telnet/ssh and then see what I can hack on top of the O2 software, as it seems better built for a touchscreen and keyboard-less device, though I am not sure what I will be able to get working. It does appear to have flash running on it, and one site suggests that <a href="http://www.joggler.info/forum/viewtopic.php?f=5&amp;t=78">any flash .swf file can be launched easily</a></p>
<p>Update: Good review at <a href="http://jtlog.wordpress.com/2010/05/20/new-clock-radio/">http://jtlog.wordpress.com/2010/05/20/new-clock-radio/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/05/19/o2-joggler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Book review: Python 3 for Absolute Beginners</title>
		<link>http://www.strangeparty.com/2010/04/02/review-python3/</link>
		<comments>http://www.strangeparty.com/2010/04/02/review-python3/#comments</comments>
		<pubDate>Fri, 02 Apr 2010 11:08:34 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Reading]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=635</guid>
		<description><![CDATA[<p>Python 3 for Absolute Beginners, Tim Hall and J-P Stacey, Apress (ISBN: 978-1-4302-1632-2)</p> <p>Disclaimer: I was asked to review this book through the Hampshire Linux User Group. I did not receive any instruction for the outcome of the review nor any payment for the review (though I did get to keep the book).</p> <p> I <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2010/04/02/review-python3/">Book review: Python 3 for Absolute Beginners</a></span>]]></description>
			<content:encoded><![CDATA[<p>Python 3 for Absolute Beginners, Tim Hall and J-P Stacey, Apress (ISBN: 978-1-4302-1632-2)</p>
<p><em>Disclaimer: I was asked to review this book through the Hampshire Linux User Group. I did not receive any instruction for the outcome of the review nor any payment for the review (though I did get to keep the book).</em></p>
<p><em></em> I believe it is important to know something about a reviewer of a book, so that the statements made can be fully appreciated. I am a Software Developer, so spend most of my day reading and writing code. These days it is mostly Perl and Java, though some days it is all C++. I have never written Python before, though I have poked at about two scripts (and even made a fix to one), but it is probably fair to say that I have spent less than an hour looking at Python code before reading this book.</p>
<p>The book does actually mention that the source code examples are available for download from Apress.com however it is mentioned on the first inside page where all the copyright information is (and which you normally skip over automatically). If you want the exapmles, they are at <a href="http://apress.com/book/downloadfile/4500﻿﻿﻿">http://apress.com/book/downloadfile/4500﻿﻿﻿</a></p>
<p>The book opens fairly well for a beginners book, and seems strongly aimed at someone who has never programmed before (I have heard lots of people recommending Python as a good language to teach yourself programming with and can understand why). I was pleased to an early reference to <a href="http://en.wikipedia.org/wiki/Monty_Python">Monty Python</a> as well, as <a href="http://en.wikipedia.org/wiki/Python_(programming_language)#Neologisms">this is where the name Python comes from</a>.</p>
<p>The use of Python&#8217;s interactive interpreter is excellent and it makes for great examples of simple parts of the language, while also being so short that you actually want to type them into your computer and try them out! In particular the author&#8217;s use of Pythons interpreter to print out details of a data-type or variable, and even the outcome of comparisons (e.g. entering &#8220;1==2&#8243; into the Python interpreter returns &#8220;False&#8221; without having to actually use a print statement or any other debug methods which I think is fantastic for a new programmer and a real time saver)</p>
<p>It is a shame that the author fails to stress the differences between Python 2.x and 3.x strongly enough. While some code will work on both versions, there are very large changes and it should have been made more clear early on that Python 2.x code is unlikely to work in Python 3.x, and vice-versa, as I would expect users to also seek examples on the web and it will just be confusing if the examples don&#8217;t work because of changes between versions of Python.</p>
<p>By chapter two some software design principles have been introduced alongside the first actual program, which is of course &#8220;hello world&#8221;. The author spends a long time talking about Software Engineering and Design principles, which is all valuable information, but I doubt many readers will actually spend time reading this and will instead skip over it. It does cover pretty much everything from design approaches (inside-out vs top-down) all the way to code control, versioning, comments, documentation, etc so certainly tries to cover all the bases.</p>
<p>The book then moves on to explaining variables and datatypes, operators and precedence, integers vs floats and all the core basics of a language. I initially thought that explanations of Octal and Hexadecimal values were perhaps a little advanced for a book aimed at &#8220;Absolute Beginners&#8221;, but the author did make a good point that these are often used in file permissions and html colours and this makes them very useful to know.</p>
<p>The examples in the book start off short and sweet, but at some point the author had the idea to continually rework a text-based RPG game he invented for the book. The only problem with this is that you end up staring at several pages of code, and all you want to do then is skip over it, and then start skipping the explanations of this long code. I think the author was trying to teach some good refactoring techniques throughout the book by using this larger piece of code, however I feel that shorter, separate examples would have been easier to understand.</p>
<p>At one point the example programs start using  &#8217;#! /usr/bin/env python&#8217; as the first line of the code but without any explanation. My personal opinion is that &#8216;#!/usr/bin/python&#8217; is more common however even that has its problems. As Python 3 is still very new, pretty much all current Linux systems will have Python 2.x installed as /usr/bin/python so both of these methods would attempt to run the code with Python 2.x and not 3.x. Many of the example source files from the website are also the same, and because they do not define python3 as the interpreter via the hash-bang (#!) line they will not run if you just try to execute them, which is a real shame. Some of the downloaded source code gets very close with &#8217;#! /usr/bin/env python3.0&#8242;, however on Ubuntu Karmic the current Python 3.x version is 3.1, so this code still fails to run unless you explicitely call it with Python3.1 or edit the line to just have &#8220;#!/usr/bin/env python3&#8242; which is symlinked to 3.1  Some of the short examples, particularly around regular expressions, refer back to variables that were last shown to the reader four or give pages previously. This makes it very hard</p>
<p>Other than the above minor problems with the book, it makes a very thorough introduction to programming and Python 3. If you have never programmed, then this is a very good book to start with. If you have programmed, but never in Python then this book is still very good, though you will find yourself skipping sections here and there. If you already know Python 2.x then this book is probably not for you, as it only explains a few changes between version 2.x and 3, and you will probably know the rest already.</p>
<p>One thing to mention is that Python 3 is still very new, and in fact 2.6 is the default for the Ubuntu Lucid Lynx release as well as (at this stage) Debian Squeeze. I expect Python 3 is still a few good years from becoming the default &#8211; This is either a good thing as you have more time to learn version 3, or it can be seen as a bad thing as most existing code is based on 2.x and will need quite a bit of changing to work in version 3 (and vice-versa).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2010/04/02/review-python3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>dpatch &#8211; using patch files in Debian packaging</title>
		<link>http://www.strangeparty.com/2009/11/13/dpatch-using-patch-files-in-debian-packaging/</link>
		<comments>http://www.strangeparty.com/2009/11/13/dpatch-using-patch-files-in-debian-packaging/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 18:14:56 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[dpatch]]></category>
		<category><![CDATA[packaging]]></category>
		<category><![CDATA[patch]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=497</guid>
		<description><![CDATA[<p>I do a fair bit  of packaging of Debian and Ubuntu packages at work, often having to make tweaks to upstream packages. I used to just hack the upstream source directly, but have now discovered dpatch.</p> <p>dpatch is a clever addition to the Debian packaging process which allows all your changes to be stored as <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2009/11/13/dpatch-using-patch-files-in-debian-packaging/">dpatch &#8211; using patch files in Debian packaging</a></span>]]></description>
			<content:encoded><![CDATA[<p>I do a fair bit  of packaging of Debian and Ubuntu packages at work, often having to make tweaks to upstream packages. I used to just hack the upstream source directly, but have now discovered dpatch.</p>
<p>dpatch is a clever addition to the Debian packaging process which allows all your changes to be stored as patch files in the debian/ subfolder in the source package rather than having to modify the upstream source. There are good reasons to do this &#8211; You can easily see what you have changed in the source, and therefore can remove the changes easily if the need arises. It also allows upgrading the upstream source more easily as you do not have to patch the code yourself (and only have to do anything if the upstream code has changed too much for patch to figure out where the changes need to go)</p>
<p><a href="http://matrixhasu.altervista.org/index.php?view=use_dpatch">http://matrixhasu.altervista.org/index.php?view=use_dpatch</a> is an excellent introduction for dpatch, and certainly got me going.</p>
<p>The basics of dpatch are pretty simple. After installing dpatch on your system, you can start using it in your source package straight away.</p>
<p>I prefer to start with the debian/rules file and add dpatch support first, as dpatch can complain in some of its commands if you have not done this step first. The easiest way to do this is simply to add the following line near the top of debian/rules</p>
<blockquote>
<pre>include /usr/share/dpatch/dpatch.make</pre>
</blockquote>
<p>This pulls in several dpatch definitions for make, allowing it to be called easily. Next you have to change the build-stamp and clean definitions in your debian/rules. The basic idea is to tell dpatch to patch files before the build happens, and to remove the patches during the clean. This way you can work with the original package, and dpatch will add your patches automatically during package build.</p>
<blockquote>
<pre>build-stamp: patch-stamp
...
clean: unpatch</pre>
</blockquote>
<p>Now dpatch will apply any patches found in debian/patches (though it does need an index of patches to apply). Of course there are other ways to configure dpatch, see <em>man dpatch</em> for details.</p>
<p>Now you want to change your code. The dpatch-edit-patch command will copy your packages source tree to a temporary directory and put you in a new shell. You simply edit the code to make the change you want, then logout of that shell and dpatch will work out what you have changed and save those changes to a patch file.</p>
<p>For a new patch you probably want to use the <em>&#8211;add2list</em> flag as it adds your patch to the index of patches to apply. The following is an example of creating a new patch</p>
<blockquote>
<pre>dpatch-edit-patch --add2list 01_my_patch_name</pre>
</blockquote>
<p>If you want to go back and make changes to your patch you can just run</p>
<blockquote>
<pre style="font: normal normal normal 12px/18px Consolas, Monaco, 'Courier New', Courier, monospace;">dpatch-edit-patch 01_my_patch_name</pre>
</blockquote>
<p>That is the basics of dpatch. You can apply all patches with <em>dpatch apply-all<span style="font-style: normal;"> and remove them all again with </span>dpatch deapply-all</em> and of course dpatch will do this for you when you run dpkg-buildpackage, debian/rules or debuild to build your package.</p>
<p>I recommend using dpatch whenever you need to change the upstream source in a package &#8211; being able to easily see what you changed to make that package work is really helpful (and don&#8217;t forget to tell upstream your changes where appropriate!)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/11/13/dpatch-using-patch-files-in-debian-packaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-platform realtime collaborative editing</title>
		<link>http://www.strangeparty.com/2009/11/11/cross-platform-realtime-collaborative-editing/</link>
		<comments>http://www.strangeparty.com/2009/11/11/cross-platform-realtime-collaborative-editing/#comments</comments>
		<pubDate>Wed, 11 Nov 2009 12:04:21 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[editing]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=590</guid>
		<description><![CDATA[<p>I recently stumbled across Gobby:</p> <p>Gobby is a free collaborative editor supporting multiple documents in one session and a multi-user chat. It runs on Microsoft Windows, Mac OS X, Linux and other Unix-like platforms.</p> <p>It looks really cool, and the realtime-editing would be very well suited to trying to draw up any form of document <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2009/11/11/cross-platform-realtime-collaborative-editing/">Cross-platform realtime collaborative editing</a></span>]]></description>
			<content:encoded><![CDATA[<p>I recently stumbled across <a href="http://gobby.0x539.de/trac/">Gobby</a>:</p>
<blockquote><p>Gobby is a free collaborative editor supporting multiple documents in one session and a multi-user chat. It runs on Microsoft Windows, Mac OS X, Linux and other Unix-like platforms.</p></blockquote>
<p>It looks really cool, and the realtime-editing would be very well suited to trying to draw up any form of document or source code at the same time when you will have too much activity for trying to use a code repository.</p>
<p>It is a shame Gobby does not have hooks builtin to allow loading code from a VCS or DVCS (that would be cool), but you can launch it headless on a server with an auto-save directory and then all connect in and start loading documents. There are times when I have wanted something like this, particularly when you are starting out a new piece of code and have several people wanting to get started right away. Once the pace dies down, it probably makes a lot of sense to move the file to your source code control system, but for that initial burst this looks like a fantastic tool</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/11/11/cross-platform-realtime-collaborative-editing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Garmin Etrex-H on Ubuntu</title>
		<link>http://www.strangeparty.com/2009/11/09/garmin-etrex-h-on-ubuntu/</link>
		<comments>http://www.strangeparty.com/2009/11/09/garmin-etrex-h-on-ubuntu/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 10:38:26 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[walking]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=588</guid>
		<description><![CDATA[<p>Last month my wife got me a Garmin Etrex-H walking GPS for my birthday. On friday my usb data cable from Kawa Mall (bought via ebay) arrived.</p> <p>Getting data from the gps was trivial with gpsbabel (thought you might find it easier to use the gebabbel gui frontend and getting a track uploaded to a <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2009/11/09/garmin-etrex-h-on-ubuntu/">Garmin Etrex-H on Ubuntu</a></span>]]></description>
			<content:encoded><![CDATA[<p>Last month my wife got me a <a href="http://www.garmin.com/products/etrexH/">Garmin Etrex-H</a> walking GPS for my birthday. On friday my <a href="http://www.kawamall.com/cat_for_etrex.cfm">usb data cable from Kawa Mall</a> (bought via ebay) arrived.</p>
<p>Getting data from the gps was trivial with <a href="http://www.gpsbabel.org">gpsbabel</a> (thought you might find it easier to use the <a href="http://gebabbel.sourceforge.net/">gebabbel gui frontend</a> and getting a track uploaded to a Google Map was easy via <a href="http://www.gpsvisualizer.com">gpsvisualizer</a>. I have not yet managed to upload a route with waypoints to the gps device yet though.</p>
<p>I am also unsure which software will be easiest to plot a route in. <a href="http://www.marengo-ltd.com/map/">Marengo</a> looks like a possible choice, as a web route planner, or possibly I can do it with Google Earth, or <a href="http://qlandkarte.sourceforge.net/">QLandKarte</a> (though I would need to find or generate a calibrated map for this) which can read and write the gps device directly (again using gpsbabel)</p>
<p>Has anyone got recommendations for gps track editing software as well as route planning software?</p>
<p><a href="http://blog.bluemonki.net/2008/07/16/how-to-automaticallyautomagically-geotag-your-photos-using-open-source-stuffs/">Bluemonki has some geotagging voodoo</a> that I need to look at so I can start recording where my photos were taken which should be interesting</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/11/09/garmin-etrex-h-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>New gpg/pgp key</title>
		<link>http://www.strangeparty.com/2009/11/08/new-gpgpgp-key/</link>
		<comments>http://www.strangeparty.com/2009/11/08/new-gpgpgp-key/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 17:38:02 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[encryption]]></category>
		<category><![CDATA[gpg]]></category>
		<category><![CDATA[identity]]></category>
		<category><![CDATA[pgp]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=581</guid>
		<description><![CDATA[<p>I suspect only a few readers here will care, but I have a new gpg/pgp key</p> <p> If the message below is not verifiable, it is probably mangled by your browser &#8211; a plain-text version is at http://strangeparty.com/new_key.txt</p> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256,SHA1 I have migrated my gpg keys to a stronger key My <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2009/11/08/new-gpgpgp-key/">New gpg/pgp key</a></span>]]></description>
			<content:encoded><![CDATA[<p>I suspect only a few readers here will care, but I have a new gpg/pgp key</p>
<p><span id="more-581"></span><br />
If the message below is not verifiable, it is probably mangled by your browser &#8211; a plain-text version is at <a href="http://strangeparty.com/new_key.txt">http://strangeparty.com/new_key.txt</a></p>
<pre>-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256,SHA1                                

I have migrated my gpg keys to a stronger key
My old key was:                              

  pub   1024D/B307BAEF 2004-04-22
  Key fingerprint = 116A 5F01 1E5F 1ADE 78C6  EDB3 B9B6 E622 B307 BAEF

and my new key is

  pub   4096R/74B1FA37 2009-11-05
  Key fingerprint = 7401 96D3 E037 2F8F 5965  A358 4046 71FD 74B1 FA37

You can get my key with the following command on linux

  wget -q -O- http://strangeparty.com/anton.gpg | gpg --import -

or by downloading http://strangeparty.com/anton.gpg and importing manually

You can also fetch it from the keyserver with

  gpg --keyserver pgp.mit.edu --recv-key 74B1FA37

If you have my old key, you can verify that I have signed my new one with
my old one with

  gpg --check-sigs 74B1FA37

If you are paranoid and want to check you have downloaded the right key,
you can check the fingerprint of the key against the one above with

  gpg --fingerprint 74B1FA37

If you are completely satisfied, you may want to sign my new key

  gpg --sign-key 74B1FA37

If you do sign me key, please either email me that signature (email the
output of the following command to anton@piatek.co.uk)

  gpg --armor --export 74B1FA37

(Or the following if you have a mail client on your box)

  gpg --armor --export 74B1FA37 | mail -s 'OpenPGP Signatures' anton@piatek.co.uk

Or you can just get gpg/pgp to upload it direct to a keyserver

  gpg --keyserver pgp.mit.edu --send-key 74B1FA37
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)

iQIcBAEBCAAGBQJK9r5vAAoJEEBGcf10sfo3mosP/3SvPGY5Rh3swpPsIk6MhM8c
1I9FqFDdwKDdzVg1BR3YMo3UXY6zE/LpBzr63s1CtdUZTbVrm8fuav9CSgdk+PUj
f04ssi5LHrBTY9X7QYF/wgL8skE4ByHf4QGEMR5lfBi8vl35OHaf0yhXXmypKxuV
+f3keX0gpcWrcdn7JKva4J4CJ617QsfNnR/EFQXBBYiwPYkWRSMkSLT6JOO7Y6FY
WPbI+Me2kOe6nlNHx/4OTg7ev9kkIV2Y+dgOQcZIEF6WBL51DzvR4AZApih00Ny+
qD3Hpo+kDSSB6PGKOMVxYbHvFAdwQjQTiptTnsu2TX+0hQypQlrGRvEKXSUg5dn6
HO6AHkfeZ+J3WUfhQVQHHNIdSPT8mpRBLR24INsI8sxtxe9EQezjUJOYKc/BhMY8
n9H1dIdAMtrdz+fFG7cqXsYMY8xs3zUZMa/nyu4uKobLtuUnItRS09Zhqxk51C0k
hqRIEvJybk5i9B9ytUT3zRSQrTL9aLEaJGHq1CcE64ABCLXt8QixSB+60EfR3MVT
otBflmiLaV5UE0x98GZ/JtLTRHKj/vR28/45vhWXSEAJO3A6t3A9qmfg2/YP/vWc
ddFpgK7kDFcQu4hvPzEKWwZUnw9jzP50msjr5Vpcn4/FS7zGPFaPmCWC4h22yxhL
h1aBCg2ijxrHwHDxT3QWiEYEARECAAYFAkr2vm8ACgkQubbmIrMHuu/v2QCePQud
lf4D6cZqvJMHGwv3mvm/I5wAnjSFS4Y2l8OUzCjeZOgTeVGjAMeU
=cmth
-----END PGP SIGNATURE-----</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/11/08/new-gpgpgp-key/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu 9.10 Karmic Koala released</title>
		<link>http://www.strangeparty.com/2009/10/29/ubuntu-9-10-karmic-koala-released/</link>
		<comments>http://www.strangeparty.com/2009/10/29/ubuntu-9-10-karmic-koala-released/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 15:32:12 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=579</guid>
		<description><![CDATA[<p>http://www.ubuntu.com/getubuntu/download</p> <p>If possible, use the Torrent download: http://releases.ubuntu.com/9.10/ubuntu-9.10-desktop-i386.iso.torrent (it should be faster and saves money for all the mirrors)</p> ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ubuntu.com/getubuntu/download">http://www.ubuntu.com/getubuntu/download</a></p>
<p>If possible, use the Torrent download: <a href="http://releases.ubuntu.com/9.10/ubuntu-9.10-desktop-i386.iso.torrent">http://releases.ubuntu.com/9.10/ubuntu-9.10-desktop-i386.iso.torrent</a> (it should be faster and saves money for all the mirrors)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/10/29/ubuntu-9-10-karmic-koala-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Global Jam</title>
		<link>http://www.strangeparty.com/2009/09/22/ubuntu-global-jam/</link>
		<comments>http://www.strangeparty.com/2009/09/22/ubuntu-global-jam/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 17:14:01 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=558</guid>
		<description><![CDATA[<p>I recently noticed that 2nd-4th October is Ubuntu Global Jam. There is actually a meetup in Birmingham:</p> <p>Ubuntu Global Jam – Birmingham (UK) &#8211; Source Guru So, if you’re interested in helping make Ubuntu a better distro, and live in (or can travel to) the Birmingham Area in the UK, then you’re welcome to come <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2009/09/22/ubuntu-global-jam/">Ubuntu Global Jam</a></span>]]></description>
			<content:encoded><![CDATA[<p>I recently noticed that 2nd-4th October is <a href="https://wiki.ubuntu.com/UbuntuGlobalJam">Ubuntu Global Jam</a>. There is actually a meetup in Birmingham:</p>
<blockquote><p><a href="http://www.sourceguru.net/ubuntu-bugjam-birmingham-uk/">Ubuntu Global Jam – Birmingham (UK) &#8211; Source Guru</a><br />
So, if you’re interested in helping make Ubuntu a better distro, and live in (or can travel to) the Birmingham Area in the UK, then you’re welcome to come along.</p>
<p>The Jam is on the 2nd-4th October, and we’ll be around on all three days&#8230;.   Last year we had a great time, with refreshments (including beer) provided. Juggling penguins, and one person sleeping underneath the conference room table overnight.  Hopefully we’ll also have the live Video Streams up and running again for anyone who can’t make it (or other Ubuntu Jams) to join in with!</p></blockquote>
<p>However another question also occured &#8211; how much interest would there be in the south of England in order to try and organise one closer to home. We don&#8217;t really even need an official Ubuntu developer, as there is plenty of instructions and irc can provide access to developers real-time if we need them.</p>
<p>The only thing we need is a venue (I could possibly get use of the IBM site again) and enough people that want to contribute something to Ubuntu. The contribution could be packaging new programs, fixing bugs, raising bugs, improving documents, or translating documents (<a href="https://translations.edge.launchpad.net/ubuntu/karmic/+lang/en_GB">translation into British English</a> anyone?)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/09/22/ubuntu-global-jam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linux User Group @ Hursley</title>
		<link>http://www.strangeparty.com/2009/09/16/linux-user-group-hursley/</link>
		<comments>http://www.strangeparty.com/2009/09/16/linux-user-group-hursley/#comments</comments>
		<pubDate>Wed, 16 Sep 2009 17:56:09 +0000</pubDate>
		<dc:creator>Anton Piatek</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[HantsLug]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[hants]]></category>
		<category><![CDATA[hursley]]></category>
		<category><![CDATA[lug]]></category>

		<guid isPermaLink="false">http://www.strangeparty.com/?p=553</guid>
		<description><![CDATA[<p>On Saturday I hosted a group for 30 people at IBM Hursley for a Hampshire Linux User Group meeting.</p> <p>We had a good set of talks, including Andy Stanford-Clark talking about his twittering house and mousetraps as well as the twittering Red Funnel Ferries [telegraph.co.uk] and his energy monitoring via Current Cost devices. I did <span style="color:#777"> . . . &#8594; Read More: <a href="http://www.strangeparty.com/2009/09/16/linux-user-group-hursley/">Linux User Group @ Hursley</a></span>]]></description>
			<content:encoded><![CDATA[<p>On Saturday I hosted a group for 30 people at IBM Hursley for a <a href="http://hants.lug.org.uk/">Hampshire Linux User Group</a> meeting.</p>
<p>We had a good set of talks, including <a href="http://www.twitter.com/andysc">Andy Stanford-Clark</a> talking about his twittering house and mousetraps as well as the twittering <a href="http://www.telegraph.co.uk/travel/travelnews/6188760/Twittering-ferries-alert-passengers-to-delays.html">Red Funnel Ferries</a> [telegraph.co.uk] and his energy monitoring via Current Cost devices.<br />
I did a brief (although rather technical) introduction to Debian packages (which will turn into a blogpost soon with any luck).<br />
Laura Cowen did a nice talk on <a href="http://activities.sugarlabs.org/en-US/sugar/addon/4042">InfoSplicer</a> which was originally designed for the Sugar platform of the <a href="http://laptop.org/">OLPC</a> hardware.<br />
Tony Whitmore gave a rather interesting talk on podcasting, from his experience in doing the  <a href="http://podcast.ubuntu-uk.org/">Ubuntu UK Podcast</a><br />
Adam Trickett talked about book reviews, and gave out a pile of free books for people to have in return for writing a review.</p>
<p><a href="http://lauracowen.co.uk/">Laura Cowen</a> also did an excellent writeup for <a href="http://eightbar.co.uk/2009/09/16/linux-users-descend-on-the-house/">eightbar</a></p>
<blockquote><p>On Saturday, we were mostly in the Auditorium (where Spitfires were built during WWII), then when we led everyone down to the Clubhouse for lunch, we took the usual site tour scenic route via the Sunken Garden and fish pond. Although Hursley is out in the country, seemingly the middle of nowhere, it’s actually on the bus-route from Winchester so we had an excellent turnout of about 30 people. IBM Hursley also has a lot of cool people who do cool things that we can tell people about (although one piece of feedback I heard from a LUG person was that they thought we didn’t talk enough about what IBM does!).<br />
&#8230;</p>
<p>It was a really enjoyable and relaxed day; kudos to Anton, Stephen, and John for organising it from the IBM end. Thanks also to the IBMers who came along and to the many HantsLUG members who turned up. I’d say it was a success and we should definitely do it again.<br />
<a href="http://eightbar.co.uk/2009/09/16/linux-users-descend-on-the-house/">Linux Users descend on the House | eightbar</a></p></blockquote>
<p>The day was terrific (at least for me) and I hope to organise another one in the near future, as it turned out to be nowhere near as hard as I thought it was going to be (I thought it was going to be difficult persuading security etc to let me bring 30 people on site over a weekend when the site only has minimal staff).</p>
<p>Thanks to all those that helped, particularly <a href="http://bluemonki.net/">John Wesley</a> and Stephen Godwin, and also thanks to all those who turned up!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.strangeparty.com/2009/09/16/linux-user-group-hursley/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

