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.
Showing posts with label libraries. Show all posts
Showing posts with label libraries. Show all posts
Wednesday, May 1, 2013
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: http://downloads.quartam.com/qrtpdflib_115_xplatform.zip
A web page with LiveCode Server / On-Rev demos is available at: http://quartam.on-rev.com/qrtpdfdemos.irev
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).
The cross-platform .zip archive can be downloaded at: http://downloads.quartam.com/qrtpdflib_115_xplatform.zip
A web page with LiveCode Server / On-Rev demos is available at: http://quartam.on-rev.com/qrtpdfdemos.irev
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).
Thursday, October 18, 2012
Quartam PDF Library 1.1.4 Available
This maintenance update to Quartam PDF Library fixes a bug with text line height in tables, and extends the supported text alignments with 'leftJustify', 'centerJustify' and 'rightJustify' for textflows that are more pleasing to the eye.
The cross-platform .zip archive can be downloaded at: http://downloads.quartam.com/qrtpdflib_114_xplatform.zip
A web page with LiveCode Server / On-Rev demos is available at: http://quartam.on-rev.com/qrtpdfdemos.irev
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).
The cross-platform .zip archive can be downloaded at: http://downloads.quartam.com/qrtpdflib_114_xplatform.zip
A web page with LiveCode Server / On-Rev demos is available at: http://quartam.on-rev.com/qrtpdfdemos.irev
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).
Wednesday, February 29, 2012
Quartam Color Library 1.0.0 Available
Today, Quartam Software is proud to announce the release of Quartam Color Library for LiveCode version 1.0.0, as open source under a dual license. Quartam Color Library for LiveCode helps developers manage color schemes, convert color definitions to and from red-green-blue triplets, and derive brighter or darker colors for an attractive and consistent user interface.
So what can I do with it?
Quartam Color Library makes it easier to apply colors as found in HTML pages, C and Java code, even if they were defined as CSS 3 standard color names, raw hexadecimal values or in HSV, HSB or CMYK. In addition, you can derive brighter or darker colors using several algorithms. Finally, you can store these colors in a central repository using custom names.
Best of all, it is written in 100% LiveCode, no externals needed! And it works for your version and platform: Revolution 2.8.1 through LiveCode 5.0.2 on Desktop (Windows, Mac and Linux), Server (LiveCode Server and On-Rev) and Mobile (iOS and Android)
How do you mean: open source under a dual license?
Although Quartam Color 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 Color Library project?
I'm glad you asked - the plan is to build a community around Quartam Color 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.
So what can I do with it?
Quartam Color Library makes it easier to apply colors as found in HTML pages, C and Java code, even if they were defined as CSS 3 standard color names, raw hexadecimal values or in HSV, HSB or CMYK. In addition, you can derive brighter or darker colors using several algorithms. Finally, you can store these colors in a central repository using custom names.
Best of all, it is written in 100% LiveCode, no externals needed! And it works for your version and platform: Revolution 2.8.1 through LiveCode 5.0.2 on Desktop (Windows, Mac and Linux), Server (LiveCode Server and On-Rev) and Mobile (iOS and Android)
How do you mean: open source under a dual license?
Although Quartam Color 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 Color Library project?
I'm glad you asked - the plan is to build a community around Quartam Color 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.
Friday, January 27, 2012
Quartam PDF Library 1.1.3 Available
This maintenance update to Quartam PDF Library fixes a bug with multiple images in a single PDF document.
The cross-platform .zip archive can be downloaded at: http://downloads.quartam.com/qrtpdflib_113_xplatform.zip
A web page with LiveCode Server / On-Rev demos is available at: http://quartam.on-rev.com/qrtpdfdemos.irev
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).
The cross-platform .zip archive can be downloaded at: http://downloads.quartam.com/qrtpdflib_113_xplatform.zip
A web page with LiveCode Server / On-Rev demos is available at: http://quartam.on-rev.com/qrtpdfdemos.irev
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).
Thursday, August 7, 2008
The Programmer Syndrome
No, it's not as if all developers exhibit the same behaviours or nervous tics - but a lot of us tend to suffer from two less-than-stellar character traits: the "Not Invented Here" syndrome and its nefarious cousin "I've always done it this way". Not exactly what you're looking for in an industry where there's a continuing debate about code reuse.
Of course it is a lot more fun to claim you're at the forefront of technology and innovation, but half of the time we're just rehashing the same technology - message queues are about as old as UN*X and let's not even talk about the Network Computer brouha. And sometimes this running in circles makes us blind and turn us into snooty stubborn time-wasters. If you're wondering what triggered this post, well twice this week have I been confronted with this near-pathological behaviour.
The first occasion was reading one colleague's analysis for a new logging system to better track changes at the record level. Obviously an important feature that should be done right, and in this case the idea was to extend the logging features currently present in the application - thumbs up in the reuse department. What struck me as odd about it, was that he didn't want to adopt the auditing system that was added to the underlying database system in a not too distant past. What really irked me about it, was that he didn't even mention it and didn't bother to express a good reason as to why we shouldn't use the built-in mechanism.
The second occasion was when a colleague started to explain how they solved a certain asynchronous data processing problem at his previous job, in what we can euphemistically call a 1980's solution: have an external process poll the database every minute. And he insisted that this was the only robust way to do it, and it worked fast because they had hundreds of these batch processes running on an IBM RS-6000. As the problem unfolded, he had to add more and more checks and balances to counteract concurrent modifications by different processes. When I suggested that for this particular situation a message queue might be more appropriate, he dismissed it as costly and overcomplicated. I don't know about you, but message queues are generally built by very smart people who have thought through the different corner cases, and I'll happily follow their path.
Naturally, as we have creative minds (and no, it's not because we express ourselves through code rather than music or painting that we shouldn't be considered "creative") we seek challenges and aim for the sky when we decide not to fix the code but rewrite it - paraphrasing Captain Jack Sparrow: "a bigger boat, a better boat, that boat." And it is extremely important to deliver something that we feel proud of, which is what drives us to work insane hours and then some more, just to get it done by this impossible deadline with more features than were in the requirements.
But aren't we sometimes overdoing it by completely ripping something apart and replacing it with an alternative that lives up to our current standards? None of us were born with programming experience, we all had to learn through "Hello, world!" in a dozen programming languages, and if all is right, we're still learning new things every day. Yet with an ever-growing to do-list and much longer to research-list, I prefer not to duplicate efforts. Which is why open source libraries, with the right licensing policy, are a great blessing.
Steering back to the topic, I feel this interview with Joshua Bloch is a must-read. Joshua Bloch is the author of Effective Java, considered by many to be among the best books on how to use the Java programming language. Here's the single-best quote from that interview: "In order to stay sane, most developers have a can-do attitude, and some take it too far. They say to themselves, 'Yes, there's a library, but I can do better.' Maybe you can, but that doesn't mean you should."
Mind you, when I recently rebuilt a monitoring tool, I did scrap nearly 90% of the existing code and replaced it with new code that made as much use as possible of new features added in recent versions of Java. So please do not read the above as a mindless "holier-than-thou" rant about short-sighted colleagues. What I really hope, is that you remember to keep an open mind, learn about what's waiting for you to use in your applications - either in the core of your development libraries or in what's available from the outside world. And if you do roll your own, at least make a list of the arguments pro and contra.
Of course it is a lot more fun to claim you're at the forefront of technology and innovation, but half of the time we're just rehashing the same technology - message queues are about as old as UN*X and let's not even talk about the Network Computer brouha. And sometimes this running in circles makes us blind and turn us into snooty stubborn time-wasters. If you're wondering what triggered this post, well twice this week have I been confronted with this near-pathological behaviour.
The first occasion was reading one colleague's analysis for a new logging system to better track changes at the record level. Obviously an important feature that should be done right, and in this case the idea was to extend the logging features currently present in the application - thumbs up in the reuse department. What struck me as odd about it, was that he didn't want to adopt the auditing system that was added to the underlying database system in a not too distant past. What really irked me about it, was that he didn't even mention it and didn't bother to express a good reason as to why we shouldn't use the built-in mechanism.
The second occasion was when a colleague started to explain how they solved a certain asynchronous data processing problem at his previous job, in what we can euphemistically call a 1980's solution: have an external process poll the database every minute. And he insisted that this was the only robust way to do it, and it worked fast because they had hundreds of these batch processes running on an IBM RS-6000. As the problem unfolded, he had to add more and more checks and balances to counteract concurrent modifications by different processes. When I suggested that for this particular situation a message queue might be more appropriate, he dismissed it as costly and overcomplicated. I don't know about you, but message queues are generally built by very smart people who have thought through the different corner cases, and I'll happily follow their path.
Naturally, as we have creative minds (and no, it's not because we express ourselves through code rather than music or painting that we shouldn't be considered "creative") we seek challenges and aim for the sky when we decide not to fix the code but rewrite it - paraphrasing Captain Jack Sparrow: "a bigger boat, a better boat, that boat." And it is extremely important to deliver something that we feel proud of, which is what drives us to work insane hours and then some more, just to get it done by this impossible deadline with more features than were in the requirements.
But aren't we sometimes overdoing it by completely ripping something apart and replacing it with an alternative that lives up to our current standards? None of us were born with programming experience, we all had to learn through "Hello, world!" in a dozen programming languages, and if all is right, we're still learning new things every day. Yet with an ever-growing to do-list and much longer to research-list, I prefer not to duplicate efforts. Which is why open source libraries, with the right licensing policy, are a great blessing.
Steering back to the topic, I feel this interview with Joshua Bloch is a must-read. Joshua Bloch is the author of Effective Java, considered by many to be among the best books on how to use the Java programming language. Here's the single-best quote from that interview: "In order to stay sane, most developers have a can-do attitude, and some take it too far. They say to themselves, 'Yes, there's a library, but I can do better.' Maybe you can, but that doesn't mean you should."
Mind you, when I recently rebuilt a monitoring tool, I did scrap nearly 90% of the existing code and replaced it with new code that made as much use as possible of new features added in recent versions of Java. So please do not read the above as a mindless "holier-than-thou" rant about short-sighted colleagues. What I really hope, is that you remember to keep an open mind, learn about what's waiting for you to use in your applications - either in the core of your development libraries or in what's available from the outside world. And if you do roll your own, at least make a list of the arguments pro and contra.
Subscribe to:
Posts (Atom)