<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
<title>kontrawize</title>
<link>http://kontrawize.blogs.com/kontrawize/</link>
<description>Challenging accepted wisdom.</description>
<language>en-AU</language>
<lastBuildDate>Sun, 08 Aug 2010 17:05:16 +0100</lastBuildDate>
<generator>http://www.typepad.com/</generator>

<docs>http://www.rssboard.org/rss-specification</docs>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/kontrawize-rss-2-0" /><feedburner:info uri="kontrawize-rss-2-0" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
<title>Getting your XML into MarkLogic Server (with a focus in FpML), part 2</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/64LgW7e0518/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml-part-2.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/08/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml-part-2.html</guid>
<description>Earlier posts in the series Getting started developing with MarkLogic Server (semi-structured database and app server) Getting your XML into MarkLogic Server (with a focus in FpML) (and check out the comments on these posts, there are some great ones)...</description>
<content:encoded>    &lt;div&gt;
      &lt;div class="related-posts"
        style="border: solid gray 2px; padding-left:2em; padding-right:2em; margin-left:2em; margin-right:2em;"&gt;
        &lt;h4&gt;Earlier posts in the series&lt;/h4&gt;
        &lt;ol&gt;
          &lt;li&gt;&lt;a
              href="http://kontrawize.blogs.com/kontrawize/2010/07/getting-started-developing-with-marklogic-server-semistructured-database-and-app-server.html"
              &gt;Getting started developing with MarkLogic Server (semi-structured database and app
              server)&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a
              href="http://kontrawize.blogs.com/kontrawize/2010/07/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml.html"
              &gt;Getting your XML into MarkLogic Server (with a focus in FpML)&lt;/a&gt;&lt;/li&gt;
        &lt;/ol&gt;
        &lt;p&gt;(and check out the comments on these posts, there are some great ones)&lt;/p&gt;
      &lt;/div&gt;
      &lt;p&gt;In the &lt;a
          href="http://kontrawize.blogs.com/kontrawize/2010/07/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml.html"
          &gt;previous post on developing with MarkLogic Server&lt;/a&gt;, I had got as far as using the
        simple 'Load' tab in the admin console web page to load FpML 4.7 XML Schemas into MarkLogic.
        In this post, I want to discuss how you view the contents of the database. As I mentioned
        earlier, databases can be all too easy a place to lose data, and that is because the tools
        focus more in specific queries than they do on general browsing. While it may not be
        possible to just "browse" a database containing a huge number of documents (i.e. a huge
        amount of data), a development setup often has much less content, and being able to browse
        the documents (in the manner of browsing files in a file system) is a very useful thing to
        be able to do.&lt;/p&gt;
      &lt;p&gt;A good place to start is by downloading the 'CQ' application from the MarkLogic developer
        site. This allows you to run XQueries on a MarkLogic database, but it also allows you to
        view what files are in your database. Note that while 'CQ' is a tool I would always
        recommend installing for development purposes, it isn't a tool you should leave installed on
        a live production system.&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;Download 'CQ' from '&lt;a href="http://developer.marklogic.com/code/cq"
            &gt;http://developer.marklogic.com/code/cq&lt;/a&gt;'. Assuming you are running MarkLogic Server
          4.1, download '&lt;code&gt;mark-logic-cq-4.1-1.zip&lt;/code&gt;'.&lt;/li&gt;
        &lt;li&gt;We will install 'CQ' into the existing '&lt;code&gt;Docs&lt;/code&gt;' database that is part of the
          default MarkLogic Server setup. This database uses a filesystem directory. Go to your
          MarkLogic Server installation directory, and find the '&lt;code&gt;Docs&lt;/code&gt;'
          subdirectory.&lt;/li&gt;
        &lt;li&gt;Extract the 'CQ' ZIP file into the '&lt;code&gt;Docs&lt;/code&gt;' directory, preserving the
          directory structure. This should create a '&lt;code&gt;cq&lt;/code&gt;' directory inside the
            '&lt;code&gt;Docs&lt;/code&gt;' directory.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;It's that easy, 'CQ' is now installed. Let's test it. First, note what the URL is for your
        admin console. It will be port 8001; my admin console URLs start with
          '&lt;code&gt;http://localhost:8001/&lt;/code&gt;'. You probably won't have '&lt;code&gt;localhost&lt;/code&gt;',
        as by default MarkLogic uses the machine name. Make a note of your admin console domain
        name, and then use that domain to replace 'localhost' in this URL: '&lt;a
          href="http://localhost:8000/cq/"&gt;http://localhost:8000/cq/&lt;/a&gt;'. You should now see the
        'CQ' page:&lt;/p&gt;
      &lt;p&gt;&lt;img src="http://kontrawize.blogs.com/marklogic/Screenshot-CQ-width-500.png"
          alt="CQ user interface" height="207" width="500" style="border-bottom: black solid 1px;"
        /&gt;&lt;/p&gt;
      &lt;p&gt;Just above the 'Query results' section is a 'content-source' drop-down list. Select
        'FpML-Schemas' as the content source, and the click the 'explore' link near the top of the
        page.&lt;/p&gt;
      &lt;p&gt;&lt;img src="http://kontrawize.blogs.com/marklogic/Screenshot-CQ-explore-width-500.png"
          alt="CQ 'explore' results" height="308" width="500"/&gt;&lt;/p&gt;
      &lt;p&gt;You should see results for 37 files appear in the lower section of the page. The exact URIs
        will depend on where the FpML XML Schemas were on your file system when you loaded them.&lt;/p&gt;
      &lt;p&gt;So, now you have a basic way to examine what documents are in your database. You can also
        browse the documents by running an XQuery in 'CQ'.  In the list of 'Queries' at the right of
        the window, click on number 1 and replace the query with&lt;/p&gt;
      &lt;div style="border: gray solid 1px; padding-left: 2em;" class="listing"
        &gt;&lt;pre&gt;xquery version "1.0";
(: list all docs in database :)
for $i in collection() return document-uri($i)&lt;/pre&gt;&lt;/div&gt;
      &lt;p&gt;Make sure that the content source is 'FpML-Schemas', then press the 'TEXT' button.  The
        URIs for all of the documents in the 'FpML-Schemas' database are listed.&lt;/p&gt;
      &lt;p&gt;&lt;img
          src="http://kontrawize.blogs.com/marklogic/Screenshot-XQuery-URI-Listing-width-500.png"
          alt="CQ query results - URIs of documents in database" height="356" usemap="500"/&gt;&lt;/p&gt;
      &lt;p&gt;Another way to browse the documents in your database is to create a WebDAV server for your
        database in MarkLogic Server.  That will be the subject of the next post in this series.&lt;/p&gt;
    &lt;/div&gt;
