<?xml version="1.0"?>
<rss version="2.0">

<channel>
	<title>Planet Mahara</title>
	<link>http://mahara.org/planet/</link>
	<language>en</language>
	<description>Planet Mahara - http://mahara.org/planet/</description>

<item>
	<title>Dan Marsden: New Mahara book</title>
	<guid>http://danmarsden.com/blog/?p=121</guid>
	<link>http://danmarsden.com/blog/2010/02/18/new-mahara-book/</link>
	<description>&lt;p&gt;Packt Publishing just sent me a copy of the new Mahara book:&lt;br /&gt;
&lt;a title=&quot;Mahara 1.2 E-Portfolios&quot; href=&quot;http://www.packtpub.com/mahara-1-2-e-portfolios-beginners-guide/book/mid/170210c4076s?utm_source=danmarsden.com&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002532&quot;&gt;Mahara 1.2 E-Portfolios: Beginner&amp;#8217;s Guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.packtpub.com/mahara-1-2-e-portfolios-beginners-guide/book/mid/170210c4076s?utm_source=danmarsden.com&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002532&quot;&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;Mahara 1.2 E-Portfolios: Beginners Guide&quot; src=&quot;https://www.packtpub.com/images/100x123/1847199062.png&quot; alt=&quot;&quot; width=&quot;100&quot; height=&quot;123&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s been a while since I&amp;#8217;ve sat down and read through a text-book, my eyes tend to glaze over and I find something else to read instead! I&amp;#8217;ve also never been very good at sitting down and &amp;#8220;studying&amp;#8221; &amp;#8211; This book surprised me, I was expecting a book detailing the different features in a dry step by step manner, but what I found was quite different. The first paragraph of the content in the book made me feel a little uncomfortable:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;So, you&amp;#8217;re interested in Mahara? Maybe you are already using it, but you are wondering if you are using it well. Maybe you&amp;#8217;ve recently heard of Mahara and you are wondering if this is actually the ePortfolio solution you were looking for? Or, maybe you have been told you have to use it and you just need to get a sense of what Mahara is all about?&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;The book seemed to be talking to me &amp;#8211; that&amp;#8217;s not supposed to happen is it? After reading further I began to almost see the writers at the front of a computer lab speaking to me sitting at a PC &amp;#8211; this easy to read tone engaged me in the book and the blend of content, hands on activities, and reviews made it an interactive experience &amp;#8211; not what I&amp;#8217;ve come to expect from the reference manuals I normally have on hand! The book has some great use cases and full detail without overwhelming the reader. It&amp;#8217;s split up into logical bite-sized chapters that could be tackled one at a time when the reader has a quiet moment. Packt release this book as an eBook which I found useful &amp;#8211; it meant that you could switch over to a web browser and run through the activities on the demo site provided specifically for readers of the book. I have a multi-monitor display which made this easy &amp;#8211; some readers will definitely prefer the hard copy. Unfortunately the urls in the eBook weren&amp;#8217;t live urls so I had to copy/paste them, but that didn&amp;#8217;t take too much effort.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;d recommend this book to anyone new to ePortfolios or new to Mahara &amp;#8211; it gives the reader a really good detailed knowledge of not only the features of Mahara, but how they can be used in a variety of ways for very different groups of people. The book is great for real users &amp;#8211; teachers/students/educators &amp;#8211; it gives a much &amp;#8220;easier to digest&amp;#8221;, concise guide than the mahara.org online documentation. It&amp;#8217;s not aimed at Administrators or Developers but if you haven&amp;#8217;t implemented Mahara yet it gives some good information for new administrators or those considering Mahara&amp;#8217;s suitability towards the end of the book. I&amp;#8217;d highly recommend that any organisation running Mahara grabs a hard copy of the book to lend someone when they walk into your office and ask &amp;#8220;so what&amp;#8217;s this Mahara thing?&amp;#8221;&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s available on &lt;a href=&quot;http://www.amazon.com/gp/product/1847199062?ie=UTF8&amp;amp;tag=danmarsdencom-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1847199062&quot;&gt;Amazon&lt;/a&gt;, but cheaper from &lt;a title=&quot;Mahara 1.2 E-Portfolios&quot; href=&quot;http://www.packtpub.com/mahara-1-2-e-portfolios-beginners-guide/book/mid/170210c4076s?utm_source=danmarsden.com&amp;amp;utm_medium=affiliate&amp;amp;utm_content=blog&amp;amp;utm_campaign=mdb_002532&quot;&gt;Packt Publishing&lt;/a&gt; who sell the eBook as well.&lt;/p&gt;</description>
	<pubDate>Thu, 18 Feb 2010 10:58:49 +0000</pubDate>
</item>
<item>
	<title>François Marier: Excluding files from git archive exports using gitattributes</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-4834839572126540007</guid>
	<link>http://feeding.cloud.geek.nz/2010/02/excluding-files-from-git-archive.html</link>
	<description>&lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/git-archive.html&quot;&gt;git archive&lt;/a&gt; provides an easy way of producing a tarball directly from a project's git branch.&lt;br /&gt;&lt;br /&gt;For example, this is what we use to build the &lt;a href=&quot;http://www.mahara.org&quot;&gt;Mahara&lt;/a&gt; tarballs:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;git archive --format=tar --prefix=mahara-${VERSION}/ ${RELEASETAG} | bzip2 -9 &gt; ${CURRENTDIR}/mahara-${RELEASE}.tar.bz2&lt;/code&gt;&lt;/blockquote&gt;If you do this however, you end up with the entire contents of the git branch, including potentially undesirable files like &lt;tt&gt;.gitignore&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;There is an easy, though not very well-documented, way of specifying files to exclude from such exports: &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html&quot;&gt;gitattributes&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is what the Mahara &lt;tt&gt;.gitattributes&lt;/tt&gt; file looks like:&lt;br /&gt;&lt;blockquote&gt;&lt;code&gt;/test &lt;b&gt;export-ignore&lt;/b&gt;&lt;br /&gt;.gitattributes &lt;b&gt;export-ignore&lt;/b&gt;&lt;br /&gt;.gitignore &lt;b&gt;export-ignore&lt;/b&gt;&lt;/code&gt;&lt;/blockquote&gt;With this file in the root directory of our repository, tarballs we generate using &lt;tt&gt;git archive&lt;/tt&gt; no longer contain the &lt;a href=&quot;http://www.seleniumhq.org&quot;&gt;selenium&lt;/a&gt; tests or the git config files.&lt;br /&gt;&lt;br /&gt;If you start playing with this feature however, make sure you &lt;b&gt;commit the &lt;tt&gt;.gitattributes&lt;/tt&gt; file to your repository before running &lt;tt&gt;git archive&lt;/tt&gt;&lt;/b&gt;. Otherwise the settings will not be picked up by &lt;tt&gt;git archive&lt;/tt&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-4834839572126540007?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 09 Feb 2010 17:57:32 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>François Marier: Ignoring files in git repositories</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-8799540138753212173</guid>
	<link>http://feeding.cloud.geek.nz/2009/12/ignoring-files-in-git-repositories.html</link>
	<description>According to the &lt;a href=&quot;http://www.kernel.org/pub/software/scm/git/docs/gitignore.html&quot;&gt;man page&lt;/a&gt;, there are three ways to exclude files from being tracked by &lt;a href=&quot;http://www.git-scm.org&quot;&gt;git&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Shared list of files to ignore &lt;/h2&gt;The most well-known way of preventing files from being part of a git branch is to add such files in &lt;tt&gt;.gitignore&lt;/tt&gt;. (This is analogous to CVS' &lt;tt&gt;.cvsignore&lt;/tt&gt; files.)&lt;br /&gt;&lt;br /&gt;Here's an example:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;*.generated.html&lt;br /&gt;/config.php&lt;/pre&gt;&lt;/blockquote&gt;The above ignore list will prevent automatically generated HTML files from being committed by mistake to the repository. Because this is useful to all developers on the project, &lt;tt&gt;.gitignore&lt;/tt&gt; is a good place for this.&lt;br /&gt;&lt;br /&gt;The next line prevents the local configuration file from being tracked by git, something else that all developers will want to have.&lt;br /&gt;&lt;br /&gt;One thing to note here is the use of a leading slash character with &lt;tt&gt;config.php&lt;/tt&gt;. This is to specifically match the config file in the same directory as the &lt;tt&gt;.gitignore&lt;/tt&gt; file (in this case, the root directory of the repository) but no other. Without this slash, the following files would also be ignored by git:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;/app/config.php&lt;br /&gt;/plugins/address/config.php&lt;br /&gt;/module/config.php&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;h2&gt;Local list (specific to one project)&lt;/h2&gt;For those custom files that you don't want version controlled but that others probably don't have or don't want to automatically ignore, git provides a second facility: &lt;tt&gt;.git/info/exclude&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;It works the same way as &lt;tt&gt;.gitignore&lt;/tt&gt; but be aware that this list is only stored locally and only applies to the repository in which it lives.&lt;br /&gt;&lt;br /&gt;(I can't think of a good example for when you'd want to use this one because I don't really use it. Feel free to leave a comment if you do use it though, I'm curious to know what others do with it.)&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Local list (common to all projects)&lt;/h2&gt;Should you wish to automatically ignore file patterns in all of your projects, you will need to use the third gitignore method: core.excludesfile&lt;br /&gt;&lt;br /&gt;Put this line in your &lt;tt&gt;~/.gitconfig&lt;/tt&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;[core]&lt;br /&gt;excludesfile = /home/&lt;i&gt;username&lt;/i&gt;/.gitexcludes&lt;/pre&gt;&lt;/blockquote&gt;(you need to put the absolute path to your home directory, &lt;tt&gt;~/&lt;/tt&gt; will not work here unless you use git 1.6.6 or later)&lt;br /&gt;&lt;br /&gt;and then put the patterns to ignore in &lt;tt&gt;~/.gitexcludes&lt;/tt&gt;. For example, this will ignore the automatic &lt;a href=&quot;http://www.gnu.org/software/emacs/manual/html_node/emacs/Backup.html&quot;&gt;backups made by emacs&lt;/a&gt; when you save a file:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;*~&lt;/pre&gt;&lt;/blockquote&gt;This is the ideal place to put anything that is generated by your development tools and that doesn't need to appear in your project repositories.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-8799540138753212173?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 28 Dec 2009 10:56:48 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>François Marier: Reducing website bandwidth usage</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-6435899765648327852</guid>
	<link>http://feeding.cloud.geek.nz/2009/10/reducing-website-bandwidth-usage.html</link>
	<description>There are lots of &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/5369&quot;&gt;excellent&lt;/a&gt; &lt;a href=&quot;http://code.google.com/speed/page-speed/&quot;&gt;tools&lt;/a&gt; to help web developers optimise their websites.&lt;br /&gt;&lt;br /&gt;Here are two simple things you have no excuse for overlooking on your next project.&lt;br /&gt;&lt;h2&gt;HTML, XML, Javascript and CSS files&lt;/h2&gt;One of the easiest ways to speed up a website (often to a surprising degree) is to turn on compression of plaintext content through facilities like &lt;a href=&quot;http://httpd.apache.org/docs/2.2/mod/mod_deflate.html&quot;&gt;mod_deflate&lt;/a&gt; or the &lt;a href=&quot;http://wiki.nginx.org/NginxHttpGzipModule&quot;&gt;Gzip Module&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's the Apache configuration file I normally use:&lt;br /&gt;&lt;pre&gt;AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript text/xml application/x-javascript&lt;br /&gt;BrowserMatch ^Mozilla/4 gzip-only-text/html&lt;br /&gt;BrowserMatch &quot;MSIE 6&quot; no-gzip dont-vary&lt;br /&gt;BrowserMatch ^Mozilla/4\.0[678] no-gzip&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;Images&lt;/h2&gt;As far as images go, the following tools will reduce file sizes through &lt;a href=&quot;http://en.wikipedia.org/wiki/Lossless_compression&quot;&gt;lossless compression&lt;/a&gt; (i.e. with no visual changes at all):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;&lt;a href=&quot;http://www.lcdf.org/gifsicle/&quot;&gt;gifsicle&lt;/a&gt; -O2 -b &lt;i&gt;image.gif&lt;/i&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;jpegoptim -p --strip-all &lt;i&gt;image.jpg&lt;/i&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;code&gt;optipng -o7 -q &lt;i&gt;image.png&lt;/i&gt;&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;(An alternative to &lt;a href=&quot;http://optipng.sourceforge.net/&quot;&gt;optipng&lt;/a&gt; is &lt;a href=&quot;http://pmt.sourceforge.net/pngcrush/&quot;&gt;pngcrush&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;Note that the &lt;tt&gt;--strip-all&lt;/tt&gt; argument to &lt;a href=&quot;http://www.kokkonen.net/tjko/projects.html&quot;&gt;jpegoptim&lt;/a&gt; will remove any &lt;a href=&quot;http://en.wikipedia.org/wiki/Exif&quot;&gt;EXIF&lt;/a&gt;/comments tags that may be present.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-6435899765648327852?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 09 Oct 2009 19:30:01 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>Penny Leach: mahara stand at swiss open expo</title>
	<guid>http://she.geek.nz/archives/547-guid.html</guid>
	<link>http://she.geek.nz/archives/547-mahara-stand-at-swiss-open-expo.html</link>
	<description>This Wednesday and Thursday I'm going to be at the &lt;a href=&quot;http://openexpo.ch&quot;&gt;Swiss Open Expo&lt;/a&gt;, &quot;manning&quot; the Mahara stand.    Liip are always in heavy presence at the Open Expo, but this time will be the first time we have a Mahara stand, so it's pretty exciting! &lt;br /&gt;
