<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:xh="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/2005/Atom">
    <generator uri="http://www.adamretter.org.uk/blog.xql" version="1.0">Adam Retters XQuery Blog Code</generator>
    <title>Adam Retter's Blog</title>
    <subtitle type="xhtml">
        <xh:a href="http://www.adamretter.org.uk/blog.xql">http://www.adamretter.org.uk/blog.xql</xh:a>
    </subtitle>
    <link rel="alternate" type="text/html" hreflang="en" href="http://www.adamretter.org.uk/blog.xql"/>
    <link rel="self" type="application/atom+xml" href="http://www.adamretter.org.uk/blog.xql?atom"/>
    <updated>2013-05-11T15:49:05.982+01:00</updated>
    <author>
        <name>Adam Retter</name>
        <uri>http://www.adamretter.org.uk</uri>
    </author>
    <id>tag:www.adamretter.org.uk,2009-07-22:/blog.xql</id>
    <entry>
        <title>Authenticating with Redstone XML-RPC Proxy</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/redstone-xml-rpc-authentication.xml"/>
        <id>tag:www.adamretter.org.uk,2013-05-11:/blog/entries/redstone-xml-rpc-authentication.xml</id>
        <updated>2013-05-11T15:49:05.982+01:00</updated>
        <published>2013-05-11T15:49:05.982+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Redstone"/>
        <category term="XML-RPC"/>
        <category term="Java"/>
        <category term="HTTP"/>
        <category term="Authentication"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
                    <xh:a href="http://xmlrpc.sourceforge.net/" title="Redstone XML-RPC Library">Redstone</xh:a> is an excellent and simple XML-RPC library. Recently when trying to create a simple XML-RPC client using Redstone in some example code for a book I am writing, I needed to be able to authenticate with the 3<xh:sup>rd</xh:sup>-party XML-RPC server.</xh:p>
                <xh:p>The server that I was attempting to communicate with (<xh:a href="http://www.exist-db.org" title="eXist Native XML Database">eXist</xh:a>) requires at least HTTP Basic Authentication for operations that require a user to have been granted various permissions. Redstone provides no explicit functionality for authentication or information on how to achieve such things. However as its Open Source, I dug through the code and discovered that it uses a standard <xh:a href="http://docs.oracle.com/javase/6/docs/api/java/net/HttpURLConnection.html" title="Java 6 Javadoc for the java.net.HttpUrlConnection class">java.net.HttpUrlConnection</xh:a>. Whilst it is quite possible to do HTTP Basic Authentication with HttpUrlConnections by setting the correct HTTP Header, I was making use of Redstone's XML-RPC Proxy facility, to help keep my client code simple, which unfortunately does not expose anymore than an instance of the Interface you proxy. Another quick examination of the Redstone code showed that they were using <xh:a href="http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html" title="Java 6 Javadoc for the java.lang.reflect.Proxy class">java.lang.reflect.Proxy</xh:a> to create a dynamic proxy of the provided Interface.</xh:p>
                <xh:p>We can use <xh:a href="http://docs.oracle.com/javase/6/docs/api/java/lang/reflect/Proxy.html#getInvocationHandler(java.lang.Object)" title="Java 6 Javadoc for the getInvocationHandler method of the java.lang.reflect.Proxy class">Proxy.getInvocationHandler</xh:a> on our XML-RPC proxy to get the Invocation Handler, which happens to be an instance of <xh:a href="http://xmlrpc.sourceforge.net/javadoc/index.html" title="Javadoc for the redstone.xmlrpc.XmlRpcProxy class">redstone.xmlrpc.XmlRpcProxy</xh:a> which offers us the method setRequestProperty(name, value). Any request properties set in this way are set as Headers on the Http Request used by the XML-RPC proxy.</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>XQuery Matching Based on Word Distance</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/xquery-matching-based-on-word-distance.xml"/>
        <id>tag:www.adamretter.org.uk,2012-08-18:/blog/entries/xquery-matching-based-on-word-distance.xml</id>
        <updated>2012-08-19T16:36:00.000+01:00</updated>
        <published>2012-08-18T18:43:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="XQuery"/>
        <category term="Full-Text"/>
        <category term="Search"/>
        <category term="eXist-db"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>Whilst at this moment I am meant to be preparing my sessions of the <xh:a href="http://www.xmlsummerschool.com" title="XML Summer School">XML Summer School</xh:a> this year, I was reviewing Priscilla Walmsley's slides from last year and saw the following example given as a 'Search and Browse' use-case for XQuery:</xh:p>
                <xh:p>
                    <xh:q>"What medical journal articles since 2004 mention "artery" and "plaque" within 3 words of each other?"</xh:q>
                </xh:p>
                <xh:p>I immediately thought to myself <xh:q style="font-style: italic">'Hmm... that would be a tricky one to code in XQuery!</xh:q>. Of course the easy answer would be to use the <xh:a href="http://www.w3.org/TR/xpath-full-text-10/" title="W3C XPath and XQuery Full-Text 1.0">W3C XPath and XQuery Full-Text extensions</xh:a>, for example:</xh:p>
                <xh:p>Sadly however, <xh:a href="http://www.exist-db.org" title="eXist-db">eXist-db</xh:a>, which is the XQuery platform I like to use, does not implement the W3C Full-Text extensions yet. Instead it has its own full-text extensions based on Lucene, so in eXist-db the equivalent would be:</xh:p>
                <xh:p>If I stopped there however, it would be quite a short blog post. It also appears from the <xh:a href="http://dev.w3.org/2007/xpath-full-text-10-test-suite/PublicPagesStagingArea/ReportedResults/XQFTTSReportSimple.html">implementation test results</xh:a> that the W3C XPath and XQuery Full-Text specification is not widely implemented. So how about implementing this in pure XQuery? I took the challenge, and my Solution is below.<xh:br/>I would be interested to see attempts at a more elegant implementation or suggestions for improvements.</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Keeping GitHub pages up to date with your master</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/keeping-github-gh-pages-and-master-in-sync.xml"/>
        <id>tag:www.adamretter.org.uk,2012-08-19:/blog/entries/keeping-github-gh-pages-and-master-in-sync.xml</id>
        <updated>2012-08-19T12:03:00.000+01:00</updated>
        <published>2012-08-19T12:03:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="XQuery"/>
        <category term="Full-Text"/>
        <category term="Search"/>
        <category term="eXist-db"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
                For the <xh:a href="http://exquery.github.com/exquery/exquery-restxq-specification/restxq-1.0-specification.html" title="RESTXQ 1.0: RESTful Annotations for XQuery 3.0">RESTXQ specification</xh:a>
                that I am working on as part of my <xh:a href="http://exquery.org" title="Extensions for XQuery">EXQuery</xh:a> efforts,
                I need to write up a "formal" specification for RESTXQ. 
                The EXQuery RESTXQ code base lives on GitHub
                (<xh:a href="http://github.com/exquery/exquery" title="EXQuery GitHub">http://github.com/exquery/exquery</xh:a>),
                and the specification has been authored in the <xh:code>exquery-restxq-specification</xh:code> module.
            </xh:p>
                <xh:p>
                The RESTXQ specification is authored in HTML using Robin Berjon's excellent
                <xh:a href="http://pages.github.com/darobin/respec" title="ReSpec GitHub">ReSpec</xh:a> tool.
                As specifications are arguably meant to be read by people, it would be nice if we could present the
                work in progress from the source repository to users as a web page.
            </xh:p>
                <xh:p>
                Fortunately GitHub provides a nice facility for web pages called
           ...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>EXPath HTTP Client and Heavens Above</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/expath-http-client-heavens-above.xml"/>
        <id>tag:www.adamretter.org.uk,2012-04-29:/blog/entries/expath-http-client-heavens-above.xml</id>
        <updated>2012-04-29T14:28:00.000+01:00</updated>
        <published>2012-04-29T14:28:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="EXPath"/>
        <category term="HTTPClient"/>
        <category term="User Agent"/>
        <category term="HTTP 1.1"/>
        <category term="Persistent Connections"/>
        <category term="XQuery"/>
        <category term="cURL"/>
        <category term="IIS"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>Whilst writting a data mash-up service for the Predict the Sky challenge at the NASA Space Apps hack day at the Met Office, I hit a very strange problem with the EXPath HTTP Client. I needed to scrape data from a webpage on the Heavens Above website http://heavens-above.com/PassSummary.aspx?showAll=x&amp;satid=25544&amp;lat=50.7218&amp;lng=-3.5336&amp;loc=Unspecified&amp;alt=0&amp;tz=CET and so I wrote the following XQuery:</xh:p>
                <xh:p>However that query would always return a HTTP 404 result:</xh:p>
                <xh:p>Now, this seemed very strange to me as I could paste that URL into any Web Browser and be returned a HTML Web Page! So I broke out one of my old favourite tools, <xh:a href="http://www.wireshark.org" title="Wireshark">Wireshark</xh:a>, to examine the differences between the HTTP request made by the EXPath HTTP Client (which is really the <xh:a href="http://http://hc.apache.org/" title="Apache Commons hc">Apache Commons HTTP Components Client</xh:a> underneath) and <xh:a href="http://curl.haxx.se/" title="cURL">cURL</xh:a>. I decided to use cURL as its very simple and so therefore I knew it would not insert unnessecary headers into a request, of course I made sure it worked first!</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>NASA Space Apps Challenge</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/nasa-space-apps.xml"/>
        <id>tag:www.adamretter.org.uk,2012-04-22:/blog/entries/nasa-space-apps.xml</id>
        <updated>2012-04-23T19:13:00.000+01:00</updated>
        <published>2012-04-22T21:01:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="NASA"/>
        <category term="Met Office"/>
        <category term="Space Apps"/>
        <category term="XQuery"/>
        <category term="XML"/>
        <category term="eXist"/>
        <category term="IOS"/>
        <category term="Android"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
                    <xh:img class="right" src="blog/images/space-apps-hack.jpg" alt="Predict The Sky Team, Space Apps Challenge, Exeter" width="400"/>This weekend I returned to Devon and attended the NASA Space Apps Challenge at the Met Office. This is only the second hackathon I have attended outside of the eXist-db sessions I have done in the past and it was great fun.</xh:p>
                <xh:p>When we arrived we were given a few somewhat cheesy welcome videos from NASA and then presented with the <xh:a href="http://spaceappschallenge.org/challenges/" title="NASA Space Apps Challenges">challenges</xh:a>, I chose to join the “Predict the Sky” challenge.</xh:p>
                <xh:p>The goal of the 'Predict the Sky' project was to create applications which would allow a user to know what objects are in the sky over their location at night, and the chances of them being able...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Connecting to OpenIndiana by XDMCP</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/open-indiana-enable-xdmcp.xml"/>
        <id>tag:www.adamretter.org.uk,2011-07-23:/blog/entries/open-indiana-enable-xdmcp.xml</id>
        <updated>2011-07-23T17:02:00.000+02:00</updated>
        <published>2011-07-23T17:02:00.000+02:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="OpenIndiana"/>
        <category term="XDMCP"/>
        <category term="Mac"/>
        <category term="OSX"/>
        <category term="Xephyr"/>
        <category term="Solaris"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>I have a small NAS which I have built which run's OpenIndiana oi_151 and I wanted to be able to headlessly administer it, whilst I have SSH and thats all I really need, sometimes its nice to use a remote desktop environment.</xh:p>
                <xh:p>
                    <xh:a href="http://en.wikipedia.org/wiki/X_display_manager_(program_type)#X_Display_Manager_Control_Protocol" title="XDMCP article on Wikipedia">XDMCP</xh:a> is a fundamental part of the X Window System, and one feature it offers is the ability to export your display across a network.</xh:p>
                <xh:p>To enable XDMCP on OpenIndiana simply modify the XDMCP section in the file /etc/gdm/custom.conf so that it looks something like this -</xh:p>
                <xh:p>Now you just need to restart the GDM service -</xh:p>
                <xh:p>...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Installing Netatalk on OpenIndiana</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/configure-openindiana-as-mac-fileserver.xml"/>
        <id>tag:www.adamretter.org.uk,2011-07-23:/blog/entries/configure-openindiana-as-mac-fileserver.xml</id>
        <updated>2011-07-23T15:57:00.000+02:00</updated>
        <published>2011-07-23T15:57:00.000+02:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="OpenIndiana"/>
        <category term="Mac"/>
        <category term="OSX"/>
        <category term="Time Machine"/>
        <category term="AFP"/>
        <category term="Netatalk"/>
        <category term="Avahi"/>
        <category term="Solaris"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>It is possible to configure your <xh:a href="http://www.openindiana.org/" title="Open Indiana website">OpenIndiana</xh:a> system to operate as a file server for your Mac using the AFP protocol, and if you have lots of lovely ZFS storage attached then it makes lots of sense. You can also configure OpenIndiana to act as as Time Capsule for your Mac's Time Machine!</xh:p>
                <xh:p>The instructions below relate to OpenIndiana oi_151, and Apple Mac OSX Snow Leopard, however the procedure is probably much the same for all OpenIndiana versions. The Time Machine configuration does not work yet for Apple Mac OSX Lion, when I figure this out I will post the details.</xh:p>
                <xh:p>First you need to install the pre-requisites for building Netatalk on OpenIndiana. You need gcc and BerkelyDB -</xh:p>
                <xh:p>You can download Berkeley DB from <xh:a href="http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html">here</xh:a>. There are reported issues with version 5 and Netatalk, and so I used the latest 4.8 release. You then need to build and install Berkeley DB -</xh:p>
                <xh:p>Netatalk is a software package that acts as an AFP server. You can download Netatalk from <xh:a href="http://netatalk.sourceforge.net/">here</xh:a>. You then need to build and install Netatalk -</xh:p>
                <xh:p>After the...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Installing Postgres 9.0 onto Amazon EC2 Linux</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/ec2-amazon-linux-and-postgres9.xml"/>
        <id>tag:www.adamretter.org.uk,2011-07-09:/blog/entries/ec2-amazon-linux-and-postgres9.xml</id>
        <updated>2011-07-09T16:02:00.000+02:00</updated>
        <published>2011-07-09T16:02:00.000+02:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Amazon"/>
        <category term="AWS"/>
        <category term="EC2"/>
        <category term="Linux"/>
        <category term="Postgres"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
                    <xh:a href="http://aws.amazon.com/ec2/" title="Amazon EC2 website">Amazon EC2</xh:a> Linux is based on a customised version of <xh:a href="http://www.redhat.com/rhel/" title="Redhat Enterprise Linux website">Redhat Enterprise Linux</xh:a>, but sadly they do not seem to have <xh:a href="http://www.postgresql.org/" title="Postgresql website">Postgres</xh:a> 9.0 available from their Yum repositories. However with a bit of fiddling around I was able to get it to install, so I have reproduced the details here for everyone else.</xh:p>
                <xh:p>1) Download and install the appropriate YUM repository configuration from here - <xh:a href="http://yum.pgrpms.org/reporpms/repoview/pgdg-redhat.html" title="Postgres RPM's for Yum repo">http://yum.pgrpms.org/reporpms/repoview/pgdg-redhat.html</xh:a>
                </xh:p>
                <xh:p>2) You need to manually edit the Yum repo file that has just been installed for Postgres 9, as otherwise an unknown release version (as far as the Postgres repo is concerned) will be used, and you wont be able to download and install the packages.<xh:br/>
