Getting my netbook ready for study
June 25, 2009 at 6:00 pm | In Thoughts, UniSA | Leave a CommentTags: cloud, dell, google, mini 9, netbook, study, ubuntu, UniSA, unr
My preparations for study are progressing and I’ve started by enrolling in courses, ordering textbooks and those other sorts of tasks that you can undertake before the study period starts. One of those tasks has been getting my netbook ready.
The plan is to use my Dell Inspiron Mini 9 as my primary computer while on campus and leave my other larger laptop at home for study and the tasks best suited to a larger computer. I’ll primarily be using the netbook for checking email, web surfing, keeping my calendar up to date, possibly twittering and using Facebook etc. For notes I’ll still use a pen and paper. My typing isn’t fast enough for note taking on the small form factor keyboard on the netbook.
To get the netbook ready I reinstalled a clean image of Ubuntu Netbook Remix (UNR). I also used this excellent guide by Dustin Kirkland to encrypt my home directory just in case the unthinkable happens and my netbook goes missing.
I have my own domain and have enabled Google Apps so that I have my email, calendar and documents stored in the cloud. More importantly it means I now have corey@techxplorer.com as my primary email account and can move it to another service provider if I need to in the future. Not that such a move is planned any time soon as I’ve found Google Apps and WordPress.com to provide me with nearly all I need.
I have my UniSA email account redirecting to my primary email account as well, putting the majority of my email into one central location. The Gmail interface, at least for me, is much better than the Outlook Web Access provided by the university.
I expect to have intermittent access to the Internet and therefore have enabled the offline feature of the Google Apps suite. The only possible disadvantage I’ve seen so far is that Google Calendar won’t allow you to create new events while in offline mode. But this is a small issue.
I’ve looked into the mobile broadband options and at the moment I can’t justify the cost. I may need to revisit this decision as study unfolds.
It will be interesting to see if I can successfully complete my studies without using any Microsoft products and keeping everything in the cloud as much as possible. It is an experiment that I’m looking forward to and will write more about here on my blog.
The “Dell Mini 9” photo was uploaded to Flickr by Pablo Ruiz Múzquiz and used under the terms of a Creative Commons License.
The “When Sunlight Bathes the August Plains” photo was uploaded to Flickr by Athena and used under the terms of a Creative Commons License.
Change in Career Direction
June 18, 2009 at 1:30 pm | In Thoughts | 5 Comments
Today marks a change in career direction for me.
I’ve resigned from my position here in the Office of Research at Flinders University. Rather than changing jobs I’m going back to university as a full time student.
I will be studying a Master of Science (Computer and Information Science) at the University of South Australia or UniSA for short. I’ll be studying full time and so couldn’t continue full time employment as well.
My time at Flinders University has been interesting. I’ve worked projects related to the Research Quality Framework (RQF) project which then changed into the Excellence in Research for Australia (ERA) Initiative. I’ve also worked on implementing a WordPress MU based blog service called Flinders Blogs.
I’ve seen a lot of changes in the past two years but have increasingly desired more from my career. I keep coming back to the early days of my career when I was persuaded by a good friend of mine to undertake tutoring and later lecturing whilst studying for my honours degree.
While all the work I’ve done since that time has been important it lacked the positive feeling that you get from teaching and helping others to learn about an area that you feel passionate about. Undertaking this course is a step to getting back into teaching.
I’ve also missed the thrill of learning new things and expanding my horizons and the degree will certainly help me to do that. I plan on focussing on the mobile phone / mobile computing / m-commerce areas as this holds great interest to me. No doubt I’ll expand more on these topics in my blog as time goes by.
This will mark a change in focus for my blog as well. Rather than just be a repository for stuff I’ve learned quickly while exploring technology that I’ve had to use to get the job done, I hope it will expand to cover all of things I’ll be doing at university. It will be an interesting ride, and I hope people that read my blog will come along with me.
That’s all for now, I have to get back to writing documentation.
The photo “A Fork in The Road” was uploaded to Flickr by Alex Bowyer and used under the terms of a Creative Commons License.
The photo “The Milky Way Galaxy before moonrise” was uploaded to Flickr by Phillip Chee and used under the terms of a Creative Commons License.
I’m a published author
June 16, 2009 at 11:12 am | In Thoughts | 3 CommentsTags: Libraries, libraries interact, Library 2.0, Library Systems, mashups
Today I was notified that the book that I contributed a chapter to is now availbale for pre-order. The book is entitled Library Mashups: Exploring New Ways to Deliver Library Data published is by Information Today, Inc.
The chapter focuses on the three plugins that were developed by the THALI to extend the Libraries Interact blog and have released to the WordPress community. The THALI is the group of librarians and other people who are involved in running the Libraries Interact blog.
The three plugins were developed by me working closely with the THALI. The plugins are:
- Blogroll to Google CSE plugin
A plugin that allows users of the WordPress system to manage links to websites that are automatically used to construct a Google Custom Search Engine. We use the plugin here for the Aussie Library Blogs page. - Citation Aggregator
A plugin that aggregates links (citations) from various social bookmarking websites. The links can then be used to construct a post that list the links automatically. We’ll be using this plugin shortly for a series of Reading Room posts. - Diverse Group Tag Cloud
A plugin that aggregates posts from a specified list of blogs and uses content analysis to construct a tag cloud. We use this plugin for the THALI Tags page.
The book is supported by the Library Mashups website managed by the editor of the book Nicole C. Engard. The site has a list of chapters and lists of links relevant to the topics covered in the book.
New Version of the Citation Aggregator Plugin
June 2, 2009 at 12:38 pm | In Thoughts | Leave a CommentTags: google reader, plugin, wordpress
A new version of the Citation Aggregator plugin, developed in conjunction with the kind folks at Libraries Interact has been released.
New in this version are a number of small bug fixes and the addition of a feature to aggregate links from Google Reader via the feeds available as part of the Shared Items pages.
The new version is available for download via the WordPress Plugin Directory or via the automattic update functionality within your WordPress installation.
As always please let me know if you have any comments about this plugin or any of the other projects available from my site.
Updating the BIOS of my Dell Mini 9
May 27, 2009 at 2:56 pm | In Thoughts | Leave a CommentTags: dell, mini 9, ubuntu
I’ve had my Dell Mini 9 for a while now and have been impressed with it. The other week I installed the latest Ubuntu Net Remix (UNR) and I really like the launcher and the other tweaks that this version provides.
One point of frustration for me has been the fact that I’ve been unable to update the BIOS on the system. Any of the solutions I could find on the Intertubes required Windows (ick) or failed utterly.
There was hope when I saw the “Dell Mini 9/Vostro A90 BIOS Flashing Utility” post on the Ubuntu on the Dell Mini 9 blog. In particular the comment where the utility worked with Wine to create a bottable image.
Below is the process that I followed to update the BIOS on my system. Please note that this worked for me, it may not work for you. Also updating, or flashing, the BIOS of your system is risking in that if it fails for any reason you’re likely to end up with a very expensive paperweight.
Note: I did these steps on my primary laptop, not the Mini
- Ensure that Wine is installed and properly configured
Note: I used the latest development version but the one in the Ubuntu Repositories should be fine - Download the utility package from the link specified in the “Dell Mini 9/Vostro A90 BIOS Flashing Utility” post
- Run the utility using Wine
- Answer yes to the warning prompt
- Choose the Create a Bootable Image option, not the Create a Bootable CD option
- Save the image in a suitable location
- Ensure that the ImageWriter package (package information) is installed and working
- Start the ImageWriter application
- Choose the image file that was created in step 6
- Write the image file to the USB drive
Once the file is written the USB drive you can use the USB drive to boot the Mini and follow the prompts to the update the BIOS. A couple of general tips:
- Read the instructions on the screen carefully at least twice and understand exactly what is going to happen
- Have the Mini plugged into the mains power and not running on the battery
- Don’t stress too much. While you could end up with a paperweight if something goes wrong, it is an easy process if you’re careful
- Reapply any changes to the BIOS settings that you made before the update. For example I disable Bluetooth in the BIOS as I don’t need it
The “Dell Mini 9” photo was uploaded to Flickr by Neil Wilkie and used under the terms of a Creative Commons License.
Fixing Screen Artefacts with OpenOffice and Ubuntu Linux
May 26, 2009 at 2:45 pm | In Thoughts | 1 CommentTags: nvidia, openoffice, ubuntu
Since upgrading to Ubuntu 9.04 I’ve had some display issues with OpenOffice. Essentially I would get odd screen artefacts where the screen would appear not to refresh correctly. For example when scrolling through a spreadsheet new rows would appear to move up behind the previous rows, buttons would not refresh correctly, and scrolling through a document was a nightmare.
Some Internet searching later turned up the issue. Apparently it is a bug most commonly seen with OpenOffice when used with the Compiz window manager on a system that uses the propriety NVIDIA drivers. My primary laptop uses a NVIDIA based graphics card, specifically a GeForce Go 7300.
To resolve the issue I installed the compizconfig-settings-manager package and then:
- Clicked on the System menu button on the main panel
- Clicked on the Preferences sub menu button
- Clicked on the CompizConfig Settings Manager menu item button
When the application had loaded I then:
- Clicked on the Utility category
- Clicked on the Workarounds button
- Selected the Force synchronization between X and GLX option
I did this with OpenOffice running and it resolved the issue for me instantly.
The sources used to come up with the fix include:
- Ubuntu Forums threads:
- Nobody was born with linux knowledge blog post
The issue appears to be with the proprietary NVIDIA drivers and so this fix is likely to work with other Linux distributions. If it doesn’t work for you, the second Ubuntu Forums thread has some additional changes that have worked for other users.
The “Wall mounted LCD” photo was uploaded to Flickr by Jan Kaláb and used under the terms of a Creative Commons license.
Using the DOM in PHP5
May 25, 2009 at 9:00 am | In Thoughts | Leave a CommentTags: PHP, XML
Recently I had to create a batch of XML files to export data from one system for import into another. As I have done for the past two years I wrote the solution using the PHP programming language.
The basic structure of the XML was like this:
<root_node>
<data_node att_1="value" att_2="value">
data value
</data_node>
</root_node>
The att_1 attribute defined the type of data element and the att_2 attribute defined the sub type.
The way I approached the task was to use the DOM extension in PHP5. The DOM extension provides the functionality necessary to manipulate XML using the API defined by the Document Object Model specification. I needed some code that would:
- Start the XML document
- Add the root node to the document
- Add a number of data_nodes, sanitising the data along the way
- Give me an XML string for writing to a file
Starting the XML document
To start the XML document I used code like this:
// start the XML document
$xml_dom = new DOMDocument('1.0', 'UTF-8');
Line 02 of the code above creates a new instance of the DOMDocument class. This is the container object for my XML, I also specify the XML version ‘1.0′ and the encoding ‘UTF-8′.
Adding the root node to the document
// add the root node
$element = $xml_dom->createElement('root_node');
$root_node = $xml_dom->appendChild($element);
Line 02 above uses the createElement method to create an instance of the DOMElement class. This will be used as the root node of the XML file that I’m generating.
Line 03 of the code adds the element to the DOMDocument object. As it was the first node added it became the root node of the document.
Adding the Data Nodes
Adding the data nodes was going to be a repetative task. Essentially executing the same operation again and again using different values for the attributes and the actual data. I also was going to need to undertake the same basic data sanitising tasks for each new node. With this in mind, creating a function to do the work made the most sense.
My function looked like this:
function add_node(&$xml_dom, &$root_node,
$type, $sub_type, $value) {
// sanitise the value
$value = trim($value);
$value = htmlentities($value, ENT_NOQUOTES);
// add the value
$node = $xml_dom->createElement('data_node', $value);
$node->setAttribute('type', $type);
$node->setAttribute('sub_type', $sub_type);
$root_node->appendChild($node);
}
Line 01 of the code above defines the add_node function.
The function takes a number of parameters. The first two parameters are passed by reference and are the instance of the DOMDocument class and the root node element that were created in the first two sections of code.
By passing these two parameters by reference I can use the function to act upon the same XML document with each call of the function.
Lines 04 and 05 sanitise the value before it is added to the XML. First any extraneous white space is removed, and then any characters that should be represented as character entities are encoded as such. For example ‘&’ becomes ‘&’.
Line 08 creates an new instance of the DOMElement class to represent the data_value node.
Line 09 uses the setAttribute method to add the ‘type’ attribute with a value specified by the $type variable.
Line 10 uses the setAttribute method to add the ’sub_type’ attribute with a value specified by the $sub_type variable.
Lastly line 11 adds the new data_value node to the root node of the XML document.
By breaking this functionality out into a seperate function I can loop through the data I’m exporting and add the nodes as necessary.
Getting the XML String
The last task was to get the finalised XML so that I could write it to a file. To do this you use the saveXML function like this:
$xml_string = $xml_dom->saveXML();
There are many other ways of outputing XML in PHP but I felt this gave me the most flexibility with the least stress. For example if I was building the XML string manually I would have needed to keep track of opening and closing tags etc.
Generating Boring Reports
May 22, 2009 at 10:50 am | In Thoughts | Leave a CommentTags: dilbert, reporting
This morning I saw this Dilbert cartoon in my RSS reader.
It interested me because it touched on something that I’ve been thinking about for a while now. In the Dilbert strip the manager is upset because the report is boring. In my case it is the task of generating the reports that is boring.
Over the course of a number of years all of the reports that I’ve generated come down to one thing, generating a spreadsheet. What I can’t help wondering is if the spreadsheet has become the defacto standard for reporting data at the expense of other types of reporting or ways to view the data.
For example would a tag cloud / weighted list help in understanding the data? Or what about mapping the data visually using something like Google Earth? In my experience the spreadsheet is all that is ever called for.
Perhaps there is a research idea in there somewhere, comparing the effectiveness of the spreadsheet versus alternatives in bringing understanding for complex data driven decisions….
Working with MIME Encoded XML using SOAP and PHP5
May 1, 2009 at 5:35 pm | In Thoughts | Leave a CommentTags: PHP, soap, webservice, XML
This is the last post about my experiences with interfacing with a SOAP based web service using PHP5. The earlier posts were:
The SOAP classes in PHP5 are built around the libxml2 library and, as far as I can tell, assume that the response that is received from a web service is a straight XML document that it can pass directly to the libxml2 library.
The classes don’t check to see if this isn’t the case and so when the libxml2 library doesn’t get the XML that it expects an exception is thrown.
The exception that is thrown will say:
SoapFault exception: [Client] looks like we got no XML document in <document>
They way that I’ve worked around the limitation is a bit of a hack and therefore this is a way, not an example of the way. If anyone has any alternative suggestions I’d really appreciate seeing them.
To work around this issue I came up with some code that:
- Traps the exception
- Determines if the exception is the one that we expected
- Strips the MIME encoding wrapper
- Use an XPath to get the data that we require
It is a bit of a hack because it is code that gets executed when an exception occurs routinely. An exception, as the name implies, is something that shouldn’t happen as part of normal processing.
The PHP code I came up with looks like this:
try {
$response = $soup_client->someFunction($parameters);
} catch (SoapFault $soapFault) {
$fault_string = $soapFault->faultstring;
if(strpos($soapFault->faultstring, 'looks like we got no XML document') !== FALSE) { // trap the expected error
// get the text of the response
$response = $scopus_client->__getLastResponse();
// find the start of the xml
$xml_start = strpos($response, '< ?xml');
// find the end of the xml
$xml_end = strrpos($response, '>');
// get only the xml
$response = substr($response, $xml_start, $xml_end - $xml_start + 1);
// load the XML
$response_xml = new SimpleXMLElement($response);
// add the appropriate namespace for XPath searching
$response_xml->registerXPathNamespace('ns2', 'http://techxplorer.com/example-ns');
// search using an XPath
$result = $response_xml->xpath('//ns2:dataElements/ns2:dataElement');
if(is_array($result)) {
// found the data so do something with it
} else {
// no data found so we can do something appropriate
}
} else {
// the exception is not the one we were expecting so do something appropriate
}
}
Observant readers will not that I also had to use an XML namespace in my XPath as well.
The integration of the webservice with the site was an interesting adventure and was hampered somewhat by the lack of documentation around the SOAP classes.
It is my hope that my three posts are useful to those grappling with the same issues that I have been.
Blog at WordPress.com. | Theme: Pool by Borja Fernandez.
Entries and comments feeds.
For someone that has some interest in this 