&lt;br /&gt;
If you're in or around Winterthur and interested in Open Source e-portfolios, come and say hi!</description>
	<pubDate>Mon, 21 Sep 2009 08:50:28 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>Penny Leach: LEAP2A support coming soon to a Moodle near you!</title>
	<guid>http://she.geek.nz/archives/545-guid.html</guid>
	<link>http://she.geek.nz/archives/545-LEAP2A-support-coming-soon-to-a-Moodle-near-you!.html</link>
	<description>Finally, I am very happy to annouce that I will soon be working on adding &lt;a href=&quot;http://wiki.cetis.ac.uk/LEAP_2.0&quot;&gt;LEAP2A&lt;/a&gt; support to the Moodle &lt;a href=&quot;http://docs.moodle.org/en/Development:Portfolio_API&quot;&gt;Portfolio API&lt;/a&gt; that will be in Moodle 2.0.&lt;br /&gt;
&lt;br /&gt;
There's already a &lt;a href=&quot;http://docs.moodle.org/en/Development:LEAP2A_Portfolio_Implementation&quot;&gt;rough specification&lt;/a&gt; for this work, and it's been on my TODO list for a very long time.&lt;br /&gt;
&lt;br /&gt;
LEAP2A is a very simple and open atom-based e-portfolio standard, to promote interoperability between e-portfolio systems.   Interoperability is very important in an e-portfolio system, because it is vital to be able to transport portfolio data around with you, as you move between educational providers, into higher education, and on to professional development.  Imagine having in one portfolio system, your entire portfolio of work, starting from your first day at primary school, right up to your continued professional development.  Of course, one would use many different portfolio systems over that time, so some sort of open standard to transport data around is imperative.&lt;br /&gt;
&lt;br /&gt;
I was involved with the LEAP standard group last year when I was living in London, adding LEAP2A support to Mahara.  I attended the LEAP meetings in the UK, and worked on the export side of the project.  &lt;a href=&quot;http://nigel.mcnie.name&quot;&gt;Nigel&lt;/a&gt; took over when I left Catalyst and continued, adding the import side (which is of course, much harder).&lt;br /&gt;
&lt;br /&gt;
But wait, you ask. Isn't Moodle a learning management system, not an e-portfolio?  Why do we care about interoperability with an e-portfolio standard?  The answer is of course, that while you're working, you are entering data into Moodle, and at the end of the course, the natural thing to want to do is to export some of that data into your portfolio.  At the moment, we have the Portfolio API in Moodle for that, which I worked on for last year for 3 months, during my time at &lt;a href=&quot;http://moodle.com/hq&quot;&gt;Moodle HQ&lt;/a&gt;. However, at the time I wrote it, it wasn't at all clear what portfolio standard we should support, so content is transferred in &quot;raster&quot; format (rendered to HTML or a file like a pdf).  Since then though, LEAP has emerged as a clear front runner, and now that Mahara 1.2 (almost released!) fully supports importing and exporting LEAP2A, the time is right for us to take the plunge and add LEAP2A support to Moodle's Portfolio API.   This improves the integration between Moodle and Mahara, as well as opening the door for Moodle to integrate better with other e-portfolio systems that &lt;a href=&quot;http://wiki.cetis.ac.uk/Portfolio_interoperability_projects&quot;&gt;implement the LEAP2A standard&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I am therefore very grateful to the State of New Hampshire for providing the funding to &lt;a href=&quot;http://liip.ch&quot;&gt;Liip&lt;/a&gt; for me to do this work.  This comes from a grant from the New Hampshire Department of Education, and a collaborate group made up of the following school districts:&lt;br /&gt;
&lt;ul&gt; &lt;li&gt;&lt;a href=&quot;http://sau16.org/&quot;&gt;Exeter Region Cooperative&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://windhamsd.org/&quot;&gt;Windham&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.orcsd.org/&quot;&gt;Oyster River&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://sau61.org/&quot;&gt;Farmington&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=&quot;http://www.newmarket.k12.nh.us/&quot;&gt;Newmarket&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.timberlane.net&quot;&gt;Timberlane&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;Special thanks also to Matt Oquist who has been tirelessly helping me find funding for this work!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Mon, 14 Sep 2009 12:25:05 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>Dan Marsden: Moodle Networking bugs</title>
	<guid>http://danmarsden.com/blog/?p=114</guid>
	<link>http://danmarsden.com/blog/2009/09/11/moodle-networking-bugs/</link>
	<description>&lt;p&gt;I&amp;#8217;ve been battling with a couple of issues with Moodle Networking over the past week!&lt;/p&gt;
&lt;p&gt;The first was an issue where the configuration of Mnet between a Moodle and Mahara site on the same server worked fine, it obtained the various keys as necessary, but when an Mnet call was made like a Single Sign on call from a Moodle user accessing Mahara, it would fail &amp;#8211; with no useable error message anywhere to be found! &amp;#8211; I eventually traced it down to a call to xml_parse &amp;#8211; turns out that libxml in &lt;a href=&quot;http://bugs.php.net/bug.php?id=45996&quot;&gt;certain versions of PHP&lt;/a&gt; is quite buggy &amp;#8211; and this is actually a known issue with other areas of Moodle. &lt;a title=&quot;Spoiled ancoding in 1.9.3&quot; href=&quot;http://tracker.moodle.org/browse/MDL-17136&quot;&gt; MDL-17136&lt;/a&gt; &lt;a title=&quot;After Course Restoration HTML entities get broken&quot; href=&quot;http://tracker.moodle.org/browse/MDL-16759&quot;&gt;MDL-16759 &lt;/a&gt;&lt;/p&gt;
&lt;p&gt;IMO we should really notify administrators that they are potentially running buggy code so I&amp;#8217;ve created &lt;a href=&quot;http://tracker.moodle.org/browse/MDL-20220&quot;&gt;MDL-20220&lt;/a&gt; to add such a notification!&lt;/p&gt;
&lt;p&gt;The other issue I&amp;#8217;ve been battling with is related to Moodle and Mahara not generating any keys at all &amp;#8211; this is centered around the installation not being able to locate an openssl.cnf file on the server, and it appears in my testing that adding an environment var on the server didn&amp;#8217;t reliably work! &amp;#8211; also I needed to get this to work on a XAMPP install or an &lt;a href=&quot;http://www.chsoftware.net/en/useware/mowes/mowes.htm&quot;&gt;MoWeS&lt;/a&gt; install, so setting an environment var wasn&amp;#8217;t really an option! I&amp;#8217;ve got an incoming  &lt;a href=&quot;http://tracker.moodle.org/browse/MDL-13503&quot;&gt;patch&lt;/a&gt; for 1.9Stable and Head that fixes this &amp;#8211; I also have a patch for Mahara which will go upstream very soon!&lt;/p&gt;</description>
	<pubDate>Fri, 11 Sep 2009 09:58:06 +0000</pubDate>
