Friday, March 23, 2007

Lazy local pattern matching

While the upcoming release has a lot to do with improving the CAL Eclipse Plugin, we continue to work on the core framework, and even language features. One such language feature that should be putting in an appearance soon is called "lazy local pattern matching".

Both current methods of decomposing values (case expresssions and data constructor field selection expressions) cause a value to be evaluated to weak head normal form (WHNF) - i.e. so the top level constructor of the value is known. The new syntax will allow pattern matching on the LHS of a LET definition e.g.:

// list cons patterns:
public foo3 = let
a:b = [3];

// tuple patterns:
public foo4 = let
(a, b, c) = (b, c, 1.0);

// record patterns:
public foo5 = let
{a} = {a = "foo"};
public foo6 = let
{_ | a} = {a = "foo", b = "bar"};

The difference between this syntax and case or field selection expressions is that the RHS of the LET definition is not evaluated until some value in the LHS is evaluated.

More details on this feature will be published soon.

Saturday, March 10, 2007

NEW Forum (Google Groups)

Based on feedback and personal experience in using the Diamond site Forum (the Business Objects forum for developers), we have decided to create a forum for Open Quark in a more neutral and convenient location. So, we have created a new Google Group called "CAL Language Discussion".

We will be continuing to monitor the Diamond Forum, but expect most new activity to occur in the new group. We will also try to post 'tricks and tips' articles to the new group periodically, so it can be more than just a location for Q&A.

There is a link to the new group in the side bar of this blog.

Experiments with Google Video

For a long time now, the Research Group here at Business Objects has used video to demonstrate progress on projects. A number of videos are available on the Open Quark main page.
One of the challenges of videos of course, is that they are delivered in a particular format, which may or may not be best, or even appropriate, for any given platform/viewer.

Theoretically then, something like Google Video could really fit the bill, offering web-based video playback on all platforms. So, recently I have been experimenting with Google Video as a channel for demonstration videos (which are of course screen captures). Results so far have left a lot to be desired, and I'm wondering whether this is simply a combination of the content type (screen objects and text) and the fidelity possible with Google's streaming/viewer technology at this point. Alternatively, I haven't found the magical format to upload yet to get a high-fidelity transcoding to their live format.

Google recommend MP4 video at 640x480, deinterlaced at 30fps, with MP4/AAC audio. I have tried to provide almost extactly this format in the uploaded source (exception being 8fps as 30fps is a bit of overkill for a screen capture), and have experimented a little with a few different settings. The latency involved in getting a video live on Google makes experimentation a little awkward, and so far none of the results have been particularly better than any other.

So, if anyone knows a way to get the best results out of Google Video for this kind of content, I'd love to hear from you!

Tuesday, March 06, 2007

Early March update

It's been a while since I posted an update here, so here goes...

We're making good progress on the next release, which predominantly features a number of improvements to the Eclipse support as I noted here before. We're aiming for a release this month (March).

Feedback on the Quark Framework so far has been very encouraging - though for some reason most of it has been via private email. I don't know whether this is because people are shy about commenting publically (!), or because our forum isn't working properly. The latter is entirely possible, as we have had problems before. Just in case, we are planning to create a new public forum with a 3rd party service (Google Groups is one possibility).

We have recently updated the Wikipedia content for the Quark Framework and CAL. There was already a short summary there, created by Tom Davies, which has now been expanded, with a separate page to describe the Quark Framework and CAL language in more detail.

Now that Open Quark is released we have been able to turn some attention to creating materials that communicate some of the more interesting areas of the implementation in a more formal way. We have also been invited to guest lecture at some of the local Vancouver universities, which will hopefully be the first of many occasions where we have the opportunity to speak about our motivations, and showcase details of the framework.