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

<channel>
	<title>Sam Moffatt @ Pasamio.com &#187; opensource</title>
	<atom:link href="http://pasamio.com/category/opensource/feed/" rel="self" type="application/rss+xml" />
	<link>http://pasamio.com</link>
	<description>Sam Moffatt's Tech Blog: Writings on Technology</description>
	<lastBuildDate>Tue, 20 Jul 2010 14:25:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>OSDC2009 Presentations</title>
		<link>http://pasamio.com/2009/12/31/osdc2009-presentations/</link>
		<comments>http://pasamio.com/2009/12/31/osdc2009-presentations/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 03:03:20 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[conferences]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=581</guid>
		<description><![CDATA[My OSDC2009 Presentations are now up on both the OSDC Website (see http://2009.osdc.com.au/sam-moffatt) and also on my University&#8217;s ePrints site. You can check out the individual papers and their associated presentations on their respective ePrints pages: Joopal and Drumla: not your usual mashup Application level replication in Joomla! using graphs]]></description>
			<content:encoded><![CDATA[<p>My OSDC2009 Presentations are now up on both the OSDC Website (see <a href="http://2009.osdc.com.au/sam-moffatt">http://2009.osdc.com.au/sam-moffatt</a>) and also on my <a href="http://eprints.usq.edu.au/statistics.php?fullname=Moffatt,Samuel+Alexander">University&#8217;s ePrints site</a>. You can check out the individual papers and their associated presentations on their respective ePrints pages:</p>
<ul>
<li><a href="http://eprints.usq.edu.au/5211/">Joopal and Drumla: not your usual mashup</a></li>
<li><a href="http://eprints.usq.edu.au/6249/">Application level replication in Joomla! using graphs</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2009/12/31/osdc2009-presentations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Git/SVN hosting providers</title>
		<link>http://pasamio.com/2009/12/09/free-gitsvn-hosting-providers/</link>
		<comments>http://pasamio.com/2009/12/09/free-gitsvn-hosting-providers/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 05:19:48 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=579</guid>
		<description><![CDATA[During my recent presentation at the Joomla! Developers Conference in New York, I emphasised the importance of using a version control system (in particular SVN) to maintain copies of everything. From PSD versions of designs and templates to more traditional items like source code, some form of a version control system is what you need [...]]]></description>
			<content:encoded><![CDATA[<p>During my recent presentation at the Joomla! Developers Conference in New York, I emphasised the importance of using a version control system (in particular SVN) to maintain copies of everything. From PSD versions of designs and templates to more traditional items like source code, some form of a version control system is what you need to do. If you&#8217;re working in an organisation where you need to collaborate with more than one person then version control tools provide valuable collaboration and consistency controls. Another interesting aspect of hosted repositories is backups &#8211; not only do these systems keep different versions of your data but if you use them properly you&#8217;ve also got a backup for if your machine gets toasted. During my presentation I used CVSDude as an example. CVSDude is a local Australian company run out of Brisbane which is why they stick in mind but there are other tools.</p>
<p>Firstly I&#8217;ll do a quick overview of the two main systems being promoted: Git and SVN. SVN, or Subversion, was developed as a newer version of CVS. Subversion has been referred as a &#8220;code wiki&#8221; which I feel is a great explanation. It keeps versions of files around for you and ensures you&#8217;ve got everything in hand. Subversion is a centralised source control system, so you need a central server to run it on for different people (you can also run it on your own machine as well but there is only one point of truth). Git is a distributed version control system where basically every working copy has a full copy of the tree. This is great for pure source projects and a few other sorts where having everything on disk isn&#8217;t too bad but doesn&#8217;t work well when you have larger repositories and files that you might want to share. Git doesn&#8217;t permit partial checkouts as well so you get the entire repository or nothing. This can work in your favour (you can do stuff like commits locally and do history checking locally) or against you (it might be a chunky repository). Git repositories typically are more compressed and smaller than SVN however Git&#8217;s Windows tools leave a lot to be desired. If you&#8217;re working with people who aren&#8217;t technical, Git can be painful and I&#8217;d suggest Subversion. Both are a learning curve but Subverion&#8217;s is easier and the centralised control is useful for most projects.</p>
<p><strong>Provider A: GitHub</strong><br />
GitHub are one of the most popular Git hosting sites out there for open source projects as well as being a commercial hosting provider with &#8220;private&#8221; repositories. For people who are doing open source projects and interested in using Git, GitHub with its 300MB disk space (expandable for open source projects) and unlimited public repositories and collaborators is perhaps the most powerful option in the Git sphere. It is also all backed up as well, like most of the options, so you&#8217;ve got some peace of mind there. GitHub have personal and business branches offering different &#8220;private&#8221; hosting options starting at five private repositories consuming 600MB with one additional collaborator for $7 per month. The plans go somewhat incrementally up from there adding disk space, private repositories and private collaborators. GitHub has a wiki as an option as some point as well as a private/public pastebin service.</p>
<p>Check out GitHub&#8217;s pricing at <a href="http://github.com/plans">http://github.com/plans</a></p>
<p><strong>Provider B: Unfuddle</strong><br />
Unfuddle is something I&#8217;ve just come across after my presentation on a recommendation from someone at the conference. Unfuddle offers both Git and SVN support as well as a form of a wiki in what appears to be &#8220;Notebook pages&#8221;. It limits you to one active project but features RSS and iCal support as well as bug tracking, milestones and in the free version support for two people to collaborate. The free version offers 200MB and more expensive versions have file attachments, SSL and time tracking as well as more disk space, active and archived projects, people and unlimited &#8220;notebook pages&#8221;.</p>
<p>Check out Unfuddle&#8217;s pricing at <a href="http://unfuddle.com/about/tour/plans">http://unfuddle.com/about/tour/plans</a></p>
<p><strong>Provider C: CVSDude</strong><br />
CVSDude are a much older group who offered initially CVS hosting but recently handle Subversion. They support Trac which a popular development support tool that integrates with Subversion providing milestone support, issue tracking and integration (e.g. you can close tickets from SVN) and a wiki. CVSDude appears to be slightly below par with GitHub with their cheapest plan offering 500MB of storage, one project and two users (as opposed to five projects and 600MB from GitHub). They also appear to offer Bugzilla, a popular bug tracking software (perhaps they didn&#8217;t like Trac&#8217;s version or have disabled it?) as well as DAV storage whatever that means. CVSDude does emphasise that they have better backup facilities than others offer plus the Trac/Bugzilla instance provides more functionality than GitHub does. CVSDude annoyingly hides a lot of information behind marketing so you need to do a lot of reading to work out what they&#8217;re really selling for each option. </p>
<p>Their overview page serves as an entry point for finding more information, check it out at <a href="http://cvsdude.com/hosting-products.html">http://cvsdude.com/hosting-products.html</a></p>
<p><strong>Provider D: GForge Group (and JoomlaCode)</strong><br />
GForge Group appear to offer free one project per person hosting on their stack with a 75MB space offering. You can add up to five people to the project and it is a private project. GForge offers a wiki, mailing lists, forum, file release system, tracker and a few other tools as well. It has the interesting caveat that if you don&#8217;t log in for 30 days your project will be permanently deleted. GForge are selling a stand-alone product more than anything so they&#8217;re encouraging you to head that way with that however as an item it is an interesting. It looks like you can add to it however their store link didn&#8217;t appear to be working properly. JoomlaCode is powered by GForge AS and offers many of the same features (version control currently limited to SVN though GForge AS supports CVS and GIT amongst other things). JoomlaCode&#8217;s hosting is free for GPL non-commercial Joomla! related projects and is offered as a service to the community.</p>
<p>Check out <a href="http://gforge.com/gf/register/?action=ProjectAdd">http://gforge.com/gf/register/?action=ProjectAdd</a> for more details.</p>
<p><strong>Provider E: PixelNovel</strong><br />
PixelNovel is another host I&#8217;ve just seen today that offer a tool for Adobe Photoshop that integrates Subversion straight into the tool. This means that you don&#8217;t need to jump out of the system to handle it and it also does previews of the Photoshop files for you for when you&#8217;re going back in time. The standalone Photoshop plugin will work with seemingly any Subversion repository and costs around $60 per licence though it would appear you can pick up a free copy with a PixelNovel account which offers 100MB for nothing and goes up from there.</p>
<p>Check out their pricing and plans at <a href="http://pixelnovel.com/pricing">http://pixelnovel.com/pricing</a></p>
<p>As with everything before you hand over cash, code or templates read the fine print. Though it doesn&#8217;t say it outright, PixelNovel for example will delete your account after two months of inactivity or lack of bill payment and GForge have similar albeit much more upfront text. Some services offer SLA&#8217;s on performance and uptime guarantees where as others don&#8217;t whilst some mention backups in a very definite time frame (I think CVSDude offers 10 minute backups) and others mention that they do it without many details. Some also offer more tools than the others and PixelNovel has some specialised tools targeted at designers particularly. As with everything the devil is in the detail so good luck checking things out and make a decision based on your own personal needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2009/12/09/free-gitsvn-hosting-providers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ePrints Author ID</title>
		<link>http://pasamio.com/2009/08/28/eprints-author-id/</link>
		<comments>http://pasamio.com/2009/08/28/eprints-author-id/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 10:47:03 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[eprints]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[university]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=560</guid>
		<description><![CDATA[One of the things I&#8217;ve been working on over the last month is the ability to create distinct and unique author identifiers for ePrints. ePrint&#8217;s is a really awesome Perl based repository that the University uses to handle its research papers but whilst it is great at handling ePrints, documents, users and a whole host [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things I&#8217;ve been working on over the last month is the ability to create distinct and unique author identifiers for ePrints. ePrint&#8217;s is a really awesome Perl based repository that the University uses to handle its research papers but whilst it is great at handling ePrints, documents, users and a whole host of other things it really falls over when you try to treat authors as individuals.</p>
<p><span id="more-560"></span>Currently ePrints lists authors by using the creator field of an ePrint. This is usually entered as the cited name of the author. If you have a small number of authors with different names this works reasonably well as the system can differentiate between people without much issues. The problem comes in when people are cited differently or have very similar names but are distinct people. Then it becomes bad.</p>
<p>One way of solving the problem is really quite ugly: you go through and change the cited author to make it look &#8220;neater&#8221;. In fact one of our library staff decided that they would do that greatly damaging the value of the data stored with in the system, tainting it horribly and creating more work for themselves. The cynic in me wonders that they&#8217;re just creating more work for themselves later to go back through and fix it all up. So there is a solution, non technical and pretty ordinary.</p>
<p>So our solution was to turn authors into a first class data set within ePrints. They&#8217;re not some unidentifiable free text field with no great purpose (there was a creator ID field but email address was suggested to be used for it) but in fact they are now their own entity which is cool.</p>
<p>We&#8217;ve done some different stuff with the author ID project at USQ that I&#8217;d like to share:</p>
<div>
<dl id="attachment_564" style="text-align: center; background-color: #f3f3f3; padding-top: 4px; -webkit-border-top-right-radius: 3px 3px; -webkit-border-top-left-radius: 3px 3px; -webkit-border-bottom-left-radius: 3px 3px; -webkit-border-bottom-right-radius: 3px 3px; width: 264px; margin: 10px; border: 1px solid #dddddd;">
<dt><a href="http://pasamio.com/wp-content/uploads/2009/08/authorid-authoredit.png"><img style="padding: 0px; margin: 0px; border: 0px none initial;" title="Author ID - Author Editing Screen" src="http://pasamio.com/wp-content/uploads/2009/08/authorid-authoredit-254x300.png" alt="This screen depicts the edit view for an author." width="254" height="300" /></a></dt>
<dd style="font-size: 11px; line-height: 17px; padding-top: 0px; padding-right: 4px; padding-bottom: 5px; padding-left: 4px; margin: 0px;">This screen depicts the edit view for an author.</dd>
<div><span style="font-size: small;"><span style="line-height: 17px;"><br />
</span></span></div>
</dl>
</div>
<p>So an author has a name, they can be linked back to a user ID, they have an email address (both primary email address which should be used for contact and alternate addresses for aiding search), a biography and external identifiers. A cool feature of the primary email address is that when it is updated it automatically gets copied to the alternate email address list,  so you can easily update an email address and still retain the old one (you can still remove them from the alternate email address easily). The external identifiers section provides the ability to list useful identifiers for the author that mean something outside of ePrints. This could be stuff like a staff or student number that you record against the author to help with recognising your users. This is also a new field type developed called &#8216;Name-Value&#8217; to represent name value pairs of data and provide an editing interface.</p>
<p>But the problem with authors is that they don&#8217;t stay the same: they&#8217;re dynamic. So they might move around an organisation, shift faculties, join a research centre or even leave the organisation. Recording this in the author record is more than possible but it starts to get messy &#8211; we start talking about &#8216;versions&#8217; of the author but versions imply the wrong concept. A researcher might be working on papers in two different faculties, each paying for his time and each deserving of recognition. In our case we also need to use that information for reporting so that we can properly allocate funds based on research outcomes as well &#8211; for us it is important to know who paid for the research.</p>
<p>So to solve this problem I created a system called &#8220;author instances&#8221;. Author instances provide a subrecord of the authors that permits instances of specific data to be created and associated with the author. Then when an author creates a paper a link is created to this instance and not directly to the author. This allows the author record to contain information that is relatively static and data that might periodically change (such as department or even which institution someone is at) is then located in the author instance. As this isn&#8217;t &#8216;versioning&#8217; per se it also works well for when a researcher is concurrently producing papers for different parts of the institution (or even for bodies external to the institution).</p>
<div id="attachment_565" class="wp-caption alignnone" style="width: 310px"><a href="http://pasamio.com/wp-content/uploads/2009/08/authorid-authorinstance_edit.png"><img class="size-medium wp-image-565" title="Author ID - Editing an Author Instance" src="http://pasamio.com/wp-content/uploads/2009/08/authorid-authorinstance_edit-300x168.png" alt="This screen depicts the edit view for an author instance." width="300" height="168" /></a><p class="wp-caption-text">This screen depicts the edit view for an author instance.</p></div>
<p>The author instance is very light by default, it only contains the author that it is linked to, its display name and a preferred flag. The preferred flag is mutually exclusive within author instances &#8211; if one instance for an author sets the flag then it is cleared for all other authors. In the screen shot you will notice an untranslated field called &#8220;deptid&#8221;. This is another new metafield that has been developed called &#8220;Externalitemref&#8221; which is similar to the built in ItemRef field however it works on tables managed outside of ePrints. ExternalItemRef takes the params of a table name, a key field and a name field to operate in a similar manner to the ItemRef and link data back in.</p>
<p>The observant will notice that both the ExternalItemRef and the built-in ItemRef field also have a find entry button. This button has also been added to the ePrint item editing screen as well and triggers a popup window which allows easy searching for the particular item (user, author, author instance) that you are interested in.</p>
<div id="attachment_566" class="wp-caption alignnone" style="width: 310px"><a href="http://pasamio.com/wp-content/uploads/2009/08/authorid-eprint_edit_w-popup.png"><img class="size-medium wp-image-566" title="Author ID - ePrints Edit View with Instance selector popup" src="http://pasamio.com/wp-content/uploads/2009/08/authorid-eprint_edit_w-popup-300x104.png" alt="The standard ePrints creator fields have a &quot;Find Entry&quot; button as well." width="300" height="104" /></a><p class="wp-caption-text">The standard ePrints creator fields have a &quot;Find Entry&quot; button as well.</p></div>
<p>So as we can see there is now a &#8220;Find Entry&#8221; button that pops up with a new window allowing us to select an author instance for this author easily and not have to worry that we&#8217;re going to mistype their email address or similar.</p>
<p>This is just a quick introduction into some of the changes that the Author ID system which USQ has developed provides. Ideally we&#8217;d love to feed this back to the ePrints core so that everyone can use this, or a similar system, in a great way. If you want to read more you can check out the &#8220;<a title="Author ID Notes" href="http://sammoffatt.com.au/kb-downloads/doc/3/raw">Author ID Notes</a>&#8221; document on my <a title="Sam Moffatt Consulting Knowledge Base Downloads" href="http://sammoffatt.com.au/kb-downloads">knowledge base download site</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2009/08/28/eprints-author-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 6-Nov-2008: Barcodes and Backups!</title>
		<link>http://pasamio.com/2008/11/06/today-6-nov-2008-barcodes-and-backups/</link>
		<comments>http://pasamio.com/2008/11/06/today-6-nov-2008-barcodes-and-backups/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 11:33:19 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=58</guid>
		<description><![CDATA[As it seems a few of my mornings are starting I played a quick albeit one sided game of Dawn of War with my house mate to test that the network play was working between my Mac (using CrossOver Games) and his PC (Windows XP). Suffice to say everything worked fine network wise, my Mac [...]]]></description>
			<content:encoded><![CDATA[<p>As it seems a few of my mornings are starting I played a quick albeit one sided game of Dawn of War with my house mate to test that the network play was working between my Mac (using CrossOver Games) and his PC (Windows XP). Suffice to say everything worked fine network wise, my Mac stil has some visual issues but I&#8217;m not too phased about that at the moment. So that was an interesting start to the day and when he returns from work it&#8217;ll be an interesting end as well.</p>
<p>Work again is fun as always. We&#8217;re working on solving various election problems and getting envelopes. Our printers came back stating that they didn&#8217;t want to do Code 128 for the barcodes because its too hard preferring Code 39 instead. As the day progressed it turned out that we&#8217;re going to use Code 128 more for space issues because we&#8217;ve got that much junk going out on the envelopes. This saga has been occurring over a few days, I really want to get a few proofs done before we actually get the batch done from them first to ensure that everything is good but we&#8217;ll see. Testing on the system we&#8217;re going to be using to track the election on has also begun to ensure that the system can in fact handle items properly, we had a word of warning from one of the newer guys from the regions that it had issues and that was with nowhere near the same workload. So we&#8217;re hoping we can test the system out with a few VM&#8217;s emulating the system for multiple data entry. There have been issues with the system in question in the past (in fact the system is being replaced)  so hopefully this won&#8217;t be a time when it does have issues otherwise we&#8217;re going to have large numbers of problems.</p>
<p>The bulk of my day was spent working on the restore framework for Joomla! 1.6, or more accurately the new JDataLoad system and the JLoaderSql adapter. The data load system, as its name suggests, loads data into the Joomla! database from a data source. In this case I&#8217;m looking at the SQL files which in my sample data is actually one of the 1.5 sites that I&#8217;m an administrator over at work. Its relatively small in the grand scheme of things with only a few meg and around 9000 queries. So far its been sufficient to find a few issues, one being dropping a table before a task yield which caused a missing table error from J! (put in a simple patch for that, if the last query was a drop, go to the next query in the hope that its a create) and another was a minor typo error which caused some multiline strings to be processed incorrectly when they were on a yield boundary again as well. But all in all its working well even importing data faster than MySQL Query Browser was (to its fairness it highlights each query as it goes) in my test runs. Its now committed to trunk and when I get a chance I&#8217;ll write up something about it and put it somewhere</p>
<p>Extra fun today came from trying to write up business cases for the projects I want to work on in the next year or so until I have to write it up again (fun, yeah!). Initially my boss (who is great) thought of me and tried to convert the files from Excel into a more Open format so that I can get at it on my Mac and Linux box. Somewhere during the conversion however the fields got trimmed and data lost, so I offered to edit the document in Excel directly using our Windows only document management system logging in via our Citrix services. The system, OpenText&#8217;s DM, isn&#8217;t too bad for the most part and does the job well and today I found no fault with it. Today was the day when Microsoft&#8217;s tools decided they wanted to misbehave.</p>
<p>Earlier in the week my boss had emailed me a doclink to the document stored in DM. A doclink is a small text file with the document number in it which basically triggers the system to load the specified document, something that usually works quite well. However Outlook, due to various configuration changes, decided that it didn&#8217;t want to start for some reason even though earlier in the week it was working perfectly fine. After Outlook repeatedly informing me it wanted to recreate my profile and then informing me that it couldn&#8217;t contact my Exchange server and offering to allow me to work offline which consequently failed due to a lack of a profile, I ended up using Mac OS X&#8217;s built in &#8220;Mail&#8221; application (yes, the email application is called &#8220;Mail&#8221;) to get at my email to find the document number and open it. Usefully enough this is done through the IMAP interface on Exchange and worked well and doesn&#8217;t suffer from some of the other issues that the Outlook clients have, such as the address book caching which caches the old Lotus Notes addresses instead of their newer Exchange ones resulting in emails going to the wrong place. Yay Outlook! Suffice to say I found the file and made the changes that I needed to before accosting our Exchange administrator who had returned to see if he could fix the issue &#8211; which he did mind you after some trial and error.</p>
<p>The last little item I looked into was building a system to version the content from Joomla! back into our document management system. The new document management officer assures me that we can do it and has even proposed a nifty way of importing the data into the system. It looks like one of the products we have, KoFax, will help us by allow us to generate XML files which specify the documents that we&#8217;re creating and the different versions. If we can get this to work it will be really awesome as it&#8217;ll mean that our website is in part integrating back into our document management system without hacking into the database! I&#8217;ve still got to build it and work out where we want to target the extension, but suffice to say its on my project list for next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/11/06/today-6-nov-2008-barcodes-and-backups/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 05-Nov-2008: Kerberos and Joomla! 1.6&#8242;s Backup system</title>
		<link>http://pasamio.com/2008/11/05/today-05-nov-2008-kerberos-and-joomla-16s-backup-system/</link>
		<comments>http://pasamio.com/2008/11/05/today-05-nov-2008-kerberos-and-joomla-16s-backup-system/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 09:51:16 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[joomla]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=55</guid>
		<description><![CDATA[Today had a lackadaisical start with me working on getting Dawn of War:Winter Assault to work on my Mac (once it was fully patched seems to have started working, yay for no copy protection!) after doing a whole heap of disk swapping last night to get the base installed only to see it complain it [...]]]></description>
			<content:encoded><![CDATA[<p>Today had a lackadaisical start with me working on getting Dawn of War:Winter Assault to work on my Mac (once it was fully patched seems to have started working, yay for no copy protection!) after doing a whole heap of disk swapping last night to get the base installed only to see it complain it couldn&#8217;t find a CD/DVD drive. After I installed the 1.50 patch it asked me if I wanted to start and for the first time it actually started the game without issues. I managed to load it up and play a quick game and fielded a call from my Mum before heading to work. I also added some projects to my list and categorised items, now on the todo list: an automated login key generator for Joomla! and a component to compliment the ban IP/address plugin. Now all I need is time!</p>
<p>The Kerberos keys that I had asked to be remade were ready for me by the time I got there. It took a bit of time to rebuild the different keytab files to support the vhost environment (need to merge the respective keytab files) but once that was done everything was working. Well, mostly working. Firefox on my Mac worked fine, Firefox on the Windows desktops I tried worked when they were configured (see http://grolmsnet.de/kerbtut/firefox.html for information on what you need to do to get Firefox to do negotiate), IE on most of the desktops worked fine however some installations weren&#8217;t getting SSO, all of the Citrix servers seem not to pass through authentication (they end up going in a weird loop where IE appears to keep loading the page) and Safari on my Mac doesn&#8217;t seem to want to play the game either. Perhaps I&#8217;ll sort that out over the next week or so but that consumed a reasonable amount of time going through and checking different IE versions and if they worked. The only machine not to play the game seems to be Firefox on my Linux desktop (it should be working) so I&#8217;ll have a look at the ones that don&#8217;t work and why they don&#8217;t want to work. For the Windows boxes I have the feeling that the Netware client is causing issues (which would explain Citrix) so hopefully when our network eradicates Novell we&#8217;ll be fine.</p>
<p>And that leads us to the afternoon&#8217;s fun of building Joomla! 1.6&#8242;s backup system. I&#8217;ve managed to get the system to export the sample database, reimport it and then delete the files afterwards so I&#8217;ve moved onto much larger goals. I&#8217;ve taken one of our internal websites and I&#8217;m trying to get it to important. Suffice to say that it has enough data to cause an issue with the system. For data loading I&#8217;m using a heavily modified version of Alexey Ozerov&#8217;s &#8220;<a title="Big Dump homepage" href="http://www.ozerov.de/bigdump.php">BigDump</a>&#8221; script, which has been used in the past in a less modified form for the Joomla! 1.5 migrator. It is slowly being converted to use the new Tasks system in 1.6 which is another concept borrowed from the 1.0 migrator. The Tasks system in 1.6 has two items: a task set which is a container for individual tasks. So considering backups, one task set might be a full backup run of the site with individual tasks being an SQL backup, a file backup (tar archive perhaps?) and maybe copying that to a remote FTP site or similar. So the one task set would have an &#8220;SQL backup&#8221; task and a &#8220;file backup&#8221; task. Extension package installation may do a similar item as well splitting the install into different parts.</p>
<p>A new part of this is the data load system that provides functionality to read and load data files, at the moment only supporting SQL but I&#8217;m hoping I&#8217;ll be able to create a CSV one as well some luck, again probably reusing Alexey&#8217;s code in part here as well. I&#8217;m mostly through building parts of this system though I&#8217;m experiencing a strange issue with my sample data (hence why the updates haven&#8217;t been committed to J!&#8217;s SVN repository today) where it loads the file up through to almost 2000 queries and seems to stop suddenly. I&#8217;m not quite sure whats going on but I&#8217;m happy enough that the task system is picking up and storing values for it to progress as far as it does.</p>
<p>Another successful day spent on my Mac as well, NetBeans doesn&#8217;t seem to want to look at my project any more crashing instead of loading it which is disappointing but I&#8217;ll work that out another day. And now its time to enjoy some Dawn of War.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/11/05/today-05-nov-2008-kerberos-and-joomla-16s-backup-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 04-Nov-2008: Fun with Kerberos</title>
		<link>http://pasamio.com/2008/11/04/today-04-nov-2008-fun-with-kerberos/</link>
		<comments>http://pasamio.com/2008/11/04/today-04-nov-2008-fun-with-kerberos/#comments</comments>
		<pubDate>Tue, 04 Nov 2008 11:26:37 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[activedirectory]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[jauthtools]]></category>
		<category><![CDATA[kerberos]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=53</guid>
		<description><![CDATA[Today was a mostly ordinary day, though the day started with me buying Red Alert 3, so that wasn&#8217;t too bad &#8211; yay! Australia! A week behind the rest of the world! I could have pirated the game and had it faster and cheaper, perhaps even finished! But I digress, it was an ordinary day. [...]]]></description>
			<content:encoded><![CDATA[<p>Today was a mostly ordinary day, though the day started with me buying Red Alert 3, so that wasn&#8217;t too bad &#8211; yay! Australia! A week behind the rest of the world! I could have pirated the game and had it faster and cheaper, perhaps even finished! But I digress, it was an ordinary day.</p>
<p>Today is Melbourne Cup day, being the first Tuesday of November, so we had a luncheon of sorts and a drawing for the horses. Didn&#8217;t win, the food was good, I&#8217;m $10 poorer and such is life.</p>
<p>I&#8217;ve been spending more time at work using my Mac as a primary machine. Since I&#8217;ve moved to Exchange from Domino (or Outlook from Notes), I&#8217;ve gotten Evolution on Linux mostly working (with the exception that it doesn&#8217;t automatically look up names for emails which is tedious) and Apple&#8217;s Mail and Address Book both playing nicely with Exchange. I do miss the fact that I had Notes on my Linux desktop and things mostly worked albeit slowly and consuming large amounts of memory, but it worked with all of the features available normally. Mail&#8217;s ability to due autocompletion is what is drawing me back to it as a client, which when you start writing emails is actually more useful than you would think. Its still not up to par with the Notes autocomplete which was quite cool and a lot more advanced than either Mail&#8217;s or Outlook&#8217;s (I get Outlook via Citrix).</p>
<p>I&#8217;ve also been trying out NetBean&#8217;s PHP Early Access through a nightly build (has the ability to create PHP projects from existing sources) and I&#8217;m impressed with it. I tried it out because I wanted to try out debugging with my PHP instance and the dated version of Eclipse I had (3.2) seems to have issues &#8211; more than likely my fault &#8211; and I don&#8217;t want to waste time on trying to fix something. NetBean&#8217;s installed and worked almost instantly, however it took me a while to find where I could change the params to get J! to route items properly. I managed to work out the bug that I was having without too much issue. I knew what it was but not where it was: turned out to be exactly what I thought, an assignment operator used instead of the append operator. The Subversion support seems to be a bit off and doesn&#8217;t work yet, so I&#8217;m not quite ready to ditch Eclipse yet &#8211; but I&#8217;ll try with later versions to see what I get.</p>
<p>I had a chat with the principal (we have principal, manager, director, CEO as our chain of command) about the projects that I&#8217;m doing and the ones I&#8217;m interested in so I&#8217;ll have to do some paperwork and business cases for the new projects and justify items. We&#8217;ve recently got a new manager who is trying to find where everything is so part of this is explaining everything so that he can get a grasp of the way the system works.</p>
<p>Then I spent the majority of the afternoon with one of the ITS guys working through how our Citrix boxes work with Flex profiles and the mandatory profiles filling in the gaps in his knowledge and how different parts of the system and why items might break or behave in a particular way. I think he&#8217;s worked out how it works and he&#8217;s even figured out why a few issues are happening. So nothing exciting but useful.</p>
<p>And finally I had fun with Kerberos. I built the Kerberos module on the SLES10 server, installed it, restarted Apache and tried to get it to work. On my Mac both Safari and Firefox requested a username and password instead of using a Kerberos token and IE6 in my Citrix session seemed to just go in a weird infinite loop. I slowly worked through my entire Kerberos configuration on the server until I got to looking at the keys. It turns out that the keys were created with the wrong virtual host name for the server which is causing the issues. The keys for the real server name actually worked fine when I got around to testing them which proves that everything will work once I get the keys. The last part is a fix to the Citrix system which for some reason think that the intranet site is actually on the internet, but I&#8217;m assured that this should be easy to achieve. Getting Kerberos up and running was pretty easy ignoring the faulty keys compared with some of the nightmares I&#8217;ve had getting items to play nicely together. I&#8217;ll probably add something to my guide (http://sammoffatt.com.au/jauthtools/Kerberos) on it, to help with items.</p>
<p>Who knows, I may have even figured this Kerberos thing out!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/11/04/today-04-nov-2008-fun-with-kerberos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A subtle reminder on the dangers of non-free software</title>
		<link>http://pasamio.com/2008/05/24/a-subtle-reminder-on-the-dangers-of-non-free-software/</link>
		<comments>http://pasamio.com/2008/05/24/a-subtle-reminder-on-the-dangers-of-non-free-software/#comments</comments>
		<pubDate>Sat, 24 May 2008 06:07:53 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=45</guid>
		<description><![CDATA[I&#8217;m a proponent of open source software and free software, and in some cases even non free software has its advantages so long as the source is available (e.g. commercial GPL) but someone gave me a link the other day that reminded me why a lot of closed systems have issues: http://forums.cubecart.com/index.php?showtopic=33714&#38;pid=151145&#38;st=0&#38;#entry151145 Their server went [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a proponent of open source software and free software, and in some cases even non free software has its advantages so long as the source is available (e.g. commercial GPL) but someone gave me a link the other day that reminded me why a lot of closed systems have issues:</p>
<p><a href="http://forums.cubecart.com/index.php?showtopic=33714&amp;pid=151145&amp;st=0&amp;#entry151145">http://forums.cubecart.com/index.php?showtopic=33714&amp;pid=151145&amp;st=0&amp;#entry151145</a></p>
<p>Their server went down which means you couldn&#8217;t (temporarily) update your site. More of a disservice. Similar to Microsoft Windows Genuine Advantage issues legitimate people have had with that &#8220;service&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/05/24/a-subtle-reminder-on-the-dangers-of-non-free-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAuthTools Update</title>
		<link>http://pasamio.com/2008/02/05/jauthtools-update/</link>
		<comments>http://pasamio.com/2008/02/05/jauthtools-update/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 12:26:22 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[jauthtools]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=37</guid>
		<description><![CDATA[Today I&#8217;ve been working on some new stuff for Joomla! to enable SSO between disparate Joomla! instances. I&#8217;ve tested it on Joomla! 1.0 and 1.5 in legacy mode. I&#8217;ll do some more work later to get it working with Joomla! 1.5 in native mode and to better integrate with JAuthTools for 1.5 (to utilise the [...]]]></description>
			<content:encoded><![CDATA[<p>Today I&#8217;ve been working on some new stuff for Joomla! to enable SSO between disparate Joomla! instances. I&#8217;ve tested it on Joomla! 1.0 and 1.5 in legacy mode. I&#8217;ll do some more work later to get it working with Joomla! 1.5 in native mode and to better integrate with JAuthTools for 1.5 (to utilise the SSO system that I&#8217;ve written for 1.5).  If you&#8217;re interested, check out the JAuthTools SVN here: http://joomlacode.org/svn/jauthtools/sso/joomla10x/soapsso. If you check it out you can use the install from directory feature to install it into your test sites. I&#8217;ll have packages up in the next few days.</p>
<p>I&#8217;m also looking at doing some work on the JAuthTools for 1.5 to improve support. There appears to be some issues so I want to get it back up and running as well as porting/merging some of the features from the LDAP SSI into 1.5 and the LDAP Authentication plugin. I&#8217;ll probably also do some update to docs on the wiki as well to reflect the new features.</p>
<p>Things on my todo list after I clean up my released JAuthTools plugins:</p>
<ul>
<li>Backlink Manager</li>
<li>JAuthTools Manager</li>
<li>JDiagnostics for 1.5</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/02/05/jauthtools-update/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Today, 14-Jan-08: Query languages, LDAP, business intelligence and filesystems</title>
		<link>http://pasamio.com/2008/01/14/today-14-jan-08-query-languages-ldap-business-intelligence-and-filesystems/</link>
		<comments>http://pasamio.com/2008/01/14/today-14-jan-08-query-languages-ldap-business-intelligence-and-filesystems/#comments</comments>
		<pubDate>Mon, 14 Jan 2008 07:10:53 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[authentication]]></category>
		<category><![CDATA[businessintelligence]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[edirectory]]></category>
		<category><![CDATA[endoftheday]]></category>
		<category><![CDATA[filesystem]]></category>
		<category><![CDATA[filesystems]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[lca2008]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[linux.conf.au]]></category>
		<category><![CDATA[mdfs]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[pentaho]]></category>
		<category><![CDATA[research]]></category>
		<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=34</guid>
		<description><![CDATA[I&#8217;m going to start regularly writing daily posts about what I did today and the things I found interesting, I&#8217;ll at least try anyway. First up for today is a personal thing, I completed a rather largish Uni assignment today which reminded me of all of the pains that come with C++, but to follow [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to start regularly writing daily posts about what I did today and the things I found interesting, I&#8217;ll at least try anyway.</p>
<p>First up for today is a personal thing, I completed a rather largish Uni assignment today which reminded me of all of the pains that come with C++, but to follow that I returned to working on my filesystem in C, which is just more pain. I got a quick response back, and almost full marks (96%) so I&#8217;m happy for all of the time I put in to get it done and how its probably far more complicated than anything else that will be submitted (it used Boost Signals and a whole heap of other things that I don&#8217;t think will ever be taught in the subject for a long time). But hey, thats just Uni!</p>
<p>Today I finally managed to get Pentaho, some business intelligence (BI) software, to play nicely with Novell eDirectory&#8217;s LDAP interface. I must have missed the option, but Pentaho doesn&#8217;t seem to accept anonymous binding to the LDAP server, which means I need to bind as a user. By default our users funnily enough have less access than the anonymous account (which is actually a proxy account with full browse permissions). The solution was simple enough: we shunted our dummy Pentaho user into the same group as the anonymous proxy account and everything worked. So I&#8217;ve now got Pentaho using LDAP for authentication (yay!) and a MySQL database to get its role/group permissions. Funnily enough when its all said and done the documentation is pretty close to the mark.</p>
<p>But once I had that I don&#8217;t have an ability to manage the groups/roles within Pentaho, so I end up having to write some small PHP to manage that. Luckily I worked on a project a while back that I called &#8220;Joomla! Central Management for Users&#8221; which basically connected directly to MySQL databases of Joomla! installs and altered the users. I had originally built it with a plugin infrastructure in mind so that I could plug other stuff into it later. Starting this morning it only had a &#8216;connector&#8217; for Joomla! 1.0 via MySQL and LDAP, now it has one for the Pentaho security tables. This means I can easily copy users from LDAP or Joomla! into Pentaho without too much issues and has a debugged user interface already. But wait theres more!</p>
<p>When I was originally developing the tool I wrote a query language for it. See, SQL is a great language for databases, but its a bit hard to apply in situations where you don&#8217;t quite need all of that power. So I wrote my own query language. Its quite simple it can validate simple attributes and allows for set operations within &#8220;Sites&#8221; (a site is a container for users and groups). So for example I want to see all of the users who are on our web site but not in our LDAP directory:<br />
existsin &#8220;Web Sites&#8221; and not existsin &#8220;LDAP&#8221;</p>
<p>Primitive sure, but it because writing a large SQL expression for something simple. I hope to expand on it, but it already does what it needs to do for the time being.</p>
<p>So I&#8217;ve covered query languages, LDAP and BI! All I need now is the filesystem news. Today there was a whole heap of fan fare on Slashdot about the ZFS news from Apple, whilst thats cool and all (especially since I don&#8217;t mind Apple&#8217;s UI), I personally have my own filesystem that I&#8217;ve gotten back into to do some work on. It also happens to be a Uni assignment due on Friday! So I&#8217;ll be back to working on that and hopefully I&#8217;ll have it to a nice stage that I can do some lightening talks at linux.conf.au!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2008/01/14/today-14-jan-08-query-languages-ldap-business-intelligence-and-filesystems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A virtual thought for the day</title>
		<link>http://pasamio.com/2007/10/15/a-virtual-thought-for-the-day/</link>
		<comments>http://pasamio.com/2007/10/15/a-virtual-thought-for-the-day/#comments</comments>
		<pubDate>Mon, 15 Oct 2007 00:47:47 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=19</guid>
		<description><![CDATA[Last Friday I spent half an hour inside one of our smaller server rooms to fix our development VMWare ESX box. Its called development because its a Dell box and it takes a good five minutes for it to get past the BIOS and SCSI controller load screens. That was the first and last Dell [...]]]></description>
			<content:encoded><![CDATA[<p>Last Friday I spent half an hour inside one of our smaller server rooms to fix our development VMWare ESX box. Its called development because its a Dell box and it takes a good five minutes for it to get past the BIOS and SCSI controller load screens. That was the first and last Dell server I think we bought. However what had happened is that the powered had failed the day before and even though we managed to take the machine down, I think the UPS serving that server room had failed after the backup generator also failed which meant that the machine didn&#8217;t go down cleanly. However when it came back up it ended up failing and unable to find a root partition. I&#8217;ve broken enough Linux boxes to recognize the error and realize the solution is really simple, just fix up the fstab which is all I did and magically the box started working properly. But this lead me to an interesting thought.</p>
<p>Consider an all Microsoft shop who had never considered Linux before but wanted to virtualise their products. The best product to do this from what I can tell is the VMWare ESX platform which is really a small Linux hypervisor and then their own management tools underneath. The aim is that the end user never has to see the Linux back end they only see the graphical tools for Windows like Virtual Control Centre or the web based interfaces.  This leads me to the funny thought that a pure MS shop that had perhaps sworn off Linux might be deploying ESX because it is the best option out there (MS hasn&#8217;t brought out their solution yet, thats waiting on their Longhorn Server product), an entire Microsoft world virtualized under Linux.</p>
<p>It makes you wonder where the world is heading.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2007/10/15/a-virtual-thought-for-the-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing with GeoServer, Google Earth and ArcSDE</title>
		<link>http://pasamio.com/2007/10/07/playing-with-geoserver-google-earth-and-arcsde/</link>
		<comments>http://pasamio.com/2007/10/07/playing-with-geoserver-google-earth-and-arcsde/#comments</comments>
		<pubDate>Sun, 07 Oct 2007 01:38:48 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[gis]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=12</guid>
		<description><![CDATA[The other day I sat down for half a day and did some research into GeoServer (http://geoserver.org/) and connecting it to our Corporate GIS data store, which is an ArcSDE system. It took a surprisingly small amount of work to get GeoServer up and running and to get it to produce some simple basic results [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I sat down for half a day and did some research into GeoServer (<a href="http://geoserver.org/">http://geoserver.org/</a>) and connecting it to our Corporate GIS data store, which is an ArcSDE system. It took a surprisingly small amount of work to get GeoServer up and running and to get it to produce some simple basic results out of the ArcSDE system.The goal of the exercise was to see if I could get access to the mapping information in a system that wasn&#8217;t from ESRI, the makers of ArcSDE and ArcMap. The aim isn&#8217;t to replace these products for those who use them already or for those who might use them in the future but to provide a smaller end application of the GIS data that is presently stored in Council&#8217;s system. For this I picked Google Earth, Google&#8217;s 3D ATLAS application.The first set of sample data that I decided to use with the system was a set called &#8216;Queensland Towns&#8217; which gave me a general view of the state in a large scale so that I could roughly validate that I hadn&#8217;t made too bad a mistake. Thankfully the towns came up roughly where they were supposed to be, though I had to check with the GIS department when Google&#8217;s data didn&#8217;t quite line up with the points &#8211; it turns out that their information is wrong! From here I moved onto something more fine grained: our roads data. For each of the roads in the city we have data for stuff like where they start and finish, the particular speed limit along those roads and what sort of road they are (e.g. is it a major road or just a small suburban road). This put a bit of load on my machine as it generated the points for the data, the record set is far more complex (roads are split up into different segments to allow for multiple speed limits for a single road). However even though it took a while (and it was best to be zoomed in as close as possible to the features to minimize the amount that had to be retreived) the road data lined up with Google&#8217;s ortho almost perfectly. The interface to retrieve the information about the points of the feature weren&#8217;t the friendliest but I&#8217;m sure with a bit of work something like that could be fixed up to make it more useful. On the whole setting everything up and getting some results took a few hours of work (took longer to find the ArcSDE SDK and get it installed properly than anything else)  and we&#8217;ve got an accessible open result for transferring information.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2007/10/07/playing-with-geoserver-google-earth-and-arcsde/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>64-bit Hell and Eclipse</title>
		<link>http://pasamio.com/2007/10/06/64-bit-hell-and-eclipse/</link>
		<comments>http://pasamio.com/2007/10/06/64-bit-hell-and-eclipse/#comments</comments>
		<pubDate>Sat, 06 Oct 2007 08:03:12 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[64bit]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=15</guid>
		<description><![CDATA[For many years now I&#8217;ve had an AMD box that was capable of running 64-bit. I wouldn&#8217;t say I&#8217;m an early adopter, it just happened to be capable of 64-bit and it didn&#8217;t bother me if it was a feature or not. At the time I tried out the 64-bit builds of Linux and Windows, [...]]]></description>
			<content:encoded><![CDATA[<p>For many years now I&#8217;ve had an AMD box that was capable of running 64-bit. I wouldn&#8217;t say I&#8217;m an early adopter, it just happened to be capable of 64-bit and it didn&#8217;t bother me if it was a feature or not. At the time I tried out the 64-bit builds of Linux and Windows, found Windows woefully equipped to handle 64-bit and Linux a bit better (having all of the source code to recompile and fix things on a new word size does help things).<br class="webkit-block-placeholder" /><br class="webkit-block-placeholder" />Fast forward to today and I have (again) a AMD AthlonX2 64-bit box now on my desk and I&#8217;m running SLED10 64-bit. To be honest I&#8217;m doing better than Helpdesk who has a similar test box and have been trying to get 64-bit Windows XP up and running on the machine. They&#8217;re still hunting for drivers for the thing and keep complaining they have to go halfway across the internet to get things. For myself I&#8217;ve only downloaded one driver for the ATI graphics card on it, more to get dual head mode working on the graphics card. So I&#8217;m up and running and I&#8217;m not really noticing any issues with applications. Everything I&#8217;ve thrown at this box has been handled perfectly, until I decided to upgrade Eclipse. Eclipse is a strange beast and the build I have is a 32-bit build. It worked fine by default, however the Java version that I have on my desktop is rather ancient (1.4.2, thank you SuSE). This meant that some things didn&#8217;t want to work properly. I tried to upgrade to the IBM provided 1.5 release which wanted to be 64-bit. Which is fine, until you realize that the Eclipse build has a 32-bit SWT support layer. Try again! So I ended up downloading the 32bit Linux Java off the Sun website and installing it. That got me up and running with 1.6 and Eclipse started and almost got me to where I wanted to be. Then Eclipse hanged itself. Eclipse does this from time to time, so I just let it sit there and do what ever it does and it came good. I have a feeling its trying to go to the internet or some other network resource which is taking its sweet time to respond, or for the internet, being blocked by a firewall somewhere.So this brings to light an issue with any system that indulges in dynamic linking. One of the issues here was Eclipse&#8217;s SWT library being 32-bit (there are 64-bit builds so that is fixable though I know not how) and at one point using a 64-bit build of Java. Funnily enough this isn&#8217;t as big an issue on my platform of choice, Mac OS X. As I pointed out in a <a href="http://apple.slashdot.org/comments.pl?threshold=-1&amp;mode=thread&amp;commentsort=0&amp;op=Change&amp;sid=243857&amp;pid=19707335">Slashdot</a> comment Apple has done a great job of shifting architectures for their operating system and let alone the 32-bit/64-bit transition. They&#8217;ve had to move from their original Motorolla <a href="http://en.wikipedia.org/wiki/680x0">m68k</a> powered machines to <a href="http://en.wikipedia.org/wiki/PowerPC">PowerPC</a> based machines and now from PowerPC on to Intel, and they&#8217;ve used emulation both times swapping from the <a href="http://en.wikipedia.org/wiki/Mac_68K_emulator">m68k to PPC</a> and then from <a href="http://en.wikipedia.org/wiki/Rosetta_%28software%29">PPC to Intel</a> to make the transition lighter, and utilizing &#8220;<a href="http://en.wikipedia.org/wiki/Universal_binary">Universal Binaries</a>&#8221; similar to the &#8220;<a href="http://en.wikipedia.org/wiki/Fat_binary">fat binaries</a>&#8221; they used previously to get things up and running. The only other element of note is providing the &#8220;<a href="http://en.wikipedia.org/wiki/Classic_%28Mac_OS_X%29">Classic</a>&#8221; interface to ease the transition from the <a href="http://en.wikipedia.org/wiki/Mac_OS_nanokernel">nanokernel that powered Mac OS 9 and earlier to OS X&#8217;s new </a><a href="http://en.wikipedia.org/wiki/XNU">XNU</a> microkernel. The system is in effect emulating a Classic machine, though it isn&#8217;t complete. Though of most note Apple announced the toolchain to make the PPC to Intel switch all possible ahead of time and integrated it directly into their primary developer tool, <a href="http://en.wikipedia.org/wiki/XCode">XCode</a>.Perhaps this is why Apple&#8217;s transitions are so much smoother than that of either Microsoft or Linux.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2007/10/06/64-bit-hell-and-eclipse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun with Subversion and Apache</title>
		<link>http://pasamio.com/2007/10/03/fun-with-subversion-and-apache/</link>
		<comments>http://pasamio.com/2007/10/03/fun-with-subversion-and-apache/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 11:54:52 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[apache]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=18</guid>
		<description><![CDATA[I&#8217;ve been having some issues with getting my Subversion repository to play nicely. For some reason it started to randomly attempt to point to a repository called &#8220;error&#8221; which puzzled me a bit. A mailing list entry has set me up with a solution  (http://svn.haxx.se/users/archive-2004-06/1312.shtml) and it appears looking around a bit further and a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having some issues with getting my Subversion repository to play nicely. For some reason it started to randomly attempt to point to a repository called &#8220;error&#8221; which puzzled me a bit. A mailing list entry has set me up with a solution  (<a href="http://svn.haxx.se/users/archive-2004-06/1312.shtml">http://svn.haxx.se/users/archive-2004-06/1312.shtml</a>) and it appears looking around a bit further and a <a href="http://svn.haxx.se/users/archive-2004-02/0682.shtml">few</a> <a href="http://www.howtoforge.com/forums/archive/index.php/t-1035.html">other</a> <a href="http://www.svnforum.org/2017/viewtopic.php?p=8069&amp;sid=cd3b90fef6bc6b91cf98e489a725bcfe">people</a> have had the issue as well. The basic problem is that somewhere the system is throwing an error, it appears a 500 which is an Internal Server Error. But this doesn&#8217;t seem to be the base cause since I feel this is actually being generated internally for some reason and bounced around. It happens that the reason why its bouncing here is because of an error directive somewhere is causing an error page to be looked for, and since by default we&#8217;re pointing to our errors being at /error, which Subversion tries to find a repository for because &#8220;SVNParentPath&#8221; is set with the Location set to the root (e.g. &#8220;&lt;Location /&gt;&#8221;), we end up getting a strange error from Subversion. The vexing thing is that checkouts seem to have no issue, updates are fine but adding new files seems to have issues.</p>
<p>So the solution from the above as to add a redirect to another virtual host on the server:</p>
<pre>RedirectMatch permanent ^/error http://pasamio.com/error</pre>
<p>Another solution is to rewrite the ErrorDocument to make it return strings instead of page: </p>
<pre>
ErrorDocument 400 "400 HTTP BAD REQUEST"
ErrorDocument 401 "401 HTTP UNAUTHORIZED"
ErrorDocument 403 "403 HTTP FORBIDDEN"
ErrorDocument 404 "404 HTTP NOT FOUND"
ErrorDocument 405 "405 HTTP METHOD NOT ALLOWED"
ErrorDocument 408 "408 HTTP REQUEST TIME OUT"
ErrorDocument 410 "410 HTTP GONE"
ErrorDocument 411 "411 HTTP LENGTH REQUIRED"
ErrorDocument 412 "412 HTTP PRECONDITION FAILED"
ErrorDocument 413 "413 HTTP REQUEST ENTITY TOO LARGE"
ErrorDocument 414 "414 HTTP REQUEST URI TOO LARGE"
ErrorDocument 415 "415 HTTP SERVICE UNAVAILABLE"
ErrorDocument 500 "500 HTTP INTERNAL SERVER ERROR"
ErrorDocument 501 "501 HTTP NOT IMPLEMENTED"
ErrorDocument 502 "502 HTTP BAD GATEWAY"
ErrorDocument 503 "503 HTTP SERVICE UNAVAILABLE"
ErrorDocument 506 "506 HTTP VARIANT ALSO VARIES" 
</pre>
<p>This also fixes the problems, though in a few more lines. This is perhaps the better solution as it wipes out the old ErrorDocument directives that were giving us some troubles and returns a straight string. The next simplest solution is of course to move the Subversion &#8220;SVNParentPath&#8221; from the root to its own path underneath the root, which is the solution that most people seem to go in for doing.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2007/10/03/fun-with-subversion-and-apache/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How it works: 1.0 to 1.5 Migration</title>
		<link>http://pasamio.com/2007/08/22/how-it-works-10-to-15-migration/</link>
		<comments>http://pasamio.com/2007/08/22/how-it-works-10-to-15-migration/#comments</comments>
		<pubDate>Wed, 22 Aug 2007 13:48:37 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[joomla]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=11</guid>
		<description><![CDATA[This post is going to be a technical post on what goes on behind the scenes of the components. For me this is easier than writing the how to documentation on things but it will give those who are interested the knowledge they need so really it&#8217;ll be a how to with technical bits. So [...]]]></description>
			<content:encoded><![CDATA[<p>This post is going to be a technical post on what goes on behind the scenes of the components. For me this is easier than writing the how to documentation on things but it will give those who are interested the knowledge they need so really it&#8217;ll be a how to with technical bits. So without any further ado, here it is!<br />
<span id="more-11"></span><br />
There are two parts to migration: the 1.0 side and the 1.5 side. The 1.0 side takes place in a special migrator component. The original component, written by David, was mostly a simple SQL dump creator limited to specific tables and not very configurable in this respect, however it worked quite well. The problem is that its not very configurable and for a site with a lot of third party extensions this means that they would have to write their export utility. Further more since that tool was written, there have been a lot of changes in things in the 1.5 land with respect to the parameters. In 1.0 there were parameters called &#8216;pdf&#8217; which was for the &#8216;show PDF icon&#8217; option, which in 1.5 have been renamed to &#8216;show_pdf_icon&#8217;. Both of these were design considerations for the new tool.</p>
<p>The new tool is based around two concepts: an ETL plugin that defines a transformation that creates an SQL statement. For the most part these are extraction transformation (e.g. it comes from a database table), however there exists an ETL plugin (the configuration one) that extracts settings from the 1.0 configuration.php file and puts them into different parts of the 1.5 database. An ETL plugin is at the core quite simple and can be successfully implemented in as little as five lines of PHP code that extend the base ETLPlugin class. Those lines basically define the name of the table that the plugin transforms, a friendly name and a few brackets for good measure. This simply extracts the contents of the table without any modification on the fly. An ETL Plugin can also be more complicated with easy ways to skip table columns, rename table columns or alter the value of a column in a row easily (hence the transformation part). This is used to alter some tables as they are exported from 1.0 instead of attempting this in 1.5 as we&#8217;re already examining each row to generate the SQL file.</p>
<p>The majority of the work of an ETL Plugin is handled by the &#8216;doTransformation&#8217; function which generates the SQL statement. For most plugins this function can safely be inherited by the subclass and other functions (which control the alteration of column names or values) should be updated to add relevant functionality. The &#8216;doTransformation&#8217; function fits into the migrators task system and is executed as per the values of the present task (table name, and current iteration).</p>
<p>There is another form of plugin, called an SQL Plugin. The SQL Plugin is really simply a text file with SQL in it which is designed so that third party developers can place &#8216;CREATE TABLE&#8217; commands in the SQL file before their ETL plugins fire and output INSERT statements that are going to be expecting a table. These plugins are stored in the &#8216;tables&#8217; folder of the migrator, and the ETL plugins are stored in the &#8216;plugins&#8217; folder. Existence of a file in this directory will mean its inclusion in the migration. There is no published or unpublished state since this should be a mostly one off event.</p>
<p>The task system is used by the migrator to prevent the system from timing out by completing excessive commands against the system. The task system works by asking an ETL plugin how many rows it has to transform and stores this in a table. Once it has done that it also collects all of the SQL plugins and places this into the new migrations SQL file. After this is all done the task handler is executed and starts the ETL for the tables. The task system works through each ETL plugin, calling the &#8216;doTransformation&#8217; plugin. When the task system detects that it is getting to a set threshold of the PHP timeout it will pause the migration, update the present task and end output telling the browser (via JS) to load up the task handler again. It completes this for as many time is as necessary until there are no tasks left in the system and the SQL file is complete.</p>
<p>So now we have our SQL file nicely generated from the migrator and now we need to put it into 1.5 so that we can use all of the really cool features. One thing to note is that at present the behaviour of the migrator is to strip the prefix of the existing site and replace it with jos_ &#8211; I made this decision as a documentation reduction and simplification feature (so that the last step in the 1.5 install, where the migration is triggered from, would always be &#8216;jos_&#8217;, but I might change this as it appears to be causing confusion). This doesn&#8217;t mean that the 1.5 table has to have the &#8216;jos_&#8217; prefix, but you do need to tell the migrator that this is the prefix. This leads me to the next step in the migration chain: a 1.5 install.</p>
<p>The 1.5 install completes normally until the final screen, the main configuration screen. Until this point the installation is the same for a migration or a blank Joomla! install. However there are some things to fill out on the final screen. This screen asks you for your site name, the admin email and password, and finally if you want to do a migration load or a sample install. We&#8217;re doing a migration so we check that box and enter the information. Remember the old prefix for the migration is always jos_ so put that in there. The encoding is going to be that of your old database. Your old database might be UTF-8 already so select that, if you&#8217;re from most English speaking countries the default should be fine, and for other parts of the world you will have to select encoding relevant to your part of the world. This is used by the migrator to convert the file from that format into UTF-8 (or do nothing if its already UTF-8!) using the servers &#8216;iconv&#8217; function. IF you don&#8217;t have iconv installed, you will have to convert the SQL file into UTF-8 before you feed it to Joomla! and in which case you can set the encoding for this field to be UTF-8. For Linux users iconv can easily be installed on a local machine and worked from there. Windows users have various options (including a small Java application I have mentioned in one of my previous posts) to convert a file into UTF-8.</p>
<p>The last few options deal with Joomla! getting the SQL file and if its a migration file. For small files its easy to just upload via the HTTP upload interface, but for larger files that are over PHP&#8217;s upload limit, the files can be uploaded to the &#8216;installation/sql/migration/&#8217; directory and call the file &#8216;migrate.sql&#8217; so the installer can find it. You will need to tick the &#8220;I have already uploaded&#8221; check box as well as the &#8220;This is a 1.0 migration script&#8221; box. The HTTP upload option can alternatively be used. Keep in mind here that the SQL file will be altered by the migration system no matter what option you choose. So even if you have to FTP up the file, you will have to either copy over the file or reupload if the migration fails just as if it was a HTTP upload.</p>
<p>The next step in the chain involves a few changes made to the migration file. These changes involve rewriting some files, and altering the menu and modules table to insert their data into a temporary migration table instead of inserting them into the real table. This alters the file which is then fed into the data load script. The data load script then bulk imports all of the information into the database, again with checks to ensure that the system doesn&#8217;t time out. The script is a modified version of the &#8216;BigDump&#8217; script written by Alexey Ozerov (available here: http://www.ozerov.de/bigdump.php) that handles the import for us (and saved me having to write it out!). From here the migration system performs some magic. It rewrites the menu&#8217;s to match 1.5&#8242;s new style, it grabs and imports the modules and it also does various bulk SQL updates to change things. What it doesn&#8217;t grab (at any point) is site URL&#8217;s that will have changed in either URL fields or in content items. From here the migration is complete and the site is ready to run.</p>
<p>At this point there are a few final things to note. There is a new menu module created and published as a part of the install (this is in addition to your old module). All of the other modules in your old site are transferred even if they are third party and they&#8217;re set to be unpublished. You can install 1.5 version of the modules (or the 1.0 versions in legacy mode) easily and it won&#8217;t alter the database entries, so modules can be easily migrated. Third party components that wrote ETL plugins will require a special 1.5 installer that doesn&#8217;t attempt to create database tables (they&#8217;ll already be there) to install the files and relevant database entries.</p>
<p>With regards to migrator status, I&#8217;m planning on releasing an update for the migrator this Friday, I&#8217;m attempting to resolve a final bug with duplicate rows being created in the SQL file. I&#8217;m not quite sure what is causing this but its my last bug before I release RC2 of the Migrator on Friday (or hopefully tomorrow GMT+10!). I&#8217;m also going to push through some changes to the 1.5 side as well to ensure that certain conditions are met properly, so stay tuned for that (I&#8217;ll write a short blog post on that when I release it, so set your feed aggregators up to Joomla! to stay current).</p>
<p>A final hint for third party developers, if you&#8217;re currently using a configuration file outside of the database, with 1.5 you might consider using the JRegistry functions and migrating your configuration file into the components table. There are some nifty lines of code that allow you to create a configuration object quickly using this method (very cool) instead of having to create your own configuration file. An ETL plugin, similar to the configuration one can allow you to make the transfer.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2007/08/22/how-it-works-10-to-15-migration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