</item>
<item>
	<title>Nigel McNie: What's up in Mahara land recently?</title>
	<guid>http://nigel.mcnie.name/blog/whats-up-in-mahara-land-recently</guid>
	<link>http://nigel.mcnie.name/blog/whats-up-in-mahara-land-recently</link>
	<description>&lt;div class=&quot;document&quot;&gt;


&lt;p&gt;Here's a snapshot from my point of view about what's going on across all aspects of Mahara.&lt;/p&gt;
&lt;div class=&quot;section&quot; id=&quot;hackfests&quot;&gt;
&lt;h1&gt;Hackfests&lt;/h1&gt;
&lt;p&gt;Yesterday, &lt;a class=&quot;reference external&quot; href=&quot;http://she.geek.nz&quot; shape=&quot;rect&quot;&gt;Penny&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://seld.be&quot; shape=&quot;rect&quot;&gt;Jordi&lt;/a&gt; (both from Mahara partner &lt;a class=&quot;reference external&quot; href=&quot;http://liip.ch&quot; shape=&quot;rect&quot;&gt;Liip&lt;/a&gt;) and I had another weekend hackfest. Penny has been adding a framework for unit testing, and managed to get the first test working. Jordi was working on swapping &lt;a class=&quot;reference external&quot; href=&quot;http://smarty.net&quot; shape=&quot;rect&quot;&gt;Smarty&lt;/a&gt; for &lt;a class=&quot;reference external&quot; href=&quot;http://dwoo.org&quot; shape=&quot;rect&quot;&gt;Dwoo&lt;/a&gt;, while I continued hacking on &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/interaction/forum/topic.php?id=917&quot; shape=&quot;rect&quot;&gt;View Themes&lt;/a&gt; support. Pics: &lt;a class=&quot;reference external&quot; href=&quot;http://temp.mjollnir.org/firstswissmaharahackfest.jpg&quot; shape=&quot;rect&quot;&gt;Switzerland end&lt;/a&gt;, &lt;a class=&quot;reference external&quot; href=&quot;http://stuff.nigel.mcnie.name/nz-hackfest.jpg&quot; shape=&quot;rect&quot;&gt;NZ end&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Penny has been working on unit testing, as it's something we developers have realised has been lacking in Mahara for some time now. What unit tests do is give us more confidence that when we make a change (whether it's a bug fix or new feature), that the rest of Mahara continues working exactly the way it used to - i.e., we didn't inadvertently add any more bugs. This has the result that we can continue development safe in the knowledge that we didn't break anything that worked before, which will result in better quality. It will also make it easier for enthusiastic hackers to make changes to Mahara and know they haven't broken anything important.&lt;/p&gt;
&lt;p&gt;Unit testing isn't the only way we've been trying to integrate testing - Gerald Quimpo from &lt;a class=&quot;reference external&quot; href=&quot;http://catalyst.net.nz&quot; shape=&quot;rect&quot;&gt;Catalyst&lt;/a&gt; has been resurrecting the &lt;a class=&quot;reference external&quot; href=&quot;http://seleniumhq.org/&quot; shape=&quot;rect&quot;&gt;Selenium&lt;/a&gt; tests that come with Mahara, and has done an excellent job in getting them working again, while also setting up a Continuous Integration server (&lt;a class=&quot;reference external&quot; href=&quot;https://hudson.dev.java.net&quot; shape=&quot;rect&quot;&gt;Hudson&lt;/a&gt;) so the tests will be run regularly. Soon, we'll have that available publicly so everyone can see which tests are currently passing and failing.&lt;/p&gt;
&lt;p&gt;Backtracking a tiny bit - Jordi has been working on swapping Smarty for Dwoo, a change we would like to do for a couple of reasons. Firstly, Smarty is bigger and slower, perhaps largely due to the fact that it needs to support PHP4 (which Mahara doesn't support). Secondly, Smarty doesn't make it easy for us to output variables that are HTML escaped by default - which is currently the leading cause of security vulnerabilities in Mahara. We haven't had many security vulns actually, Mahara is reaping the benefits of a security-oriented development ethic. But of the few we've had, almost all of them have been because someone forgot to put &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;|escape&lt;/span&gt;&lt;/tt&gt; on the end of a smarty variable. So switching to Dwoo will cut down that entire avenue of attack.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;mahara-1-2&quot;&gt;
&lt;h1&gt;Mahara 1.2&lt;/h1&gt;
&lt;p&gt;We &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/interaction/forum/topic.php?id=963&quot; shape=&quot;rect&quot;&gt;released the first beta of Mahara 1.2&lt;/a&gt; last week. That means we're looking for bug reports now, and encourage people to download it and try out the new features. Here's a short list of the coolest new features in 1.2:&lt;/p&gt;
&lt;ul class=&quot;simple&quot;&gt;
&lt;li&gt;&lt;a class=&quot;reference external&quot; href=&quot;http://wiki.mahara.org/Developer_Area/Import//Export&quot; shape=&quot;rect&quot;&gt;Import and Export&lt;/a&gt; - Mahara supports the LEAP2A standard for import/export, and in addition, allows you to export an HTML version of your portfolio (including a nice HTML represntation of an individual View).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&quot;My Files&quot; and file handling improvements&lt;/strong&gt; - now the My Files section makes it easier to quickly upload files, and degrades to work without javascript. You can now upload files directly into Views, and use a standard directory browser to choose files in Views. For developers, we created a pieform element for uploading/attaching files, which will make it easier than ever to do this in custom plugins.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Theming&lt;/strong&gt; - we're shipping with &lt;strong&gt;6&lt;/strong&gt; themes, to give people an idea of how they can customise their Mahara. We've done a lot of rework of how themes are created, so from 1.2 it'll be even easier to create a custom theme. We even documented the process (finally!).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Usability/Comprehension tweaks&lt;/strong&gt; - Now groups get a default forum, and blogs get a default blog. If there is only one forum or blog, users are taken straight to it. This should really help in preventing the problem where people create a blog as if it's a blog post, and should make the forums an even more useful tool.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improved Moodle/Mahara integration&lt;/strong&gt; - with a custom patch to Moodle 1.9, you'll be able to submit a View to Moodle for assessment as an assignment answer. How useful is that? Now people can keep their data in their portfolio, and mash it together into a View for assessment over on Moodle, where all the useful grading functionality is :)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There's s still a bit of work to go before Mahara 1.2 will be ready though. I need to finish off LEAP2A import - currently resume import is only half finished, and view import is just begun. We'll also need a fancy UI for it, and of course there are some inevitible bugs that will need squashing.&lt;/p&gt;
&lt;p&gt;Also, I'd really like to get view themes to a point where it can be merged also. That'll really help people personalise their environment. If I get around to it, maybe we can add a theme chooser for users to change how they see the entire site, not just individual Views.&lt;/p&gt;
&lt;p&gt;Other than that though, I think we're looking pretty good!&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;code-contribution-policy&quot;&gt;
&lt;h1&gt;Code Contribution Policy&lt;/h1&gt;
&lt;p&gt;We are currently preparing a policy for contributors to the codebase. We aren't going to be wanting copyright assignment, but we are going to make sure all contributions are as legal as we can make them ;). Unlike many open source projects, Mahara is actually in a pretty good position legally, as most members of the team are well aware of the legal issues around open source and licensing, and we take legal issues seriously. Our policy won't be onerous, but will ensure we stay legit now and into the future.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;mahara-1-3&quot;&gt;
&lt;h1&gt;Mahara 1.3&lt;/h1&gt;
&lt;p&gt;Though 1.2 is not out yet, talk is already shifting in some departments to the plans we have for Mahara 1.3. The big focus there will be usability, and we're going to target that in a couple of main areas - the navigation, and View creation.&lt;/p&gt;
&lt;p&gt;For the navigation, our current plan is to adopt a dropdown menu structure, organised more to how users think when they're looking for something. The main categories will be roughly along the lines of &quot;My Stuff&quot;, &quot;Friends &amp;amp; Groups&quot; and &quot;Sharing&quot;. We'll build a demo of this at some point after 1.2 so the community can see it in action and give feedback, though I've seen it in action elsewhere and it's easy to grasp. Furthermore, the addition of &quot;horizontal navigation&quot; - where when you're at one page you're given suggestions about what else you might be looking for - should help tremendously as well.&lt;/p&gt;
&lt;p&gt;We're also going to have a good look at the View creation process. The Drag and Drop and layout concepts won't be changing, but the layout of the editing screens themselves will be improved a lot. We're hoping we can even ditch a step to make things simpler. I think the biggest gains will be seen on the View Access screen, which currently can be a bit of a minefield to navigate. We'll get mockups out some time after 1.2 also.&lt;/p&gt;
&lt;p&gt;Other stuff we might do could include Group Views, a User Dashboard (as a View of course!), and &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/interaction/forum/topic.php?id=956&quot; shape=&quot;rect&quot;&gt;overhauling the notification system&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div class=&quot;section&quot; id=&quot;mahara-growth&quot;&gt;
&lt;h1&gt;Mahara Growth&lt;/h1&gt;
&lt;p&gt;And last but not least, here are some interesting statistics about Mahara and its community:&lt;/p&gt;
&lt;p&gt;We now have over 3000 members of the &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/group/view.php?id=1&quot; shape=&quot;rect&quot;&gt;mahara.org community&lt;/a&gt;, with &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/partners&quot; shape=&quot;rect&quot;&gt;17 partners worldwide&lt;/a&gt;. The community growth has been steady since we launched the new mahara.org last November. The site receives nearly 25,000 visits a month (for the geeks among you: 57% firefox and 27% IE). Of these visitors, we get the most from the US, followed by the UK, Germany, Spain, Australia and then New Zealand.&lt;/p&gt;
&lt;p&gt;Since we added the ability for sites to register on mahara.org in May, we now have over 50 sites doing this every week. These sites together add to some 12,000 users, but this doesn't include mahara.org, or the New Zealand &lt;a class=&quot;reference external&quot; href=&quot;http://myportfolio.ac.nz&quot; shape=&quot;rect&quot;&gt;MyPortfolio&lt;/a&gt; &lt;a class=&quot;reference external&quot; href=&quot;http://myportfolio.school.nz&quot; shape=&quot;rect&quot;&gt;service&lt;/a&gt; - if these numbers were included, the total would rise to nearly 25,000. Again for the geeks - we are seeing a 75/25 split of MySQL to PostgreSQL. Hopefully things will skew more to the PostgreSQL side of that equation as time goes on :). Of the registered sites, the largest seem to be run by Blackpool University, Uni Krems (Austria) and Birmingham City University, all of which have thousands of users.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
	<pubDate>Sun, 23 Aug 2009 03:11:32 +0000</pubDate>
</item>
<item>
	<title>Penny Leach: Changing my approach to keysigning</title>
	<guid>http://she.geek.nz/archives/541-guid.html</guid>
	<link>http://she.geek.nz/archives/541-Changing-my-approach-to-keysigning.html</link>
	<description>After attending Debconf 9 in Cáceres, Spain, and talking to various people about their different approaches to validating identity, I have decided to change my approach to keysigning.&lt;br /&gt;
&lt;br /&gt;
In order to sign your key, I must have met you before and can recall your face or name.  If I have not met you before, I must have had an interesting conversation with you during this meeting, and am relatively sure I will be able to recall you in future meetings.&lt;br /&gt;
&lt;br /&gt;
I will of course still need to look at government issued identification for people I don't know very well who fit into one of the two above criteria.&lt;br /&gt;
&lt;br /&gt;
Part of the reason for this change is that for the second time, someone didn't want to sign my key because my New Zealand passport has the name &quot;Penelope&quot; (along with all other documents like my two driving licenses and Swiss B Permit).  While I can understand this, to me it shows that the traditional method of verifying identity using government issued identification is fundamentally flawed.  When I think about what comprises my identity, yes, my name is a big part of it, and I consider my name to be &lt;b&gt;Penny&lt;/b&gt;. I have never in my life been called Penelope.  Not by my family, teachers, colleagues, friends or lovers.  It's just not part of my identity, and anyone who knows anything about me, probably knows that.  So what are we trying to achieve by keysigning then?  The fact that the person you meet is in control of that key, and you've verified their identity.   Sorry, but &quot;Penelope&quot; doesn't go a very long way to make up any part of my identity.&lt;br /&gt;
&lt;br /&gt;
Identity is something I've been thinking about a lot lately for various other reasons (largely after reading &lt;a href=&quot;http://www.amazon.co.uk/Electronic-Portfolios-Personal-Information-Development/dp/1843344017&quot;&gt;Simon Grant's book&lt;/a&gt; about the use of e-portfolios for personal information, personal development and personal values), and intend to blog about in the future.&lt;br /&gt;
&lt;br /&gt;
At any rate, conferences like Debconf are a great way to meet people and have interesting and thought provoking conversations, and me being difficult and refusing to sign someone's key because I didn't know them, or hadn't had any sort of meaningful conversation with them, led to a few interesting and thought provoking conversations.  So there's an added bonus.</description>
	<pubDate>Sun, 02 Aug 2009 08:27:55 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>François Marier: 3 ways to improve your source control history</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-4650021723036570516</guid>
	<link>http://feeding.cloud.geek.nz/2009/07/3-ways-to-improve-your-source-control.html</link>
	<description>A few weeks ago, Linus Torvalds wrote a &lt;a href=&quot;http://torvalds-family.blogspot.com/2009/06/happiness-is-warm-scm.html&quot;&gt;blog post&lt;/a&gt; talking about how happy he was with the way that the last Linux merge window was going. Especially given how flexible distributed source control systems are and how long it takes before developers understand &lt;a href=&quot;http://www.mail-archive.com/dri-devel@lists.sourceforge.net/msg39091.html&quot;&gt;how to use them properly&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Most Free Software projects collaborate with external contributors through the use of &lt;a href=&quot;http://feeding.cloud.geek.nz/2009/06/writing-perfect-patch.html&quot;&gt;patches&lt;/a&gt; and with project members through &lt;b&gt;shared source control&lt;/b&gt; systems. Keeping a clean source control history in this case can:&lt;ul&gt;&lt;li&gt;ease maintenance of the codebase (especially when merging between multiple active branches) and&lt;/li&gt;&lt;li&gt;facilitate collaboration with other developers who need to quickly grasp what your changes are all about.&lt;/li&gt;&lt;/ul&gt;Here are three things I've put in practice in a few recent projects.&lt;br /&gt;&lt;h2&gt;Reduce the noise on the main branch&lt;/h2&gt;If you use your source control system in a traditional centralised way, make sure that the main branch has as little noise as possible:&lt;ul&gt;&lt;li&gt;use &lt;b&gt;feature branches&lt;/b&gt; when developing new functionality (i.e. use one branch per feature)&lt;/li&gt;&lt;li&gt;&lt;b&gt;rebase&lt;/b&gt; into a small number of commits instead of merging directly into the main branch (or use something like &lt;tt&gt;git cherry-pick -n&lt;/tt&gt; on your commits) &lt;/li&gt;&lt;/ul&gt;It will then be much easier to &lt;b&gt;port these changes across to a different version&lt;/b&gt; and to &lt;b&gt;revisit the changes several months later&lt;/b&gt;.&lt;br /&gt;&lt;h2&gt;Make each commit a logical unit&lt;/h2&gt;Ideally, the main branch should be &lt;b&gt;fully usable at any point in its history&lt;/b&gt;. For example, if a refactoring commit breaks an existing feature, it should also include any necessary fixes. &lt;i&gt;Progress&lt;/i&gt; and &lt;i&gt;fixup&lt;/i&gt; commits belong to private branches and should be cleaned up before the code is published on a public repository.&lt;br /&gt;&lt;br /&gt;A commit shouldn't be too small, but at the same time, it shouldn't be too large. Before pushing a large commit, ask yourself whether or not it could be broken down into &lt;b&gt;smaller or more meaningful units&lt;/b&gt;. Introducing a new feature through a number of smaller self-contained units often makes a branch's history much more readable.&lt;br /&gt;&lt;h2&gt;Write meaningful commit messages&lt;/h2&gt;A commit message will typically be seen along with its patch. Therefore the ideal commit message will include everything which is not immediatly obvious from the code changes:&lt;ul&gt;&lt;li&gt;A short &lt;b&gt;description of the new feature&lt;/b&gt; it introduces (or how to &lt;b&gt;reproduce the bug&lt;/b&gt; it fixes)&lt;/li&gt;&lt;li&gt;Links to &lt;b&gt;related commits&lt;/b&gt; (e.g. &quot;Fix bug introduced in COMMIT_ID&quot;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Bug numbers&lt;/b&gt; related to this commit&lt;/li&gt;&lt;li&gt;The &lt;b&gt;main area&lt;/b&gt; of the code (or &lt;i&gt;subsystem&lt;/i&gt;) that this commit touches (as part of the short description, so that it's easily &lt;i&gt;grep&lt;/i&gt;able)&lt;/li&gt;&lt;/ul&gt;Here's an example of a good commit message from version 2.6.29 of the Linux kernel:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;commit 4869fdea77052c480c54b9e66a927ba036eab29e&lt;br /&gt;Author: Mikulas Patocka &lt;br /&gt;Date:   Mon Jun 22 10:08:02 2009 +0100&lt;br /&gt;&lt;br /&gt;dm mpath: validate table argument count&lt;br /&gt;&lt;br /&gt;commit 0e0497c0c017664994819f4602dc07fd95896c52 upstream.&lt;br /&gt;&lt;br /&gt;The parser reads the argument count as a number but doesn't check that&lt;br /&gt;sufficient arguments are supplied. This command triggers the bug:&lt;br /&gt;&lt;br /&gt;dmsetup create mpath --table &quot;0 `blockdev --getsize /dev/mapper/cr0`&lt;br /&gt; multipath 0 0 2 1 round-robin 1000 0 1 1 /dev/mapper/cr0&lt;br /&gt; round-robin 0 1 1 /dev/mapper/cr1 1000&quot;&lt;br /&gt;kernel BUG at drivers/md/dm-mpath.c:530!&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Good commits and useful source control histories are great ways of documenting your code. If there are other conventions or practices you've found useful in your use of source control systems, please leave a comment!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-4650021723036570516?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 29 Jul 2009 23:52:39 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>Penny Leach: Best Education Hacker award</title>
	<guid>http://she.geek.nz/archives/540-guid.html</guid>
	<link>http://she.geek.nz/archives/540-Best-Education-Hacker-award.html</link>
	<description>It seems I am the recipient of one of this year's &lt;a href=&quot;http://google-opensource.blogspot.com/2009/07/congratulations-to-winners-of-google.html&quot;&gt;Google-O'Reilly Open Source Awards&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is really an amazing thing for me and I'm quite overwhelmed by it. Looking back over the last 5 years I've been working on this Open Source Education stuff, there are so many people who have helped me out, inspired and motivated me, and I'm quite sure that this award is a recognition of all of the work of those people as well.   The list is far too long to mention, but some of the people who stand out the most over the years are Andrew McMillan, Martín Langhoff, Richard Wyles, Martin Dougiamas, Eloy Lafuente, Nicolas Connault, Nigel McNie, and Heinz Krettek.&lt;br /&gt;
