<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="lyceum/0.34" -->
<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/"
	>

<channel>
	<title>Matthew Smith</title>
	<link>http://blogs.library.uq.edu.au/ms</link>
	<description>Library Systems Programmer</description>
	<pubDate>Fri, 16 Nov 2007 00:20:23 +0000</pubDate>
	<generator>http://lyceum.ibiblio.org/?v=0.34</generator>
	<language>en</language>
			<item>
		<title>Liaison Profile and Requirements Specs</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/10/12/liaison-profile-and-requirements-specs/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/10/12/liaison-profile-and-requirements-specs/#comments</comments>
		<pubDate>Fri, 12 Oct 2007 05:51:44 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/10/12/liaison-profile-and-requirements-specs/</guid>
		<description><![CDATA[	Besides working on Fez, I&#8217;ve been putting together a kind of hybrid ticketing / CRM system that is taylored to Liaison Librarians.  The project is called Liaison Profile because &#8220;Liaison Database&#8221; sounded too boring and my suggestiong of &#8220;Liaison Tracker&#8221; was thought to have Big Brother connotations.
	There are no plans to release Liaison Profile [...]]]></description>
			<content:encoded><![CDATA[	<p>Besides working on Fez, I&#8217;ve been putting together a kind of hybrid ticketing / CRM system that is taylored to Liaison Librarians.  The project is called Liaison Profile because &#8220;Liaison Database&#8221; sounded too boring and my suggestiong of &#8220;Liaison Tracker&#8221; was thought to have Big Brother connotations.</p>
	<p>There are no plans to release Liaison Profile as an open source project but it&#8217;s not out of the question if there is interest in it.</p>
	<p>The project has been running for a long time which is probably due to me trying to be &#8216;agile&#8217; and using the prototype software as the spec.  What this meant is that everytime I&#8217;ve showed it to the focus group, they have thought of lots of things they&#8217;d like it to do differently and we&#8217;ve never settled on when the project will be officially &#8216;finished&#8217;.  So I&#8217;ve had to resort to the old-fashioned and boring technique of writing a requirements specification and seeking agreement on that.</p>
	<p>My approach to requirement specs is to try and be workflow oriented so that I&#8217;m describing what the users will be trying to do rather than what the software does.  In my opinion, this makes the spec easier to read and understand and possibly allows you to identify what the important things are.</p>

 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/10/12/liaison-profile-and-requirements-specs/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Deduping in Fez</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/07/11/deduping-in-fez/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/07/11/deduping-in-fez/#comments</comments>
		<pubDate>Wed, 11 Jul 2007 05:51:27 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Fez</category>
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/07/11/deduping-in-fez/</guid>
		<description><![CDATA[	For those curious about the new record duplicates workflow I&#8217;ve been developing.  Here is a screencast of what it vaguely looks like at this stage.  Still a proof of concepty thing but will be tested with fire in the near future.
	I used Wink to make this as I find it pretty easy to [...]]]></description>
			<content:encoded><![CDATA[	<p>For those curious about the new record duplicates workflow I&#8217;ve been developing.  <a href="http://dev-repo.library.uq.edu.au/screencast/duplicates2.htm">Here is a screencast</a> of what it vaguely looks like at this stage.  Still a proof of concepty thing but will be tested with fire in the near future.</p>
	<p>I used Wink to make this as I find it pretty easy to use and it is open source.  We also have a licence for Adobe Captivate so maybe I will pitch them head to head and put a review here in case anyone is interested.</p>

 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/07/11/deduping-in-fez/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Patterns I Hate #2: Template Method via Pure Danger Tech</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/07/06/patterns-i-hate-2-template-method-via-pure-danger-tech/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/07/06/patterns-i-hate-2-template-method-via-pure-danger-tech/#comments</comments>
		<pubDate>Fri, 06 Jul 2007 05:30:36 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Fez</category>
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/07/06/patterns-i-hate-2-template-method-via-pure-danger-tech/</guid>
		<description><![CDATA[	A friend emailed me this blog post about the template design pattern.  Some good points made here and I wish I&#8217;d read this before I implemented class BackgroundProcess in Fez.
	
		Usually, the best way to address the addition of functionality in orthogonal domains under a template class is to define an interface for each kind [...]]]></description>
			<content:encoded><![CDATA[	<p>A friend emailed me this <a href="http://tech.puredanger.com/2007/07/03/pattern-hate-template/">blog post</a> about the template design pattern.  Some good points made here and I wish I&#8217;d read this before I implemented class BackgroundProcess in Fez.</p>
	<blockquote>
		<p>Usually, the best way to address the addition of functionality in orthogonal domains under a template class is to define an interface for each kind of functionality and inject an instance for each. </p>
	</blockquote>
	<p>Oh well, I&#8217;ll have to remember this for Fez 2.0.</p>

 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/07/06/patterns-i-hate-2-template-method-via-pure-danger-tech/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Using SVN for Websites</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/07/04/using-svn-for-websites/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/07/04/using-svn-for-websites/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 03:12:34 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/07/04/using-svn-for-websites/</guid>
		<description><![CDATA[	Coming from a compiled C++ background, I&#8217;ve always used revision control software to track changes to source code.  Arriving at UQ I assumed that I could set up a subversion server and do the same for web application development.  But there are some significant differences when working with svn on websites and here [...]]]></description>
			<content:encoded><![CDATA[	<p>Coming from a compiled C++ background, I&#8217;ve always used <a href="http://en.wikipedia.org/wiki/Revision_control">revision control software</a> to track changes to source code.  Arriving at UQ I assumed that I could set up a <a href="http://subversion.tigris.org/">subversion</a> server and do the same for web application development.  But there are some significant differences when working with svn on websites and here are some of the things I&#8217;ve learned.</p>
	<ul>
		<li>HTML and PHP files can be easily stored in subversion but how do you track changes to your database schema?  A way around this is to use a <a href="http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations">migrations</a> scheme similar to <a href="http://www.rubyonrails.org/">Ruby on Rails</a> which can store your DB changes in a SQL script which can be put under revision control.  It requires a lot of discipline but means that in a small team, others can do an svn update and then run the a &#8216;db upgrade&#8217; script to get the latest database schema and even changes to default config data.  Obviously you have to be a bit careful as it&#8217;s not simple to do a rollback of your database so it is still suboptimal.</li>
		<li>File permissions on webservers are often important.  It&#8217;s useful to have a script that you can run after a svn update or checkout to make sure that files are correctly writable by the webserver when they need to be (It&#8217;s also good to reduce the need for this in the first place).   If the script is under version control then new server writable files can be added to it as needed.</li>
		<li>Using subversion to rollout a live site helps you track exactly which version of the site is running.  We use a seperate branch in subversion for the live site as it often has a few little customisations that aren&#8217;t in the main development branch.  We can tag in subversion each time we do a rollout.</li>
		<li>On a live server, different users might need to update parts of the site at various times but the svn client wants to always set the .svn/entries file to be read only and owned buy the current user.  This is a bit annoying especially if you don&#8217;t want you svn users to have a root ssh account or ability to change owenership of other users files on the server.  One way to get around this is to have a &#8216;svnuser&#8217; that people can login as to do the updates on the live site.  However when commiting from the live site, the real username of the perpetrator is then lost (or you can restrict the svnuser on the live site to svn updates only).  So there is extra complexity at this point making use of subversion that little bit hard.  </li>
		<li>Which brings me to my last point which is that subversion has a learning curve for new web developers coming to the team &#8211; they need to be trained on how subversion is used in your organisation and get used to the habits of remembering to commit schema changes and comment commits appropriately etc&#8230;  If your programmers have never come across revision control before, at least subversion has an <a href="http://svnbook.red-bean.com/">excellent online book</a> which walks through all the concepts.</li>
		<li><a href="http://websvn.tigris.org/">WebSVN</a> has proven to be a helpful addon as we can subscribe to the commit messages via RSS and keep in touch with what&#8217;s going on.  It can also link in with our ticket system if we reference a ticket number in the commit message which in turn puts a link to the WebSVN commit record in the ticket.</li>
	</ul>
	<p>Even though we only have a small development team, subversion has allowed us to work in parallel on things, using our own staging areas and databases and still share our progress.  We still have to think about how things are going to play for the other programmers when we do a commit but most of the time, the benefits of the RCS far outweigh the overheads of spending extra time to write commit messages, writing schema upgrade scripts and mucking about with subversion&#8217;s quirky permissions.</p>

 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/07/04/using-svn-for-websites/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Library Software Developers 2.0</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/05/25/library-software-developers-20/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/05/25/library-software-developers-20/#comments</comments>
		<pubDate>Fri, 25 May 2007 04:57:38 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/05/25/library-software-developers-20/</guid>
		<description><![CDATA[	Yesterday I was part of of a Skype conference call between our development team, one of whom was at home sick and a developer in the states.  We met up in campfire first, and then got the skype call going.  During the call we discussed a powerpoint slide show that was posted into [...]]]></description>
			<content:encoded><![CDATA[	<p>Yesterday I was part of of a <a href="http://www.skype.com/">Skype</a> conference call between our development team, one of whom was at home sick and a developer in the states.  We met up in <a href="http://www.campfirenow.com/">campfire</a> first, and then got the skype call going.  During the call we discussed a powerpoint slide show that was posted into the campfire chat and then a few web links also shared through the chat.</p>
	<p>Even though we sit next to each other in the office, our development team has been communicating mostly through campfire lately because we can just cut and paste code and links to each other and still be working on our code in another window and even listening to music.  We don&#8217;t need to interupt each other when we are trying to concentrate on solving a problem &#8211; we can zone in and out of the group chatroom easily.</p>
	<p>We have also had a couple of lurkers from other development groups who collaborate with us a bit on the Fez code.  It has been good to have the occasional outside comments on what we&#8217;re doing and I think it has been helpful for them to know what kinds of bleeding edge development we&#8217;re doing.</p>
	<p>Fairly early on, we told our manager about the chatroom and invited him in too.  I was not sure whether allowing our mangers into the chatroom would be a vibe killer but it has worked out quite well.  Obviously this depends greatly on the kind of management you have but in our case I think it has served in two ways &#8211; our manager can get that warm fuzzy feeling of seeing the team actually getting things done&#8482;.  For some of the other staff here who are supporting our actual users, it has meant that at least one of us is paying attention to answer questions (usually) while the others of us might be in full-code-imersion mode.  So there is the counterintuitive result of less interruptions.</p>


 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/05/25/library-software-developers-20/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>IA One Sheeters</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/05/22/ia-one-sheeters/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/05/22/ia-one-sheeters/#comments</comments>
		<pubDate>Tue, 22 May 2007 01:55:17 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/05/22/ia-one-sheeters/</guid>
		<description><![CDATA[	Here&#8217;s a quick site that explains a concept for helping people understand how and why they might use a computer resource you have.  I guess the concept can apply to any service that you want to raise awareness about.
	IA One Sheeters
	
		One-Sheeters are quick and easy marketing tools for information architects. They&#8217;re like mini brochures [...]]]></description>
			<content:encoded><![CDATA[	<p>Here&#8217;s a quick site that explains a concept for helping people understand how and why they might use a computer resource you have.  I guess the concept can apply to any service that you want to raise awareness about.</p>
	<p><a href="http://www.iaonesheeters.com/iaonesheeters.asp">IA One Sheeters</a></p>
	<blockquote>
		<p>One-Sheeters are quick and easy marketing tools for information architects. They&#8217;re like mini brochures to advertise IA deliverables and promote the IA practice in your company. One-Sheeters help people envision what deliverables you produce and where they fit into a project. They&#8217;re quick to produce and easy for anyone to understand.</p>
	</blockquote>

 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/05/22/ia-one-sheeters/feed/</wfw:commentRSS>
		</item>
		<item>
		<title>Paint .net</title>
		<link>http://blogs.library.uq.edu.au/ms/2007/04/04/paint-net/</link>
		<comments>http://blogs.library.uq.edu.au/ms/2007/04/04/paint-net/#comments</comments>
		<pubDate>Wed, 04 Apr 2007 00:32:14 +0000</pubDate>
		<dc:creator>uqmsmi14</dc:creator>
		
	<category>Fez</category>
	<category>Software</category>
		<guid isPermaLink="false">http://blogs.library.uq.edu.au/ms/2007/04/04/paint-net/</guid>
		<description><![CDATA[	I&#8217;ve just been doing a bit of work on an icon for Fez object cloning.  I picked an icon which shows two pieces of paper next to each other but on the white background they were hard to see.  I decided to add a grey tint the icon so it would be more [...]]]></description>
			<content:encoded><![CDATA[	<p>I&#8217;ve just been doing a bit of work on an icon for Fez object cloning.  I picked an icon which shows two pieces of paper next to each other but on the white background they were hard to see.  I decided to add a grey tint the icon so it would be more visible.  </p>
	<p>As a bit of an open source junky, I thought I&#8217;d have a go at <a href="http://www.getpaint.net/index2.html">Paint.net</a> as a lightweight image editor.  I opened the icon, created a new layer, selected the two bits of paper with the wand tool, pasted grey onto the top layer and then changed the transparency of the layer until I could see the paper icon underneath.  Paint.net was pretty easy to use and it&#8217;s free so I recommend if  you are just doing simple tasks and don&#8217;t want to pay a license for full-on image editing software.</p>

 ]]></content:encoded>
			<wfw:commentRSS>http://blogs.library.uq.edu.au/ms/2007/04/04/paint-net/feed/</wfw:commentRSS>
		</item>
	</channel>
</rss>