</content:encoded>


<category>MarkLogic</category>
<category>Semi-structured Databases</category>
<category>Software</category>
<category>Web/Tech</category>
<category>XML</category>
<category>XML Databases</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Sun, 08 Aug 2010 17:05:16 +0100</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/08/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml-part-2.html</feedburner:origLink></item>
<item>
<title>Getting your XML into MarkLogic Server (with a focus in FpML)</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/bUiQ2sFxrvg/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/07/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml.html</guid>
<description>In my previous blog post, I wrote about getting set up for doing development with MarkLogic Server, which is a database and app server for semi-structured data like XML. This time, I want to focus on getting content into MarkLogic...</description>
<content:encoded>    &lt;div&gt;&lt;p&gt;In my previous blog post, I wrote about &lt;a
    href="http://kontrawize.blogs.com/kontrawize/2010/07/getting-started-developing-with-marklogic-server-semistructured-database-and-app-server.html"&gt;getting
    set up for doing development with MarkLogic Server&lt;/a&gt;, which is a
    database and app server for semi-structured data like XML. This time, I
    want to focus on getting content into MarkLogic Server. When you start
    developing with MarkLogic Server, or any similar database, you are likely
    to want to pre-load some information into it. In my case, I wanted to load
    FpML Schemas, validation rules and examples (FpML is the Financial
    Products Markup Language, &lt;a
    href="http://www.fpml.org/"&gt;http://www.fpml.org/&lt;/a&gt;). It's taken me
    longer than I expected to load these files the way that I want them in the
    database, as I get used to what approaches do and don't work with
    MarkLogic Server, so I want to discuss what I found by experience (and
    would welcome comments on anything I've done that could have been done
    more easily another way).&lt;/p&gt;&lt;p&gt;One thing about semi-structured databases
    is that when you load a block of information (e.g. a message or document),
    the content tends to stay together in the database (with some exceptions
    for huge documents). So, if you load an XML document into an XML database,
    you can extract the same document at a later time. This differs from what
    happens when you put semi-structured information into a relational
    database. In the case of FpML, if you use a tool to create an equivalent
    relational schema for you, you end up with a &lt;strong&gt;couple of thousand
    database tables&lt;/strong&gt;, which is a bit of a nightmare for even
    experienced database developers to work with. Additionally, while the
    tools are able to "burst" your FpML message and populate the tables with
    the information, I'm not aware of any simple way to request that the
    database return to you all of the information from a particular message.
    That's sometimes an important thing to do — an FpML message typically
    represents the details of a trade of an OTC derivative, and there are real
    business reasons for wanting to retrieve all of those trade details
    together. The SQL required to do it is a significant and expensive piece
    of work to write by hand. Indeed, many teams don't bother, they store the
    original message separately to the database, because they know that the
    relational database is going to make hard work of it. While that kind of
    archiving is OK for ad-hoc auditing purposes, it doesn't help if one of
    your use cases is to be able to present screens showing the details for
    particular trades. Where there are good reasons to keep particular sets of
    related data items together and not have them shredded into separate
    tables, a semi-structured database can save a lot of development
    effort.&lt;/p&gt;&lt;p&gt;Here is what you get with an FpML release (they are free to
    download, but you have to register). I'm taking FpML 4.7 (2nd
    recommendation) as my example):&lt;/p&gt;&lt;p&gt;&lt;img
    alt="File browser showing unzipped FpML 4.7 files." height="481"
    src="http://kontrawize.blogs.com/fpml/Screenshot-fpml-4-7-7-rec-2-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;When unzipped, there are top-level
    '&lt;code&gt;documents&lt;/code&gt;', '&lt;code&gt;html&lt;/code&gt;', '&lt;code&gt;pdf&lt;/code&gt;' and
    '&lt;code&gt;xml&lt;/code&gt;' directories. We'll mainly be interested with the
    '&lt;code&gt;xml&lt;/code&gt;' directory. It contains the FpML XML Schemas, and its
    sub-directories contain FpML examples, including some invalid examples for
    negative testing. However, the other interesting directory for use with
    MarkLogic is '&lt;code&gt;html/validation-rules&lt;/code&gt;'. Here there are XQueries
    (&lt;code&gt;*.xq&lt;/code&gt;) which implement extra validation rules for FpML, extra
    rules that XML Schemas can't check.&lt;/p&gt;&lt;p&gt;Before you import a large number
    of files into a database like MarkLogic, it's a good idea to think about
    how you want to organise things. One of my traditional criticisms of
    databases, and the way people use them, is that it can be too easy to
    "lose" documents or data, lose it in a sea of other information. With
    MarkLogic, documents are stored in 'Forests', and one or more forests can
    be part of a 'Database'. An app server uses particular databases. So app
    servers use databases, databases use forests, forests contain documents.
    However, there are some other things to think about too.&lt;/p&gt;&lt;p&gt;Every
    document in the database has a URI to identify it. These are sometimes
    proper URLs that start with '&lt;code&gt;http://...&lt;/code&gt;', but they can also
    be just paths like '&lt;code&gt;/AAA/BBB/CCC&lt;/code&gt;' (so they aren't constrained
    to be proper URIs, in spite of what they are called in the documentation).
    Documents are organised in a hierarchy of directories, like a file system,
    but each document can also be part of any number of 'collections'.
    Collections allow you to group any set of files together, regardless of
    where they are located in the database. So, when importing files, it's
    worth spending a bit of time thinking about how you want the document URIs
    to be structured (i.e. how you want your database's directories to be
    structured), and also what collections you should create to group related
    files to each other (just to make it easy to find those files later, as a
    related group).&lt;/p&gt;&lt;p&gt;Additionally, there are relationships between
    databases. For each database, you can specify which database contains the
    XML Schemas for validating the XML (it can be the same database, by the
    way). Additionally, for each app server you can specify a database for
    'modules' (XQueries), although you can also choose to store your XQueries
    in the file system where MarkLogic Server is installed. What this means
    is&lt;/p&gt;&lt;ul&gt;
        &lt;li&gt;you need to decide whether your XML will be store in one or more
        forests, and in one or more databases;&lt;/li&gt;

        &lt;li&gt;you need to decide whether your XML Schemas will be in the same
        database as your XML files, or a different one;&lt;/li&gt;

        &lt;li&gt;you need to decide whether your modules (XQueries) will be stored
        in a database, or in the file system.&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;Let look at doing the following:&lt;/p&gt;&lt;ul&gt;
        &lt;li&gt;creating a new forest and database for the FpML 4.7 XML
        Schemas;&lt;/li&gt;

        &lt;li&gt;importing the FpML 4.7 Schemas into that database.&lt;/li&gt;
      &lt;/ul&gt;&lt;p&gt;(In later posts, we will look at importing the other files, and
    doing some validation.)&lt;/p&gt;&lt;p&gt;In the MarkLogic admin console (usually port
    8001), go to the '&lt;code&gt;Forests&lt;/code&gt;' section:&lt;/p&gt;&lt;p&gt;&lt;img
    alt="MarkLogic Server Admin Console - Forests" height="393"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Forests-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;Click on the '&lt;code&gt;Create&lt;/code&gt;' tab, and create a
    new forest called '&lt;code&gt;FpML-Schemas&lt;/code&gt;'. You only need to fill in
    the name (for the purposes of this exercise), then you can press
    '&lt;code&gt;ok&lt;/code&gt;'.&lt;/p&gt;&lt;p&gt;&lt;img alt="MarkLogic Server Admin - Create Forest"
    height="365"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Forests-Create-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;You will now have an empty forest for the FpML XML
    Schemas. Now go to the '&lt;code&gt;Databases&lt;/code&gt;' section of the
    console:&lt;/p&gt;&lt;p&gt;&lt;img alt="MarkLogic Admin Console - Databases" height="325"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Databases-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;Click on the 'Create' tab, and create a new database
    called 'FpML-Schemas' (it's OK to have the same name as the
    forest):&lt;/p&gt;&lt;p&gt;&lt;img alt="MarkLogic Admin Console - Create Database"
    height="272"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Create-Database-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;After you press '&lt;code&gt;ok&lt;/code&gt;', you will find that
    you are prompted to select one or more forests for the
    database:&lt;/p&gt;&lt;p&gt;&lt;img
    alt="MarkLogic Server Admin - After Creating Database" height="308"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-After-Create-Database-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;Click on the '&lt;code&gt;Database-&amp;gt;Forests&lt;/code&gt;' link
    and select '&lt;code&gt;FpML-Schemas&lt;/code&gt;' as the forest for the database
    (remember, we gave them both the same name):&lt;/p&gt;&lt;p&gt;&lt;img
    alt="MarkLogic Admin Console - Configure Forests for Database"
    height="301"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Configure-Forests-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;You now have a database with a forest, ready for
    loading your FpML XML Schemas. The quickest way to load the FpML XML
    Schemas is to go to the admin page for the '&lt;code&gt;FpML-Schemas&lt;/code&gt;'
    database, and click on the '&lt;code&gt;Load&lt;/code&gt;' tab. Put in the path for
    your FpML 4.7 '&lt;code&gt;xml&lt;/code&gt;' directory, and use '&lt;code&gt;*.xsd&lt;/code&gt;'
    as the filter. This will load all of the XML Schemas in the
    '&lt;code&gt;xml&lt;/code&gt;' directory (but not in any sub-directories).&lt;/p&gt;&lt;p&gt;&lt;img
    alt="MarkLogic Admin Console - Load Schemas into Database" height="194"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Load-Database-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;When you press '&lt;code&gt;ok&lt;/code&gt;', you are shown a
    page with the files that will be loaded, and the database URI that will be
    assigned to each. You should find that the URIs are identical to the file
    paths. Press '&lt;code&gt;ok&lt;/code&gt;' to start loading the Schemas. In a few
    moments, the FpML XML Schemas are loaded. Press '&lt;code&gt;ok&lt;/code&gt;' again.
    The status page for the 'FpML-Schemas' database should now show that you
    have some documents in it:&lt;/p&gt;&lt;p&gt;&lt;img
    alt="MarkLogic Admin Console - Database Status" height="316"
    src="http://kontrawize.blogs.com/marklogic/Screenshot-Database-Status-width-500.png"
    width="500" /&gt;&lt;/p&gt;&lt;p&gt;How do you see which XML Schemas have been loaded?
    How do you control the URIs that are assigned to them when they are loaded
    in the database? How do you put them in collections? These are things we
    will look at in the next installment.&lt;/p&gt;&lt;/div&gt;