&lt;br /&gt;
Additionally, I am one of those lucky people who get to work on Open Source during work time - from 2004 to early this year for &lt;a href=&quot;http://catalyst.net.nz&quot;&gt;Catalyst&lt;/a&gt; in New Zealand, and now for &lt;a href=&quot;http://liip.ch&quot;&gt;Liip&lt;/a&gt; in Switzerland.   I am immensely grateful that I have had the encouragement and support of my employers.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://moodle.org/mod/forum/discuss.php?d=128795&quot;&gt;Finally, a pony!&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The response to this has been immense - I have had emails, tweets, instant messages from many many people.  I cannot respond to everyone individually but I am very grateful for the support from each and every one of you.</description>
	<pubDate>Thu, 23 Jul 2009 06:31:05 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>François Marier: Writing the perfect patch</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-7731510958448121124</guid>
	<link>http://feeding.cloud.geek.nz/2009/06/writing-perfect-patch.html</link>
	<description>Other people &lt;a href=&quot;http://userweb.kernel.org/%7Eakpm/stuff/tpp.txt&quot;&gt;have written&lt;/a&gt; and &lt;a href=&quot;http://cs.anu.edu.au/students/comp8440/lectures.php&quot;&gt;talked (in Lecture 3)&lt;/a&gt; about writing the perfect patch for a Free Software project. The goal there is to &lt;b&gt;increase the likelihood that a patch will be accepted&lt;/b&gt; by the project developers.&lt;br /&gt;&lt;br /&gt;Integrating and testing patches takes time and so reducing that burden is essential when interacting with busy maintainers. Especially if they're volunteers.&lt;br /&gt;&lt;br /&gt;Here's what I try to keep in mind when preparing a patch.&lt;br /&gt;&lt;h2&gt;Use the right options to &lt;tt&gt;diff&lt;/tt&gt;&lt;/h2&gt;These two options should always be part of your call to the &lt;tt&gt;diff&lt;/tt&gt; command:&lt;ul&gt;&lt;li&gt;&lt;b&gt;-u&lt;/b&gt;: use the most common patch format, unidiff.&lt;/li&gt; &lt;li&gt;&lt;b&gt;-p&lt;/b&gt;: include the name of the function that's being changed.&lt;/li&gt;&lt;/ul&gt;and this one can be useful if the output seems unnecessarily large:&lt;ul&gt;&lt;li&gt;&lt;b&gt;-d&lt;/b&gt;: try hard to find a smaller set of changes.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Minimize the number of changes&lt;/h2&gt;You need to draw attention to the changes that you're proposing and remove all other potential distractions:&lt;ul&gt;&lt;li&gt;&lt;b&gt;Follow the coding style of the original file.&lt;/b&gt; Your changes must fully blend in or they are likely to be rejected.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Do not re-indent existing code.&lt;/b&gt; This will make it look like you modified every line.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pay attention to whitespace changes.&lt;/b&gt; In particular: end-of-line characters, trailing spaces and tab-versus-space differences. Use the &lt;tt&gt;dos2unix&lt;/tt&gt; or &lt;tt&gt;unix2dos&lt;/tt&gt; commands if you need to.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Gratuitous refactoring of existing code.&lt;/b&gt; Unless the refactoring makes your change smaller or easier to understand, keep it for another patch.&lt;/li&gt;&lt;/ul&gt;Of course all of the above would be acceptable patches &lt;b&gt;on their own&lt;/b&gt;, just not combined with other types of changes.&lt;br /&gt;&lt;h2&gt;Only one logical change at a time&lt;/h2&gt;Patches often need to be broken up into a series of logical changes to avoid these two extremes:&lt;ul&gt;&lt;li&gt;the &lt;b&gt;gigantic patch&lt;/b&gt; which adds a number of features and fixes a couple of bugs but scares everybody&lt;/li&gt;&lt;li&gt;a &lt;b&gt;series of interdependent patches&lt;/b&gt; which all relate to the same change and must all be applied together&lt;/li&gt;&lt;/ul&gt;It's a bit of a balancing act, but a good rule of thumb is:&lt;ul&gt;&lt;li&gt;to have &lt;b&gt;one patch per feature or bug&lt;/b&gt; and&lt;/li&gt;&lt;li&gt;to try to find the smallest (yet meaningful) change which can be applied on its own.&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;It's not just about the patch&lt;/h2&gt;Your patch can be really good, but the email (or the bug tracker update) announcing it should also contain:&lt;ul&gt;&lt;li&gt;a good &lt;b&gt;description&lt;/b&gt; of the problem it solves and how it solves it&lt;/li&gt;&lt;li&gt;the output of &lt;b&gt;&lt;tt&gt;diffstat&lt;/tt&gt;&lt;/b&gt; to give an idea of the size of the change&lt;/li&gt;&lt;/ul&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-7731510958448121124?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 01 Jul 2009 00:10:54 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>Penny Leach: Mahara hackfest weekend of 26/27/28 June</title>
	<guid>http://she.geek.nz/archives/537-guid.html</guid>
	<link>http://she.geek.nz/archives/537-Mahara-hackfest-weekend-of-262728-June.html</link>
	<description>There's a huge amount of work still to be done for Mahara 1.2 to be released, and Nigel and I have decided to have a formal hackfest rather than just our semi regular Saturday morning CH/Saturday night NZ irc hackfests.&lt;br /&gt;
