<?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>Julian Higman&#039;s Blog</title>
	<atom:link href="http://julianhigman.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://julianhigman.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 27 Feb 2012 22:11:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Upgrading PEAR if Guzzle install fails</title>
		<link>http://julianhigman.com/blog/2012/02/27/upgrading-pear-if-guzzle-install-fails/</link>
		<comments>http://julianhigman.com/blog/2012/02/27/upgrading-pear-if-guzzle-install-fails/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 22:11:21 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[guzzle]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=322</guid>
		<description><![CDATA[I had a problem with the PEAR installer with the Guzzle package (a generally excellent PHP HTTP framework). A channel discover would give the following error: root@ip-10-56-47-23:~# pear channel-discover guzzlephp.org/pear Discovering channel guzzlephp.org/pear over http:// failed with message: channel-add: Cannot open "http://guzzlephp.org/pear/channel.xml" (File http://guzzlephp.org:80/pear/channel.xml not valid (received: HTTP/1.1 404 Not Found )) Trying to discover <a href='http://julianhigman.com/blog/2012/02/27/upgrading-pear-if-guzzle-install-fails/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I had a problem with the PEAR installer with the <a href="http://guzzlephp.org/" target="_blank">Guzzle</a> package (a generally excellent PHP HTTP framework).</p>
<p>A channel discover would give the following error:</p>
<pre>root@ip-10-56-47-23:~# pear channel-discover guzzlephp.org/pear
 Discovering channel guzzlephp.org/pear over http:// failed with message: channel-add: Cannot open "http://guzzlephp.org/pear/channel.xml" (File http://guzzlephp.org:80/pear/channel.xml not valid (received: HTTP/1.1 404 Not Found
 ))
 Trying to discover channel guzzlephp.org/pear over https:// instead
 Discovery of channel "guzzlephp.org/pear" failed (channel-add: Cannot open "https://guzzlephp.org/pear/channel.xml" (Connection to `guzzlephp.org:443' failed: Connection refused))</pre>
<p>Strangely, I could fetch the channel.xml file manually and add the channel. But even then, the install would fail (with similar messages about 404 errors).</p>
<p>The solution seemed to be upgrading PEAR &#8211; I was running version 1.9.0 (check it with &#8220;pear -V&#8221;), so I upgraded it:</p>
<pre>root@ip-10-56-47-23:~# pear upgrade pear</pre>
<p>after which I had version 1.9.4. Then I tried the channel discover again, with much better results:</p>
<pre>root@ip-10-56-47-23:~# pear channel-discover guzzlephp.org/pearAdding Channel "guzzlephp.org/pear" succeeded
 Discovery of channel "guzzlephp.org/pear" succeeded</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2012/02/27/upgrading-pear-if-guzzle-install-fails/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Jenkins to run remote deployment scripts over SSH</title>
		<link>http://julianhigman.com/blog/2012/02/25/using-jenkins-to-run-remote-deployment-scripts-over-ssh/</link>
		<comments>http://julianhigman.com/blog/2012/02/25/using-jenkins-to-run-remote-deployment-scripts-over-ssh/#comments</comments>
		<pubDate>Sat, 25 Feb 2012 21:58:29 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[jenkins]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=294</guid>
		<description><![CDATA[We use Jenkins to deploy code to multiple servers, so that we can manage builds and deployments from the same (even better if you&#8217;re using the Jenkins IRC plugin). The deployment is done by a parameterized build job, where the parameter is the version of the project that we want to deploy. The job will <a href='http://julianhigman.com/blog/2012/02/25/using-jenkins-to-run-remote-deployment-scripts-over-ssh/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>We use Jenkins to deploy code to multiple servers, so that we can manage builds and deployments from the same (even better if you&#8217;re using the <a title="Jenkins IRC Plugin" href="https://wiki.jenkins-ci.org/display/JENKINS/IRC+Plugin" target="_blank">Jenkins IRC plugin</a>).</p>
<p>The deployment is done by a parameterized build job, where the parameter is the version of the project that we want to deploy. The job will run remote commands over ssh on servers that you&#8217;ve defined in the Jenkins configuration. Those commands will pull down a version of our code, unpack it, and run the rest of the install steps.</p>
<p>&nbsp;</p>
<p>First you&#8217;ll need to install the <a title="Publish over SSH Plugin" href="https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin" target="_blank">Publish over SSH Plugin</a>, which will allow files to be transferred to your servers and remote commands to be run.</p>
<p>Set up the SSH key for remote access of your target servers, in the Manage Jenkins page:</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/ssh-key.png"><img class="aligncenter size-full wp-image-295" title="ssh-key" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/ssh-key.png" alt="" width="1176" height="453" /></a></p>
<p>and setup the definitions for each of the servers that you want to deploy to:</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/ssh-server.png"><img class="aligncenter size-full wp-image-298" title="ssh-server" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/ssh-server.png" alt="" width="1079" height="173" /></a></p>
<p>Then in the configuration for the new deployment job you&#8217;ve set up, you&#8217;ll use the &#8220;Send files or execute commands over SSH before the build starts&#8221; settings in the &#8220;Build Environment&#8221; section to remotely execute a script to carry out the install steps on each remote server:</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/remote-exec.png"><img class="aligncenter size-full wp-image-300" title="remote-exec" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/remote-exec.png" alt="" width="919" height="401" /></a></p>
<p>Notice that the build parameter &#8220;$version&#8221; is available to the Exec command that gets remotely executed &#8211; other Jenkins environment variables will also be available (e.g. $BUILD_NUMBER, $JOB_NAME etc).</p>
<p>Use the &#8220;Add Server&#8221; button to add more target servers, with the same Exec command.</p>
<p>Now you can deploy your project (or run any other remote scripts) by running the build job and specifying a version number.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2012/02/25/using-jenkins-to-run-remote-deployment-scripts-over-ssh/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building github branches with Jenkins</title>
		<link>http://julianhigman.com/blog/2012/02/22/building-github-branches-with-jenkins/</link>
		<comments>http://julianhigman.com/blog/2012/02/22/building-github-branches-with-jenkins/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 21:47:32 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[jenkins]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=278</guid>
		<description><![CDATA[We usually work on several parallel branches of a repo on github, and we wanted to be able to build and test any branch on demand. So we set up a parameterised job in Jenkins that will take the name of a branch and run the build process. As for all github builds, you need <a href='http://julianhigman.com/blog/2012/02/22/building-github-branches-with-jenkins/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>We usually work on several parallel branches of a repo on github, and we wanted to be able to build and test any branch on demand.</p>
<p>So we set up a parameterised job in Jenkins that will take the name of a branch and run the build process.</p>
<p>As for all github builds, you need to have installed the git plugin first (<a href="https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin">https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin</a>) and set up your github globals in the Jenkins settings:</p>
<p>&nbsp;</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/jenkins-git-setup-1.png"><img class="aligncenter size-full wp-image-280" title="jenkins-git-setup-1" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/jenkins-git-setup-1.png" alt="" width="919" height="215" /></a></p>
<p>&nbsp;</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/jenkins-git-setup-2.png"><img class="aligncenter size-full wp-image-279" title="jenkins-git-setup-2" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/jenkins-git-setup-2.png" alt="" width="838" height="99" /></a></p>
<p>&nbsp;</p>
<p>Then set up a parameterized build job with the repo as the GitHub project and with &#8220;branch&#8221; as the parameter to be specified:</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/build-param.png"><img class="aligncenter size-full wp-image-289" title="build-param" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/build-param.png" alt="" width="825" height="130" /></a></p>
<p>and in the Source Code Management section, add the parameter to the &#8220;Branches to build&#8221;:</p>
<p><a href="http://julianhigman.com/blog/wp-content/uploads/2012/02/source-code.png"><img class="aligncenter size-full wp-image-290" title="source-code" src="http://julianhigman.com/blog/wp-content/uploads/2012/02/source-code.png" alt="" width="822" height="243" /></a>Don&#8217;t specify any build triggers &#8211; you&#8217;ll probably just want to run this on-demand against specific branches, rather than every time there&#8217;s a push to the repo (which is what happens by default).</p>
<p>Now you can build any branch just by giving the branch name as the required parameter when the job is started.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2012/02/22/building-github-branches-with-jenkins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Importing a project into github</title>
		<link>http://julianhigman.com/blog/2011/12/21/importing-a-project-into-github/</link>
		<comments>http://julianhigman.com/blog/2011/12/21/importing-a-project-into-github/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 14:29:13 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=272</guid>
		<description><![CDATA[We&#8217;re moving our development projects into github, so we wanted to get a copy of the code (checked out of Subversion) into a new project in github. Here are the steps (assumes that you&#8217;ve set up your ssh keys correctly, according to e.g. http://help.github.com/linux-set-up-git/) Setup the git globals: $ git config --global user.name "Julian Higman" $ <a href='http://julianhigman.com/blog/2011/12/21/importing-a-project-into-github/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re moving our development projects into github, so we wanted to get a copy of the code (checked out of Subversion) into a new project in github.</p>
<p>Here are the steps (assumes that you&#8217;ve set up your ssh keys correctly, according to e.g. <a href="http://help.github.com/linux-set-up-git/">http://help.github.com/linux-set-up-git/</a>)</p>
<p>Setup the git globals:</p>
<pre>$ git config --global user.name "Julian Higman"
$ git config --global user.email "jh @ kasabi.com"</pre>
<p>Create the new project, add a README file, and connect it to the github remote project:</p>
<pre>$ mkdir my-new-project
$ cd my-new-project/
$ git init
$ touch README
$ git add README
$ git commit -m "First commit"
$ git remote add origin git@github.com:kasabi/my-new-project.git
$ git push -u origin master</pre>
<p>Now copy in the project source files, excluding svn files and other project config files:</p>
<pre>$ cd ..
$ rsync -r --exclude=.svn --exclude=.buildpath --exclude=.project --exclude=.git my-old-project/ my-new-project/</pre>
<p>Then add the new files, commit them, and push to the remote repo:</p>
<pre>$ cd my-new-project/
$ git add -A
$ git status
$ git commit -m "added project files"
$ git push</pre>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2011/12/21/importing-a-project-into-github/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Drush Make while ftp.drupal.org is down</title>
		<link>http://julianhigman.com/blog/2011/09/02/using-drush-make-while-ftp-drupal-org-is-down/</link>
		<comments>http://julianhigman.com/blog/2011/09/02/using-drush-make-while-ftp-drupal-org-is-down/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 11:53:50 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[drush]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=255</guid>
		<description><![CDATA[The Drush Make utility downloads modules from ftp.drupal.org during the build &#8211; but the ftp.drupal.org site is currently down, which means Drush Make won&#8217;t work (and so our continuous integration has ground to a halt). There&#8217;s a fix for general Drush usage here: http://contrib.linalis.com/content/continuer-dutiliser-drush-quand-ftpdrupalorg-est-down That fix changes the download url to use drupal.org (which is <a href='http://julianhigman.com/blog/2011/09/02/using-drush-make-while-ftp-drupal-org-is-down/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>The Drush Make utility downloads modules from ftp.drupal.org during the build &#8211; but the ftp.drupal.org site is currently down, which means Drush Make won&#8217;t work (and so our continuous integration has ground to a halt).</p>
<p>There&#8217;s a fix for general Drush usage here: <a href="http://contrib.linalis.com/content/continuer-dutiliser-drush-quand-ftpdrupalorg-est-down">http://contrib.linalis.com/content/continuer-dutiliser-drush-quand-ftpdrupalorg-est-down</a></p>
<p>That fix changes the download url to use drupal.org (which is working) instead of ftp.drupal.org (which isn&#8217;t).</p>
<p>Unfortunately Drush Make uses it&#8217;s <em>own</em> download functions, so this doesn&#8217;t help.. Here&#8217;s my (very similar) hack to get the Drush Make downloads working..</p>
<p>Change line 367 in drush_make.drush.inc to the following:</p>
<pre>'url'  =&gt; str_replace('ftp.', '', $release['file']),</pre>
<p>(The file should be somewhere like /usr/share/drush/commands/drush_make)</p>
<p>And don&#8217;t forget to remove the hack when ftp.drupal.org comes back..</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2011/09/02/using-drush-make-while-ftp-drupal-org-is-down/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Enable trackpad coasting in Ubuntu 10.04</title>
		<link>http://julianhigman.com/blog/2011/04/04/enable-trackpad-coasting-in-ubuntu/</link>
		<comments>http://julianhigman.com/blog/2011/04/04/enable-trackpad-coasting-in-ubuntu/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 08:32:18 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=251</guid>
		<description><![CDATA[I like the way trackpad edge-scrolling allows you to &#8220;coast&#8221; (start scrolling with the edge of the trackpad, then release it, and the scrolling continues until you tap the trackpad again). It&#8217;s not enabled by default on Ubuntu 10.04, but here&#8217;s how to turn it on (put it in a startup script): xinput set-prop &#8211;type=float <a href='http://julianhigman.com/blog/2011/04/04/enable-trackpad-coasting-in-ubuntu/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I like the way trackpad edge-scrolling allows you to &#8220;coast&#8221; (start scrolling with the edge of the trackpad, then release it, and the scrolling continues until you tap the trackpad again).</p>
<p>It&#8217;s not enabled by default on Ubuntu 10.04, but here&#8217;s how to turn it on (put it in a startup script):</p>
<p>xinput set-prop &#8211;type=float &#8220;AlpsPS/2 ALPS DualPoint TouchPad&#8221; &#8220;Synaptics Coasting Speed&#8221; 1</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2011/04/04/enable-trackpad-coasting-in-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP 5.3 and the &#8220;global&#8221; keyword</title>
		<link>http://julianhigman.com/blog/2010/11/05/php-5-3-and-the-global-keyword/</link>
		<comments>http://julianhigman.com/blog/2010/11/05/php-5-3-and-the-global-keyword/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 18:33:21 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=243</guid>
		<description><![CDATA[This had me stumped for a while &#8211; using some 3rd party code with PHP 5.3, the &#8220;global&#8221; keyword didn&#8217;t seem to work any more (references to the supposedly &#8220;global&#8221; variable from within functions always gave NULL).. You have to declare the variable as &#8220;global&#8221; before setting it in the outer scope &#8211; then it <a href='http://julianhigman.com/blog/2010/11/05/php-5-3-and-the-global-keyword/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>This had me stumped for a while &#8211; using some 3rd party code with PHP 5.3, the &#8220;global&#8221; keyword didn&#8217;t seem to work any more (references to the supposedly &#8220;global&#8221; variable from within functions always gave NULL)..</p>
<p>You have to declare the variable as &#8220;global&#8221; before setting it in the outer scope &#8211; then it works again.</p>
<p>So, this used to work (but doesn&#8217;t under PHP 5.3) :</p>
<pre>$util = new Utility();</pre>
<pre>global $util;</pre>
<pre>function show() {</pre>
<pre>global $util;</pre>
<pre>echo "$util-&gt;version";</pre>
<pre>}</pre>
<div>but if you swap the lines of the declaration of $utils, then it does work under PHP 5.3 :</div>
<div>
<div>
<pre>global $util;</pre>
</div>
<pre>$util = new Utility();</pre>
</div>
<div>
<pre>function show() {</pre>
<pre>global $util;</pre>
<pre>echo "$util-&gt;version";</pre>
<pre>}</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2010/11/05/php-5-3-and-the-global-keyword/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing Ruby Active Record on Ubuntu 10.04</title>
		<link>http://julianhigman.com/blog/2010/09/27/installing-ruby-active-record-on-ubuntu-10-04/</link>
		<comments>http://julianhigman.com/blog/2010/09/27/installing-ruby-active-record-on-ubuntu-10-04/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 20:06:30 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=226</guid>
		<description><![CDATA[I had to jump through a few hoops.. I tried the obvious &#8220;sudo gem install activerecord&#8221;, but it gave an error &#8211; it needs to install the i18n gem, but that needs rubygems version &#62;= 1.3.6, and I had rubygems 1.3.5. So I had to upgrade  rubygems first, which would normally be : sudo gem <a href='http://julianhigman.com/blog/2010/09/27/installing-ruby-active-record-on-ubuntu-10-04/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I had to jump through a few hoops..</p>
<p>I tried the obvious &#8220;sudo gem install activerecord&#8221;, but it gave an error &#8211; it needs to install the i18n gem, but that needs rubygems version &gt;= 1.3.6, and I had rubygems 1.3.5.</p>
<p>So I had to upgrade  rubygems first, which would normally be :</p>
<pre>sudo gem update --system</pre>
<p>but that reports that it&#8217;s been disabled on Debian, and directs you to use apt-get instead (which doesn&#8217;t have a better version). So I had to use the gem-updater gem:</p>
<pre>sudo gem install rubygems-update</pre>
<div>
<pre>sudo update_rubygems</pre>
</div>
<div>after which I had rubygems 1.3.7. Then I could get active record:</div>
<pre>sudo gem install activerecord</pre>
<p>I still needed to get the mysql gem installed, which in turn needed the libmysql-dev stuff installed</p>
<div id="_mcePaste">sudo apt-get install libmysqlclient15-dev</div>
<div id="_mcePaste">sudo gem install mysql</div>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2010/09/27/installing-ruby-active-record-on-ubuntu-10-04/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu and CloudInit on Amazon EC2</title>
		<link>http://julianhigman.com/blog/2010/09/17/ubuntu-and-cloudinit-on-amazon-ec2/</link>
		<comments>http://julianhigman.com/blog/2010/09/17/ubuntu-and-cloudinit-on-amazon-ec2/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 11:02:00 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=211</guid>
		<description><![CDATA[Alestic and Canonical have released new Ubuntu AMIs for EC2 &#8211; the EBS version in the eu-west-1 region has AMI ID &#8220;ami-38bf954c&#8221;, and the source is &#8220;099720109477/ebs/ubuntu-images/ubuntu-lucid-10.04-i386-server-20100827&#8243;. Ubuntu images support CloudInit, which runs scripts on startup to allow you to configure the server (set up ssh keys, update the repos etc). There&#8217;s a load of different <a href='http://julianhigman.com/blog/2010/09/17/ubuntu-and-cloudinit-on-amazon-ec2/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>Alestic and Canonical have released new <a href="http://alestic.com/2010/08/ec2-ami-canonical">Ubuntu AMIs for EC2</a> &#8211; the EBS version in the eu-west-1 region has AMI ID &#8220;ami-38bf954c&#8221;, and the source is &#8220;099720109477/ebs/ubuntu-images/ubuntu-lucid-10.04-i386-server-20100827&#8243;.</p>
<p>Ubuntu images support CloudInit, which runs scripts on startup to allow you to configure the server (set up ssh keys, update the repos etc). There&#8217;s a load of different ways to specify what should get run (see <a href="https://help.ubuntu.com/community/CloudInit">https://help.ubuntu.com/community/CloudInit</a> for full details).</p>
<p>One of the simplest is just to give it a script in the User Data, like this:</p>
<pre>#!/bin/sh
echo "Hello World.  The time is now $(date -R)!" | tee /root/output.txt
EOF</pre>
<p>It runs as the root user, so you can do pretty much anything you want to configure the box.</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2010/09/17/ubuntu-and-cloudinit-on-amazon-ec2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps on Android downloads 60MB in 10 minutes</title>
		<link>http://julianhigman.com/blog/2010/06/16/google-maps-on-android-downloads-60mb-in-10-minutes/</link>
		<comments>http://julianhigman.com/blog/2010/06/16/google-maps-on-android-downloads-60mb-in-10-minutes/#comments</comments>
		<pubDate>Wed, 16 Jun 2010 21:32:05 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=192</guid>
		<description><![CDATA[I was just having a look at my Vodafone account to see how I&#8217;ve managed to use 2GB of data this month (oops), and noticed these series of entries: Tue Jun 08 17:39 INTERNET 2931.108 KB Tue Jun 08 17:38 INTERNET 2930.525 KB Tue Jun 08 17:38 INTERNET 2930.143 KB Tue Jun 08 17:37 INTERNET 2930.299 KB Tue <a href='http://julianhigman.com/blog/2010/06/16/google-maps-on-android-downloads-60mb-in-10-minutes/' class='excerpt-more'>[...]</a>]]></description>
			<content:encoded><![CDATA[<p>I was just having a look at my Vodafone account to see how I&#8217;ve managed to use 2GB of data this month (oops), and noticed these series of entries:</p>
<col style="width: 48pt;" span="4" width="64"></col>
<tr style="height: 15.0pt;" height="20">
<td style="height: 15pt; width: 96pt; text-align: justify;" colspan="2" width="128" height="20">
<h5>Tue Jun 08 17:39<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2931.108 KB</h5>
<h5>Tue Jun 08 17:38<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.525 KB</h5>
<h5>Tue Jun 08 17:38<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.143 KB</h5>
<h5>Tue Jun 08 17:37<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.299 KB</h5>
<h5>Tue Jun 08 17:36<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.785 KB</h5>
<h5>Tue Jun 08 17:36<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.895 KB</h5>
<h5>Tue Jun 08 17:35<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2929.817 KB</h5>
<h5>Tue Jun 08 17:35<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.283 KB</h5>
<h5>Tue Jun 08 17:35<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2931.05 KB</h5>
<h5>Tue Jun 08 17:34<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.991 KB</h5>
<h5>Tue Jun 08 17:34<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.765 KB</h5>
<h5>Tue Jun 08 17:33<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.441 KB</h5>
<h5>Tue Jun 08 17:33<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2929.775 KB</h5>
<h5>Tue Jun 08 17:33<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2929.608 KB</h5>
<h5>Tue Jun 08 17:32<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>5637.054 KB</h5>
<h5>Tue Jun 08 17:31<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.137 KB</h5>
<h5>Tue Jun 08 17:31<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2931.101 KB</h5>
<h5>Tue Jun 08 17:30<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.31 KB</h5>
<h5>Tue Jun 08 17:30<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.408 KB</h5>
<h5>Tue Jun 08 17:29<span style="white-space: pre;"> </span>INTERNET<span style="white-space: pre;"> </span>2930.107 KB</h5>
</td>
<td style="width: 48pt; text-align: justify;" width="64"></td>
<td style="width: 48pt; padding-left: 30px; text-align: justify;" width="64"></td>
</tr>
<pre>...etc</pre>
<p>That&#8217;s about 60M in the space of 10 minutes. Which seems like a lot. Similar patterns appear at regular intervals..</p>
<p>Looking at the times of the entries, the data usage is due to Google Maps running on my HTC Hero, which I&#8217;m using for sat nav.</p>
<p>If that happens on, say, 10 days in the month, then that&#8217;s already 600M of data used. Hm.  (Add to that the Spotify usage, and 2GB starts to make sense..)</p>
<p>Anyone know if Google Maps can cache its data on Android?</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2010/06/16/google-maps-on-android-downloads-60mb-in-10-minutes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