</content:encoded>


<category>MarkLogic</category>
<category>Semi-structured Databases</category>
<category>Software</category>
<category>Web/Tech</category>
<category>XML</category>
<category>XML Databases</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Sun, 18 Jul 2010 19:33:25 +0100</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/07/getting-your-xml-into-marklogic-server-with-a-focus-in-fpml.html</feedburner:origLink></item>
<item>
<title>Getting started developing with MarkLogic Server (semi-structured database and app server)</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/G2Lm4V4xpbk/getting-started-developing-with-marklogic-server-semistructured-database-and-app-server.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/07/getting-started-developing-with-marklogic-server-semistructured-database-and-app-server.html</guid>
<description>I spend much of my professional life working with XML. I often design XML structures that are used to represent financial information as it is transmitted between computers, but I also spend quite a bit of time looking at tools...</description>
<content:encoded>&lt;p&gt;I spend much of my professional life working with XML.  I often design XML structures that are used to represent financial information as it is transmitted between computers, but I also spend quite a bit of time looking at tools to support this usage of XML.
&lt;p&gt;To be honest, I'm often a bit horrified by how people set up their software to work with XML. An all too common setup for a system to read incoming XML is:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Compile the XML Schemas into Java or .NET using a Schema binding tool (&lt;em&gt;problem #1 - the XML is your decoupling mechanism, to help isolate your systems and stop them from being too tightly coupled to each other, but when you compile a Schema, you tightly &lt;strong&gt;couple&lt;/strong&gt; your code to the XML that is supposed to be your &lt;strong&gt;decoupling&lt;/strong&gt; mechanism.  If you use Schema compilers and every change to your XML's structure over time causes you headaches, you might need to reconsider your use of a Schema binding tool&lt;/em&gt;);&lt;/li&gt;
&lt;li&gt;Create a staging relational database, and write code to store the information from your Java/.NET objects into that database (&lt;em&gt;problem #2 - it can be a lot of work to create a relational model of a hierarchical document, like an XML message.  It is also a lot of work to write the code to do the storage. Do you really want to spend that time? Also, people often model &lt;strong&gt;all&lt;/strong&gt; of the XML in the staging database, even if it won't all be used. That means the system ends up coupled to &lt;strong&gt;all&lt;/strong&gt; changes in the XML, even those that would otherwise not have impacted the system - not a good plan.&lt;/em&gt;);&lt;/li&gt;
&lt;li&gt;Write some more code to copy the information from the staging database into a separate application database, often with a different structure (so the code that you have to write isn't trivial).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;How would I do it differently?  It is much less effort to&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Store the XML in an XML database (i.e. in a semi-structured database). In particular, use an XML database that can store arbitrary XML, not one that requires you to have a Schema for your XML;&lt;/li&gt;
&lt;li&gt;Query information out of the XML database as your application requires it (typically using XQuery, although your XML database may also support JDBC/ODBC views of the information, to simplify integration with existing apps).&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Notice the difference - no time spent writing staging database schemas, no time spent writing code to populate the staging database.  You simply write the queries that you need to get the information out of the XML database, and you should pull the minimum amount of data possible when doing that so that you minimise the coupling between the application and the XML.&lt;/p&gt;
&lt;p&gt;In fact, it's worth noting that using an XQuery (or XPath) to pull the information from your XML database provides the same level of decoupling that SQL and views provides when working with a relational database; that use of a query to provide decoupling is so common now with relational databases that people think of it as always having been that way, but it wasn't.  There were software tools in the 80s that wrote C++ code that was tightly bound to the database schema, and that code had all the same problems as we have now with code generated from XML Schemas.  The relational database folks learned that you always need a SQL query to providing decoupling from the physical storage structure; the XML world has been a bit slower to realise the same thing, but it's an important lesson - use XQuery/XPath/XSLT to decouple yourself from the physical structure of your XML and you take a lot of pain out of your application development.&lt;/p&gt;
&lt;p&gt;It can be hard to get people to move away from the relational database mindset, in spite of the extra costs of development.  However, various people in the finance world seem to be looking seriously now at semi-structured databases (which includes XML databases), and the one that gets mentioned most often is &lt;a href="http://www.marklogic.com/"&gt;MarkLogic Server&lt;/a&gt;.  I should say that I know quite a few people now who work for MarkLogic (they've been hiring of late, and picking up some really top class people).&lt;/p&gt;
&lt;p&gt;So, I've decided to set up a proper MarkLogic development environment for myself (I've only toyed with it in the past).  You can download a development version from the &lt;a href="http://developer.marklogic.com/"&gt;MarkLogic developer site&lt;/a&gt;, where there is also a lot of developer documentation.  It doesn't run on Macs yet, but it does run under Windows, Linux and Solaris.  I couldn't get it to install under Windows 7 (Vista is what is on the supported list), so I installed it under Ubuntu.  Ubuntu isn't officially supported but my friends at MarkLogic told me how to install it; if you want to know, let me know.  It's pretty easy, and it's working well for me.&lt;/p&gt;
&lt;p&gt;With MarkLogic Server, your installation can run multiple app servers (HTTP, WebDAV, or XDBC [direct code connection]).  Each app server uses certain databases, and each databases uses one or more 'forests' of documents.  The documents are stored compressed on disk, so it doesn't waste space like some XML databases that store them on disk as uncompressed text.  The documents are automatically indexed, but you can also manually adjust how they are indexed (like any database, there is an art to doing that well).&lt;/p&gt;
&lt;p&gt;The default setup has a 'Docs' app server which used a 'Documents' database, and these are what you should use in your initial experiments. The first thing you will want to do is load some documents and try out some queries. This can be a bit daunting, it isn't as obvious as it should be how you do this. I believe MarkLogic are working on improving this, but also it's because MarkLogic Server is a secure, industrial-strength database (used by the U.S. security services among others), and so you have to learn to negotiate the permissions. In general, the quick answer is that for your initial learning with MarkLogic Server, &lt;strong&gt;use your admin login for everything&lt;/strong&gt; (i.e. while you are just experimenting, and don't have anything too valuable stored in the database). I spent too much time trying to set up a non-admin user for development work, but it isn't a good way to get to know MarkLogic, so don't make my mistake.&lt;/p&gt;
&lt;p&gt;The 'Docs' app server uses the 'Documents' database. Get started by reading the admin guide and create a WebDAV server and an XDBC server for the 'Documents' database (it's pretty easy, I won't describe it here). This allows tools to connect to the database. In particular, I have two working now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MarkLogic has an Eclipse plugin that sets it up for XQuery development (available from the &lt;a href="http://developer.marklogic.com/"&gt;MarkLogic developer site&lt;/a&gt;). It runs with the Galileo 3.5 release of Eclipse, not with the latest Helios release (trust me, I tried, it doesn't). This gives you syntax support for XQuery, including a knowledge of MarkLogic-specific XQuery functions (MarkLogic Server extends XQuery in the same way PL/SQL or TransactSQL extend SQL - to turn it from a query language into a full programming language. However you can also run pure standard XQuery 1.0 if you want). You can run your XQueries from within Eclipse just as you would run a piece of code;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oxygenxml.com/"&gt;oXygen's XML editor&lt;/a&gt;, a favourite of mine, also does a great job with MarkLogic Server. It can validate your XQueries using MarkLogic's validator (so it picks up knowledge of MarkLogic-specific functions, etc.), and it can run those queries on MarkLogic Server and return the results, just as easily as Eclipse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Either of these tools is a great way of getting up and running with MarkLogic Server. You can also install 'CQ' (&lt;a href="http://developer.marklogic.com/code/cq"&gt;http://developer.marklogic.com/code/cq&lt;/a&gt;) which is a neat little Web UI for running XQueries. It remembers your queries, which is nice, but it doesn't have the syntax checking and colouring that Eclipse and oXygen provide. CQ is well worth installing, but a tool like Eclipse or oXygen is really necessary to be productive (and that is what this is all about, after all, being productive in development, avoiding the effort and cost of unnecessary development).&lt;/p&gt;
&lt;p&gt;To load files in a database, go to the admin console (port 8001) and look at the details for that database.  There is a 'Load' tab that is the simplest way to get content in.  However, it doesn't do what I want, to load content from a whole directory tree while filtering on file names.  I am working on an XQuery for that, I will post it later when it is working.  Otherwise you can also use WebDAV to drag-and-drop files and directories into MarkLogic Server.  I'm going with the XQuery because it will allow me to set things like permissions as the files are imported, and I think that will prove useful, if a bit more involved.&lt;/p&gt;
&lt;p&gt;I will write more in the future. I have outlined what I'm doing now. Please feel free to post questions (I know I've skimmed over a lot of details). I will try to answer any questions, or I'll ask one of my MarkLogic friends if they have an answer.&lt;/p&gt;</content:encoded>


<category>MarkLogic</category>
<category>Semi-structured Databases</category>
<category>Software</category>
<category>Web/Tech</category>
<category>XML</category>
<category>XML Databases</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Sun, 11 Jul 2010 13:37:54 +0100</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/07/getting-started-developing-with-marklogic-server-semistructured-database-and-app-server.html</feedburner:origLink></item>
<item>
<title>Interrogate, Report, Act - a layered approach to validation &amp; checking</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/zfpWdZX3RL8/interrogate-report-act-a-layered-approach-to-validation-checking.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/06/interrogate-report-act-a-layered-approach-to-validation-checking.html</guid>
<description>Yesterday I attended a standards meeting (ISO TC68/WG4, ISO 20022, message modelling for banking &amp; finance). After the meeting, some of us went to a nearby pub for a drink and a chat. While we were talking, we touched on...</description>
<content:encoded>Yesterday I attended a standards meeting (ISO TC68/WG4, ISO 20022, message modelling for banking &amp;amp; finance).  After the meeting, some of us went to a nearby pub for a drink and a chat.  While we were talking, we touched on the subject of validation, and I mentioned my personal preferred approach - "Interrogate, Report, Act".  It seems to resonate with the others, so I thought it might be worth mentioning here.
&lt;P&gt;One thing I've done a few times for banking clients is to build systems for quality control and release of large sets of XML Schemas.  Just as you check code before a release - compile it, test it, run style checks over it - you also need to do the same kind of checking for XML Schemas.  You test that they are valid Schemas, you regression test them using XML examples, you run style checks over them, and perhaps also generate code or other artefacts from them.  What you do, whether it's for Java/C# or whether it's for XML Schemas, is to check some kind of IT resource using some set of rules.  You can call it validation, but that's just a long word for checking.
&lt;P&gt;If you are checking XML documents using a set of structural/formatting rules defined by an XML Schema, you call it validation.  People are used to validators that check XML and log errors, just as they are used to compilers that check code and log errors.  It's very familiar, it's a common model for how such tools work.  However, I've found it to be a problem when I'm building XML Schema checking frameworks.  Why?
&lt;P&gt;One reason is that, with checks like style checks, today's disallowed style is tomorrow's allowed style, and vice-versa.  As organisations develop their XML Schemas over time, they adjust their style checks.  Type extension or substitution groups might be banned today, they might be allowed tomorrow.  To build a flexible checking framework, you want to be able to change quickly the interpretation or the severity of a particular feature, of a particular style.  This is why I found it best to break things up into the three stages - "Interrogate, Report, Act".&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Interrogate&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Understand the resource(s) you are checking, the structure, the formatting, the style, whatever you need to understand.  Don't make any judgements at this stage - the judgements are the things you need to be able to change, so you don't want to embed them into the interrogations.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Report&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Put the results of your interrogations into a common reporting format.  If you have XML Schema validation results, Schematron validation results, ad-hoc XQuery/XSLT validation results, and Schema compiler validation results (as an example), they won't all be in the same format.  Some might be XML, others will be text.  Get them into a common format for reporting.  That's important so that you can slice and dice your interrogation results, and display them in a consistent way that gives developers, testers and managers the most appropriate summaries.  It's also important so that you can easily add new results without impact on your presentation and drill-down code.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Act&lt;/strong&gt;&lt;dt&gt;
&lt;dd&gt;Once all interrogation results are in a common reporting format, make your judgements and perform any consequent actions.  Throw exceptions, log errors or warnings, or choose to ignore particular results if that is what the system's users have configured (there can be good reasons for ignoring particular test results for particular resources - but for sanity, make sure you capture the reasons for doing so in the configuration information).&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;This is the layering of concerns that has worked well for me.  I've used it for XML and XML Schemas, but it is a general approach that can be applied to any kind of validation or checking process.  By not making too early a judgement of thumbs up or thumbs down, you will have a more flexible checking framework that is more easily configurable and extensible than it would otherwise have been.</content:encoded>


<category>Software</category>
<category>Web/Tech</category>
<category>XML</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Tue, 08 Jun 2010 22:14:35 +0100</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/06/interrogate-report-act-a-layered-approach-to-validation-checking.html</feedburner:origLink></item>
<item>
<title>New version of ISO 20022:2009 UML to XML Schema generator available</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/x8gHj8uLhCU/new-version-of-iso-200222009-uml-to-xml-schema-generator-available.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/06/new-version-of-iso-200222009-uml-to-xml-schema-generator-available.html</guid>
<description>Londata, my company, has made a new version of the Londata UML Message Generator available, version 1.0-preview-3. This is (I believe) still the only available software that implements the new ISO 20022:2009 methodology for generating XML Schemas from UML models...</description>
<content:encoded>&lt;p&gt;Londata, my company, has made a &lt;a href="http://bit.ly/ld-umg-1-0-pre-3"&gt;new version of the Londata UML Message Generator available&lt;/a&gt;, version 1.0-preview-3. &amp;#0160;This is (I believe) still the only available software that implements the new ISO 20022:2009 methodology for generating XML Schemas from UML models (as opposed to the older 2004 version of the standard). &amp;#0160;&lt;a href="http://www.iso20022.org/"&gt;ISO 20022&lt;/a&gt; is the ISO standard for XML messages for banking and finance, as used on the SWIFT network. &amp;#0160;ISO 20022 XML Schemas aren&amp;#39;t hand-edited in an XML Schema editor as happens with some standards. &amp;#0160;Rather, they are all generated from UML models so that there is consistency across the XML Schemas, and so that human errors are minimised. &amp;#0160;The Londata UML Message Generator allows companies to use the same ISO methodology for their in-house XML Schema development and management.&lt;/p&gt;&lt;p&gt;
&lt;a href="http://londata.svnrepository.com/uml-message-generator/trac.cgi/raw-attachment/wiki/Images/test.002.001.01-crop.png" style="display: inline;"&gt;&lt;img alt="image from londata.svnrepository.com" border="0" class="asset asset-image at-xid-6a00d8341c8ac953ef0134836453cf970c " src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0134836453cf970c-800wi" title="image from londata.svnrepository.com" /&gt;&lt;/a&gt; &lt;br /&gt; &lt;/p&gt;































&lt;p&gt;&lt;a href="http://bit.ly/iso-20022-2009-examples"&gt;Updated example UML models are now available&lt;/a&gt; - &lt;a href="http://www.magicdraw.com/"&gt;MagicDraw&lt;/a&gt; and &lt;a href="http://www.sparxsystems.com.au/"&gt;Enterprise Architect&lt;/a&gt; example models, and Londata&amp;#39;s conversion of the official MagicDraw UML profile into Enteprise Architect format. &amp;#0160;Enterprise Architect isn&amp;#39;t supported yet by the Londata UML Message Generator. &amp;#0160;The Enterprise Architect examples were done to prove the feasibility of supporting Enterprise Architect for ISO 20022 modelling, MagicDraw having been used during the development of the 2009 version of the standard.&lt;/p&gt;



&lt;p&gt;If you have any questions or comments, they are very welcome, please send them to &lt;a href="mailto:devteam@londata.com?Subject=Londata%20UML%20Message%20Generator"&gt;devteam@londata.com&lt;/a&gt; &lt;/p&gt;</content:encoded>


<category>Standards</category>
<category>UML</category>
<category>Web/Tech</category>
<category>XML</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Sun, 06 Jun 2010 17:29:50 +0100</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/06/new-version-of-iso-200222009-uml-to-xml-schema-generator-available.html</feedburner:origLink></item>
<item>
<title>Want to meet up in NY, 19-25 June?  I have something to show you.</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/7H4FldMNqNI/want-to-meet-up-in-ny-1925-june-i-have-something-to-show-you.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/06/want-to-meet-up-in-ny-1925-june-i-have-something-to-show-you.html</guid>
<description>I haven't been to NY for a while, but I will be visiting from 19-25 June. I will be attending the SIFMA Financial Services Technology Expo from 22-24 June, and also doing some meetings. As well as visiting the Expo,...</description>
<content:encoded>I haven&amp;#39;t been to NY for a while, but I will be visiting from 19-25 June. &amp;#0160;I will be attending the &lt;a href="http://events.sifma.org/2010/487/index.html"&gt;SIFMA Financial Services Technology Expo&lt;/a&gt; from 22-24 June, and also doing some meetings.&lt;p&gt;As well as visiting the Expo, I will have the latest version of the Londata UML to XML Schema generator, and would be happy to give demos. &amp;#0160;The software implements the new 2009 version of the ISO 20022 process for generating XML Schemas from UML. &amp;#0160;&lt;a href="http://www.iso20022.org/"&gt;ISO 20022&lt;/a&gt; is the XML format that SWIFT is increasingly using on its network, replacing the older ISO 15022 messages. &amp;#0160;I&amp;#39;m happy to come and discuss why the methodology that works for SWIFT and ISO can work for your company too.&lt;p&gt;In addition to Londata&amp;#39;s product, I will also be able to demo a companion product from &lt;a href="http://nomos-software.com/"&gt;Nomos&lt;/a&gt;. Nomos&amp;#39;s tool reads business rules from your UML models and converts them into Java code that validates your XML messages. &amp;#0160;This is validation that you can&amp;#39;t do with XML Schemas, and for many companies it is the missing piece that is needed to catch errors that can otherwise lead to major delays in testing and roll-out of new systems. &amp;#0160;I&amp;#39;ve seen first hand that if systems that send XML messages go into UAT with too many errors in the messages they are sending (and believe me, they all too often do), it has a huge impact on the testing schedule of the receiving systems, and nobody can really afford to have new systems and new business revenues delayed by weeks or months just because of inadequate checking on XML messages during the development/test/UAT cycle. &amp;#0160;The Londata and Nomos tools together give companies a chance to address that problem and rein in their schedules.&lt;p&gt;If you would like to meet up while I am in NY, please feel free to get in touch; my e-mail is &lt;a href="mailto:abcoates@londata.com?Subject=Meeting up in NY"&gt;abcoates@londata.com&lt;/a&gt;. &amp;#0160;If 19-25 June doesn&amp;#39;t suit, or you aren&amp;#39;t in New York, please get in touch and we can set up an online discussion or demo to suit you.&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content:encoded>


<category>Data Modelling</category>
<category>UML</category>
<category>Web/Tech</category>
<category>XML</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Wed, 02 Jun 2010 19:40:38 +0100</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/06/want-to-meet-up-in-ny-1925-june-i-have-something-to-show-you.html</feedburner:origLink></item>
<item>
<title>Tim Bray, Developer Advocate</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/4WfmRZ8AYSE/tim-bray-developer-advocate.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/03/tim-bray-developer-advocate.html</guid>
<description>It's great to read that, having decided not to stay with Oracle after its takeover of Sun, Tim Bray has decided to take a role at Google. He's "Developer Advocate", with an initial focus on Android, Google's phone OS. The...</description>
<content:encoded>&lt;p&gt;It&amp;#39;s great to read that, having decided not to stay with Oracle after its takeover of Sun, &lt;a href="http://www.tbray.org/ongoing/When/201x/2010/03/15/Joining-Google"&gt;Tim Bray has decided to take a role at Google&lt;/a&gt;. &amp;#0160;He&amp;#39;s &amp;quot;Developer Advocate&amp;quot;, with an initial focus on Android, Google&amp;#39;s phone OS. &amp;#0160;The reason I&amp;#39;m writing about this is because I was so disappointed to see some of the negative comments about Tim having decided to work for Google.&lt;/p&gt;&lt;p&gt;I&amp;#39;ve known Tim for quite a few years now, a decade or so, and everyone greatly respects Tim for his honesty and for his determination to stand up (quite publically) for what he believes is right. &amp;#0160;At the same time, he also listens to those around him, he is never closed to other people&amp;#39;s opinions, he never ignores those opinions (albeit he can&amp;#39;t agree with everyone else&amp;#39;s opinions, and it would be silly to expect him to).&lt;/p&gt;&lt;p&gt;I&amp;#39;m not an Android developer, I don&amp;#39;t have an Android phone. &amp;#0160;However, if I &lt;strong&gt;was&lt;/strong&gt; an Android developer, I couldn&amp;#39;t imagine having a better advocate than Tim. &amp;#0160;If anyone is going to help keep Google honest, keep them doing the right thing by developers, it&amp;#39;s Tim. &amp;#0160;While I don&amp;#39;t expect that he will be the one with the final say on all things Android, I&amp;#39;m sure he will influence Android for the better, and you can&amp;#39;t ask for more than that.&lt;/p&gt;&lt;p&gt;I used to work for Reuters, which was also sometimes criticised for making decisions that some people felt weren&amp;#39;t in the interest of its customers and partners. &amp;#0160;My experience from that time is that big companies aren&amp;#39;t so much evil as they are sometimes inept or ignorant. &amp;#0160;They don&amp;#39;t always accurately gauge how the world around them will respond to the decisions that they make on their products and their general corporate behaviour. &amp;#0160;I&amp;#39;m not sure that Google is any better or worse than other big companies in this sense, but I hoping that Tim will get every opportunity to help Google make the right decisions first time. &amp;#0160;As a great listener, he has a great sense of what people really want.&lt;/p&gt;&lt;p&gt;I wish Tim every success, and I hope that everyone will give him the support to make his time at Google a success that benefits everyone.&lt;/p&gt;</content:encoded>



<dc:creator>abcoates</dc:creator>
<pubDate>Tue, 16 Mar 2010 19:33:09 +0000</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/03/tim-bray-developer-advocate.html</feedburner:origLink></item>
<item>
<title>Prague at Night (photos)</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/w02g6fh6uuA/prague-at-night-photos.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/03/prague-at-night-photos.html</guid>
<description>I'm in Prague for the first time, to speak at the XML Prague 2010 conference. Last night, I took these photos from the Charles Bridge, near the conference venue in the old part of Prague. The full-size photos can also...</description>
<content:encoded>&lt;p&gt;I&amp;#39;m in Prague for the first time, to speak at the &lt;a href="http://www.xmlprague.cz/2010/index.html"&gt;XML Prague 2010 conference&lt;/a&gt;. &amp;#0160;Last night, I took these photos from the Charles Bridge, near the conference venue in the old part of Prague.&lt;/p&gt;&lt;p&gt;
&lt;div class="asset asset-image-multiple med-img-mult"&gt;
  &lt;ul class="asset-thumbnails"&gt;
  
    &lt;li class="asset-thumbnail on" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971be9970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971be9970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971be9970c-pi"&gt;&lt;img alt="image from images116.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971be9970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c16970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c16970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c16970c-pi"&gt;&lt;img alt="image from images44.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c16970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c58970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c58970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c58970c-pi"&gt;&lt;img alt="image from images9.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971c58970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971ccd970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971ccd970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971ccd970c-pi"&gt;&lt;img alt="image from images116.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971ccd970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a9307441970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a9307441970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a9307441970b-pi"&gt;&lt;img alt="image from images40.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a9307441970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971d36970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971d36970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971d36970c-pi"&gt;&lt;img alt="image from images51.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971d36970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074c7970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074c7970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074c7970b-pi"&gt;&lt;img alt="image from images41.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074c7970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074fc970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074fc970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074fc970b-pi"&gt;&lt;img alt="image from images44.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a93074fc970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
  &lt;/ul&gt;
  
  &lt;div class="asset-image-large"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971be9970c-pi"&gt;&lt;img alt="image from images44.fotki.com" border="0" class="at-xid-6a00d8341c8ac953ef01310f971be9970c " src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01310f971be9970c-500wi" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The full-size photos can also be found here: &lt;a href="http://public.fotki.com/CoatesFamily/public/tony/prague-at-night/"&gt;http://public.fotki.com/CoatesFamily/public/tony/prague-at-night/&lt;/a&gt; &lt;/p&gt;&lt;/p&gt;</content:encoded>



<dc:creator>abcoates</dc:creator>
<pubDate>Sat, 13 Mar 2010 07:39:17 +0000</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/03/prague-at-night-photos.html</feedburner:origLink></item>
<item>
<title>Videos &amp; photos from Vienna ...</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/y8lBYWYxoWY/videos-photos-from-vienna-.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/01/videos-photos-from-vienna-.html</guid>
<description>I've just returned from a week in Vienna for a standards meeting (UN/CEFACT ATG/TMG joint face-to-face meeting). These are some videos and photos from the trip. First is a building by the Donaukanal (Danube Canal) that puts on a cool...</description>
<content:encoded>&lt;p&gt;I&amp;#39;ve just returned from a week in Vienna for a standards meeting (UN/CEFACT ATG/TMG joint face-to-face meeting). &amp;#0160;These are some videos and photos from the trip.&lt;/p&gt;















&lt;p&gt;First is a building by the Donaukanal (Danube Canal) that puts on a cool light show in the evening. &amp;#0160;It starts slowly; it&amp;#39;s worth watching to the end.&lt;/p&gt;















&lt;p&gt;&lt;br /&gt;&lt;p align="center" class="asset asset-video" style="display: block; margin: 0 auto;"&gt;&lt;object height="306" width="500"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="306" src="http://www.youtube.com/v/Lu4FCs5Is5g&amp;amp;fs=1" type="application/x-shockwave-flash" width="500" /&gt;&lt;/object&gt;&lt;/p&gt;







&lt;p&gt;&lt;/p&gt;















&lt;p&gt;I had the great fortune to be invited to the annual ball of the Vienna Technical University (Technische Universität Wien). &amp;#0160;It&amp;#39;s a wonderful, formal occasion (I had to borrow a bow tie to wear), held in the the old emporer&amp;#39;s palace. &amp;#0160;The following video of the dancing in the ballroom gives you some idea of what it was like, although the sound doesn&amp;#39;t do any justice at all to what like to be there.&lt;br /&gt;&lt;p align="center" class="asset asset-video" style="display: block; margin: 0 auto;"&gt;&lt;br /&gt;&lt;p align="center" class="asset asset-video" style="display: block; margin: 0 auto;"&gt;&lt;object height="306" width="500"&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="306" src="http://www.youtube.com/v/aw8xqpDVXww&amp;amp;fs=1" type="application/x-shockwave-flash" width="500" /&gt;&lt;/object&gt;&lt;/p&gt;















&lt;br /&gt;&lt;p&gt;&lt;/p&gt;















&lt;p&gt;I took some other videos there, these aren&amp;#39;t as good, but might be of interest to other attendees of the UN/CEFACT meeting.&lt;/p&gt;















&lt;ul&gt;







&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=4p0eg_saBYM"&gt;http://www.youtube.com/watch?v=4p0eg_saBYM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=7WEJuWVDDyU"&gt;http://www.youtube.com/watch?v=7WEJuWVDDyU&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=Gd0re0qTgR0"&gt;http://www.youtube.com/watch?v=Gd0re0qTgR0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=LqzD0ZWqvLw"&gt;http://www.youtube.com/watch?v=LqzD0ZWqvLw&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;







&lt;p&gt;I also took some still photos in Vienna, mostly at the ball. &amp;#0160;Here are some.&lt;/p&gt;















&lt;p&gt;







&lt;div class="asset asset-image-multiple med-img-mult"&gt;







 &lt;ul class="asset-thumbnails"&gt;







 







 &lt;li class="asset-thumbnail on" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a832504e970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a832504e970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a832504e970b-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a832504e970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83250b4970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83250b4970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83250b4970b-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83250b4970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c1ae970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c1ae970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c1ae970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c1ae970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c2ea970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c2ea970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c2ea970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c2ea970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c3c0970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c3c0970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c3c0970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c3c0970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c449970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c449970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c449970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c449970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83254f3970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83254f3970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83254f3970b-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a83254f3970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c729970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c729970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c729970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c729970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a8325633970b-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a8325633970b-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a8325633970b-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a8325633970b-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c8e1970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c8e1970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c8e1970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c8e1970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c97c970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c97c970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c97c970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c97c970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c9f9970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c9f9970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c9f9970c-pi"&gt;&lt;img alt="image from public.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef01287735c9f9970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
 







 &lt;/ul&gt;







 







 &lt;div class="asset-image-large"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a832504e970b-pi"&gt;&lt;img alt="image from public.fotki.com" border="0" class="at-xid-6a00d8341c8ac953ef0120a832504e970b " src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0120a832504e970b-500wi" /&gt;&lt;/a&gt;&lt;/div&gt;







&lt;/div&gt;







&lt;p&gt;The rest can be seen here: &lt;a href="http://public.fotki.com/CoatesFamily/public/tony/uncefact-vienna-2010/"&gt;http://public.fotki.com/CoatesFamily/public/tony/uncefact-vienna-2010/&lt;/a&gt; &lt;/p&gt;















&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;</content:encoded>


<category>Photos</category>
<category>Standards</category>
<category>Travel</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Sat, 30 Jan 2010 21:36:50 +0000</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/01/videos-photos-from-vienna-.html</feedburner:origLink></item>
<item>
<title>Photos from around Surrey Quays</title>
<link>http://feedproxy.google.com/~r/kontrawize-rss-2-0/~3/2WoqpFSo9TY/photos-from-around-surrey-quays.html</link>
<guid isPermaLink="false">http://kontrawize.blogs.com/kontrawize/2010/01/photos-from-around-surrey-quays.html</guid>
<description>I've posted some photos I took around Surrey Quays in London in December 2009. They are from the first photos that I took with my Pentax k10d that was a Christmas present. The k10d isn't the latest model, rather it's...</description>
<content:encoded>I&amp;#39;ve posted some photos I took around Surrey Quays in London in December 2009. &amp;#0160;They are from the first photos that I took with my Pentax k10d that was a Christmas present. &amp;#0160;The k10d isn&amp;#39;t the latest model, rather it&amp;#39;s now a pretty good deal second hand. &amp;#0160;It doesn&amp;#39;t lose a lot to the latest models (unless you want your SLR to take video as well). &amp;#0160;The full set of photos is here

&lt;p&gt;&lt;a href="http://public.fotki.com/CoatesFamily/public/tony/surrey-quays-2009/"&gt;http://public.fotki.com/CoatesFamily/public/tony/surrey-quays-2009/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and here are some examples:&lt;/p&gt;&lt;p&gt;
&lt;div class="asset asset-image-multiple med-img-mult"&gt;
  &lt;ul class="asset-thumbnails"&gt;
  
    &lt;li class="asset-thumbnail on" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980242970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980242970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980242970c-pi"&gt;&lt;img alt="image from images40.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980242970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980352970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980352970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980352970c-pi"&gt;&lt;img alt="image from images47.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980352970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769804dd970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769804dd970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769804dd970c-pi"&gt;&lt;img alt="image from images47.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769804dd970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769805dc970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769805dc970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769805dc970c-pi"&gt;&lt;img alt="image from images47.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef0128769805dc970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980702970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980702970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980702970c-pi"&gt;&lt;img alt="image from images52.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980702970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
    &lt;li class="asset-thumbnail" tp:fulluri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980818970c-pi" tp:largeuri="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980818970c-500wi"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980818970c-pi"&gt;&lt;img alt="image from images47.fotki.com" src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980818970c-75pi" /&gt;&lt;/a&gt;&lt;/li&gt;
  
  &lt;/ul&gt;
  
  &lt;div class="asset-image-large"&gt;&lt;a href="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980242970c-pi"&gt;&lt;img alt="image from images47.fotki.com" border="0" class="at-xid-6a00d8341c8ac953ef012876980242970c " src="http://kontrawize.blogs.com/.a/6a00d8341c8ac953ef012876980242970c-500wi" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;#0160;&lt;/p&gt;
 &lt;/p&gt;</content:encoded>


<category>Photos</category>

<dc:creator>abcoates</dc:creator>
<pubDate>Fri, 01 Jan 2010 14:51:01 +0000</pubDate>

<feedburner:origLink>http://kontrawize.blogs.com/kontrawize/2010/01/photos-from-around-surrey-quays.html</feedburner:origLink></item>

</channel>
</rss><!-- ph=1 -->
