Thursday, December 07, 2006

Build 140

The latest update to the Quark Framework, now posted to the Business Objects Labs page includes a number of new features and some substantial new samples that we hope will illustrate how to use a number of SDK features together in real Java applications.

Amongst the new features included in this release are ways to conveniently express casts between foreign types, and the ability to easily declare input and output between CAL Lists and any Java structure accessible with an iterator.

As usual, please see the release notes on the Labs page (which are available without downloading the software package) for further details.

Wednesday, November 22, 2006

In the works

We are getting close to another release of the Quark Platform with a few new features, and a larger Java sample to demonstrate a number of the Java integration features being used together in a 'real' application. Look for an announcement here within the next few weeks.

Saturday, October 28, 2006

...et voila!

The promised refresh is now available from the regular Business Objects Labs page for the Quark Framework.

This update includes a large amount of new material. Specifically, we have now opened all the Java SDKs that allow embedding of the Quark Framework in Java applications. Functions/Gems can be searched for, modules loaded/unloaded, adhoc compositions made, evaluated monolithically or in steps with 'continuations' etc. etc.

Downloading the main software ZIP will get you all the new libraries, tools, documents and samples. For convenience (and for those not wishing to register), the documents, CALDoc and Javadoc are separately available/browsable.

We continue to work on further samples and case studies, especially now around how to use the newly published SDKs. Look for announcements about these in the usual places (including here).