&lt;br /&gt;
We will be in the irc channel (#mahara-dev on freenode) all weekend (barring normal everyday things like eating dinner) and working on the list of things still to do for Mahara 1.2.  We will ourselves mainly be working on the theming changes that &lt;a href=&quot;http://nigel.mcnie.name/blog/themes-in-mahara-12&quot;&gt;Nigel already blogged about&lt;/a&gt;, but anyone else interested in getting into Mahara development and helping us get 1.2 out the door would be more than welcome to join in and we have many bugs on the tracker that you can help with!&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Thu, 18 Jun 2009 06:20:56 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>Nigel McNie: Mahara 1.2 Import/Export Demo</title>
	<guid>http://nigel.mcnie.name/blog/mahara-12-importexport-demo</guid>
	<link>http://nigel.mcnie.name/blog/mahara-12-importexport-demo</link>
	<description>&lt;div class=&quot;document&quot;&gt;


&lt;p&gt;OK so my last post was just all text, which is a slog to read through. So here, I made a video about Mahara 1.2's import/export:&lt;/p&gt;
&lt;div class=&quot;center&quot;&gt;&lt;/div&gt;&lt;p&gt;I don't think I got the sound levels right and I'd have loved to have added a background track, but video editing on linux is a pain. It's only my second video so be nice. The next one should be better again ;)&lt;/p&gt;
&lt;/div&gt;</description>
	<pubDate>Thu, 18 Jun 2009 03:50:33 +0000</pubDate>
</item>
<item>
	<title>Nigel McNie: Themes In Mahara 1.2</title>
	<guid>http://nigel.mcnie.name/blog/themes-in-mahara-12</guid>
	<link>http://nigel.mcnie.name/blog/themes-in-mahara-12</link>
	<description>&lt;div class=&quot;document&quot;&gt;


&lt;p&gt;One of the things we're doing for the upcoming 1.2 release of Mahara is doing a big tidyup of the theming. There are some code level changes, but the most important changes are to do with the themes themselves.&lt;/p&gt;
&lt;p&gt;Note that I said &quot;themes&quot;. This is because 1.2 won't have just one theme - it'll have six. One is a brushed up version of the default, one is &quot;special&quot; (more on that in a minute), and the other four are all-new themes that will give Mahara users a chance to immediately personalise their installation &quot;out of the box&quot;. The new themes are mainly just colour changes, but they're pretty damn good looking colour changes all the same. They'll also give people good examples to work from when creating their own themes.&lt;/p&gt;
&lt;p&gt;Now, the special theme. Mahara will now have a theme called 'raw', which is a very stripped down theme. There's very few colours or styles, and most of the theme's job is to position everything correctly and set sensible defaults. &lt;em&gt;All other themes extend from this theme.&lt;/em&gt; Mahara has a theme inheritance system, where by you can specify another theme as the 'parent' of your theme, and thus rely on it to provide the templates and most of the CSS. From now, every theme will ultimately extend from the 'raw' theme - including the default theme.&lt;/p&gt;
&lt;p&gt;The inheritance can have any number of levels, so for example a theme someone did for Mahara 1.1 might have a parent of the default theme which might be parented by the raw theme. Sadly, because we haven't documented the theme inheritance well, some of the themes out there have copied the entire default/ directory to create their new theme. These people will probably have noticed that when new versions of Mahara come out, sometimes bugs they are supposed to fix are not fixed - this is because the fix was made in a 'default' theme template, which is overridden by their theme's copy. When they upgrade to 1.2, it's highly likely their theme will totally break.&lt;/p&gt;
&lt;p&gt;Elsewhere on the backward compatibility front, it should be easier though. If your theme uses theme inheritance, then it will continue to inherit from the (slightly changed) default theme. You may also have to change some CSS selectors in your stylesheet to match the new HTML structure.&lt;/p&gt;
&lt;p&gt;Speaking of which, we've cleaned up the HTML immensely, and the CSS along with it. I think the default stylesheet was over 50KB in previous versions of Mahara, at the moment I have the raw theme down to much less than half that, and I don't think it will end up much bigger than 25KB. The default theme's stylesheet will be negligible in size. We're also going to cut the print stylesheet down to size, and if we get the chance we'll add in RTL and browser-specific stylesheets too.&lt;/p&gt;
&lt;p&gt;The net result of all of this is a bit of short-term pain while people migrate their themes, but a lot of long-term gain, as the HTML will be cleaner, the CSS smaller and every Mahara faster because of it. Theme development will be much easier from 1.2 onwards, I'll make sure we write documentation so people don't get caught out by the theme inheritance issue again.&lt;/p&gt;
&lt;p&gt;Maybe at some point after 1.2 we can look at some fine-tuning and performance of the theming system. I'd love to crank out some CSS sprites and javascript minification, but right now I don't think there's going to be much time other than for 'easy wins', such as expires headers and configuring mod_deflate (which Mahara does already).&lt;/p&gt;
&lt;p&gt;Anyway, that's enough from me for now. We have this theming work and finishing off import/export to do, followed by a &lt;strong&gt;lot&lt;/strong&gt; of bug fixing before 1.2 can be released. Look out for another alpha soon, at least.&lt;/p&gt;
&lt;/div&gt;</description>
	<pubDate>Wed, 17 Jun 2009 14:21:49 +0000</pubDate>
</item>
<item>
	<title>Penny Leach: Announcement: Liip now a Mahara partner!</title>
	<guid>http://she.geek.nz/archives/535-guid.html</guid>
	<link>http://she.geek.nz/archives/535-Announcement-Liip-now-a-Mahara-partner!.html</link>
	<description>I am happy to announce that &lt;a href=&quot;http://liip.ch&quot;&gt;Liip&lt;/a&gt; are now a &lt;a href=&quot;http://mahara.org/partners&quot;&gt;Mahara partner&lt;/a&gt;!  Mahara is an Open Source ePortfolio system.&lt;br /&gt;
&lt;br /&gt;
In many respects Mahara is a &quot;sister&quot; application to Moodle, providing students with a learning environment that they themselves own, giving them them the ability to showcase their work and collaborate with their peers.  However, Mahara is also well suited as a social networking system, running out of the box without Moodle.&lt;br /&gt;
&lt;br /&gt;
Mahara was originally funded by the New Zealand government's Tertiary Education Commission, and has grown into a thriving open source product that is increasingly being adopted worldwide.  It makes a lot of sense for Liip to be a partner, both because we're already the official Moodle partner in Switzerland, and Mahara fits very well into our existing list of projects we work with,  but also because I have been involved in Mahara since the start, and wanted to continue my involvement since coming to Liip.  Liip have been fantastic supporting me in this goal!&lt;br /&gt;
&lt;br /&gt;</description>
	<pubDate>Mon, 15 Jun 2009 09:21:58 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>François Marier: Troubleshooting Postgres Performance Problems</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-4625458287479958517</guid>
	<link>http://feeding.cloud.geek.nz/2009/05/troubleshooting-postgres-performance.html</link>
	<description>There are &lt;a href=&quot;http://momjian.us/main/writings/pgsql/hw_performance/index.html&quot;&gt;great&lt;/a&gt; &lt;a href=&quot;http://www.varlena.com/GeneralBits/Tidbits/perf.html&quot;&gt;resources&lt;/a&gt; to help tune &lt;a href=&quot;http://www.postgresql.org/&quot;&gt;PostgresQL&lt;/a&gt; for performance, but say you've got a Postgres database which suddenly becomes very slow. How can you figure out what's going on?&lt;br /&gt;&lt;h2&gt;General system state&lt;/h2&gt;A slow database server will typically be running out of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cpu,&lt;/li&gt;&lt;li&gt;memory or&lt;/li&gt;&lt;li&gt;disk.&lt;/li&gt;&lt;/ul&gt;So the first thing you should do is to get an overview of the system state using common UNIX tools such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;top&lt;/tt&gt; (press &lt;b&gt;c&lt;/b&gt; to see the full command line): look at CPU and memory usage&lt;/li&gt;&lt;li&gt;&lt;tt&gt;iostat -x -m 5&lt;/tt&gt;: look at i/o wait and service time&lt;/li&gt;&lt;/ul&gt;If you notice that memory is exhausted, you could play with the following &lt;tt&gt;postgresql.conf&lt;/tt&gt; settings:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;shared_buffers&lt;br /&gt;work_mem&lt;br /&gt;effective_cache_size&lt;/pre&gt;&lt;/blockquote&gt;If you see a lot of I/O, then try adjusting these settings:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;checkpoint_segments&lt;br /&gt;autovacuum_naptime&lt;br /&gt;wal_buffers&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;h2&gt;Finding slow queries&lt;br /&gt;&lt;/h2&gt;On the database side, start by determining whether:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;there is one large query holding up all of the resources or&lt;/li&gt;&lt;li&gt;the number of queries is the main problem.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;To do this, make sure that the following setting is turned on in your &lt;tt&gt;postgresql.conf&lt;/tt&gt;:&lt;pre&gt;&lt;blockquote&gt;stats_command_string = on&lt;/blockquote&gt;&lt;/pre&gt;Then fire up &lt;tt&gt;psql &lt;i&gt;dbname&lt;/i&gt;&lt;/tt&gt; and look at the &lt;span&gt;currently executing queries&lt;/span&gt;:&lt;pre&gt;&lt;blockquote&gt;SELECT usename, current_query, query_start&lt;br /&gt;FROM pg_stat_activity;&lt;/blockquote&gt;&lt;/pre&gt;(You can also add the &lt;tt&gt;procid&lt;/tt&gt; column to the query if you want to map a query to the process ID you see in &lt;tt&gt;top&lt;/tt&gt;.)&lt;br /&gt;&lt;br /&gt;If you can't get anything useful out of &lt;tt&gt;pg_stat_activity&lt;/tt&gt;, you may want to enable &lt;b&gt;slow query logging&lt;/b&gt; by adding this to your &lt;tt&gt;postgresql.conf&lt;/tt&gt;:&lt;pre&gt;&lt;blockquote&gt;log_min_duration_statement = 100&lt;/blockquote&gt;&lt;/pre&gt;(All queries which take more than 100 ms to execute will be printed to the main Postgres log file.)&lt;br /&gt;&lt;h2&gt;Examining a particular query&lt;/h2&gt;Once you have identified a slow query, you can time it by running this command before executing the query manually:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;\timing&lt;/pre&gt;&lt;/blockquote&gt;To get an idea of where Postgres spends its time when executing that query, look at the query plan:&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;EXPLAIN &lt;span&gt;your_query&lt;/span&gt;;&lt;/blockquote&gt;&lt;/pre&gt;The numbers you see there are &lt;span&gt;estimates&lt;/span&gt;. To run the query and get actual numbers, use this instead:&lt;pre&gt;&lt;blockquote&gt;EXPLAIN &lt;span&gt;ANALYZE&lt;/span&gt; &lt;i&gt;your_query&lt;/i&gt;;&lt;/blockquote&gt;&lt;/pre&gt;If you still can't figure out why a certain query takes so long, have a look at the &lt;span&gt;ratio between live and dead rows&lt;/span&gt; in the relevant tables:&lt;pre&gt;&lt;blockquote&gt;ANALYZE VERBOSE &lt;i&gt;tablename&lt;/i&gt;;&lt;/blockquote&gt;&lt;/pre&gt;Having too  many dead rows  is often a  sign of insufficient  vacuuming. You might want to &lt;b&gt;turn autovacuum on&lt;/b&gt; if it isn't already, or to make it a bit more aggressive by tweaking these settings:&lt;pre&gt;&lt;blockquote&gt;autovacuum_vacuum_scale_factor&lt;br /&gt;autovacuum_analyze_scale_factor&lt;br /&gt;&lt;/blockquote&gt;&lt;/pre&gt;&lt;br /&gt;Troubleshooting database performance is a bit of a black art, many thanks to Mark Kirkwood for sharing his Postgres wisdom with me.&lt;br /&gt;&lt;br /&gt;If there's anything else you have successfully used to find the cause of your performance woes, please feel free to leave a comment.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-4625458287479958517?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 30 May 2009 17:09:29 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>Penny Leach: hello, I now live in Switzerland!</title>
	<guid>http://she.geek.nz/archives/532-guid.html</guid>
	<link>http://she.geek.nz/archives/532-hello,-I-now-live-in-Switzerland!.html</link>
	<description>Here's my general update of what's happened over the last few months of completely shifting my life around.&lt;br /&gt;
&lt;br /&gt;
I'm living in Fribourg, Switzerland.  This is a really cute little town, just 20 minutes train ride from the capital, Bern.  I think it's supposed to be officially French-German bilingual but it really isn't.  French is the language spoken in all the shops and cafes.  I don't have any French yet, so this has been a bit of a challenge - the lowest point was trying to buy the official Rubbish bags at the supermarket.&lt;br /&gt;
&lt;br /&gt;
It took quite awhile to find an apartment - I think I looked at between 20 and 25 altogether before I found a perfect apartment just over a bridge from the fringe of town - I'm living in a renovated apartment in an old house on the river bank and it's absolutely perfect. I can hear the bells from the cathedral and I have a good walk to work, 35 minutes, and there's grass and river and a bus stop outside for the mornings where I take longer than normal to get up.  I found a vegetable market just over the bridge on Saturday mornings, that has a whole stall dedicated to mushrooms! This made me disproportionately gleeful.  After almost a month of looking at apartments that I didn't want, I visited the apartment, signed the contract, moved in, and bought &amp;amp; assembled most of the furniture within a single weekend, with the help of &lt;a href=&quot;http://madduck.net&quot;&gt;my amazing boyfriend&lt;/a&gt;. Apparently this is almost unheard of in Switzerland.&lt;br /&gt;
&lt;br /&gt;
I'm working at &lt;a href=&quot;http://liip.ch&quot;&gt;Liip&lt;/a&gt;, and it's great. I cannot imagine being thrown into a better bunch of people in a foreign city/country/language.  I'm working on Moodle, doing some Open Source projects, working with great people, drinking a lot of beer and throwing the pony around.  This is not a euphemism!  I got to be a part of the group celebrating Liip doing so well at the Best of Swiss Web awards (more on this in another post), and it was just awesome to watch my new work people excel at what they do.&lt;br /&gt;
&lt;br /&gt;
I went to the &lt;a href=&quot;http://flickr.com/photos/penzilinha/tags/moodlemootbb&quot;&gt;German Moodlemoot in Bamberg&lt;/a&gt; last month and had a great time (finally getting to try the Moodle Mojitos) and met some more Moodlers for the first time - most notably Heinz, who it was fantastic to meet, and David, who dutifully bought me beer for helping him with git, as well as seeing the familiar faces of Martin, Helen and Petr, which always makes me happy.  For the first time I was at a conference and people who weren't me talking about Mahara (although of course I talked about Mahara as well), and that was a pretty big buzz in itself.&lt;br /&gt;
&lt;br /&gt;
I love Swiss trains!  Travelling back from Bamberg I changed about 4 times, and the change that made me switch onto a Swiss train made me warm and fuzzy.  I also like &lt;a href=&quot;http://en.wikipedia.org/wiki/Sp%C3%A4tzle&quot;&gt;Spätzle&lt;/a&gt;, &lt;a href=&quot;http://www.lindt.ch/1610/3429/3497/3503/3504.asp&quot;&gt;Lindor chocolate&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Cardinal_(beer)&quot;&gt;Cardinal (my local beer)&lt;/a&gt;, Coop, Olivenbrot, the pizza place near work, &lt;a href=&quot;http://www.lilys.ch/home.html&quot;&gt;Lily's&lt;/a&gt;, and &lt;a href=&quot;http://freitag.ch&quot;&gt;Freitag&lt;/a&gt; (I am happily telling everyone I'm Swiss now that I have a Freitag wallet, which is complete nonsense).  &lt;a href=&quot;http://lost.ch&quot;&gt;lost.ch&lt;/a&gt; makes me happy, having my name on my letterbox makes me happy (this does not happen in New Zealand).  My boyfriend makes me happy. Inappropriately appending 'chen' or 'li' on the end of everything makes me gleeful and drives everyone else crazy. So far, I don't think much of Cablecom, Migros, apartment hunting, eating Pferd (pony!) or endless dairy products.&lt;br /&gt;
&lt;br /&gt;
I have seen live: Gazpacho twice (although once was in München) and Explosions in the Sky. I hate smoking in bars, but I loved both bands.&lt;br /&gt;
&lt;br /&gt;
As soon as I have conquered German and French (any day now: &lt;a href=&quot;http://www.tui.co.nz/tui_2008/&quot;&gt;yeah right!&lt;/a&gt;) I will be completely happy.&lt;br /&gt;</description>
	<pubDate>Tue, 07 Apr 2009 16:57:32 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>François Marier: Handling security bugs in your Free Software project</title>
	<guid>tag:blogger.com,1999:blog-7615241590176793465.post-2561925668604985632</guid>
	<link>http://feeding.cloud.geek.nz/2009/03/handling-security-bugs-in-your-free.html</link>
	<description>If you are managing a Free Software project, you may eventually be confronted with a security vulnerability. Normally bugs in the Open Source world are discussed in a transparent way on public forums. In the case of security bugs however, there are benefits to &lt;b&gt;temporarily&lt;/b&gt; withholding these details from the public.&lt;br /&gt;&lt;br /&gt;Some people describe this approach as &lt;a href=&quot;http://en.wikipedia.org/wiki/Responsible_disclosure&quot;&gt;responsible disclosure&lt;/a&gt;. It boils down to this:&lt;br /&gt;&lt;blockquote&gt;if the vulnerability is not publicly known, warn the vendors first and give them some time to fix it before making the details public.&lt;/blockquote&gt;If the vulnerability is already public knowledge, then you can focus on fixing it as soon as possible and maybe let reporters know about &lt;a href=&quot;http://oss-security.openwall.org/wiki/disclosure/researcher&quot;&gt;a better way to report their findings&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;Sample Security Policy&lt;/h2&gt;Here's the procedure we now follow in the &lt;a href=&quot;http://www.mahara.org/&quot;&gt;Mahara&lt;/a&gt; project for security bugs we found ourselves or which have been privately disclosed to us through &lt;a href=&quot;mailto:security@mahara.org&quot;&gt;security@mahara.org&lt;/a&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Figure out the extent of the problem: which versions of Mahara are affected by this problem?&lt;/li&gt;&lt;li&gt;Fix the problem on all supported branches of the project &lt;b&gt;in a private source control repository&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;Share the vulnerability information with &lt;a href=&quot;http://oss-security.openwall.org/wiki/mailing-lists/vendor-sec&quot;&gt;vendor-sec&lt;/a&gt; and request a &lt;a href=&quot;http://cve.mitre.org/cve/identifiers/index.html&quot;&gt;CVE identifier&lt;/a&gt;.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Prepare release tarballs and packages.&lt;/li&gt;&lt;li&gt;Draft a security advisory for the &lt;a href=&quot;http://mahara.org/interaction/forum/view.php?id=43&quot;&gt;Security forum&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Wait until the embargo date to push the release out.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Emails to vendor-sec should include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;a description of the problem&lt;/li&gt;&lt;li&gt;any proof of concept code demonstrating the vulnerability&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the list of affected versions&lt;/li&gt;&lt;li&gt;any patches you have prepared&lt;/li&gt;&lt;li&gt;a proposed embargo date&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Benefits of properly handling security bugs&lt;br /&gt;&lt;/h2&gt;First and foremost, it &lt;b&gt;protects end-users&lt;/b&gt; by giving them a chance to download and install fixed versions of your software before widespread exploitation of the security flaws.&lt;br /&gt;&lt;br /&gt;Secondly, it may &lt;b&gt;increase your project credibility&lt;/b&gt;. While you are admitting that your software has flaws, you are also demonstrating that your project is committed to dealing with the most serious ones promptly and in a responsible manner.&lt;br /&gt;&lt;br /&gt;Finally, sharing security flaws and having your fixes reviewed by a select group of experts may &lt;b&gt;reveal extra vulnerabilities you missed&lt;/b&gt; while preparing your patches. This gives you an opportunity to improve your fixes before they are released and to avoid having to issue yet another security advisory a few days later.&lt;br /&gt;&lt;br /&gt;Big thanks to &lt;a href=&quot;http://steffen-joeris.skolelinux.de/&quot;&gt;Steffen Joeris&lt;/a&gt; for his help in shaping the Mahara policy!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7615241590176793465-2561925668604985632?l=feeding.cloud.geek.nz&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 10 Mar 2009 22:47:05 +0000</pubDate>
	<author>fmarier@gmail.com (François)</author>
</item>
<item>
	<title>Penny Leach: farewell Catalyst</title>
	<guid>http://she.geek.nz/archives/531-guid.html</guid>
	<link>http://she.geek.nz/archives/531-farewell-Catalyst.html</link>
	<description>Today is the end of an era.  After almost 5 years, this is my last day at &lt;a href=&quot;http://catalyst.net.nz&quot;&gt;Catalyst&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I started working at Catalyst in May 2004.  I had about 2 years experience working in the Industry, but I'd never worked on Open Source before.  I used Open Source happily, but had no idea that I could be a contributor.  Suddenly, that was all to change.&lt;br /&gt;
&lt;br /&gt;
My introduction into the Open Source world was through &lt;a href=&quot;http://eduforge.org/projects/nzvle&quot;&gt;The NZ Open Source Virtual Learning Environment (NZ(OS)VLE) project&lt;/a&gt;, which was a NZ-Government funded project to deliver a Learning Management System that could be deployed through NZ at low cost, to encourage collaboration between all the institutions participating.&lt;br /&gt;
&lt;br /&gt;
And man we did a lot of awesome work on that project.  Suddenly there was &lt;a href=&quot;http://moodle.org&quot;&gt;Moodle&lt;/a&gt; being used all through NZ.  The Open Polytech deployed it, and at the time it was the largest installation of Moodle in the world.  I used to wake up every morning and fix performance issues,  I did a huge amount of work for Postgres support, I was pretty much paid to work on Open Source full time.&lt;br /&gt;
&lt;br /&gt;
Eventually NZVLE funding ran out, and we started working on commercial Moodle projects - still managing to keep a happy balance with Open Source.  The elearning team, which I was the second member of by about 3 months, grew.&lt;br /&gt;
&lt;br /&gt;
Mid 2006, I started working on another government funded project, to deliver a portfolio system.  This was to be what NZVLE was to Learning Management Systems, to portfolios.  I started off co-leading this project, that would grow into &lt;a href=&quot;http://mahara.org&quot;&gt;Mahara&lt;/a&gt;, and I fell in love with it.&lt;br /&gt;
&lt;br /&gt;
Eventually, various circumstances dictated that I had to work on other projects for a while, and Mahara fell away from me into &lt;a href=&quot;http://nigel.mcnie.name&quot;&gt;other capable hands&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Life continued. Other than the projects I worked on by day, I also collaborated with various people on other projects under the roof of Catalyst - &lt;a href=&quot;http://shdh.org.nz&quot;&gt;SuperHappyDevHouse the NZ edition&lt;/a&gt; was born,  Linuxchix stuff happened, Linux installfests, &lt;a href=&quot;http://planet.catalyst.net.nz&quot;&gt;Planet Catalyst&lt;/a&gt; was started, at first subversively.  I did mentoring, I travelled quite a lot to talk at conferences about the work we were doing, I &lt;a href=&quot;http://www.opensourcereporter.net/ausnz.html&quot;&gt;wrote&lt;/a&gt; &lt;a href=&quot;https://archive.vitta.org.au/pubs/infonet/view.php?id=267&quot;&gt;articles&lt;/a&gt;, I helped start the Eight....&lt;br /&gt;
&lt;br /&gt;
Catalyst began to feel like a family to me - there were people there who were like cousins, some like brothers and sisters, again others favourite aunts and uncles.  I don't think a single day went by where I didn't learn some new cool computer thing.  Traditions were started and continued: beer o'clock, pizza thursday, hot teen vindaloos, special coffee, mjollniraptors, hot cold hot cold,  &lt;a href=&quot;http://www.urbandictionary.com/define.php?term=g%3Ctab%3E&quot;&gt;g&amp;lt;tab&gt;&lt;/a&gt;, foosball, &quot;where's $person?&quot; emails, so's your face, boozey lunch, thrash metal Friday, bubble wrap, red liquorice bribes, step mania, haiku battles...&lt;br /&gt;
&lt;br /&gt;
But like most young New Zealanders, I wanted to travel.  The mjollniraptor was to become the Inter Continental Ballistic Mjollniraptor.  After a few months in London, it became clear that Catalyst UK didn't hold much appeal for me, and there were many reasons for me to go to Switzerland.  &lt;a href=&quot;http://liip.ch&quot;&gt;Liip&lt;/a&gt; offered me a job and I happily accepted, and look forward to starting with them on Monday.&lt;br /&gt;
&lt;br /&gt;
I'm not sure whether it's completely ridiculous or perfectly appropriate that my last day at Catalyst is Black Friday, but here ends my journey with you for now.  Ka kite ano, so long &amp;amp; thanks for all the beer, g&amp;lt;tab&amp;gt; etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Edit: The most recent explodingdog is incredibly appropriate:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://explodingdog.com/title/iamtoocoldtowork.html&quot;&gt;I am too cold to work&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;img src=&quot;http://explodingdog.com/drawing/iamtoocoldtowork.gif&quot; width=&quot;400&quot; /&gt;</description>
	<pubDate>Fri, 13 Feb 2009 07:40:27 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>Nigel McNie: Mahara 1.1 - almost there!</title>
	<guid>http://nigel.mcnie.name/blog/mahara-11-almost-there</guid>
	<link>http://nigel.mcnie.name/blog/mahara-11-almost-there</link>
	<description>&lt;div class=&quot;document&quot;&gt;


&lt;p&gt;There's three bugs and two feature requests left until 1.1 is ready to roll! Finally it looks like we've got on top of the long list of issue and will be able to get a release out later this month.&lt;/p&gt;
&lt;p&gt;Here's a quite explanation of how things will progress over the next while:&lt;/p&gt;
&lt;p&gt;Once the bugs and feature requests are fixed, we will release the first, and possibly only, release candidate of 1.1. This will be a release that we consider &quot;good enough&quot; for 1.1 - no major crashing bugs, upgrade from 1.0 works, new functionality works.&lt;/p&gt;
&lt;p&gt;We'll let that circulate for a few days, to give people a change to have one last go at testing upgrades and looking for major bugs. If there's nothing reported that's too major, we'll do the 1.1 release, otherwise, there will be a second (and potentially third) release candidate.&lt;/p&gt;
&lt;p&gt;The 1.1 release will no doubt need some tweaking and minor fixes, which I'm sure will be reported back to us quickly. So there will probably be a series of point releases after 1.1 to iron out the kinks. We'll fully support you if you upgraded from any version of 1.0 to 1.1 though, and hopefully the testing we've done means the upgrade path doesn't break, even if some minor things don't work in 1.1.&lt;/p&gt;
&lt;p&gt;Meanwhile, we'll be working hard on the import/export functionality for 1.2. This is the &lt;em&gt;only&lt;/em&gt; feature planned for 1.2, and we hope to have it released quite quickly, by mid this year even.&lt;/p&gt;
&lt;p&gt;So, look out for Mahara 1.1 RC1 real soon now!&lt;/p&gt;
&lt;/div&gt;</description>
	<pubDate>Thu, 12 Feb 2009 11:11:31 +0000</pubDate>
</item>
<item>
	<title>Nigel McNie: Things You Don't Want to See in the Morning</title>
	<guid>http://nigel.mcnie.name/blog/things-you-dont-want-to-see-in-the-morning</guid>
	<link>http://nigel.mcnie.name/blog/things-you-dont-want-to-see-in-the-morning</link>
	<description>&lt;div class=&quot;document&quot;&gt;


&lt;pre class=&quot;literal-block&quot;&gt;
maharademo=# select count(*) from activity_queue;
 count
-------
 10043
(1 row)
&lt;/pre&gt;
&lt;p&gt;Aah crap.&lt;/p&gt;
&lt;p&gt;So it turns out there's a bug in Mahara's activity queue processing which means that if you make a view, leave objectionable feedback on it then delete the view before the queue is processed, the queue will bomb out every time it gets to processing the feedback and not send any of the other messages. Doh!&lt;/p&gt;
&lt;p&gt;I have written a patch for this that'll go to 1.0_STABLE and master. It will probably involve unconditionally deleting any notifications older than two weeks, as the last thing people want is old notifications.&lt;/p&gt;
&lt;p&gt;This problem &lt;em&gt;may&lt;/em&gt; have affected other Mahara installs out there, but it's not guaranteed to have. For example, it hasn't affected the &lt;a class=&quot;reference external&quot; href=&quot;http://myportfolio.school.nz/&quot; shape=&quot;rect&quot;&gt;MyPortfolio&lt;/a&gt; &lt;a class=&quot;reference external&quot; href=&quot;http://myportfolio.ac.nz&quot; shape=&quot;rect&quot;&gt;sites&lt;/a&gt;, nor &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/&quot; shape=&quot;rect&quot;&gt;mahara.org&lt;/a&gt; itself. You can find out by doing a &lt;tt class=&quot;docutils literal&quot;&gt;&lt;span class=&quot;pre&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;COUNT(*)&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;pre&quot;&gt;activity_queue;&lt;/span&gt;&lt;/tt&gt; on your database - large numbers are bad, 0 or small numbers are good.&lt;/p&gt;
&lt;p&gt;There will probably be a 1.0.7 soon to fix this.&lt;/p&gt;
&lt;/div&gt;</description>
	<pubDate>Mon, 22 Dec 2008 04:40:54 +0000</pubDate>
</item>
<item>
	<title>Penny Leach: mahara.org relaunch</title>
	<guid>http://she.geek.nz/archives/526-guid.html</guid>
	<link>http://she.geek.nz/archives/526-mahara.org-relaunch.html</link>
	<description>&lt;a href=&quot;http://mahara.org&quot;&gt;mahara.org&lt;/a&gt; has just been relaunched!  &lt;a href=&quot;http://nigel.mcnie.name&quot;&gt;Nigel&lt;/a&gt; and everyone else have done a great job with the project.&lt;br /&gt;
&lt;br /&gt;
Mahara has come a long way since the original mahara.org was launched, and because of this, we're now actually using Mahara to power mahara.org, rather than Drupal, which is what we had been using for the last 2 or so years.&lt;br /&gt;
&lt;br /&gt;
I'm looking forward to seeing some communities building up over there, everything from developers to translators and practitioners.  Actually building the community on a Mahara installation will hopefully see some interesting usage patterns, and since they'll all be in a central place it'll be much easier to showcase best practice.&lt;br /&gt;
&lt;br /&gt;
In related news, I was in Birmingham today for another &lt;a href=&quot;http://wiki.cetis.ac.uk/LEAP_2.0&quot;&gt;LEAP&lt;/a&gt; day - the standard we're going to be adopting for Mahara import/export, as well as interoperability with other portfolio systems.  It was really interesting to see what other portfolio vendors are doing.  I have a weird mix of pride and disappointment that we're the only open source portfolio represented in the implementation partners.&lt;br /&gt;</description>
	<pubDate>Thu, 27 Nov 2008 20:40:08 +0000</pubDate>
	<author>penny@she.geek.nz (Penny)</author>
</item>
<item>
	<title>Nigel McNie: mahara.org finally relaunched!</title>
	<guid>http://nigel.mcnie.name/blog/maharaorg-finally-relaunched</guid>
	<link>http://nigel.mcnie.name/blog/maharaorg-finally-relaunched</link>
	<description>&lt;div class=&quot;document&quot;&gt;


&lt;p&gt;It's taken a while, but finally the &lt;a class=&quot;reference external&quot; href=&quot;http://mahara.org/&quot; shape=&quot;rect&quot;&gt;new mahara.org&lt;/a&gt; has been launched. I think it's a great step up from the old site, and will hopefully serve as a useful place to showcase and document Mahara for a while yet.&lt;/p&gt;
&lt;p&gt;DNS is still propogating so it might be a while until everyone can see the new site. In the mean time, we're putting up some content and will tweak the site over the next couple of days.&lt;/p&gt;
&lt;p&gt;Our focus will now turn back to the Mahara 1.1 release. There's still some bugs to iron out, but hopefully we can get the release out soon...&lt;/p&gt;
&lt;/div&gt;</description>
	<pubDate>Thu, 27 Nov 2008 03:41:21 +0000</pubDate>
</item>

</channel>
</rss>
