CurioVault: putting the Express License to work

Author: Dave Cassel  |  Category: Entrepreneurism, Software Development

MarkLogic 5 includes the Express license, which allows for small production deployments. I decided to take advantage of that to put onto the web a little hobby site I’ve had in prototype mode for a year or so. I’ve collected lapel pins since 1984. In that time, I’ve gotten more than 150 and I’ve started […]

Models in XQuery

Author: Dave Cassel  |  Category: Software Development

At MarkLogic, I work on a team that is charged with building Proof-of-Concept systems quickly and building them well enough that the developers who take over later will have a good starting point. I’d like to talk more about the framework that we’ve built to help us with those goals in future posts, but for […]

MarkLogic on $40 per month

Author: Dave Cassel  |  Category: Entrepreneurism

Update (8 Mar 2012): Amazon has changed their prices again. Let’s see what the math tells us now. These numbers assume you want to run a web site 24×7, using the Heavy Utilization pricing on Reserved instances: Small: ($195 + $0.016/hour * 8760 hours/year) / 12 months = $27.93 per month Large: ($780 + $0.064/hour * 8760 […]

Modules databases versus the file system

Author: Dave Cassel  |  Category: Software Development

When you point a MarkLogic application server to some source code, that code can either reside on the file system or in a modules database. Here are some reasons why you might pick one of those over the other. Modules Database Deploying code is a transactional update — there’s no need to worry that the […]

Element constructors: computed and direct

Author: Dave Cassel  |  Category: Software Development

In XQuery, you can build an element one of two ways: computed or direct. Direct This is the simpler case, so I’ll take it first. Direct means that your XQuery code has the XML you want to build: declare namespace blog = “http://davidcassel.net/blog”; <blog:example simple=”true”>   <blog:pointless/> </blog:example> XML is a natural data structure for […]

Douglas Crockford on coding standards

Author: Dave Cassel  |  Category: Software Development

The team I’m working recently put together a set of coding standards for our XQuery work. This team was generally happy to do so and we came to agreement on a set of standards pretty quickly. The exercise brought to mind a time at a previous company where two of us started discussing aloud whether […]

Queries and Updates

Author: Dave Cassel  |  Category: Software Development

You may already know that MarkLogic sometimes runs modules as queries (read-only) and updates (read-write). The advantage of queries is that, because they run at a particular timestamp, they don’t need to deal with locks — nothing will change at that timestamp. How does the server know whether a module is a query or an […]

An XQuery Sequence question

Author: Dave Cassel  |  Category: Software Development

A while ago I was posed a question by a colleague: (1,3,2)[.] -> 1 (1,2,3)[.] -> 1 2 3 (2,3,4)[.] -> no result why? To find the answer, we need to think about what’s happening in the brackets. As discussed in one of my earlier posts, the expression in brackets gets evaluated once for each […]

Meaningful XML

Author: Dave Cassel  |  Category: Software Development

Another day, another code review. Today I came across a function that generates non-meaningful XML. This is something that at first glance feels like it has a nice structure to it, but there’s a better way. First, let take a look at the XML (I’ve changed the XML and the code to make it anonymous, […]

Exceptional code

Author: Dave Cassel  |  Category: Software Development

Today I was looking into some code that was running slower than it should, and I happened across this little tidbit: let $normal :=   try {     xs:int($value)   }   catch($e) {     $value   } Yes, MarkLogic extends XQuery to add try/catch, and this is a tremendously useful feature, when […]