<?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</title>
	<atom:link href="http://pasamio.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pasamio.com</link>
	<description>Sam Moffatt's Tech Blog: Writings on Technology</description>
	<lastBuildDate>Fri, 20 Jan 2012 08:40:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>iBooks Author Licensing</title>
		<link>http://pasamio.com/2012/01/20/ibooks-author-licensing/</link>
		<comments>http://pasamio.com/2012/01/20/ibooks-author-licensing/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 08:40:27 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[education]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macosx]]></category>
		<category><![CDATA[publishing]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[university]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=855</guid>
		<description><![CDATA[Today Apple announced their plan on changing the way the textbook industry works. To achieve this they&#8217;ve released a new tool called &#8220;iBooks Author&#8221; which provides a WYSIWYG interface to building ePUB files. Essentially the rub is that while you can use it to build content and you can give it away for free in [...]]]></description>
			<content:encoded><![CDATA[<p>Today Apple announced their plan on changing the way the textbook industry works. To achieve this they&#8217;ve released a new tool called &#8220;iBooks Author&#8221; which provides a WYSIWYG interface to building ePUB files. Essentially the rub is that while you can use it to build content and you can give it away for free in any of the formats you want, if you want to sell it you have to use the iBookstore. But let&#8217;s take a look back at the product for a second.<br />
<span id="more-855"></span><br />
Now while there are plenty of people decrying this model and a few wondering about the legal practicalities, it seems to me rather simple. Apple give you a tool for free, if you want to make money using that tool that they gave you for free you have to use their store.</p>
<p>To be honest I&#8217;ve seen this tactic before where vendors lock you into a given platform. And realistically Apple is already there in a sense. They limit your ability to distribute iOS applications and limit what you can include in their store. Anyone expecting Apple to behave any differently in this particular situation is delusional.</p>
<p>Fundamentally you need to think about what iBooks Author really is providing: it&#8217;s a typesetting tool. It&#8217;s not targeted towards print like InDesign or Quark, it&#8217;s a tool designed to highlight the capabilities of the iPad platform. But essentially it is a typesetting tool in a world where you&#8217;re not limited to static content but can build interactive content. And at the moment no other tool really exists to provide this functionality because the platform really hasn&#8217;t existed yet. But that doesn&#8217;t mean someone can&#8217;t make a tool that does do all of this just like when the iPhone was first released the smart phone market didn&#8217;t quite have what the iPhone offered. There were products that had portions of the system: many platforms had installable apps, many platforms had web browsers, a few platforms had large screens for input and many had phone and data capabilities. None of them quite had everything that the iPhone offered which is what made it successful.</p>
<p>Now what is being missed here is that effectively the results of what you typeset in iBooks Author is limited in where you can sell it. What Apple suggest is that you can develop your content in another tool such as either Pages or Word and then finalise your typesetting in iBooks Author. You can obviously produce your content entirely within iBooks Author but you don&#8217;t necessarily have to do this.</p>
<p>However at the end of the day it is this strange sense of entitlement, this sense of how dare Apple seek to limit what you could potentially do with a bit of software they have given away for free. This reminds me of people lamenting that you couldn&#8217;t write iOS apps on Windows and that Apple should port it.</p>
<p>At the end of the day it is their ecosystem, if you don&#8217;t like it then leave. Certainly this isn&#8217;t the first time Apple have taken draconian steps to limit freedom and it likely won&#8217;t be the last. It also reminds us that we need to read these agreements we agree to on the sides of the Apple Mac App Store. All of the Apple developed apps I&#8217;ve seen on their store have all had an accompanying &#8220;App License Agreement&#8221; so I wasn&#8217;t surprised to see this one.</p>
<p>Audacity in putting the terms there perhaps, however it is hardly unprecedented. Perhaps the audacity is the expectation that a for-profit company known for their tendency for draconian restrictions on their software and platforms would behave any differently when creating a new free tool to create content aimed towards their platform. What is really more surprising that they didn&#8217;t create an entirely new proprietary format&#8230;they just added some stuff to an existing one (not quite as evil but certainly up there).</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2012/01/20/ibooks-author-licensing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Copy as DBUnit bundle for Sequel Pro</title>
		<link>http://pasamio.com/2011/11/25/copy-as-dbunit-bundle-for-sequel-pro/</link>
		<comments>http://pasamio.com/2011/11/25/copy-as-dbunit-bundle-for-sequel-pro/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 09:42:13 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=850</guid>
		<description><![CDATA[The other day I created a bundle for Sequel Pro that exports a series of rows in DB Unit format compatible with PHPUnit. This means that creating test data can be easy when you have existing data. Sequel Pro is a great extensible MySQL tool for Mac OS X and this bundle makes use of [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I created a bundle for <a href="http://www.sequelpro.com/">Sequel Pro</a> that exports a series of rows in DB Unit format compatible with PHPUnit. This means that creating test data can be easy when you have existing data. Sequel Pro is a great extensible MySQL tool for Mac OS X and this bundle makes use of one of those extension points.<br />
<span id="more-850"></span></p>
<p>To use the bundle, <a href="http://sammoffatt.com.au/kb-downloads/doc/5/raw">download it from my consulting knowledge base</a>, extract the zip and then double click the bundle to install it using Sequel Pro.</p>
<p>Once you get into Sequel Pro go to a query view or a content view for a table to get a result list. In the result list select your rows, right click and select &#8220;Bundles&#8221; then &#8220;Copy&#8221; and &#8220;Copy as DB Unit&#8221;. The generated data will be put on your clipboard and you can paste it into your favourite application.</p>
<p>The output looks roughly like the following:</p>
<pre>&lt;table name="articles"&gt;
	&lt;column&gt;id&lt;/column&gt;
	&lt;column&gt;fileid&lt;/column&gt;
	&lt;column&gt;tag&lt;/column&gt;
	&lt;row&gt;
			&lt;value&gt;1&lt;/value&gt;
			&lt;value&gt;1&lt;/value&gt;
			&lt;value&gt;&lt;![CDATA[testing]]&gt;&lt;/value&gt;
	&lt;/row&gt;
&lt;/table&gt;</pre>
<p>Text values are automatically wrapped in CDATA tags and numbers are straight outputted. I haven&#8217;t done a lot of testing with this but for quick and simple creation of the XML files it&#8217;s coming in handy for myself. So I&#8217;m sharing this and hopefully it will come in handy for you!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/11/25/copy-as-dbunit-bundle-for-sequel-pro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A tale of two experiences: Dealing with Telstra customer support</title>
		<link>http://pasamio.com/2011/08/05/a-tale-of-two-experiences-dealing-with-telstra-customer-support/</link>
		<comments>http://pasamio.com/2011/08/05/a-tale-of-two-experiences-dealing-with-telstra-customer-support/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 13:02:56 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[australia]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=837</guid>
		<description><![CDATA[Once upon a time I was a happy Telstra customer. I had switched to Telstra from Optus after the release of the iPhone4 having realised that I was paying Optus the same amount of money as Telstra was charging to effectively get the same level of service, perhaps even a little less from Optus than [...]]]></description>
			<content:encoded><![CDATA[<p>Once upon a time I was a happy Telstra customer. I had switched to Telstra from Optus after the release of the iPhone4 having realised that I was paying Optus the same amount of money as Telstra was charging to effectively get the same level of service, perhaps even a little less from Optus than what Telstra offered.<br />
<span id="more-837"></span><br />
My story with Optus is another tale of disappointment that their system managed to get to a point where I couldn&#8217;t give them more money without it costing me over $200 (yes, backwards) which did help leaving them as well. But this story is about Telstra.</p>
<p>And the story begins around December 2010 with a defective iPhone 4 and Exchange. I had attempted to forward an email out of my work&#8217;s Exchange mailbox to a system administrator I was sitting next to from my iPhone. For some reason at the time this didn&#8217;t work quickly so I tried to forward it a few more times from my iPhone. It didn&#8217;t turn up at the other end and I forgot about it. Over the next few days I noticed that my phone was warmer than usual however I couldn&#8217;t work out what was going on. I made sure any application I could think of that would use data was terminated and I even tried to restart my phone at one point to make sure it was clear. I noticed that it was continually transmitting data but it continued to do that even after a restart of the phone. What&#8217;s going on?</p>
<p>I ended up in the mail application and noticed that it had a messaging saying there was one unsent message. I jumped into the outbox on the phone and saw that there was an error against the message that I&#8217;d been trying to send earlier in the week. I nuked it and watched my data usage stop increasing. By this time I&#8217;d received a wonderful SMS from Telstra letting me know that I&#8217;d gone over my limit. Was frustrating to be told I&#8217;d gone over my limit without knowing why it had happened.</p>
<p>Having figured out what was the root cause of the issue, I contacted Telstra. Unfortunately the fellow on the other end of the phone informed me that until I had a bill they couldn&#8217;t do anything for me. They did however give me a reference number and said that when the bill came that they would waive the data charges. Suffice to say that when the bill came, I called back and the person said the data charge had been waived. It turns out that they hadn&#8217;t waived the charge and a month later I called back and actually got some progress this time. It is disappointing that I had to ring three times to get it sorted however at all times the experience was positive and supportive. </p>
<p>In the mean time I had filed a bug report with Apple (actually before I contacted Telstra and I provided that bug report number to Telstra so that they could verify it if they needed it). I worked with the World Wide Developer Relations team to triage the issue and provide log files. I conclusively managed to nail it down to an issue with MobileMail&#8217;s background thread that would continue to resend the mail even though it was failing. The error seems to be a part of the ActiveSync protocol and there are some funky results returned. </p>
<p>As an aside, a month later or so I noted an article complaining about Windows Phone 7 chewing data from CNet (http://news.cnet.com/8301-10805_3-20030159-75.html). The article for the most part blamed Yahoo! but I also noticed something very interesting at the bottom:</p>
<blockquote><p>Microsoft has also identified an issue with our Exchange ActiveSync [EAS] email synchronization protocol that may affect a very small percentage of users.</p>
<ul>
<li>This issue can be caused by email that exceeds the mail server email size setting or is sent to an invalid email address</li>
<li>This issue can potentially affect email services that utilize the EAS protocol &#8211; Outlook and Gmail for example</li>
<li>The immediate mitigation is for users to delete mail that appears &#8220;stuck&#8221; in the outbox</li>
<li>This is currently scheduled to be fixed in a near-term end user update from Microsoft</li>
</ul>
</blockquote>
<p>Now the email in question that I was using was nearly 8MB with a 6MB PDF file as an attachment. I think that fits into some of the mail size settings. The service in question was the Exchange Active Sync protocol as implemented on the iPhone. The mail did appear to be &#8220;stuck&#8221; in the outbox and the iPhone kept sending it and apparently there will be an update from Microsoft. I&#8217;ve gone through again today and reproduced the issue on my iPhone4 running iOS 4.3.5 which is Apple&#8217;s latest stable release. In doing this I noticed that the phone was sending nearly 1MB of data each minute. </p>
<p>So now this happened another time and given my last experience I wasn&#8217;t worried about it. The last time it happened while it took three calls the matter was resolved relatively painlessly. I didn&#8217;t call when it happened because last time it didn&#8217;t make a difference &#8211; and that wasn&#8217;t necessarily Telstra&#8217;s fault the first time. However eventually the bill came and curiously this time Telstra sent me an SMS informing me of what I&#8217;d already known &#8211; I&#8217;d gone over my data limit. This time it gave me a message suggesting that I call a particular number.</p>
<p>I&#8217;ll be blunt and say that I was actually really excited and impressed. Telstra was actually making a positive move to get an issue resolved pre-emptively. I presume this was set up as an automated feature however someone put some thought into it somewhere. That, tied with the last experience, had me hopeful that I&#8217;d have a great experience. Oh how I ended up being wrong.</p>
<p>I rang the number, got through and explained what I wanted to happen and was told &#8220;You&#8217;ve rung the wrong number, I don&#8217;t actually handle that.&#8221; Wait, what? I rang the number your SMS&#8217;d me to suggest to ring for this particular issue. And the first contact I have informs me I&#8217;ve rung the wrong number. Someone hasn&#8217;t communicated properly internally. Anyway, the fellow gives it a go and is out of his depth. He tells me there isn&#8217;t any problems with the iPhone. I have two open issues with Apple for the iPhone (one of them being this one) as well as a few other that are marked as duplicates. I&#8217;m well and truly certain there are faults with the device, so someone on Telstra&#8217;s Sales team has drunk more of the cool-aid than I have. But I digress, I tried to explain that this had happened before and that I had an issue report with Apple. The fellow has a chat with his supervisor concerned he&#8217;s not going to get a commission from this call then transfer me to the iPhone department assuring me that he&#8217;d communicated my issue to them.</p>
<p>So the iPhone person gets on the phone and starts explaining to me how to turn off the cellular data on my iPhone. I try hard to treat Telstra&#8217;s customer service representatives with respect, inform them of relevant bug reports and even reproduce the issue and what I get treated like an idiot. At this point I felt that I&#8217;d met my obligation to attempt to contact the provider to get the issue resolved and they wanted me to disable cellular data. Go figure.</p>
<p>At this point I put through my complaint to the TIO. After a bit of a false start I got a contact with Telstra&#8217;s customer service representative and we discussed the issue. It started get back towards the sort of positive customer relationship that I&#8217;d like to have with my telephone provider. Unfortunately Telstra&#8217;s billing system continued to pretend that nothing had happened and even managed to send me a suspension notice for my account after the overdue notice. So kind.</p>
<p>Anyway, fast forwards another month I&#8217;d been wondering that I should have a bill from Telstra and it arrived earlier this week. I got back on Wednesday and opened up the bill to find that it noted that I had an overdue amount of $66. I went through my records and couldn&#8217;t find an invoice matching that amount. I did find that overdue notice and suspension notice so I almost wonder if Telstra&#8217;s billing system missed sending me a bill or if it got lost in the post. In any case I rang Telstra to ask about it and got them to send me a second invoice. They informed me that my last bill was apparently $220 or so and my last payment was a couple of days before the end of the billing period which doesn&#8217;t make sense. Today I get a wonderful overdue notice letter again demanding I pay the uninvoiced outstanding amount. Great. How about including the outstanding invoice as well when you do that Telstra plus any other additional invoices that might have been sent. Let me say I&#8217;m less than impressed, particularly when I saw that this bill was the first to note a charge reversal. My TIO complaint was filed on June 8th. That means that its taken them two billing cycles to get this correct (again). I don&#8217;t think I should be surprised. However I do find it rather arrogant that when it involves a debt to myself it takes Telstra two months to resolve the issue but when they want to extract money from me they don&#8217;t let it exceed more than a month before they&#8217;re sending nastygrams.</p>
<p>After all of this I&#8217;m curious if Windows Phone 7 or other Microsoft based operating systems that utilise ActiveSync have similar problems. I note that my Outlook desktop client doesn&#8217;t have this issue and successfully forwarded my test email. Android would also be another interesting test case to see how it behaves to see if the issue can be replicated there or if it is truly a bug with iPhone.</p>
<p>Sooner or later I&#8217;ll get all of this resolved though I&#8217;m soon to be a happy non-customer of Telstra. Not that Optus is better and Vodafone certainly isn&#8217;t an option but fortunately I&#8217;ll have an entirely new set of providers to be upset by in a weeks time.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/08/05/a-tale-of-two-experiences-dealing-with-telstra-customer-support/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Getting your Huawei modem working with Mac OS X Lion</title>
		<link>http://pasamio.com/2011/07/22/getting-your-huawei-modem-working-with-mac-os-x-lion/</link>
		<comments>http://pasamio.com/2011/07/22/getting-your-huawei-modem-working-with-mac-os-x-lion/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 13:42:04 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[64bit]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=832</guid>
		<description><![CDATA[You know the part before the upgrade where they tell you to check all of your applications before you upgrade? Well, last night I decided that it would be a great idea to upgrade my Mac from Snow Leopard to Lion. Turns out that perhaps wasn&#8217;t so great an idea after all when my Huawei [...]]]></description>
			<content:encoded><![CDATA[<p>You know the part before the upgrade where they tell you to check all of your applications before you upgrade? Well, last night I decided that it would be a great idea to upgrade my Mac from Snow Leopard to Lion. Turns out that perhaps wasn&#8217;t so great an idea after all when my Huawei USB 3G modem dongle decided that it wasn&#8217;t going to work since it wasn&#8217;t relevant for the new 64-bit only kernel. Oops, I should have checked first. But it isn&#8217;t a complete disaster!<br />
<span id="more-832"></span><br />
After frantically using Google to find a new driver to install and digging around the Huawei site trying to find a replacement driver I was getting to the point of doing some modifications to the com.apple.boot.plist file and restart my Mac with the i386 kernel instead of the x86-64 one that appears to now be the default.</p>
<p>In my many searches for a Mac OS X Lion compatible driver, I managed to find the following from mobile provider &#8220;3&#8243; in UK. The link, http://ask3.three.co.uk/mbbdocs/drivers/apple_drivers.html, contains a link to <a href="http://ask3.three.co.uk/mbbdocs/drivers/3UK_27_20110519_r93.zip" title="Huawei Dongle Drivers">&#8220;dongle drivers&#8221; for &#8220;Huawei dongles&#8221;</a> that work for Mac OS X Lion (10.7). Sounds like a winner!</p>
<p>So I download the zip file and it extracts out to leave me with a &#8220;3Connect Installer&#8221;. Not quite what I want however all is not lost. You see applications on Mac OS X are actually folders in disguise commonly referred to as either &#8220;bundles&#8221; or &#8220;packages&#8221;. So right click on the &#8220;3Connect Installer&#8221; and select &#8220;Show Package Contents&#8221;. This opens up a view with only &#8220;Contents&#8221; listed, foiled? Don&#8217;t worry, double click into that directory and then into the &#8220;Resources&#8221; directory. Here we find a &#8220;mobilemanager.mpkg&#8221; file. Now &#8220;mpkg&#8221; is a package which means it has more goodies in it. </p>
<p><a href="http://pasamio.com/wp-content/uploads/2011/07/Screen-Shot-2011-11-15-at-11.53.13-PM.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/Screen-Shot-2011-11-15-at-11.53.13-PM-300x100.png" alt="" title="Screen Shot 2011-11-15 at 11.53.13 PM" width="300" height="100" class="alignnone size-medium wp-image-847" /></a></p>
<p>So we right click on this and select &#8220;Show Package Contents&#8221; again. We&#8217;ve got our &#8220;Contents&#8221; folder and inside that we want to go to the &#8220;Packages&#8221; folder. In there two packages exist: &#8220;mobile_manager_application.pkg&#8221; and &#8220;huawei_universal_425_05.pkg&#8221;. Now if you&#8217;re like me, everything is setup already &#8211; you just need the driver. So I skipped the mobile manager application and just double clicked on the &#8220;huawei_universal_425_05.pkg&#8221; file and installed it.</p>
<p><a href="http://pasamio.com/wp-content/uploads/2011/07/Screen-Shot-2011-11-15-at-11.53.32-PM.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/Screen-Shot-2011-11-15-at-11.53.32-PM-300x100.png" alt="" title="Screen Shot 2011-11-15 at 11.53.32 PM" width="300" height="100" class="alignnone size-medium wp-image-848" /></a></p>
<p>After installing the Huawei Universal package, the next time I plugged in my Huawei E160 into my Mac it was detected and worked perfectly fine.</p>
<p>So if you&#8217;ve just upgraded to Lion and are trying to work out how to get your Huawei modem working properly with it, those instructions worked for me and I&#8217;m using it to write this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/07/22/getting-your-huawei-modem-working-with-mac-os-x-lion/feed/</wfw:commentRss>
		<slash:comments>321</slash:comments>
		</item>
		<item>
		<title>A few months with Titanium Appcelerator</title>
		<link>http://pasamio.com/2011/07/02/a-few-months-with-titanium-appcelerator/</link>
		<comments>http://pasamio.com/2011/07/02/a-few-months-with-titanium-appcelerator/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 12:28:07 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=823</guid>
		<description><![CDATA[For the last few months as a part of my university studies I have been writing up some course materials for a mobile device workshop. The document that I ended up writing for that grew much more than what I expected (over 100 pages) and barely scratches the surface of the topic. However this is [...]]]></description>
			<content:encoded><![CDATA[<p>For the last few months as a part of my university studies I have been writing up some course materials for a mobile device workshop. The document that I ended up writing for that grew much more than what I expected (over 100 pages) and barely scratches the surface of the topic. However this is more a review of Titanium Appcelerator.<br />
<span id="more-823"></span></p>
<h1>Platform</h1>
<p>So to begin with Titanium Appcelerator is a platform for using JavaScript to build native applications that run on iOS, Android, Blackberry and a few other platforms. If you&#8217;ve ever written any code for Java, then the style of coding that you use here is very familiar except the language is JavaScript. JavaScript is a curious language complete with it&#8217;s own wonderful set of quirks.</p>
<p>JavaScript is one of those languages that is everywhere. JavaScript is the magic sauce that makes the web go and it isn&#8217;t without it&#8217;s set of warts. Perhaps the most annoying part for me is the fact that scope is excessively awkwardly defined where you find these situations where a variable is in scope when you really didn&#8217;t expect it. This has lead to all sorts of curious patterns in JavaScript to work around these features.</p>
<p>So Titanium uses JavaScript to build a native UI for Android, iOS and BlackBerry. Unfortunately (fortunately?) I didn&#8217;t have access to the BlackBerry compatible SDK though with that platform doing it&#8217;s best to shoot itself in the foot I don&#8217;t think it is too much of a concern. This leaves Android and iOS which were the two platforms that I developed and tested upon for this particular project.</p>
<p>Being a Mac person I have a bit of a bias towards iOS. This is also borne out by me owning an iPhone which means the platform is natural to me. Android ends up frustrating me no end with its flawed and missing support for items. A great example is the constant battle to connect to my university wifi network. I had managed to get it working last week with our testing Samsung Galaxy S but this week it stopped working. Apparently the network is broken however I haven&#8217;t had any problems with my iPhone which still appears to connect and work like normal. But I digress, Android seems user unfriendly &#8211; or at least unfriendly to me.</p>
<p>So I set up Titanium Developer on my Mac. I have various versions of XCode and the iOS SDK installed already so I had to acquire the Android SDK. That was relatively easy where I downloaded the base applications and then installed all of the SDKs. The important thing, that I found out later, is that the normal API&#8217;s aren&#8217;t sufficient: you need all of the Google APIs. It turns out to be a lot of data so you might want to be selective for a particular platform (Android 2.2 + Google 2.2 API&#8217;s). So that all gets installed and for Android you tell Titanium where it is (XCode and iOS lives in /Developer and is easy to find).</p>
<p>From here you create a new project. This is relatively easy though the pitfall is that it automatically creates a directory for you and if it doesn&#8217;t feel you have a particular platform installed it&#8217;ll not set up the project to handle those platforms. It turned out at one stage to be easier to recreate the project and replace the JavaScript files. </p>
<p>The next challenge is to get your program up and running in the Android emulator or iOS simulator. This turns out to be easier said than done for Android and often less than 10 seconds for iOS. In my timing Android&#8217;s emulator almost always took minutes to start the emulator. Some times the emulator wouldn&#8217;t load properly and other times Titanium Developer wouldn&#8217;t recognise that the emulator had successfully launched. In these cases you ended up terminating the emulator and starting again. This ends up taking minutes to launch. Eventually the emulator gets itself up after a few minutes (or many more if it fails) and then the application deploys. You find a bug or make a change then want to re-deploy and test on the device. So fortunately for Android you don&#8217;t have to restart the emulator, it simply redeploys the application however even this process takes over 45 seconds! This means there is over half a minute of deployment difference between Android and iOS.</p>
<p>Because of this I started heavily developing on iOS and not bothering to test on Android. I didn&#8217;t feel that I had the time to waste waiting for Android to launch and be available to me as a developer where as iOS in some cases would be there in a few seconds ready to use (10 seconds at the most). It even kills the simulator and starts from scratch with a clean launch. </p>
<p>The problem that you then end up with the situation where I developed for iOS but didn&#8217;t test it on Android. I had faith that if it worked properly on iOS then it would still work fine on Android presuming I didn&#8217;t use any &#8220;platform specific&#8221; functionality. The problem is that it very quickly gets to a situation where everything doesn&#8217;t work properly on Android and it requires lots of time to fix the issue. Cross-platform? Not really.</p>
<p>Some of these issues arise from basic differences between the platforms. Android features a lot more hardware buttons including a &#8220;menu&#8221; button which can popup a menu over the screen to click. The menu is a great way of hiding stuff away and removing it from view. This is important when you don&#8217;t have much screen space to begin with however coming from an iPhone perspective where everything is visible on screen some how (even if it is a menu option that hints at more possibilities) this turns out to be rather frustrating as you click through almost every screen until you get to the point where you need to click the menu to progress. iPhone presents everything on screen with hardware buttons to change the volume, a mute/orientation lock toggle, a lock/unlock button and a home screen button. In iOS5 the volume control will also be a shutter button via software control. The flip side is almost anything you want to do is available on screen. There are a few exceptions around pressing down and holding parts of the UI (particularly with text, text boxes, the keyboard and links) which can trigger an extra popup/popover to appear however the norm is very much to have it visible on screen. This means that iOS has a strong UI interaction based around either tabs (bottom of the screen), the &#8220;navbar&#8221; with back and forwards buttons (top of the screen) or both.</p>
<p>When using Titanium we run into complications. On iOS you could use a tab group and the navbar is free. It automatically puts in the back buttons and the next button (&#8220;rightNavButton&#8221;) needs to be delivered but all in all not too bad. On Android there are tab groups but no navbar which means you&#8217;re using menus. Menus aren&#8217;t available on Android but give more UI flexibility than on iOS through having more options. The trap however is that menus and tab groups don&#8217;t work together on Android. I&#8217;m not sure if this is a Titanium issue but all I know is that it doesn&#8217;t work properly when using Titanium. The extra trap is that tab groups and the navbar works fine for iOS applications launched from Titanium&#8217;s main context (&#8220;app.js&#8221;) however on Android you can&#8217;t use a menu here. So if you want a menu on the first screen in the app you need to open another window first to create an Android activity to then associate the menu with the window.</p>
<p>And this in itself reveals another slight difference. There is the concept of &#8220;heavy weight&#8221; and &#8220;light weight&#8221; windows. iOS doesn&#8217;t appear to make any distinction but it very much matters on Android. Another Android feature is the hardware &#8220;back&#8221; button which permits the user to go back through the interface like a stack. On iOS this is implemented as a top left button on the navbar as a convention however it complicates Android because you end up with the two types of windows. Heavy weight windows create a new context and can be an anchor while light weight windows are ignored. If you open a heavyweight window, then a lightweight window and then click the &#8220;back&#8221; button the app doesn&#8217;t go back to the heavyweight window but to the one BEFORE that one. This may even result in the app quitting. The work around ends up being that all windows have to be heavyweight to prevent a click of the back button going somewhere it shouldn&#8217;t.</p>
<p>So once you start working around these platform specific quirks and features you end up with the bugs. One bug I encountered was that setting a top and bottom value for an item would work great on iOS but on Android those values appeared to be added to the parent view or window pushing it down. This perhaps became most obvious when I added a multiple text area option which caused the following undesirable result:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/07/android-w13-editphonelots.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/android-w13-editphonelots-300x219.png" alt="" title="android-w13-editphonelots" width="300" height="219" class="alignright size-medium wp-image-825" /></a></p>
<p>Clearly this isn&#8217;t what was intended however the same code works beautifully on iOS devices. I&#8217;m not sure if it is a case that I&#8217;m doing it wrong or what but fundamentally it is a mismatch between the two platforms. In some cases the problems were that I was using the API wrong and each respectively platform is more tolerant of the others though this only trapped me once or twice. In one situation I was using a platform specific call that wasn&#8217;t guarded so it wasn&#8217;t run on the other platform which resulting in a weird error that I didn&#8217;t fully understand until I took a closer look at the documentation.</p>
<p>And reviewing the documentation is important because on some pages you see a little Apple and little Android logo at the top of the page to signify that it is available on either however you also end up with situations where stuff is only partially available on either. This is distinguished by the text &#8220;iOS only&#8221;, &#8220;Android only&#8221; or rough equivalents (yes it isn&#8217;t uniform) after the name of the function. In some cases there are also significant behavioural differences. The Titanium.Geolocation.getCurrentPosition call will NEVER (emphasis from Titanium documentation) activate radios on Android instead returning a potentially very stale result. The documentation notes that iOS may activate radios depending if it considers the location data to be &#8220;stale&#8221;. This means that the most logical and obvious function call doesn&#8217;t necessarily make sense to use. The aim of using an abstraction platform like Titanium is that those platform specific differences are abstracted away. Perhaps adding a &#8220;maximum age&#8221; parameter to the function and then have Titanium automatically do the work needed to update the location details (it is possible by setting ANOTHER handler on the location event to get the position which is the work around I ended up using but that obviates the benefit of having the data cached and not causing a battery drain). Documentation in general is dodgy with this great example from the Titanium.UI.IPad page:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/07/ti-doco-ipad.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/ti-doco-ipad-300x131.png" alt="" title="ti-doco-ipad" width="300" height="131" class="alignnone size-medium wp-image-829" /></a></p>
<p>Yes, <a href="http://developer.appcelerator.com/apidoc/mobile/1.4/Titanium.UI.iPad-module">the page literally just trails off</a>.</p>
<p>It is clear from using Titanium on both platforms that it was originally written with iOS in mind and Android has been tacked on as an afterthought. I&#8217;d hate to see what the Blackberry work is like though given the inconsistency between iOS and Android I&#8217;m not expecting the Blackberry experience to be much better again.</p>
<p>To make my life easier I constrained my platform to HVGA Android and iPhone. For what I was doing I deliberately excluded working on different platforms and screen resolutions instead hard coding values. Some of this was due to iOS bugs where setting &#8220;width: auto&#8221; or &#8220;width:100%&#8221; resulted in child items not receiving touch events on iPhone. This meant that shifting it to a larger screen (e.g. iPad) or changing the orientation presented much white space. However more worryingly I tried out the application on a Samsung Galaxy S running Android 2.1 and the app looks completely different. So this is a screenshot of the emulator running the application:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/07/android-w14-edit-setimg.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/android-w14-edit-setimg-300x219.png" alt="" title="android-w14-edit-setimg" width="300" height="219" class="alignnone size-medium wp-image-826" /></a></p>
<p>The layout looks reasonable on Android but here is how it renders on the Samsung Galaxy S:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/07/galaxys-editscreen.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/galaxys-editscreen-180x300.png" alt="" title="galaxys-editscreen" width="180" height="300" class="alignnone size-medium wp-image-827" /></a></p>
<p>The interface is almost unreadable shifting from the emulator to the Galaxy S. Fortunately clicking on a textbox and rotating the device yields a full screen edit interface which conveniently provides you with a next button but no indication of what you&#8217;re typing into (this isn&#8217;t a Titanium issue, but an issue with the Galaxy S or Android; I had a similar problem where I accidentally typed a password into the wrong text box in the WiFi dialog when it was asking for a second username not the password as I was expecting). Perhaps I need to do something more however on the iPad the application renders without issue beyond the immense white space:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/07/ios-ipad-edit.png"><img src="http://pasamio.com/wp-content/uploads/2011/07/ios-ipad-edit-235x300.png" alt="" title="ios-ipad-edit" width="235" height="300" class="alignnone size-medium wp-image-828" /></a></p>
<p>This leads me to one final issue with the platform: there appears to be no way to flexibly build a layout using Titanium Appcelerator for multiple screen resolutions that works across platforms. For iOS this isn&#8217;t so much of an issue because there is only two resolutions at two orientations (four potential combinations for layout). This means that programmatically setting the values requires at most a combination of four options. Everything else is consistent across the platforms which is useful. However that isn&#8217;t the case for Android. Android supports multiple device resolutions at increasing amounts, particularly with the introduction of the various tablet devices. This can cause a pain and perhaps I&#8217;m using their layout system wrong with the offsets and sizing however it almost feels like a requirement given the cross section of bugs that I see. The simple vertical style layout work nicely however as soon as you need to mix up the layouts you&#8217;re out of luck. Again, perhaps I&#8217;m doing it wrong but the most obvious way of doing things seemed to work well on iOS but not so well on Android.</p>
<h1>Tools</h1>
<p>When I started this project I was using Titanium Developer, a relatively simple stand alone tool which created the scaffolding for a new mobile project, handled compilation and launching the simulator/emulator, deploying it to physical devices or packaging it up for release into the App Store or similar. Titanium Developer doesn&#8217;t provide an editor, it is flexible with what ever you use. I tried to use Apple&#8217;s DashCode however it kept getting confused and files apparently were being deleted as a part of the process which quickly upset DashCode. DashCode&#8217;s package layout also made it impractical to use in reality. I then switched to using Aptana Studio as an editor because of it&#8217;s strong JavaScript support. Unfortunately I wasn&#8217;t able to leverage much of this but at least there was some support for code formatting and syntax highlighting. I did try some mechanism to include the Titanium API but this didn&#8217;t work so well in practice. </p>
<p>The majority of the project was delivered using Titanium Developer and Aptana Studio. The combination worked reasonably well though not as smooth as perhaps the tool integration options that Microsoft or Apple provide &#8211; or even to a lesser extent Google with the Java for Android. There is a distinct lack of debugging support so you&#8217;re left with logging stuff as your primary method of debugging any buggy application. This means you don&#8217;t have a rich interface like XCode to profile and debug an application which is a great loss. The logging worked nicely however iOS 4.3 gave me grief and didn&#8217;t appear to work, targeting 4.2 got it back in action though. Logging consistently worked on Android even if I had to sometimes launch the emulator multiple times before Titanium would properly attach and deploy to it. I never had this problem with the iOS Simulator even if the application itself didn&#8217;t work. This leads also means that once the Android emulator is up and running you don&#8217;t want to quit it however periodically restarting the emulator can fix things. One case in point was when I was working on the location API code it would refuse to say it had an internet connection. I restarted it and everything worked fine there after but that didn&#8217;t save me spending an hour trying to work out why my code was broken.</p>
<p>Appcelerator have released Titanium Studio which is an updated copy of Aptana Studio (they bought Aptana) and includes support for their new 1.7 SDK. I didn&#8217;t see much of a difference in the SDK for what I was doing and all of the issues I saw with the 1.6 SDK was still present so I&#8217;m not sure what they changed however it didn&#8217;t break any code so that is a positive. Titanium Studio does feature autocomplete that works, continues their formatter. They&#8217;ve dropped support for JSDoc or similar automatic formatting for functions which is a disappointment (Aptana Studio would automatically populate the doc block for a function with the parameters for the function which was good).</p>
<p>For me Titanium Studio was a great improvement. I never once had an issue launching the Android emulator (it was still slow however) like I would periodically have when using Titanium Developer. Using iOS Simulator was still smooth to use as well. Apparently the pro version of these tools (e.g. not the community free download) offer debug functionality. The &#8220;Indie&#8221; plan is USD$50/month and the &#8220;Professional&#8221; plan is USD$200/month. XCode 4 with the latest iOS SDK from Apple is USD$5 &#8211; however you&#8217;ve already paid this as it is a requirement to test iOS applications. So you get a full blown IDE with a graphical layout tool, debugger, profiler and a whole host of tools already then Appcelerator want you to pay another $50/month to get debugging for their platform? You have to pay to get access to API&#8217;s like GameKit and StoreKit that you would already have access to normally through the standard iOS SDK. </p>
<h1>Conclusions</h1>
<p>The benefit for Titanium is to build cross platform applications however the reality is that this is tricky enough as it is. You end up in the valley between the two peaks where you have to deal with both platforms enough times that it isn&#8217;t smooth and you lose any advantages. iPad is an interesting case where you have another UI metaphor again with a split view that you would then need to develop an interface to handle the metaphor popular on that platform. This is supported by Titanium (Titanium.UI.IPad.SplitWindow) however we&#8217;re now up to a third platform specific UI that needs to be handled. Where does it stop? Blackberry? Windows Phone 7? WebOS? Eventually the application is held together by checks for each platform.</p>
<p>I can&#8217;t count the amount of time I spent doing circles on something stupid trying to Google for answers, pouring over documentation and waiting for Android applications to take nearly a minute to redeploy. It was frustrating to have stuff work and not work or then have to rebuild the application because one platform needed something one way and another platform wanted it a different way. Android is even more frustrating because even though I had a 2011 MBP, it still like it is slogging along as slow as anything. Building this app was time consuming as I would spend days in some cases trying to work out why something was mysteriously failing &#8211; particularly if it did it on one platform but not the other. The only other time I felt so unproductive was when I was building a Java GWT+GAE application where I ended up with boat loads of classes just to have everything work well (mind you that was more Java&#8217;s excessive verbosity than anything).</p>
<p>I believe that while the use of a cross platform toolkit is useful for having the same language regardless of platform (JavaScript), to get the best results the UI layer of an application needs to be platform specific. Even on the simple application I was building it was starting to get to the point where to push it much further would require a large amount of code to just handle displaying an appropriate UI on multiple Android devices not to mention integrating the UI split view and any of the code changes required for that (yet another if statement&#8230;). You might be able to get some code re-use here and there but I don&#8217;t like being forced to pay to have one set of tools (XCode) to then have to pay 10 times the cost each month (keeping in mind that you only need to pay once for XCode so far, not every month). Once the iOS5 SDK is out of beta, I&#8217;m going to spend some time to play with that instead and see where I end up.</p>
<h1>Extra Resources</h1>
<p>It turns out the best documentation on Titanium are the forum posts asking how to do things and if something is broken. I found a great number of undocumented &#8220;features&#8221; and &#8220;bugs&#8221; through reviewing the forums. Google is often your friend though sometimes a trip to the documentation can be equally as enlightening when you read that you&#8217;re trying to use an iOS specific feature on Android.</p>
<ul>
<li><a href="http://blog.clearlyinnovative.com/post/1624173028/titanium-appcelerator-quickie-navigation-groups">Quick Tutorial on Navigation Groups (an informative blog in general)</a></li>
<li><a href="http://blog.bahrenburgs.com/2010/08/useful-titanium-mobile-tableview-tips.html">Use TableView Tips</a></li>
<li><a href="http://pastebin.com/ebcLD472">Concise example of how to do a menu on Android</a></li>
<li><a href="http://www.geekmind.net/2009/10/how-to-enable-fake-gps-on-android.html">Enabling fake GPS on Android</a></li>
<li><a href="http://developer.appcelerator.com/question/7701/basics-of-layout#answer-17571">Basics of Layout</a> &#8211; This is a great comparison of the layout system</li>
<li><a href="http://developer.appcelerator.com/question/68151/titanium-mobile-events">List of Titanium Mobile Events</a> &#8211; a concise list of each event for each part of the system in one place. Also listed on individual pages but not always easy to check</li>
<li><a href="http://developer.appcelerator.com/doc/mobile/android-maps">How to use maps on Android</a> &#8211; my app worked without this on the emulator and dev environments, I have a feeling it only matters to packaged apps</li>
<li><a href="http://developer.appcelerator.com/question/117390/tabgroup-buggy-behaviour">Example of how to use a tab group</a></li>
<li><a href="http://developer.appcelerator.com/question/32471/noob---android-menu-does-not-work">Example of Android menu with notes about windows, activities and menus</a></li>
<li><a href="http://developer.appcelerator.com/blog/2010/07/how-to-perform-crud-operations-on-a-local-database.html">Blog about handling CRUD operations</a></li>
<li><a href="http://developer.appcelerator.com/question/118172/navbar-problems">Example of creating a nav group manually</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/07/02/a-few-months-with-titanium-appcelerator/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>iOS, web apps, native and back again</title>
		<link>http://pasamio.com/2011/06/19/ios-web-apps-native-and-back-again/</link>
		<comments>http://pasamio.com/2011/06/19/ios-web-apps-native-and-back-again/#comments</comments>
		<pubDate>Sun, 19 Jun 2011 10:50:43 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=815</guid>
		<description><![CDATA[At Apple&#8217;s World Wide Developer Conference (WWDC) in 2007, Steve Jobs came on stage to announce a launch date for the very first iPhone and to announce how developers would build applications for the iPhone. His announcement was that his suggested way of developing for the iPhone was to write web apps (it is a [...]]]></description>
			<content:encoded><![CDATA[<p>At Apple&#8217;s World Wide Developer Conference (WWDC) in 2007, Steve Jobs came on stage to announce a launch date for the very first iPhone and to announce how developers would build applications for the iPhone. His announcement was that his suggested way of <a href="http://www.youtube.com/watch?v=IepG-EBKJGo">developing for the iPhone was to write web apps</a> (it is a couple of minutes in). So what was the reaction to that?<br />
<span id="more-815"></span><br />
Apparently the reaction in the room was lacklustre at the actual announcement: compare the clapping at &#8220;what about the developers&#8221; around 2 minutes in compared to the silence once Safari is announced as the solution. There are no big waves of applause from this announcement and apparently for those in the room it was met with a groan. The <a href="http://www.republicofinternets.com/?p=453">reaction</a> from <a href="http://gizmodo.com/267899/no-iphone-sdk-means-no-killer-iphone-apps">blogs</a> was <a href="http://www.tuaw.com/2007/08/14/dueling-bloggers-on-the-awol-iphone-sdk/">equally</a> <a href="http://www.wilshipley.com/blog/2007/07/iphones-ajax-sdk-no-thank-you.html">negative</a> <a href="http://www.rogueamoeba.com/utm/2007/06/11/">towards</a> this <a href="http://www.rogueamoeba.com/utm/2007/06/12/">direction</a>. Some were <a href="http://securitywatch.eweek.com/apple/ibm_iss_no_sdk_means_no_iphone_security_bugs.html">positive</a> about the direction taken.</p>
<p>Everyone pans Apple for this as their option. There is very little blog posts that appear to defend and support Apple in their stance of not having a native SDK and only providing a web &#8220;SDK&#8221;. Almost every bit of out spoken opinion out there seemed to point negativity towards the direction that Apple had taken. To be fair the initial release of the iPhone and it&#8217;s integration is primitive compared to what we have today with items like launcher integration being unavailable initially. However if you spend some time to review what Steve Jobs actually says it becomes more interesting. He states &#8220;we have been trying to come up with a solution to expand the capabilities of iPhone by letting developers write great apps for it and yet keep the iPhone reliable and secure&#8221;. It is this phrase that informs the future direction of the app store.</p>
<p>In 2008 Apple releases at first a beta in March with the announcement of the App Store with the first hint of &#8220;approval&#8221; for application. At WWDC2008 later in the year it&#8217;s finally released and the App Store is scheduled for it&#8217;s release in September of that year. In line with what Steve has said back in 2007, the App Store approval process and some rather strict guidelines for what they will accept. While some of the guidelines are arbitrary and awkward, they do appear to have successfully managed to limit the amount of malware and devious applications that have managed to make their way onto end user devices unlike Google&#8217;s Android Marketplace. Amazon with their App Store for Android have similar approval guidelines as well which seems to support Apple&#8217;s approach in part. </p>
<p>Since then Apple have increased their restrictions and adding requirements such as requiring in app purchases to at least be available via Apple&#8217;s own mechanism. Depending on what happens with the Lodsys case, it may turn out to be a case where you either use the supplied API or you have to deal with the patent issues.</p>
<p>However it appears that the Financial Times aren&#8217;t interested in trying to fight Apple at their App Store limitations and have gone back to 2007 and have developed a web app. It utilises local storage to make things faster on the device and it features a lot polish. </p>
<p>But for all of the noise generated about how evil Apple is, the Financial Times are the first group I have seen to actually put their money where their mouth is and released a HTML5 application that looms really good  as the number of devices with Android on them explode, I am surprised that more people aren&#8217;t realising that web apps are the future of mobile development unless you war to loco yourself inside of apples iCloud. Web based applications also have the ability to target Android without requiring a rewrite and also any other platform that ships a decent web browser (e.g. WebOS or perhaps Windows Phone 7).   </p>
<p>With over 300 different smart phone devices out there with a wide range of functionality, display sizes and resolutions. With native applications needing to target iOS, Android, WebOS, Playbook and Windows Phone 7 each with different code that is a significant development burden. With Windows 8 looking like it will implement HTML powered web apps then increasingly it is looming like HTML is not a bad place to put some skill development or professional development.</p>
<p>Perhaps it is back to Apple&#8217;s original much derided original direction &#8211; even if it was because their native SDK wasn&#8217;t available at the launch time of the first iPhone. It was even announced today that iOS5 will bring Nitro JavaScript, one of the speed ups to make web pages in Safari load faster, to the &#8220;homepage&#8221; apps of which the new Financial Times web app is now one. This means that with iOS5, the Financial Times will run even faster again. </p>
<p>But it begs the question, why would Apple make a mechanism that competes directly with their App Store run even faster?</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/06/19/ios-web-apps-native-and-back-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Month in review: January</title>
		<link>http://pasamio.com/2011/02/01/month-in-review-january/</link>
		<comments>http://pasamio.com/2011/02/01/month-in-review-january/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 07:25:26 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[accesscontrol]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[eprints]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[ldap]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[university]]></category>
		<category><![CDATA[vufind]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[work]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=778</guid>
		<description><![CDATA[January for me was an interesting and varied month. Here is a quick look back at what I got up to in the month. Joomla! integration for the Access All Databases Access All Databases is a USQ system that really screams to be embedded in a CCK style app. It is a set of custom [...]]]></description>
			<content:encoded><![CDATA[<p>January for me was an interesting and varied month. Here is a quick look back at what I got up to in the month.<br />
<span id="more-778"></span><br />
<strong>Joomla! integration for the Access All Databases</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/aad-joomla-research.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/aad-joomla-research-150x150.png" alt="" title="Access All Databases in Joomla!" width="150" height="150" class="alignleft size-thumbnail wp-image-795" align="left" valign="top" /></a><a href="http://resguide.usq.edu.au">Access All Databases</a> is a USQ system that really screams to be embedded in a CCK style app. It is a set of custom fields, some search and a bit of link tracking. Beyond versioning and approval of edits there is no significant functionality beyond CRUD in this application. At the moment it is a hand built system written in PHP and badly needing redevelopment into a more modular nature. The approach I&#8217;ve taken is to experiment with using Joomla! and Flexicontent to rebuild the application from scratch. So far I&#8217;m doing well and I&#8217;ve managed to recreate the basic look and feel of the site. I&#8217;ve got one custom menu module to integrate Flexicontent&#8217;s nested categories to emulate the behaviour of another primitive CMS USQ uses called &#8220;<a href="http://libtute.usq.edu.au">Finding Information Tutorial</a>.&#8221; I&#8217;ve done a custom module override for the menu as well to get it using the current USQ look and feel by default. The great thing is that there is a mobile friendly version very easily with standard Joomla! tools. I don&#8217;t think I&#8217;ll get more time to play with this soon however it is already a good start.</p>
<p><strong>VuFind UConnect SSO</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/vufind-geany.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/vufind-geany-150x150.png" alt="" title="VuFind UConnect SSO in Geany" width="150" height="150" class="alignleft size-thumbnail wp-image-796" align="left" valign="top" /></a>VuFind is the library catalogue system and UConnect is USQ&#8217;s custom SSO system that was developed. I&#8217;ve gone through and built an integration between the two which looks like the following:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/vufind-sso.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/vufind-sso-300x207.png" alt="" title="VuFind with UConnect SSO" width="300" height="207" class="alignnone size-medium wp-image-794" valign="none" /></a><br />
I talk a bit more about <a href="http://pasamio.com/?p=762">VuFind, SSO and authentication</a> in an earlier blog post.</p>
<p><strong>Book Finder</strong><br />
This is primarily the work of Ken MacAlpine who is working on mobile technologies at USQ. Ken developed an SVG powered map of the top floor of the library to aide in the location of books. He put together a database of roughly where the catalogue numbers stop and start for each shelf on each side. It has been integrated into the catalogue and shows up as a &#8220;Show on Map&#8221; link for Toowoomba Main Collection items.<br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-1.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-1-300x207.png" alt="" title="USQ Book Finder in Library catalogue" width="300" height="207" class="alignnone size-medium wp-image-793" /></a><br />
 At some point in the future we will work to expand it to all campuses and collections. When it is clicked it appears in a new window like this:<br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-2.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/bookfinder-2-192x300.png" alt="" title="USQ BookFinder display" width="192" height="300" class="alignnone size-medium wp-image-792" /></a><br />
It is aimed to be the same size as an iPhone display so that it fits neatly there. It also works in all browsers that support SVG. Fallback support is provided for IE since it doesn&#8217;t support SVG yet.</p>
<p><strong>ePrints, RPCS and data conversion!</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/rpcs-webmatrix.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/rpcs-webmatrix-150x150.png" alt="" title="RPCS modifications in Web Matrix" width="150" height="150" class="alignleft size-thumbnail wp-image-788"  align="left" valign="top" /></a>As an interesting exercise I also spent some time converting data from an internal reporting system, RPCS, into our open access repository &#8211; ePrints. This was a fun project which required connecting to RPCS&#8217; MSSQL database and outputting an XML file for ePrints to eat. To do this I figured I&#8217;d pull out <a href="http://www.microsoft.com/web/">Web Matrix</a>, Microsoft&#8217;s cut down editor for web developers. It feels on par with Geany though it has a built in web server, request tracking and a database explorer. It also integrates with the Web Platform Installer product which means I can easily install other applications. I used Web Matrix to kick start the Joomla! install for the Access All Databases research project as well.</p>
<p><a href="http://pasamio.com/wp-content/uploads/2011/01/eprints-eclipse.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/eprints-eclipse-150x150.png" alt="" title="ePrints Author ID XML file in Eclipse" width="150" height="150" class="alignright size-thumbnail wp-image-791"  align="right" valign="top" /></a>The RPCS data is loaded into our ePrints system along side the <a href="http://pasamio.com/2009/08/28/eprints-author-id/">Author ID</a> project that existed there. We&#8217;re also pulling across the data from their system which is going to result in duplicate authors until we merge them down to uniques however doing so in an automated manner isn&#8217;t easily possible. There is a whole heap of work to get things together but all in all we&#8217;re doing well.</p>
<p><strong>EQUELLA Moodle module</strong><br />
<a href="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-1.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-1-150x150.png" alt="" title="Screenshot of EQUELLA Moodle module 1" width="150" height="150" class="alignleft size-thumbnail wp-image-790" align="left" valign="top" /></a>Last but not least I&#8217;ve been playing with the EQUELLA Moodle module. It adds an extra option to the Moodle resource drop down and enables access to select items from the EQUELLA repository software. </p>
<p><a href="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-2.png"><img src="http://pasamio.com/wp-content/uploads/2011/01/moodle-equella-2-150x150.png" alt="" title="Screenshot of EQUELLA Moodle module 2" width="150" height="150" class="alignright size-thumbnail wp-image-789"  align="right" valign="top" /></a>I&#8217;ve used Web Matrix here to deploy out a quick Moodle site utilising the same Web Platform Installer technology and managed to get up and running quickly with everything. The deployment of the module to our main Moodle environment would enable lecturers to directly select course readings to embed in relevant modules on their Moodle course pages &#8211; exciting!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/02/01/month-in-review-january/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 01-FEB-2011: Android unable to operate in enterprise?</title>
		<link>http://pasamio.com/2011/02/01/today-01-feb-2011-android-unable-to-operate-in-enterprise/</link>
		<comments>http://pasamio.com/2011/02/01/today-01-feb-2011-android-unable-to-operate-in-enterprise/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 01:05:09 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[today]]></category>
		<category><![CDATA[university]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=802</guid>
		<description><![CDATA[Today was the nail in the coffin of the Samsung Galaxy S that I use at work to do Android based testing of the library&#8217;s future work in the mobile area. The device is a stock device running Android 2.1 (Samsung&#8217;s updater app cowardly refuses to upgrade it to 2.2 for some reason) however as [...]]]></description>
			<content:encoded><![CDATA[<p>Today was the nail in the coffin of the Samsung Galaxy S that I use at work to do Android based testing of the library&#8217;s future work in the mobile area. The device is a stock device running Android 2.1 (Samsung&#8217;s updater app cowardly refuses to upgrade it to 2.2 for some reason) however as the device is for testing and since it has WiFi built in I&#8217;ve decided to use that. It isn&#8217;t connected to the cellular data network (or even have a SIM card) and this has lead to some interesting problems.<br />
<span id="more-802"></span><br />
The first problem I noticed with it was the flagrant disregard for the proxy settings by all of the apps on the device  -except the web browser. I&#8217;m connecting the device in a corporate environment with no cellular data so I know when something isn&#8217;t going through the wireless network. I&#8217;ve setup the proxy and using the web browser  I can surf pages. However no other application seems to get to the internet. Google Maps? Just sits there doing nothing. I can go to maps.google.com in the browser fine though! Google Mail? Won&#8217;t even let me set up the account. Marketplace? Fail.</p>
<p>So this tells me that at least Android 2.1 level applications do not respect the proxy settings I had set up. I&#8217;ve obviously got something set up properly because the web browser users them. Looking around there seems to be suggestion that I should root the device to set proxies properly or something. For something that &#8220;just works&#8221; on an iPhone and it is something of a no brainer I would have thought it would have worked fine on Android, at least with Google&#8217;s own applications.</p>
<p>However the real nail in the coffin is the lack of complete 802.1x authentication, which while improving it appears that USQ&#8217;s current configuration makes it fail. USQ has started to deploy of 802.1x wireless networks to reduce the requirement to log into the wifi network, log into the Cisco access points and then from there gain access. This meant that the earlier wireless network testing was possible albeit a little tedious. Using it from an iPhone was just as tedious however there were apps to get around it. As of this week they&#8217;ve switched that network off and now Android doesn&#8217;t want to play the game.</p>
<p> The first problem with the 802.1x network is that USQ uses a certificate signed by AusCERT which doesn&#8217;t appear to be in the normal trust path for either Android or iOS. iOS gets around this by prompting the user to accept the certificate like what normally happens on a desktop web browser when an untrusted certificate is presented. One has to go through a rather complicated set of hoops to get this working on Android from what I&#8217;m told including putting the certificate on an SD card and navigating through a few layers of menu. Having the user download the certificates independently, find an SD card writer, put it on the SD card and then going through a process to import the certificate isn&#8217;t particularly user friendly. When you consider that USQ has something like 5000 people on campus so this sort of task doesn&#8217;t particularly scale well as opposed to clicking &#8220;accept&#8221;. Once we&#8217;ve gotten over that hurdle the second problem appears to be getting the Android device working properly with the AES encryption used. Apparently this is a barrier that an USQ ICT member with a masters degree is currently tackling though I believe that Android doesn&#8217;t support AES only PKIP so I don&#8217;t think he&#8217;ll have much luck.</p>
<p>Of course on iOS its rather easy, select network, enter credentials, accept certificate and then add proxy settings to the network. And you&#8217;re done. This was enough to convince one of our faculty librarians that perhaps the Sony Xperia X10 that they bought in the last few months was really not worth fighting against and now wants an iPhone. The X10 was sold with Android 1.6 which really just makes you wonder about fragmentation in the Android platform.</p>
<p>UPDATE: USQ&#8217;s certificates are signed by AusCERT, Australia&#8217;s version of CERT (Computer Emergency Response Team), not self signed as I had earlier suggested. AusCERT&#8217;s CA doesn&#8217;t appear to be in the normal certificate bundle for either platform. This means it came up unverified which is why I had assumed we&#8217;d been using self-signed certificates. The secondary issue appears to be the more secure AES being used for the authentication instead of the less secure PKIP. Android doesn&#8217;t support the more secure AES and thus fails to work even when the certificate is trusted or the signing CA is added. Additionally I&#8217;ve been told that you don&#8217;t need to root the device to install a certificate but you can put it on an SD card. These changes have been merged into the main document where relevant.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/02/01/today-01-feb-2011-android-unable-to-operate-in-enterprise/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>VuFind, Single Sign On and authentication!</title>
		<link>http://pasamio.com/2011/01/28/vufind-single-sign-on-and-authentication/</link>
		<comments>http://pasamio.com/2011/01/28/vufind-single-sign-on-and-authentication/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 23:24:39 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[authentication]]></category>
		<category><![CDATA[vufind]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=762</guid>
		<description><![CDATA[The other day I finished up the work I had been doing for the the last week or so on integrating the different solutions for authenticating users at USQ. This evening I finished up the plugins and services required to handle authentication via USQ&#8217;s custom single sign-on (SSO) system (&#8220;USQAuth&#8221;), USQ&#8217;s single sign in (SSI) [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I finished up the work I had been doing for the the last week or so on integrating the different solutions for authenticating users at USQ. This evening I finished up the plugins and services required to handle authentication via USQ&#8217;s custom single sign-on (SSO) system (&#8220;USQAuth&#8221;), USQ&#8217;s single sign in (SSI) system (Oracle Internet Directory with an LDAP interface) and USQ Integrated Library System, Virtua) so that they all play nicely together. Something that one would think should be relatively easy to do turns out to be a non-trivial task.<br />
<span id="more-762"></span><br />
First some background. A few years ago before I joined the USQ Library they implemented the open source VuFind application in its &#8220;1.0RC1&#8243; form. Recently the Library managed to rebuild the application to not use the deep core hacks that initially were implemented to get it deployed. Some of it was due to the radical architectural improvements between 1.0RC1 and 1.0RC2 as well as the final 1.0 release which helped make it easier to extend. </p>
<p>USQ also developed the Virtua driver for VuFind. Virtua, the library&#8217;s integrated library system (ILS), doesn&#8217;t provide a driver themselves but sells a reasonably expensive layer which integrates with Drupal these days. Originally such a layer didn&#8217;t exist and the system operates by a complicated mess of reading directly from database tables and posting stuff to arcane undocumented web interfaces through an even older web application known as &#8220;iPortal&#8221; with a binary named &#8220;chameleon&#8221;. Much fun!</p>
<p>So one of the things that has been desired for a while is the ability to integrate with the corporate directory service and corporate single sign on service. Unfortunately the vendor product is an all or nothing: you either have everyone authenticating from the directory or you create accounts inside the ILS which can authenticate. Due to the nature of our Library and the non-USQ patrons (e.g. people who pay to join the library or reciprocal borrowers) we have we can&#8217;t easily just pick the LDAP option. That leaves us in a position where we have to have our own passwords distinct from everything else which leaves a bad user experience.</p>
<p>Fortunately VuFind has a pluggable authentication layer. This means that we can supply our own authentication to handle things. Great! Except that the list of authentication plugins was hard coded. Well not so bad, but easy enough to fix by altering the system to have <a href="http://vufind.org/jira/browse/VUFIND-365">more flexible support for authentication handlers</a>. </p>
<p>So by default we have an ILS authentication handler which works fine. And for those non-USQ users we still want to use that handler because it works great right now. But we also want to have another one that hooks into our LDAP directory and integrates there. Now I could build a new magical plugin that handles both the ILS authentication and the LDAP authentication however I figured that this was a bit much and decided instead to build an authentication handler which allows chaining of multiple authentication handlers, creatively called &#8220;<a href="http://vufind.org/jira/browse/VUFIND-368">MultiAuth</a>&#8220;. This allows chaining and processing of the fields to ensure that they are consistently used by all subsequent child plugins. Nifty!</p>
<p>So now that we have better pluggable authentication support and the ability to chain multiple plugins we&#8217;re getting close to everything we need. The USQ situation is unique in that students are issued with a barcode identical to their student number. This makes them easy to process because we can map them directly from the LDAP interface into the ILS system. Staff however present a much trickier problem. Staff are created with a custom barcode and identifier which is distinct from their staff username and unique from the staff payroll number. This means that we need to dereference their username back to their ILS identity. Fortunately this was already done: an alternate barcode in a particular format stored their payroll number for cross verification. Sweet! In the not so lucky bucket was the fact that the custom barcode format meant that I could do a direct mapping still and needed to write some custom code. So with some modifications to the Virtua driver to pull out the alternate barcode and grab their real barcode to log the user in. </p>
<p>So at this point a user can login using the LDAP credentials or the standard ILS credentials. For relevant staff and students this means they&#8217;ve got two options but thats better than nothing. This is great but it isn&#8217;t single sign on yet because they have to log into the library catalogue specifically and that isn&#8217;t fun! So bring on the single sign on!</p>
<p>USQ has its own SSO system that was developed which means the standard mechanisms don&#8217;t work (bummer!). Fortunately our ICT department has some smart people and they&#8217;re also PHP friendly which means that there was already a library and sample code sitting just begging to be integrated. Surprisingly with the rest of the LDAP stuff in place this was relatively easy. The library did the heavy lifting of authenticating the user and returning their details so we just have to replicate what we had before. Students go straight through since their usernames match their barcode and we do a lookup with the staff payroll number to backtrack to finding their actual barcode and then logging them into the system and sending them on their way.</p>
<p>Fortunately this is all now in place on the live system which is up and running.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/01/28/vufind-single-sign-on-and-authentication/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Your user knows where they live</title>
		<link>http://pasamio.com/2011/01/23/your-user-knows-where-they-live/</link>
		<comments>http://pasamio.com/2011/01/23/your-user-knows-where-they-live/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 11:30:26 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=771</guid>
		<description><![CDATA[Lately I&#8217;ve come across this curious trend of web sites that try to second guess where I live. As someone who has moved into a new unit in a new suburb I get interesting suggestions to say the least. I&#8217;ve noticed many Australian based sites are starting to second guess your postal address. This leads [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I&#8217;ve come across this curious trend of web sites that try to second guess where I live. As someone who has moved into a new unit in a new suburb I get interesting suggestions to say the least.<br />
<span id="more-771"></span><br />
I&#8217;ve noticed many Australian based sites are starting to second guess your postal address. This leads to some interesting situations arising. First we&#8217;ll look at my mum.</p>
<p>Until recently my mum who lives in a rural area didn&#8217;t have a unique rural property number for her new house. As such she used the one for the old house and the post man knew which one to deliver too. At one point she got a new number and I was trying to send her something. Curiously all of the systems attempted to autocorrect me to the wrong address &#8211; a now vacant house. In some cases (Queensland Motorways) I had to fight the system to let me have the address I knew to be correct.</p>
<p>My present situation is more interesting. I have two problems: I live in a new suburb and I live in a new unit complex. Some systems will complain that the suburb I&#8217;m in doesn&#8217;t exist and will flat out refuse to let me have it as a valid address. I find this a joke, I mean you&#8217;re saying that because you don&#8217;t know where I live you won&#8217;t let me set that as the address and would rather I set the &#8220;wrong&#8221; suburb just to suffice validation? In other situations they will let me have the suburb (yay!) but then refuse to acknowledge I live in a unit. In these cases the unit qualifier is dropped or suggested to be wrong.</p>
<p>The depressing thing is that my experiences ranges from three different levels:</p>
<ul>
<li>They suggest I have the wrong address but let me keep it as one of their suggestions.</li>
<li>They suggest I have the wrong address and make me go through multiple levels of confirmation before they let me keep it.</li>
<li>They don&#8217;t let me enter my correct address and refuse it.</li>
</ul>
<p>What worries me is that this happens all together. The user entered their address and while having an AJAX powered suggestion box would be good as insulting your users by suggesting they don&#8217;t know their own address doesn&#8217;t help very much. I could see value in suggesting a better suburb match however in my case when universally the application is broken until it next gets an update from whoever it is that hands out addresses &#8211; straight out suggesting I can&#8217;t enter my address is your failure not mine.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/01/23/your-user-knows-where-they-live/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Location services gone wrong</title>
		<link>http://pasamio.com/2011/01/23/location-services-gone-wrong/</link>
		<comments>http://pasamio.com/2011/01/23/location-services-gone-wrong/#comments</comments>
		<pubDate>Sun, 23 Jan 2011 07:29:11 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=769</guid>
		<description><![CDATA[So in the last two days I&#8217;ve ventured onto the websites of Bunnings and Harvey Norman. Both sites use location services to help you to vary degrees but both really suck at it. The first is Bunnings. Now I&#8217;ve had issues with them in the past trying to be clever about my location. I&#8217;m on [...]]]></description>
			<content:encoded><![CDATA[<p>So in the last two days I&#8217;ve ventured onto the websites of Bunnings and Harvey Norman. Both sites use location services to help you to vary degrees but both really suck at it.<br />
<span id="more-769"></span><br />
The first is Bunnings. Now I&#8217;ve had issues with them in the past trying to be clever about my location. I&#8217;m on a wireless broadband connection so it &#8220;guessed&#8221; that I was in Sydney. They&#8217;re only 800km or so wrong. Of course changing the location at that point was a PITA because of course the site thought it knew better. </p>
<p>This time they&#8217;ve changed tactic. Instead of guessing where you are they ask you what your post code is straight up. I punched in &#8220;4350&#8243; knowing there isn&#8217;t a Bunnings within a good 50km or more. It then asks me which one of 44 matches I&#8217;m actually in. Your next nearest store is more than an hours drive and 80km away. The one after that is an hour and a half with 100km! IT DOESN&#8217;T MATTER WHERE IN 4350 I LIVE BECAUSE ITS ALL THE SAME! STOP WASTING MY TIME!</p>
<p>Harvey &#8220;it&#8217;s hard to get people to work in my stables&#8221; Norman doesn&#8217;t fare that much better with its location finder. Though after interrogating you about which suburb you live in it has the gall to show you just how far you are away from its stores. I couldn&#8217;t pick a location in 4350 that put any of the other stores closer than 60km, that included Athol which was 12km away from the store. I mean seriously, IF NONE OF THE OPTIONS GO ANYWHERE ELSE WHY WASTE MY TIME? I live in Toowoomba, it&#8217;s a small town. You&#8217;ve got one near by store for 4350 how about you just get along with displaying me the information that I need? Otherwise you&#8217;re just making your service more irrelevant. I could have just as easily found &#8220;Toowoomba&#8221; on the list of &#8220;Queensland&#8221; stores instead of this arduous affair about selecting which one of 40 suburbs I live in after I told you my postcode.</p>
<p>Location services are supposed to make my life easier and quicker not make it so I have to jump through just as many hoops of pointlessness.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2011/01/23/location-services-gone-wrong/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding a new dataset to ePrints 3.2</title>
		<link>http://pasamio.com/2010/12/04/adding-a-new-dataset-to-eprints-3-2/</link>
		<comments>http://pasamio.com/2010/12/04/adding-a-new-dataset-to-eprints-3-2/#comments</comments>
		<pubDate>Sat, 04 Dec 2010 12:20:12 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[eprints]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=747</guid>
		<description><![CDATA[For the last week or so I have been digging around ePrints 3.2 and been trying to work out how to add a dataset. I&#8217;d done this previously with the author ID project however ePrints 3.2 advertises that is has user defined datasets. It has to be said that adding a new dataset is easier [...]]]></description>
			<content:encoded><![CDATA[<p>For the last week or so I have been digging around ePrints 3.2 and been trying to work out how to add a dataset. I&#8217;d done this previously with the author ID project however ePrints 3.2 advertises that is has <a href="http://wiki.eprints.org/w/New_Features_in_EPrints_3.2#User_Defined_Datasets">user defined datasets</a>. It has to be said that adding a new dataset is easier said than documented &#8211; not to mention done. But I figured I&#8217;d document how I managed to get it to work.<br />
<span id="more-747"></span><br />
To begin with I&#8217;m using a clean ePrints 3.2 install with a new repository. I&#8217;ve not done much configuration to it because I&#8217;m basically looking at how to add a dataset. I&#8217;ve installed this on a Debian 5.0 box and installed ePrints via the Debian package. It has to be the easiest way of doing things IMHO so I definitely recommend it. Debian is my preferred distribution so there is an allegiance there.</p>
<p>Once you&#8217;ve got ePrints set up with a new repository, check out the /archives/repositoryname/cfg/cfg.d directory and look for a &#8220;datasets.pl&#8221; file. This is the first step in the process and documents two samples: one using a set of fields and a second with a class that you can derive from. In practice neither example works properly which is a bit disappointing. Fortunately the second solution with the class works with one minor modification: you need to implement the &#8220;get_dataset_id&#8221; function for it to work properly. This is relatively trivial to complete and you&#8217;re off on your way. A copy of the datasets.pl is included in a ZIP package linked at the end of this blog post.</p>
<p>Once we&#8217;ve got our datasets we&#8217;re going to need to update the repository structure to add them to the database. ePrints makes this relatively trivial with the following command:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">/path/to/eprints3/bin/epadmin update_database_structure repositoryname</div></div>
<p>That will automatically connect to the relevant database, create tables and add fields where necessary. Very funky.</p>
<p>The next stop on the list is to create a workflow for it. If you&#8217;re not familiar with how ePrints workflows behave then check out the ePrints wiki on the <a href="http://wiki.eprints.org/w/Workflow_Format">Workflow Format</a> for more details. The basics are that it describes how fields should work on a screen and some limited scripting capability. To begin with we need to head to our /archives/repositoryname/cfg/workflows directory and create a new one. My dataset was called &#8220;service&#8221; so I created a new &#8220;service&#8221; directory. Because I&#8217;m lazy, I copied the user/default.xml file into service/default.xml and edited it to meet my needs. Mostly deleted the items and added the fields that I cared about. Again, if in doubt check out the documentation on workflows.</p>
<p>Now ePrints also has citation support and you guessed it we need to provide a citation. The <a href="http://wiki.eprints.org/w/Citation_Format">Citation Format</a> is documented in the wiki as well though a bit simpler than the citation format. To create this we jump to /archives/repositoryname/cfg/citations, create a new directory for the dataset (&#8220;service&#8221; again) and then because I&#8217;m lazy copy the user/default.xml file to service/default.xml and customise to what you need. The format is again pretty simple so follow your nose from what is on offer and again if in doubt check out the wiki.</p>
<p>At this point if you restart your ePrints instance to ensure the configuration is fully reloaded you need to grant your users some roles before you can see the dataset. If you jump into your favourite user and administer their account you will need to add some roles. There are a few different actions that appear to make sense:</p>
<ul>
<li>view &#8211; required to see the dataset</li>
<li>create &#8211; add a new item to the dataset</li>
<li>edit &#8211; edit existing items in the dataset</li>
<li>destroy &#8211; remove an item from the dataset</li>
<li>details &#8211; display a details screen for an item in the dataset</li>
</ul>
<p>Each of these can be turned into a role by adding &#8220;+datasetname/action&#8221; into the roles box in the administrate user screen. In my particular case I did &#8220;+service/view&#8221;, &#8220;+service/create&#8221;, etc for those roles. Once you give yourself all of these roles you will be able to see under the &#8220;Manage Records&#8221; option (to the right of &#8220;Manage deposits&#8221;).</p>
<p>At this point you&#8217;re looking at it and it looks ugly because the strings aren&#8217;t translated properly. ePrints makes this easy, just click on the &#8220;Edit page phrases&#8221; button. It&#8217;ll list the phrases displayed on the screen and give you the option to add new phrases for the ones you&#8217;re missing whilst highlighting it. Fill in the blanks as you go and once you&#8217;ve added phrases for everything you&#8217;re ready to deploy out your data set!</p>
<p>So whilst we&#8217;re done and we can edit it, we probably want to grant it to our users to have a look at these as well. Adding these roles individually to our users isn&#8217;t fun, however if we edit the /archives/repositoryname/cfg/cfg.d/user_roles.pl file and add the roles to the existing user role we gain what we need. In addition to the existing roles we added previously (e.g. service/view), a generic user account will need the &#8220;datasets&#8221; role to be able to see the datasets tab. This makes the user_roles.pl section for user relatively simple:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">$c-&gt;{user_roles}-&gt;{user} = [qw{<br />
&nbsp; &nbsp; &nbsp; &nbsp; general<br />
&nbsp; &nbsp; &nbsp; &nbsp; edit-own-record<br />
&nbsp; &nbsp; &nbsp; &nbsp; saved-searches<br />
&nbsp; &nbsp; &nbsp; &nbsp; set-password<br />
&nbsp; &nbsp; &nbsp; &nbsp; deposit<br />
&nbsp; &nbsp; &nbsp; &nbsp; change-email<br />
&nbsp; &nbsp; &nbsp; &nbsp; +service/add<br />
&nbsp; &nbsp; &nbsp; &nbsp; +service/edit<br />
&nbsp; &nbsp; &nbsp; &nbsp; +service/view<br />
&nbsp; &nbsp; &nbsp; &nbsp; +datasets<br />
}],</div></div>
<p>Pretty easy. At this point our users can now add, edit and view records in the service dataset. Mission accomplished? The next step is to clean up everything, add a brief citation file in addition to the default citation and for me work out how to have per user items so that users can only edit their own items. But I think that is enough for today. Hopefully I&#8217;ll be able to work out how to limit items to just their own users but I might need to build my own screens. I&#8217;ve done this before with USQ&#8217;s Author ID project so I know how to do it, I&#8217;d just rather not.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/12/04/adding-a-new-dataset-to-eprints-3-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Joomla! 1.6 and WebPI</title>
		<link>http://pasamio.com/2010/09/19/joomla-1-6-and-webpi/</link>
		<comments>http://pasamio.com/2010/09/19/joomla-1-6-and-webpi/#comments</comments>
		<pubDate>Sun, 19 Sep 2010 05:43:29 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[joomla]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[webpi]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=756</guid>
		<description><![CDATA[Over this weekend (Friday evening and Saturday) while watching the AFL Finals I got to work building a script to convert the standard Joomla! 1.6 beta packages into a format that would work with Microsoft&#8217;s Web Package Installer (WebPI). Early Sunday morning I managed to get everything done to the point that a Joomla! 1.6 [...]]]></description>
			<content:encoded><![CDATA[<p>Over this weekend (Friday evening and Saturday) while watching the AFL Finals I got to work building a script to convert the standard Joomla! 1.6 beta packages into a format that would work with Microsoft&#8217;s Web Package Installer (WebPI). Early Sunday morning I managed to get everything done to the point that a Joomla! 1.6 package is automatically converted, stripping out the install and sample data scripts on the fly and reprocessing them as well as updating a WebPI feed XML file that you can use. </p>
<p>The long and the short is if you want to test out the latest Joomla! 1.6 beta release (beta 9 at the moment), all you have to do is add our own custom feed to the Web Platform Installer!<br />
<span id="more-756"></span><br />
The first step is to get the Web Platform Installer. The easiest way of doing this is going to <a href="http://www.microsoft.com/web/downloads/platform.aspx">Microsoft&#8217;s Web Platform download page</a> and then download and install the Web Platform Installer. From here it&#8217;ll load and have a list of tabs on the left and some content on the right. At the very bottom left of the screen will be an option button that you can select. This will open up a window which has a text box around the middle with a button that says &#8220;Add Feed&#8221;. This box allows you to add custom feeds to WebPI to enable my custom Joomla! 1.6 feed to work. In the box put in the following URL: &#8220;http://update.joomla.org/webpi/webpi.xml&#8221; and click &#8220;Add Feed&#8221;. Hit ok and the screen should refresh and a new &#8220;Joomla!&#8221; tab should appear. Under the tab there should be a few options, I&#8217;ve tagged Joomla! a few different times (in future I might add nightly builds for both 1.5 and 1.6 to aide testing) but there is only on 1.6 Beta package. From here you should be able to install Joomla! and in theory it should download and configure any dependencies (e.g. IIS, PHP on IIS and MySQL).</p>
<p>As a word of warning, if you&#8217;re already set up using XAMPP or similar this might interfere with those environments however if you&#8217;re new and wanting to get into testing Joomla! 1.6 Beta on Windows and IIS (we always need more IIS testers), this should make your life much easier!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/09/19/joomla-1-6-and-webpi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 15-Sep-2010: Are we there yet?</title>
		<link>http://pasamio.com/2010/09/15/today-15-sep-2010-are-we-there-yet/</link>
		<comments>http://pasamio.com/2010/09/15/today-15-sep-2010-are-we-there-yet/#comments</comments>
		<pubDate>Wed, 15 Sep 2010 12:01:59 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=754</guid>
		<description><![CDATA[Today was an interesting day with the actual deployment of the DiReCt (EQUELLA) 4.1 system at USQ. It has taken far too long for this to happen and is I believe over a month behind where I had wanted everything to be deployed. But such is life. The last minute changes and the resultant litany [...]]]></description>
			<content:encoded><![CDATA[<p>Today was an interesting day with the actual deployment of the DiReCt (EQUELLA) 4.1 system at USQ. It has taken far too long for this to happen and is I believe over a month behind where I had wanted everything to be deployed. But such is life. The last minute changes and the resultant litany issues that were generated by them which became almost recursive have for the most part been resolved (not so recursive now are we!). There remains some backend stuff that isn&#8217;t behaving properly but that will come in time and I have a feeling that something somewhere is breaking but I&#8217;ll get around to fixing it &#8211; one has to move on with these things. The new environment is behind load balancers, is running SSL by default (load balancer handles that) and I wrote some code that handles rewriting the path to be the new path that was picked. This is a bit of TCL that I retaught myself to get working properly with the F5 load balancers. Other fun things happening involve attending meetings with different people about ePrints related work and slowly getting closer on the world peace project.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/09/15/today-15-sep-2010-are-we-there-yet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t call us, we&#8217;ll call you</title>
		<link>http://pasamio.com/2010/08/18/dont-call-us-well-call-you/</link>
		<comments>http://pasamio.com/2010/08/18/dont-call-us-well-call-you/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 13:26:57 +0000</pubDate>
		<dc:creator>pasamio</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[thoughts]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=750</guid>
		<description><![CDATA[It sounds like a line that you get given when you probably don&#8217;t have a chance at what ever it is. But it is the sort of line I would have liked to have seen from the insurers this evening. Almost every insurer said &#8220;I&#8217;m sorry, we can&#8217;t insure you over the phone&#8221; to my [...]]]></description>
			<content:encoded><![CDATA[<p>It sounds like a line that you get given when you probably don&#8217;t have a chance at what ever it is. But it is the sort of line I would have liked to have seen from the insurers this evening. Almost every insurer said &#8220;I&#8217;m sorry, we can&#8217;t insure you over the phone&#8221; to my online quote and encouraged me to call them. What I would like to see is a call back facility. Suncorp in particular has a 24 hour phone line I can ring so why not ask me what my phone number is and offer to call me in the next 10 minutes based on their call centre load. In fact if I&#8217;m going to call them now then that is the same thing! Depressing!</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/08/18/dont-call-us-well-call-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 10-Aug-2010: Increasingly I find myself in a meeting&#8230;</title>
		<link>http://pasamio.com/2010/08/10/today-10-aug-2010-increasingly-i-find-myself-in-a-meeting/</link>
		<comments>http://pasamio.com/2010/08/10/today-10-aug-2010-increasingly-i-find-myself-in-a-meeting/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 13:19:38 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=745</guid>
		<description><![CDATA[Another day moves slowly away through meetings life gently progressed. Had chats with people about Sedona, something might happen and something might not. Mostly out of my hands for now. RPCS is starting to draw closer. Will have a whole heap of new stuff to add for them so doing it together with Sedona might [...]]]></description>
			<content:encoded><![CDATA[<p>Another day moves slowly away through meetings life gently progressed. Had chats with people about Sedona, something might happen and something might not. Mostly out of my hands for now. RPCS is starting to draw closer. Will have a whole heap of new stuff to add for them so doing it together with Sedona might not be too unrealistic. Not a lot else that I would deem as productive time beyond pushing stuff from one place to the other. Another day at the office.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/08/10/today-10-aug-2010-increasingly-i-find-myself-in-a-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 09-Aug-2010: Productivity?</title>
		<link>http://pasamio.com/2010/08/09/today-09-aug-2010-productivity/</link>
		<comments>http://pasamio.com/2010/08/09/today-09-aug-2010-productivity/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:34:03 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=730</guid>
		<description><![CDATA[I&#8217;m not sure where the majority of my &#8216;regular&#8217; working hours went. Somewhere between fighting with MySQL Workbench and sending emails to people some form of work happened. I&#8217;m not entirely sure what but I guess that dealing with emails is work. The first problem appeared to be four new classes of student that have [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not sure where the majority of my &#8216;regular&#8217; working hours went. Somewhere between fighting with MySQL Workbench and sending emails to people some form of work happened. I&#8217;m not entirely sure what but I guess that dealing with emails is work.<br />
<span id="more-730"></span><br />
The first problem appeared to be four new classes of student that have been created. This causes issues with the catalog because the driver is hard coded to recognise these classes. An easy enough fix to add the four items to the requisite array but it would be nice to abstract this out into a database table at some point or similar. </p>
<p>Next battle was fighting MySQL Workbench to get it to create an ER diagram for me. Eventually I managed to work out how not to trigger its &#8220;<a href="http://support.microsoft.com/kb/125749">pure virtual function call</a>&#8221; &#8211; you need to ensure that you close the bottom panel before opening a new table. I&#8217;m sure they&#8217;ll get around to fixing it one day. MySQL&#8217;s GUI tools have historically had problems for me. MySQL Query Browser rarely manages to let me graphically create a table without crashing. Yet I still try. I think I&#8217;ve managed to work out most of the error conditions to avoid them but it is sad that such easy to trigger bugs exists. In any case I managed to get the diagram modelled correctly which will be useful for future reference as well as for the Faculty of Business who were chasing it. Hopefully it is of use to them.</p>
<p>The afternoon was spent fighting with our EQUELLA instance and trying to work out why it was misbehaving. I didn&#8217;t work it out and ended up purging the item in question instead and starting on a new item. I&#8217;m not sure what I did to get it so grumpy but the item is purged now so it isn&#8217;t going to cause me an issue. The institution in question is going to be wiped out again in a part of testing. I managed to create some cool tools as a part of working out how the system works which should make some future work easier. Also finished work on an interface as well. I went home perhaps a little bit too late but it gave me the chance to concentrate on getting things worked out in peace. I found a minor quirk in Joomla! that I&#8217;d found previously but now I have a reasonable solution to get around it.</p>
<p>More work, more juggling but the wheel slowly turns.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/08/09/today-09-aug-2010-productivity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 06-Aug-2010: Would you like a plugin with that?</title>
		<link>http://pasamio.com/2010/08/07/today-06-aug-2010-would-you-like-a-plugin-with-that/</link>
		<comments>http://pasamio.com/2010/08/07/today-06-aug-2010-would-you-like-a-plugin-with-that/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 03:25:16 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=720</guid>
		<description><![CDATA[In the wide world of USQ Library today turned into another day of digging through code, asking why and then progressing on with fixing things. Today&#8217;s strange problem was trying to work out why variables that seemingly were global variables weren&#8217;t marked as global variables yet were working. This revelation turned out to be a [...]]]></description>
			<content:encoded><![CDATA[<p> In the wide world of USQ Library today turned into another day of digging through code, asking why and then progressing on with fixing things. Today&#8217;s strange problem was trying to work out why variables that seemingly were global variables weren&#8217;t marked as global variables yet were working. This revelation turned out to be a require of the relevant file into function scope &#8211; I&#8217;m not sure why I didn&#8217;t think to look for that first but the excess of globals threw me off. The function in question had around 12 other globals marked in various places so it isn&#8217;t completely out of place. Par for the course for the last week really and Business provided the most interesting aspect of the day.<br />
<span id="more-720"></span><br />
The next most interesting revelation of the day appears to be Sedona. Sedona is a system that the Faculty of Business appear to be running up to help support them in obtaining AACSB accreditation. Sedona appears to a database which is shared between apparently 220 institutions. Apparently the approved method of importing is to use a CSV file, there is no way of adding new fields to the system unless it is deemed to be useful to &#8220;all Australian universities&#8221;. An example of such is two relatively pointless HERDC and ERA fields as well as an FOR08 field that was for Bond University. The FOR08 field is particularly useless with some 1400 FOR codes in a standard HTML multiline select box. </p>
<p>Sedona doesn&#8217;t appear to offer any form of integration services so the fact that they could integrate with ePrints via SWORD (deposits) or OAI-PMH (harvesting) is sounding impossible even though it would be a great standard way to send data around. The suggested synchronisation involved FTP but details are light on the ground. </p>
<p>Apparently the system doesn&#8217;t work properly with Chrome to the point that it won&#8217;t let you login claiming you need IE, Firefox or Safari. The system isn&#8217;t normalised as well with the author names fields (first name, middle name and last name) being stored as individual fields in the database (e.g. fname1, fname2) and limited to five authors. For overflow there is an &#8220;et al.&#8221; multiline textbox. The system does have a method of adding co-authors however this is distinct and is again a multiline select box. There is another free form box for citations which makes sense as they limit the list of periodicals (drop down select list) and lack enough information to build most citation types from the data that the system stores.</p>
<p>The system does appear to have given some thought to an export with an Access database being generated with appropriate tables. Access, whilst not perhaps my preferred database system, is perhaps one of the better choices for data export and certainly beats sending CSV or XLS files around. There is the proprietary aspect to Access but there could be no option at all and at least maintains type data better. It also appears that this form of export is the way of adding extra fields that might be required by the University to store extra information. It wouldn&#8217;t surprise me if an Access database isn&#8217;t the preferred synchronisation tool though that personally scares me. But at least they have thought about it which is a good start.</p>
<p>Overall I look at the system and think we could integrate it into ePrints and increase the overall value of our data anyway. We could handle the few extra fields that Sedona appears to add with the extra item types. The extra datasets are exactly that: datasets. ePrints has workflow to handle editing items to do what it needs. It would be less limited and give us more power to do what we need. </p>
<p>Reports appear to be the systems strong point. There is a prebuilt CV and various other rather trivial reports for a member. There is a set of aggregate reports that I haven&#8217;t looked into and there appears to be a rather picky way of formatting things for the AACSB requirements (including printed CV&#8217;s in a particular format &#8211; I hope AACSB doesn&#8217;t cover IT related areas given the backwards requirements).</p>
<p>The fun task I ended the day with was returning to work on the monstrous PHP application I&#8217;ve been fighting with all week. The particular point I&#8217;m at is adding plugin functionality to a section of the code base. Since I&#8217;ve been incorporating the Joomla! Framework into the system, doing this turned out to be relatively trivial. At the point where I wanted the plugin trigger I load a file called &#8216;notifier.php&#8217;. This loads in the Joomla! framework bootstrap file which defines a while bunch of things (JPATH_BASE, JPATH_ROOT, etc) that Joomla! uses and loads the relevant files plus a few other files to get the system started off the bat. The &#8216;notifier.php&#8217; file also defines a class aptly named &#8216;Notifier&#8217; which extends JDispatcher. JDispatcher is the work horse of the Joomla! event subsystem from which plugins derive. The Notifier constructor loads up a particular directory and opens all of the files in it and tries to create new classes in the format plgNotifierFilename similar to how Joomla!&#8217;s plugin infrastructure works. This then registers those classes with the notifier class for use. Then in the original file I use JDispatcher&#8217;s &#8220;trigger&#8221; method to send a message to all of the registered plugins and the integration is done. In the original file there is only 4 lines of code added to load the file, create the class and trigger the message &#8211; plus a comment summarising this as well. It is one of those things where the framework makes life really easy to extend systems in a flexible manner. Now if I want to attach multiple plugins to extend that particular bit of code it is easy to do and with the framework it is easy to define multiple plugin triggers.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/08/07/today-06-aug-2010-would-you-like-a-plugin-with-that/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 05-Aug-2010: Meeting-o-rama!</title>
		<link>http://pasamio.com/2010/08/05/today-05-aug-2010-meeting-o-rama/</link>
		<comments>http://pasamio.com/2010/08/05/today-05-aug-2010-meeting-o-rama/#comments</comments>
		<pubDate>Thu, 05 Aug 2010 13:13:34 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=718</guid>
		<description><![CDATA[There are days where meetings seem to dominate. Today was one of those. With four hours of the day scheduled out into meetings it felt like I didn&#8217;t get much done but some how managed to get more work: ePrints, DiReCt, media repository and some finalisation on mobile. I did have a few minor wins [...]]]></description>
			<content:encoded><![CDATA[<p>There are days where meetings seem to dominate. Today was one of those. With four hours of the day scheduled out into meetings it felt like I didn&#8217;t get much done but some how managed to get more work: ePrints, DiReCt, media repository and some finalisation on mobile. I did have a few minor wins in understanding how different parts of the library systems come together however there is a still a lot more to learn. </p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/08/05/today-05-aug-2010-meeting-o-rama/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Today: 04-Aug-2010: Today that was could no longer sustain us</title>
		<link>http://pasamio.com/2010/08/04/today-03-aug-2010-today-that-was-could-no-longer-sustain-us/</link>
		<comments>http://pasamio.com/2010/08/04/today-03-aug-2010-today-that-was-could-no-longer-sustain-us/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 12:36:02 +0000</pubDate>
		<dc:creator>Pasamio</dc:creator>
				<category><![CDATA[today]]></category>

		<guid isPermaLink="false">http://pasamio.com/?p=712</guid>
		<description><![CDATA[Today was another mixed day. We deployed out the trial library mobile application ahead of the system management committee (SysManCom) meeting. It is available through the USQ Library homepage and is still in trial (we found some more bugs so we&#8217;ll get that sorted). SysManCom progressed with a reasonable reception of the mobile application which [...]]]></description>
			<content:encoded><![CDATA[<p>Today was another mixed day. We deployed out the trial library mobile application ahead of the system management committee (SysManCom) meeting. It is available through the USQ Library homepage and is still in trial (we found some more bugs so we&#8217;ll get that sorted). SysManCom progressed with a reasonable reception of the mobile application which is nice. Some tasks to follow up on from the meeting which is always fun &#8211; some writing to be done about eBooks in the library for users. This should basically amount to because publishers don&#8217;t give us the tools students can&#8217;t put the &#8220;ebooks&#8221; we subscribe to on &#8220;ebook&#8221; readers. Yay for DRM.</p>
<p>After the demo one of the most painful parts was the fact that we rely upon the CMS for a significant amount of content. The main problem with the CMS is that it is horribly unfriendly for mobile devices. At one stage the home page had a Flash banner which didn&#8217;t degrade properly which left a frustrating image that said &#8220;click here&#8221; but wasn&#8217;t actually linked to anything. So I spent the middle of the day working out how to strip out the USQ home page template so that we can embed it else where. I managed to get it sorted mostly though as I&#8217;m abusing an XML parser it&#8217;ll barf on poorly formatted pages or with HTML entities not in XML. Most of the CMS pages are fine but some legacy ones aren&#8217;t so lucky. I&#8217;ve put in some minor checks to clean things up but hopefully it isn&#8217;t too much of a problem.</p>
<p>The afternoon rounded out with a meeting before leaving early so that I could return for my evening of debates. Life in the fast lane.</p>
]]></content:encoded>
			<wfw:commentRss>http://pasamio.com/2010/08/04/today-03-aug-2010-today-that-was-could-no-longer-sustain-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

