<?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 &#187; Work</title>
	<atom:link href="http://julianhigman.com/blog/category/work/feed/" rel="self" type="application/rss+xml" />
	<link>http://julianhigman.com/blog</link>
	<description></description>
	<lastBuildDate>Wed, 21 Dec 2011 14:29:13 +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>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[Github]]></category>
		<category><![CDATA[Work]]></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" $ [...]]]></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 [...]]]></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</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>

		<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 [...]]]></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>

		<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 [...]]]></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>1</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>

		<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 [...]]]></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>
<pre>
<div id="_mcePaste">sudo apt-get install libmysqlclient15-dev</div>
<div id="_mcePaste">sudo gem install mysql</div>
</pre>
]]></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>

		<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 [...]]]></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>Agile Coaching &#8211; new book from Rachel Davies</title>
		<link>http://julianhigman.com/blog/2009/08/10/agile-coaching-new-book-from-rachel-davies/</link>
		<comments>http://julianhigman.com/blog/2009/08/10/agile-coaching-new-book-from-rachel-davies/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 21:31:44 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[agile scrum]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=146</guid>
		<description><![CDATA[I&#8217;ve just been reading the excellent new book called Agile Coaching by Rachel Davies and Liz Sedley. It&#8217;s the result of many years spent coaching teams to be agile, and the cumulative experience really shows. Writing about agile processes often seems to get lost in an abstract discussion of the nature of processes &#8211; analysing [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve just been reading the excellent new book called <a title="Agile Coaching" href="http://www.amazon.co.uk/Agile-Coaching-Rachel-Davies/dp/1934356433" target="_blank">Agile Coaching</a> by Rachel Davies and Liz Sedley.</p>
<p>It&#8217;s the result of many years spent coaching teams to be agile, and the cumulative experience really shows.</p>
<p>Writing about agile processes often seems to get lost in an abstract discussion of the nature of processes &#8211; analysing the team as a Complex Adaptive System and so on. Rachel and Liz comprehensively avoid such mistakes, and keep their advice firmly rooted in practical examples from their own real-world knowledge.</p>
<p>So, at the start of the book, they describe a generic agile process (usually a blend of XP, Scrum, Lean etc), and then use that as the basis for examining in detail how the process really works and how to coach people in using it.</p>
<p>The emphasis is always on the pragmatic application of the process, illustrated with plenty of examples and stories, which makes it very easy to relate to the daily experience  of working with agile teams.  Each chapter ends with a checklist of bullet points to summarise and reinforce the key messages.</p>
<p>The first section of the book describes the basics of the coach&#8217;s role &#8211; how to get started, how to work with people and lead change, how to build a team, and when to move on.  Some of this would probably be just as relevant  to coaching any activity, but much of it is specifically about the issues in applying agile principles to software development.  In the chapters about working with other people there&#8217;s plenty of good advice &#8211; how to give feedback, resolve conflict and so on &#8211; that would make great reading for anyone who has to work with other people in ANY environment. I particularly like the bit about &#8220;Emotional Outbursts in Meetings&#8221;..!</p>
<p>The next section walks the reader through the iteration processes in more detail. There are chapters covering all the main elements of an iteration, including standups, stories and story cards, acceptance tests, estimating and planning,  and keeping progress visible. As usual, there are plenty of hints and tips for coping with problems &#8211; ideas for what to do when the team is dispersed, or work at different hours, or just hate planning.</p>
<p>The third section focuses on issues of quality. There&#8217;s lots of techie detail here that&#8217;ll be familiar to anyone who&#8217;s worked in an agile development team &#8211; discussion of unit testing, continuous integration, pair programming and other practices. But the key focus is on how all these practices work to the end goal of running, tested, maintainable software. And again, some pointers for techniques to try when things are difficult.</p>
<p>Finally, there are some chapters on listening to feedback &#8211; in terms of process, that includes demos for external feedback, and retrospectives for internal feedback. Retrospectives in particular can be quite difficult to get right, and there&#8217;s a range of techniques to try as well as a checklist of &#8220;Retrospective Smells&#8221; (like &#8220;History Lesson&#8221; and &#8220;Hot Air&#8221;) that can indicate that the retrospective isn&#8217;t working as well as it should.   The &#8221;Growing You&#8221; chapter gives some ideas for planning your own personal development.</p>
<div>Throughout the book, the tone that comes across is one of calm, intelligent guidance, and a very humane approach to dealing with everyone involved in an agile project (including yourself).</div>
<p>It&#8217;s also a great grab-bag of hints and tips, and reminders of key principles.</p>
<p>There are plenty of pointers scattered throughout the book to further reading, from <a href="http://www.myersbriggs.org/" target="_blank">personality types</a> to <a href="http://www.limitedwipsociety.org/" target="_blank">Kanban</a> to <a href="http://c2.com/cgi/wiki?PairProgrammingPingPongPattern" target="_blank">pair programming</a>. And as for the stories and examples that illustrate the chapters, having worked with Rachel at <a title="Connextra" href="http://connextra.com/aboutUs/xp_approach.htm" target="_blank">Connextra</a>, I recognise some of them, and can vouch for the fact that they&#8217;re genuine..</p>
<div>This is not just a book for coaches though &#8211; anyone who works in an agile</div>
<div>team will find lots here to help with understanding the process more deeply. For those just starting out with agile, it&#8217;s a great way to learn what it feels like to be in a properly functioning agile team. And for those who have been doing it for years, there are fresh ways to look at the process, and some inspirational advice for when times are rough.</div>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2009/08/10/agile-coaching-new-book-from-rachel-davies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stefan Tilkov talks about REST</title>
		<link>http://julianhigman.com/blog/2009/05/14/stefan-tilkov-talks-about-rest/</link>
		<comments>http://julianhigman.com/blog/2009/05/14/stefan-tilkov-talks-about-rest/#comments</comments>
		<pubDate>Thu, 14 May 2009 20:44:13 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[rest architecture]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=136</guid>
		<description><![CDATA[Old but good, this podcast  on se-radio.net with Stefan Tilkov talks around the ideas of RESTful applications &#8211; why building applications this way makes them part of the web, rather than just &#8220;on&#8221; the web, and why the REST style exploits the existing architecture of the web. There&#8217;s also a great introduction to REST ideas at http://www.infoq.com/articles/rest-introduction. I [...]]]></description>
			<content:encoded><![CDATA[<p>Old but good, this <a href="http://www.se-radio.net/podcast/2008-05/episode-98-stefan-tilkov-rest" target="_blank">podcast</a>  on se-radio.net with Stefan Tilkov talks around the ideas of RESTful applications &#8211; why building applications this way makes them part of the web, rather than just &#8220;on&#8221; the web, and why the REST style exploits the existing architecture of the web.</p>
<p>There&#8217;s also a great introduction to REST ideas at <a href="http://www.infoq.com/articles/rest-introduction" target="_blank">http://www.infoq.com/articles/rest-introduction</a>.</p>
<div>I like the way Stefan characterises RESTful applications as being a specialisation of the REST principles &#8211; meaning that an application can provide the basic operations (allowing data to be read, caching observed, mime types honoured etc) but still having a level of functionality that can only be used by a client which understands the api more fully (so, POST operations that will create new domain objects, that require specific inputs, for example).</div>
<p>And there&#8217;s a nice write up of some of the frequently-heard objections to REST at <a href="http://www.infoq.com/articles/tilkov-rest-doubts">http://www.infoq.com/articles/tilkov-rest-doubts</a>, describing how you can achieve things like asynchronous operations. Many of these techniques are things that we&#8217;re currently using on projects at <a href="http://www.talis.com/aspire/" target="_blank">Talis</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2009/05/14/stefan-tilkov-talks-about-rest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cultural Agoraphobia</title>
		<link>http://julianhigman.com/blog/2009/04/06/cultural-agoraphobia/</link>
		<comments>http://julianhigman.com/blog/2009/04/06/cultural-agoraphobia/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 21:04:45 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[open linked data]]></category>
		<category><![CDATA[podcast]]></category>
		<category><![CDATA[semantic web]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=127</guid>
		<description><![CDATA[Interesting to see that John Naugton was talking about open data and &#8220;cultural agoraphobia&#8221; in The Observer this weekend.. Talis, where I work, has just announced its Talis Connected Commons, which offers free storage of semantic data sets to anyone &#8211; as long as the data is open. Peter Murray-Rust, who is quoted in the [...]]]></description>
			<content:encoded><![CDATA[<p>Interesting to see that John Naugton was talking about <a href="http://www.guardian.co.uk/media/2009/apr/05/digital-media-referenceandlanguages" target="_blank">open data and &#8220;cultural agoraphobia&#8221;</a> in The Observer this weekend..</p>
<p>Talis, where I work, has just announced its <a href="http://blogs.talis.com/nodalities/2009/03/announcing-the-talis-connected-commons.php" target="_blank">Talis Connected Commons</a>, which offers free storage of semantic data sets to anyone &#8211; as long as the data is open. Peter Murray-Rust, who is quoted in the Observer article,  is one of the people who will hopefully be <a href="http://wwmm.ch.cam.ac.uk/blogs/murrayrust/?p=1616" target="_blank">making use</a> of the Talis triple store.</p>
<p>And I&#8217;ve just been listening to Paul Miller&#8217;s recent <a href="http://cloudofdata.com/2009/03/talking-with-reuven-cohen-about-the-open-cloud-manifesto/" target="_blank">podcast</a> with Reuven Cohen about the Open Cloud Manifesto, which tries to create a coherent idea of what an &#8220;open cloud&#8221; might be (although that seems to be more concerned with interoperability and portability, rather than openness of data). That seems to have caused some controversy along the way, even making it into <a href="http://www.economist.com/research/articlesBySubject/displayStory.cfm?story_id=13414155&amp;amp;subjectID=348909&amp;amp;fsrc=nwl" target="_blank">The Economist</a>.  </p>
<p>It certainly feels like there&#8217;s a tipping point approaching for the next version of data on the web, but (as usual) the barriers are more cultural than technical.</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2009/04/06/cultural-agoraphobia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Validate your inputs</title>
		<link>http://julianhigman.com/blog/2009/03/19/validate-your-inputs/</link>
		<comments>http://julianhigman.com/blog/2009/03/19/validate-your-inputs/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 22:46:40 +0000</pubDate>
		<dc:creator>jhigman</dc:creator>
				<category><![CDATA[Work]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://julianhigman.com/blog/?p=103</guid>
		<description><![CDATA[Todays podcast listening for the commute was Bruce Sams talking about web app security from Software Engineering Radio. Starting with a live demo of some hacking techniques (surprisingly effective even with just the audio), it covers some of the popular attacks &#8211; SQL injection, javascript in input fields, cookie stealing, guessing adjacent ID numbers and so [...]]]></description>
			<content:encoded><![CDATA[<p>Todays podcast listening for the commute was <a href="http://www.se-radio.net/podcast/2009-03/episode-128-web-app-security-bruce-sams" target="_blank">Bruce Sams talking about web app security</a> from <a href="http://www.se-radio.net/" target="_blank">Software Engineering Radio</a>.</p>
<p>Starting with a live demo of some hacking techniques (surprisingly effective even with just the audio), it covers some of the popular attacks &#8211; SQL injection, javascript in input fields, cookie stealing, guessing adjacent ID numbers and so on.</p>
<p>Apparently about 70% of web app vulnerabilities come from the inputs to the system &#8211; we spend a lot of time worrying about things like SSL and encrypted logins, but actually the vast majority of attacks use the applications themselves.</p>
<p>Sams says that when he&#8217;s asked for his top 10 tips for making your web app secure, he says:</p>
<ol>
<li>Validate your inputs properly</li>
<li>See (1).</li>
</ol>
<p>An interesting aspect of validation, though, is that it applies not just the obvious things like form fields and text strings, but to all the HTTP header elements as well.</p>
<p>For <a href="http://securitytracker.com/alerts/2009/Mar/1021838.html" target="_blank">example</a>, WordPress MU (in versions prior to 2.7) had a function that would echo the HTTP Host header without having sanitised it. The attacker can craft a request that contains some Javascript in the Host header which, when echoed, can grab cookies (or other evil cross-site scripting stuff)..</p>
]]></content:encoded>
			<wfw:commentRss>http://julianhigman.com/blog/2009/03/19/validate-your-inputs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

