Sunday, January 5, 2014

New Year's Resolutions for 2014

Hardly a secret, but 2013 was an extremely busy year for me at the day-job. It pays the bills and I take my duties there very seriously, at the cost of after-hours activities. As a result, this blog has been neglected, and I didn't get to push out the updates I had planned. In short, something has to change - and here are my New Year's Resolutions for 2014…

1) Finish what I start

Can you believe I have updates laying around for each and every one of my Quartam libraries? Ranging from bug fixes over performance enhancements to entirely new features. All locked on the hard drives of 3 computers.
It is time to wrap these up and get them out there for you to enjoy and put to good use.

2) Tell you all about it

Over the next few weeks, I will post status updates for each library, including projected release dates. Bear in mind that my day-job takes precedence, so don't come brandishing torches and pitchforks if I miss some of these self-imposed deadlines.
In addition, when I figure out a solution in reply to one of your emails, I will try and generify it a bit so that I can post it here as a tip. Or maybe write up a lesson to post on if that's a better format.

3) Work more efficiently

One of the things that I enjoyed while contributing to the LiveCode engine, was their adoption of GitHub. So one of my next items to investigate is Monte Goulding's lcVCS plugin, which provides stack export/import facilities aimed at version control support. From there, it's a small step to placing code on Github, and applying the GitFlow model to manage branches.
Somewhat related is the adoption of a proper bug tracker. Right now I juggle a few Excel sheets, and feed stuff from the forums or direct mails into them. Which means things get reported multiple times, or I accidentally delete entries. Maybe Github will help for the open-source projects, but I still need a better solution for closed-source projects.
Another aspect, tightly coupled to the first two resolutions, is to build checklists for releasing new products and updates, and see which items on these lists can be automated.

4) Have more fun

As a techie, there are few things that give me more pleasure than figuring out how to make something work. Exploring new technologies is something I thrive on. And if anything good comes out of these experiments, I'll be sure to share it here.
Plus, I plan to pick up my guitar more often. Maybe even take actual guitar lessons if time permits, so my neighbours have some different songs to listen to ;-)


Thursday, July 4, 2013

LiveCode 6.1 released

Just two days ago, RunRev announced the release of LiveCode version 6.1 - the first new version to include new functionality contributed by the community. I would call this clear evidence that the KickStarter project is propelling the platform forward.

I'm proud to have worked on two of the community contributions:
- getting the page ranges of a field (complementing the existing page heights feature)
- additional statistical functions (geometricMean, harmonicMean, averageDeviation, populationStandardDeviation, populationVariance and sampleVariance)

 Another contribution of mine was too late to the party, but has been accepted and will make its appearance in the next functional release:
- enhanced filter command (allowing you to filter items in addition to lines, match against regular expressions and place the output into a different container)

 If you too want to contribute, there's plenty of ways:
- write engine code if you have C++ experience
- enhance the IDE if you have LiveCode experience
- update the documentation with examples
- participate in the discussions on the forums where new features are fleshed out
- and test the developer previews and release candidates

I am looking forward to my next contribution project, and hope to see you there!

Wednesday, May 1, 2013

Quartam Analytical Data Processing Library 1.0.0 Available

Today, Quartam Software is proud to announce the release of Quartam Analytical Data Processing Library for LiveCode version 1.0.0, as open source under a dual license. Quartam Analytical Data Processing Library for LiveCode helps developers process large data sets by means of filter, map, reduce and aggregate functions.

So what can I do with it?

The Filter-Map-Reduce programming model is a data-processing construct coming from the world of 'functional programming' - and has recently made serious headway into languages such as Java or C#. This triad of higher-order functions combined offer a powerful tool for manipulating sequences of data.

- Filter is the easiest to understand: it simply takes one sequence of data and returns a sequence that is filtered according to a predicate (checking whether a number is odd or even, if a date falls in a certain year, etc.)
- Map is similar to Filter because it takes one sequence of data and returns another sequence, having transformed each item with a conversion function (taking out a particular chunk of interesting data, such as a price column)
- Reduce is the least familiar of the three and has as purpose to traverse one sequence of data and build a result value using each item (calculating the sum, minimum, maximum, or some other simple statistic)

But that triad doesn't cover all use-cases, so we add a fourth concept to the mix.

- Aggregate extends the Reduce concept by lifting its inherent limitation of having no memory of all the data that has passed through it (thus allowing the calculation of more complex statistics which require access to the entire dataset)

Of course you can already do these things manually in LiveCode, especially with the 'repeat for each' construct as a speedy way to iterate over a sequence of data. So why would you need a library? One good reason is to cut down on typing and prevent subtle logic errors ; but far more important is that code becomes easier to understand and maintain as you make abstraction of the iterative process.

How do you mean: open source under a dual license?

Although Quartam Analytical Data Processing Library is a free/open source software (F/OSS) project, giving you a lot of freedom and flexibility as to how you use it in your own projects, this doesn't mean you're free to do anything you want with it: you have to respect the GNU Lesser General Public License (LGPL).

You can be released from the requirements of the LGPL license by purchasing a commercial license from Quartam Software.

How can I contribute to the Quartam Analytical Data Processing Library project?

I'm glad you asked - the plan is to build a community around Quartam Analytical Data Processing Library in order to streamline the development of newer versions. If you can help with squashing bugs, researching new features, improving documentation, or any other way, you're more than welcome to join us.

All you need to do is download, sign and email back the Quartam Open Source Contributor Agreement so that your contributions can be incorporated into the project. Quartam Software has the role of project custodian, taking care of versioning and distribution.

So roll up your sleeves, download the first version and get stuck in!

Jan Schenkel.

Thursday, December 27, 2012

Quartam PDF Library 1.1.5 Available

This maintenance update to Quartam PDF Library adds long-awaited support for alpha channels in PNG images.

The cross-platform .zip archive can be downloaded at:
A web page with LiveCode Server / On-Rev demos is available at:

Quartam PDF Library for LiveCode - version 1.1 introduced support for transformations, transparency and blendmodes, gradients, clipping, text box fitting, inserting pages, compression, experimental support for including EPS files, as well as support for LiveCode Server and On-Rev. It is released as open source under a dual license (GNU Affero General Public License / Commercial License).