Edit the file /etc/yum.repos.d/pgdg-90-redhat.repo and replace the string “$releasever” with “6.0”</xh:p>
                <xh:p>3) You can now install Postgres 9.0 using Yum.</xh:p>
                <xh:p>4) You can now start up the database</xh:p>
                <xh:p>5) Check that you can login to the server</xh:p>
                <xh:p>Done :-)</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>LDAP query for Active Directory User's Primary Group</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/active-directory-ldap-users-primary-group.xml"/>
        <id>tag:www.adamretter.org.uk,2011-07-01:/blog/entries/active-directory-ldap-users-primary-group.xml</id>
        <updated>2011-07-01T22:57:00.000+02:00</updated>
        <published>2011-07-01T22:57:00.000+02:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Active Directory"/>
        <category term="LDAP"/>
        <category term="Java"/>
        <category term="Primary Group"/>
        <category term="SID"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>When querying AD (Active Directory) with LDAP (Light-weight Directory Access Protocol), it is possible to easily retrieve a lot of attribute information about a user. However, it is not obvious or straight-forward to understand how to find out the Primary Group that a user belongs to. Whilst you can get a list of groups from the 'memberOf' attribute on the 'user' object class, or even find groups by their members through the 'member' attribute of the 'group' object class, these lists do not include information about the User's Primary Group.</xh:p>
                <xh:p>The 'user' Class, does provide a 'primaryGroupID' attribute, however...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Configuring Hibernate with all Annotated classes in a Package</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/hibernate-configure-all-package-classes.xml"/>
        <id>tag:www.adamretter.org.uk,2011-06-24:/blog/entries/hibernate-configure-all-package-classes.xml</id>
        <updated>2011-06-24T23:26:00.000+02:00</updated>
        <published>2011-06-24T23:26:00.000+02:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Hibernate"/>
        <category term="ORM"/>
        <category term="wildcard"/>
        <category term="mapping"/>
        <category term="package"/>
        <category term="Spring"/>
        <category term="Maven"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>Using the <xh:a title="Maven Hibernate 3 Plugin" href="http://mojo.codehaus.org/maven-hibernate3/hibernate3-maven-plugin/">Maven Hibernate plugin</xh:a>, I am automatically generating all <xh:a title="Hibernate" href="www.hibernate.org">Hibernate</xh:a> ORM model classes from my existing database schema. The ORM model classes that are generated have Hibernate and JPA (Java Persistence API) Java Annotations in them.</xh:p>
                <xh:p>Sadly, Hibernate does not Scan for annotated classes at startup and so you have to configure Hibernate manually, either through an XML configuration file or programatically, so that it knows about your annotated classes. You have to tell it about each and every class, not only is this quite tedious, its also a pain to maintain as each time you add/remove an entity from your database, you have to remember to add/remove the ORM class to/from the Hibernate config.</xh:p>
                <xh:p>Considering that our classes are already annotated, having to configure them manually seems unnecessary to me. It...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Moving to Frankfurt</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/moving-to-frankfurt.xml"/>
        <id>tag:www.adamretter.org.uk,2011-01-16:/blog/entries/moving-to-frankfurt.xml</id>
        <updated>2011-01-16T16:55:00.000+01:00</updated>
        <published>2011-01-16T16:46:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Frankfurt"/>
        <category term="Bruxelles"/>
        <category term="CityResidence"/>
        <category term="CityBank"/>
        <category term="Bergerstraße"/>
        <category term="travel"/>
        <category term="moving"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>Recently myself and some other core developers of <xh:a href="http://www.exist-db.org" title="eXist-db Open Source Native XML Database">eXist-db</xh:a>, an Open Source project which I have been involved in for over five years now, decided to start a commercial venture offering Support and Consultancy around the Open Source project: the new venture is called <xh:a href="http://www.existsolutions.com" title="eXist Solutions">eXist Solutions</xh:a>.</xh:p>
                <xh:p>Whilst it is still early days for our company, things have been going well. We are very much International in our approach and philosophy; in fact, at present no two shareholders of the company are even from the same country! I am one of two Directors of the company, and my counterpart Wolfgang Meier is based in Rüsselsheim, Germany.</xh:p>
                <xh:p>Along with my partner Liz, we recently decided to move to Frankfurt for about six months (if all goes well). The reasons for this are two-fold: 1) to support the rapid...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Open Indiana Web Hosting</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/open-indiana-web-hosting.xml"/>
        <id>tag:www.adamretter.org.uk,2010-11-22:/blog/entries/open-indiana-web-hosting.xml</id>
        <updated>2010-11-22T22:16:39.000+01:00</updated>
        <published>2010-11-22T16:39:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Open Indiana"/>
        <category term="Open Solaris"/>
        <category term="Solaris"/>
        <category term="entic.net"/>
        <category term="web"/>
        <category term="hosting"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>I have been hosting my own websites for a couple of years now with a company called <xh:a href="http://www.entic.net">Entic.net</xh:a>. Entic.net offer Solaris hosting, by providing full VPS's (Virtual Private Server's) via <xh:a href="http://www.oracle.com/technetwork/systems/containers/index.html">Solaris Zones</xh:a> technology, they are a great little company with excellent personal support. I am so happy with their service and assistance over the last couple of years, that I really feel I have to sing their praises in public!</xh:p>
                <xh:p>I originally started out with Entic.net in mid 2008, when I was looking for affordable Solaris 10 hosting after doing some benchmarking with an <xh:a href="http://exist-db.org">eXist-db</xh:a> application and discovering that the best performance was achieved when running atop Solaris 10. Entic.net were at that time able to provide me with a Sun Solaris 10 VPS (curd.entic.net) for just $20 USD/month. Whilst it was located in their US San Jose data center and I am in the UK, I decided that the geographical location did not really matter to me, after all we are both connected to the web!</xh:p>
                <xh:p>In June 2009 they assisted me (at no charge!) in migrating to an <xh:a href="http://www.opensolaris.org">Open Solaris</xh:a> VPS (well.entic.net) again still at $20 USD/month, for someone who also spends a lot of time in Linux, the move to Open Solaris made server admin much easier - due to the integration of more GNU tools when compared to its predecessor.</xh:p>
                <xh:p>As I am an incurable technology junkie, and had been wondering about where to go from Open Solaris now that Oracle have taken over, I contacted Entic.net and enquired about their plans. To my joy I found out that they were already...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>NetBeans Platform Application - Memory Settings</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/netbeans-platform-application-memory.xml"/>
        <id>tag:www.adamretter.org.uk,2010-10-02:/blog/entries/netbeans-platform-application-memory.xml</id>
        <updated>2010-10-02T22:00:00.000+01:00</updated>
        <published>2010-10-02T22:00:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="NetBeans"/>
        <category term="TEI"/>
        <category term="java"/>
        <category term="oXygen"/>
        <category term="Xmx"/>
        <category term="memory"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>I have been working on an application for annotating TEI texts on behalf of Oxford University Computing Services. The application embeds the oXygen XML Author v12 into the NetBeans Platform v6.9, whilst severely restricting the functionality of oXygen. The purpose of restricting oXygen is to simplify the UI and options available to the end user; The user may not have a high level of computer literacy.</xh:p>
                <xh:p>I had a problem whereby opening a large TEI document in the application failed to work. The problem turned out to be a lack of available memory for the application.</xh:p>
                <xh:p>NetBeans allows you...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>jQuery XHTML Checkbox problems</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/jquery-xhtml-checkbox.xml"/>
        <id>tag:www.adamretter.org.uk,2010-09-14:/blog/entries/jquery-xhtml-checkbox.xml</id>
        <updated>2010-09-24T05:56:10.002-07:00</updated>
        <published>2010-09-14T13:04:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="jQuery"/>
        <category term="XHTML"/>
        <category term="checkbox"/>
        <category term="checked"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
	Whilst working on some jQuery (1.4.2) script in combination with the <xh:a href="http://demo.exist-db.org/exist/biblio/index.xml">eXist-db bibliographic demo app</xh:a>, I had a situation whereby I was trying to switch XHTML form input checkboxes on and off when the user took certain actions.</xh:p>
                <xh:p>
	I was using code similar to the following -</xh:p>
                <xh:p>
	Which is very similar to what you will find on the web if you look for solutions to check and uncheck checkboxes with jQuery. Unfortunately this for me just would not work, whenever the user checked a check box I was completely unable to check it. Examining it with the debugger in Chrome I could see something like the following after removeAttr(...) is called - </xh:p>
                <xh:p>
	Now what drove me nuts is the last line from the debugger, was...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>The Not So Mobile Phone</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/samsung-galaxy-battery-fail.xml"/>
        <id>tag:www.adamretter.org.uk,2009-09-14:/blog/entries/samsung-galaxy-battery-fail.xml</id>
        <updated>2009-09-14T18:56:00.000+01:00</updated>
        <published>2009-09-14T18:56:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Nokia"/>
        <category term="N95"/>
        <category term="N97"/>
        <category term="HTC"/>
        <category term="Android"/>
        <category term="Samsung"/>
        <category term="i7500"/>
        <category term="Galaxy"/>
        <category term="Battery"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
                    <xh:a href="http://www.nokia.co.uk/find-products/all-phones/nokia-n95" title="Nokia N95">
                        <xh:img class="left" src="blog/images/nokia-n95_small.jpg" alt="Nokia N95 small picture" title="Nokia N95 small picture"/>
                    </xh:a>Since the beginning of this year I have been looking out for a new phone to replace my ageing <xh:a href="http://www.nokia.co.uk/find-products/all-phones/nokia-n95" title="Nokia N95">Nokia N95</xh:a>. My main requirement was that it must be suitable for Web and email use - a large colour screen, integration with Web 2.0 services (such as <xh:a href="http://www.twitter.com" title="Twitter">Twitter</xh:a> and <xh:a href="http://www.facebook.com" title="Facebook">Facebook</xh:a>), 3G and WiFi radios and available on an unlimited data tariff. Secondly the phone must have a decent camera, the 5 Mega-pixel camera and flash built into the N95 is excellent.</xh:p>
                <xh:p>Initially I was waiting for the release of the <xh:a href="http://europe.nokia.com/find-products/devices/nokia-n97" title="Nokia N97">Nokia N97</xh:a> in June, but due to some unfavourable <xh:a href="http://www.reghardware.co.uk/2009/06/24/review_phone_nokia_n97/" title="Register Hardware N97 Review">early review</xh:a>s, its bulky design and the fact that it looked that if I was to drop it, I might end up with two phones, I decided to search for something else.</xh:p>
                <xh:p>
                    <xh:a>
                        <xh:img class="right" src="blog/images/htc-hero_small.jpg" alt="HTC Hero small picture" title="HTC Hero small picture"/>
                    </xh:a>After hearing much news of Google's <xh:a href="http://www.android.com/" title="Google Android">Android</xh:a> over the previous months I decided to look into which phones might be available with Android. As a Software Developer and Open Source advocate, Android really appeals to me due to its non-proprietary software and application store - as opposed to Apple's offerings! It turned out that there were not a great deal of Android phones available at that time. I did find some vague rumours and information on the upcoming <xh:a href="http://www.htc.com/www/product/hero/overview.html" title="HTC Hero">HTC Hero</xh:a> and decided to wait a little longer for its release.</xh:p>
                <xh:p>At the beginning of August I was able to play with a real HTC Hero in my local Orange shop. Whilst I was very impressed, I was also very disappointed that the built in Camera lacked a flash. I often take photos when we are out with friends in the evenings and this would not be possible without a flash. So I...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Data 1, Disk 0</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/nas-disk-failure.xml"/>
        <id>tag:www.adamretter.org.uk,2009-07-12:/blog/entries/nas-disk-failure.xml</id>
        <updated>2009-07-12T17:50:00.000+01:00</updated>
        <published>2009-07-12T17:50:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="ZFS"/>
        <category term="ZPOOL"/>
        <category term="fail"/>
        <category term="NAS"/>
        <category term="disk"/>
        <category term="OpenSolaris"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>
                    <xh:a href="blog/images/nas-disk-failure.jpg" title="click for full-size image">
                        <xh:img class="left" src="blog/images/nas-disk-failure_small.jpg" alt="NAS disk failure output" title="NAS disk failure output"/>
                    </xh:a>After having finally <xh:a href="http://www.adamretter.org.uk/blog/entries/diy-nas-build.xml" title="Building my DIY NAS (DIY NAS part 3 of 3)">built my NAS</xh:a> and had it happily working away in the background for a couple of weeks, it would seem that failure has struck; one of the disks forming the ZFS RAIDZ2 storage pool has failed! Whilst I am sure this seems a little ironic or sounds like a commissioned advert for ZFS by <xh:a href="http://www.sun.com" title="Sun Microsystems">Sun</xh:a>, I can only try to reassure you that this is not the case.</xh:p>
                <xh:p>Recently I experienced an unexpected crash with the NAS (no network response whatsoever), I am still unsure of the cause but have not had the time to investigate further. However, after powering the NAS off (ouch!) and back on again, I did take a quick look to make sure my data was intact by checking the zpool status. Unfortunately the bad news was that the pool status was reported as "degraded" with details of a failed disk, the good news however (and the whole point behind this setup) was that <xh:span style="font-weight: bold">my data was fine</xh:span> :-)</xh:p>
                <xh:p>I am fairly new...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Choosing Software and Hardware for my DIY NAS</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/diy-nas-software_and_hardware.xml"/>
        <id>tag:www.adamretter.org.uk,2009-06-02:/blog/entries/diy-nas-software_and_hardware.xml</id>
        <updated>2009-07-07T17:59:00.000+01:00</updated>
        <published>2009-06-02T23:00:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="NAS"/>
        <category term="RAIDZ"/>
        <category term="OpenSolaris"/>
        <category term="Chenbro"/>
        <category term="MSI"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>In deciding to build my own NAS, after having identified my requirements in <xh:a href="http://www.adamretter.org.uk/blog/entries/diy-nas-requirements.xml" title="In need of Open Storage (DIY NAS part 1 of 3)">Part 1</xh:a>, I set about searching for the perfect hardware and software combination...</xh:p>
                <xh:p>There are plenty of open source operating systems available that offer multiple options for reliable storage, including both hardware and software supported RAID. To avoid getting into the situation of outdated/unsupported hardware again, I have decided not to use any sort of hardware assisted RAID, instead I will use the software RAID support provided by the operating system itself.</xh:p>
                <xh:p>Many of these operating systems support a vast array of system hardware, however I did not want to just reuse a standard PC/Server because of its...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>Building my DIY NAS</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/diy-nas-build.xml"/>
        <id>tag:www.adamretter.org.uk,2009-07-05:/blog/entries/diy-nas-build.xml</id>
        <updated>2009-07-05T20:10:00.000+01:00</updated>
        <published>2009-07-05T20:10:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Chenbro"/>
        <category term="OpenSolaris"/>
        <category term="NAS"/>
        <category term="DIY"/>
        <category term="ZFS"/>
        <category term="RAIDZ2"/>
        <category term="CIFS"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>After previously deciding to build my own NAS, having defined my requirements in <xh:a href="http://www.adamretter.org.uk/blog/entries/diy-nas-requirements.xml" title="In need of Open Storage (DIY NAS part 1 of 3)">Part 1</xh:a> and identified suitable hardware and software in <xh:a href="http://www.adamretter.org.uk/blog/entries/diy-nas-software_and_hardware.xml" title="Choosing Software and Hardware for my DIY NAS (DIY NAS part 2 of 3)">Part 2</xh:a>, I will now discuss the build first in terms of the physical <xh:a href="#hardware">hardware</xh:a> build and then the <xh:a href="#software">software</xh:a> installation and configuration.</xh:p>
                <xh:p>I will not detail the exact build process for the Chenbro chassis as that information is available in the <xh:a href="http://www.chenbro.eu/download.php?t=U0wyRnpjMlYwY3k4eU1EQTRMekF5THpBeEwzQnliMlIxWTNSa2IzZHViRzloWkRNd016WTNNemt6T0RNdWNHUm1QVDA5UlZNek5EQWdUV0Z1ZFdGc1gwRXlDhttp://www.chenbro.eu/download.php?t=U0wyRnpjMlYwY3k4eU1EQTRMekF5THpBeEwzQnliMlIxWTNSa2IzZHViRzloWkRNd016WTNNemt6T0RNdWNHUm1QVDA5UlZNek5EQWdUV0Z1ZFdGc1gwRXlD" title="Chenbro ES34069 manual (PDF)">manual</xh:a>, instead I will try and capture my own experience, which will hopefully complement the available information.</xh:p>
                <xh:p>Once all the parts had arrived, the first think to do was un-box everything before starting to put the system together. My immediate impression of the Chenbro ES34069 NAS chassis was that it was robustly built and manufactured to a high standard.<xh:br/>
                    <xh:img class="left" src="blog/images/boxes1_small.jpg" alt="Box with DVDRW, Card Reader and Cable. Chenbro NAS chassis removed" title="Box with DVDRW, Card Reader and Cable. Chenbro NAS chassis removed"/>
                    <xh:img class="left" src="blog/images/boxes2_small.jpg" title="Unpacked Chenbro chassis and boxed disk drives" alt="Unpacked Chenbro chassis and boxed disk drives"/>
                    <xh:img class="left" src="blog/images/boxes3_small.jpg" title="1.0TB hard disks, packed two in each box" alt="1.0TB hard disks, packed two in each box"/>
                </xh:p>
                <xh:p>The first step in building the NAS with the Chenbro chassis, is to open up the chassis and then install the Motherboard. To...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>In need of Open Storage</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/diy-nas-requirements.xml"/>
        <id>tag:www.adamretter.org.uk,2009-05-31:/blog/entries/diy-nas-requirements.xml</id>
        <updated>2009-06-02T23:00:00.000+01:00</updated>
        <published>2009-05-31T22:35:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="NAS"/>
        <category term="RAID"/>
        <category term="Storage"/>
        <category term="Open Source"/>
        <category term="Highpoint Technologies"/>
        <category term="Energy Efficient"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>A few years ago I came to the conclusion that I needed reliable storage for some of my more important work related files; should I lose such files, work opportunities and/or money could be at risk. I purchased a <xh:a href="http://www.highpoint-tech.com" title="HighPoint Technologies">HighPoint Technologies</xh:a>
                    <xh:a href="http://www.highpoint-tech.com/USA/bios_rr1640.htm" title="HighPoint Technologies RocketRAID 1640">RocketRAID 1640</xh:a> PCI SATA card along with three 250GB Seagate SATA Hard Disks, and added to my home main desktop computer this gave me a reasonable RAID 5 setup.</xh:p>
                <xh:p>At the time I was running <xh:a href="http://www.freebsd.org" title="FreeBSD">FreeBSD</xh:a> 6.x and <xh:a href="http://www.microsoft.com/windowsxp" title="Windows XP">Windows XP</xh:a> and both were well supported by HighPoint. Whilst I have upgraded the desktop computer several times since its original build, the RocketRAID card and disks have always remained a reliable constant. More recently, after some failures with <xh:a href="http://www.microsoft.com/windowsvista" title="Windows Vista">Windows Vista 64</xh:a>, I have opted to use <xh:a href="http://www.ubuntu.com" title="Ubuntu">Ubuntu</xh:a> as my primary operating system at home. Unfortunately when I upgraded to the latest release of Ubuntu (9.04), I found that my RocketRAID card no longer functioned. I contacted HighPoint but they reported that they are no longer supporting the RocketRaid 1640 with newer Linux Kernels.</xh:p>
                <xh:p>So without installing an older operating system supported by the RocketRAID drivers I can no longer access my files! Whilst I admit I cannot expect HighPoint to support old hardware forever, this eventuality was unexpected and I was a little shocked! I needed to resolve this problem and fast, so that I...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>A blast from the past</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/my-first-serious-code.xml"/>
        <id>tag:www.adamretter.org.uk,2009-04-22:/blog/entries/my-first-serious-code.xml</id>
        <updated>2009-04-22T12:30:00.000+01:00</updated>
        <published>2009-04-22T12:30:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="Code"/>
        <category term="QBasic"/>
        <category term="Hardware"/>
        <category term="8255A"/>
        <category term="Software"/>
        <category term="PC Interface"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>Recently I had been unpacking some boxes of older and more obscure belongings that I never felt the need to unpack, I have moved house twice since 2004 and these boxes have only just been unsealed! Whilst looking through the contents, I found some old 3.5” floppy disks and low density ones at that – wow! One of those disks turned out to contain the code for something called “SM~ART”, which made me feel very nostalgic; although for the life of me I cant remember what the acronym stands for!</xh:p>
                <xh:p>SM~ART was quite possibly the first serious project that...</xh:p>
            </xh:div>
        </summary>
    </entry>
    <entry>
        <title>XML Prague 2009</title>
        <link rel="alternate" type="text/html" hreflang="en" href="blog/entries/xml-prague-2009.xml"/>
        <id>tag:www.adamretter.org.uk,2009-03-30:/blog/entries/xml-prague-2009.xml</id>
        <updated>2009-04-01T20:16:00.000+01:00</updated>
        <published>2009-03-30T22:51:00.000+01:00</published>
        <author>
            <name>Adam Retter</name>
        </author>
        <category term="XML Prague"/>
        <category term="EXQuery"/>
        <category term="XQuery"/>
        <category term="XML Schema"/>
        <category term="XSLT"/>
        <category term="XSpec"/>
        <category term="FunctX"/>
        <category term="XProc"/>
        <summary type="xhtml">
            <xh:div>
                <xh:p>I attended the <xh:a href="http://www.xmlprague.cz" title="XML Prague">XML Prague</xh:a> conference again this year; it was great to go back again after it took a break last year. Personally, I think this was probably the best one yet, with excellent content all round.</xh:p>
                <xh:p>This is the third time I have attended, but it was the first time that I have had any input into the conference outside of my involvement in <xh:a href="http://www.exist-db.org" title="eXist Native XML Database">eXist</xh:a>.</xh:p>
                <xh:p>I presented a poster on <xh:a href="http://www.exquery.org" title="EXQuery">EXQuery</xh:a> at the conference, a project I have had in mind for some time for creating standards for XQuery Application Development.  I registered for this just one month before the conference! This meant an immense rush to get the <xh:a href="http://www.exquery.org" title="EXQuery">EXQuery website</xh:a> content up to scratch as well as designing my <xh:a href="http://www.exquery.org/resources/xmlprague2009/exquery-poster.pdf" title="EXQuery XML Prague 2009 Poster">poster</xh:a>, <xh:a href="http://www.exquery.org/resources/xmlprague2009/exquery-poster-introduction-slide.pdf" title="EXQuery XML Prague 2009 Slide">slide</xh:a> and <xh:a href="http://www.exquery.org/resources.xml" title="EXQuery XML Prague 2009 Handout">handout</xh:a>s. However my efforts came to fruition, as whilst the poster itself received little attention, my known attendance regarding <xh:a href="http://www.exquery.org" title="EXQuery">EXQuery</xh:a> facilitated many useful conversations with great members of the XML community; I was even able to recruit Priscilla and Florent to participate in the <xh:a href="http://www.exquery.org/about.xml#team" title="EXQuery core team">EXQuery core team</xh:a>! All of the feedback I received from everyone I spoke to was overwhelmingly positive and encouraging :-)</xh:p>
                <xh:p>Other highlights from the conference for me included -</xh:p>
                <xh:p>At last we can now do all the things with XML Schema that we need to without having to resort to a two step validation approach with XML Schema as the first step and some other constraint processing mechanism as the second step; personally I have been using XQuery here, but...</xh:p>
            </xh:div>
        </summary>
    </entry>
</feed>