As usual, please provide any and all feedback, and I would encourage people to do so on the Quark Framework forum, rather in in private email (though I'm happy to continue receiving this), as it gives everyone a change to participate in group discussion.

Saturday, October 21, 2006

Coming up next...

Hopefully next week we will be releasing an important update to the Quark Framework that we are seeding under our labs license (pending ongoing consideration about the right FOSS approach).

So far, the software we have made available has mostly enabled people to play with the CAL language and tools. We have not yet made available the full Java SDKs that allow the Quark Framework and arbitrary functional logic to be embedded in regular Java apps. Our tools have a way to generate JAR's, but to generate entry points to logic therein requires the SDK.

The next release, therefore, will open the Java SDK, which will allow:

  • Simple evaluation of functional logic included in CAL files or JARs.
  • Dynamic discovery of functions by type (such as "What are all the functions that take an Int and return a String?").
  • Advanced evaluation concepts, such as extracting parts of a result at a time, with the ability to restart a suspension to get more results.
  • Applying and querying for metadata. Includes enumeration of Gems with particular metadata set, or extracting properties set on a specific Gem (again, useful in dynamic programming where such properties might be menu text, usage descriptions, default argument values etc.)
  • Construction of new Gems on-the-fly using a high-level composition API (a programmatic equivalent of using the Gem Cutter)
  • Construction of new Gems and other entities using a lower-level 'source model' API (a programmatic equivalent of using the CAL language)
  • Setting locally constant properties into an ExecutionContext, so that Gems running in that environment can directly access this state.
  • Sharing ExecutionContexts or keeping separate environments depending on the threading strategies in the Java code.
  • Registering objects for clean-up automatically when the functional environment is disposed
  • Creating and disposing of transient modules, for Java code to maintain scratch areas for temporary compositions used as abstract building blocks or specific single-shot transformations.


While the Quark Framework has at its core a serious and general purpose functional language, the Java integration is the whole purpose of its existence and the motivation for Business Objects to create this technology.

Watch this space for more news...

Thursday, October 19, 2006

CAL Eclipse Plug-in is now available

We have made our CAL Eclipse Plug-in available for download via an Eclipse update site. See the main Quark Framework labs page for details. Instructions on how to install the plug-in and how to get set up are to be found in the Eclipse Plug-in release notes, also available on this page.

At this point, the plug-in is relatively simple. It consists of a CAL Editor, a CAL Builder, and a few other features. It continues to be a work in progress, and updates will be posted at appropriate intervals. Some developer tools that do not yet have Eclipse UI, can be used through running ICE in the Eclipse console and issuing commands there. Some examples of this can be seen in the CAL and ICE video.

Wednesday, October 18, 2006

Some samples available in discussion forum

There are a couple of straightforward samples posted in the discussion forum.

The first of these is a simple CAL solver for Sudoku puzzles.
The other sample is a straightforward hybrid example that plots 1D Cellular Automata, and uses CAL to compute the cell generations, while plotting them to a window implemented by regular Java classes (source included).

Saturday, October 14, 2006

Initial Software Download Available

The Research Group at Business Objects is very pleased to announce the availability of the initial release of the Business Objects Quark Framework for Java software. This is available for downloading at the Business Objects Labs site.

This initial release is primarily designed to allow people to get familiar with CAL, the Gem Cutter and the ICE shell. This version does not yet include the Eclipse integration, nor the Java SDK that would allow full integration of Quark logic into Java applications. An update, to be delivered within a week or two, will provide both of these additional capabilities.

As well as the software download, we have made available two more documents:

  • The Gem Cutter Manual: a beginner's guide to using the Gem Cutter and graphical language

  • Effective CAL: a guide to best practices when programming in the CAL language


We would be very happy to receive comments or questions on our new discussion forum that is now live. This is linked to from the labs page (see above link).

P.S. Yes, we realise this was built and released on a Friday the 13th. All we can say is that we tested it and our computers failed to melt down as some might predict. While Business Objects offers no warrantees regarding this software we think you're probably safe giving it a go ;-)

Friday, October 06, 2006

CALDoc now available to browse or download

As promised, we have now published the HTML CALDoc of the CAL library modules that we expect to make available shortly with the initial release of the Quark Framework for Java.

The CALDoc is available to browse or download here

Wednesday, October 04, 2006

Stay tuned

We are working to make the Quark framework and tools (as shown in the videos) available under Business Objects 'early access' Labs license. See Business Objects Labs for details. Hopefully the wait won't be too long (a week or two). In the meantime, we are expecting to share the generated HTML library documentation (within a few days).

Sunday, October 01, 2006

DivX videos for download

I've put up a new page on the .mac site for people to download DivX versions of the original videos posted there as streaming QuickTime 7 movies. This is an attempt to cater for those for whom QuickTime is not an option (Linux users for instance). I don't spend much time in Linux these days, so I may be a little out of touch with what works best there, but hopefully DivX serves the purpose.

Of course, you are looking at a rather large download per file, but the quality seems to be good.

I'm open to suggestions if this doesn't work satisfactorily.

Saturday, September 30, 2006

CAL User's Guide posted

I have just posted the CAL User's Guide here.

The CAL User's Guide is a general guide to the CAL language. It is designed to be easy to read, even for developers new to the functional paradigm, and has the following sections:
1. Getting Started with CAL
2. Language Reference
3. Standard Library Reference
4. Appendices (conventions, style guides, etc.)

This material is provided for the continued purpose of seeding some information on the Quark Framework for Java and generating feedback and discussion to help us in our planning regarding the future of this technology. So, once again, we would be delighted to receive feedback, questions or comments.

Thursday, September 28, 2006

CAL for Haskell Programmers

People familiar with Haskell will be curious as to how CAL differs from the Haskell language, and what motivates these differences. We have now posted a document addressing this here.

Bonus Screenshot1



This image shows the definition of the standard function 'map' expressed in the graphical language of the Gem Cutter.

Of particular note is the white Gem on the Table Top with the name "demoMap". This is an Emitter of the target Gem (i.e. the result) and represents a recursive call. By default, an Emitter has no local arguments and so it's output type is the same as the value passed into its corresponding Collector. However, one is able to 'retarget' arguments from definition upstream of a Collector to the Collector itself, whereby any Emitters for that Collector will appear with 'local' arguments. If that sounds complicated, it really takes longer to say it than it does to grok when you are in front of the Gem Cutter :-)

Screenshots posted

I have posted some screenshots to the .mac site, to cater for those who do not have QuickTime 7, or who are experiencing service problems or long download times with the videos.

Although the caption size is limited, I have tried to highlight what is going on in each image.

To get to these (and the videos) use the link in the right margin, or click here

New video

While we are in the process of preparing somewhat more technical material to share, I have also published one more video to the location currently hosting our demonstration videos

[If anyone is curious, after some experimentation this was the easiest, fastest way to host some streaming videos of reasonable quality]

The new video is a tour of some developer tool features, including:
  • Searching
  • Metadata browsing and editing
  • CALDoc tags
  • CALDoc HTML generation
  • CALDoc browsing, with dynamic HTML navigation and search
  • Various refactorings: rename, add type declaration, organise imports
  • JAR file export

What is all this about?

Business Objects wishes to establish dialogue with researchers, teaching staff and the software community at large regarding a technology, code-named Quark, that has been developed in its Research Group since 1999. To this effect, announcements have been made on some special interest group mailing lists, and some early information about Quark has been made available. Further information is being prepared, and we are hoping to make the actual software available soon, under an 'early access' style license (no support). The purpose of such consultation is to establish whether Quark is of sufficient interest to various parties to warrant its proper release as some form of 'software libre', and/or whether there is interest in collaboration on further development.

Quark is a framework for the definition and execution of functional components on the Java platform. The motivation for this was the ability to create certain kinds of business logic as reusable, dynamically composable pieces. These discrete units of composable logic are called "Gems", and these can be created with a number of developer tools, or generated programmatically under the control of a Java application. Gems compile on-the-fly to very efficient Java bytecode, and can be used in a regular Java program with considerable flexibility. The side-effect of focusing on our specific goals then, has been the creation of a high-performance, general purpose functional language, having tight integration with the Java platform and language.

As we are at the very beginning of the rollout of information to the community, there may be frequent further announcements. To avoid too many update posts to mailing lists, and to encourage some more specific and lengthy discussion on Quark, this blog has been set up. This might be a temporary home for such discussion, but should allow an exchange of information and ideas to begin quickly.