Wednesday, 17 June 2015 gets a face lift

As you can see, has started to go through a redesign. It's been something I've been planning for a while now and it isn't yet complete. Over the next few days I'll be rolling out the rest of the redesign and I'll do my best to keep any disruption to the site to a minimum. If you do find the site is down at any time, please call back a little later.

It still astonishes me the volume of traffic this site gets and I feel guilty for not finding the time to blog more than I do. This redesign will hopefully be the start of a few changes to the site which I hope will reignite my enthusiasm.

- Matt

Monday, 27 April 2015

WordPress XSS Vulnerability

A vulnerability has recently been found which affects a huge number of WordPress plugins and themes. In simple terms, it allows malicious code to be executed on any site using a theme or plugin which contains the vulnerability.

For those using my QlikView for WordPress plugin, the good news is that it isn't affected by this XSS vulnerability and so you don't need to worry. However many of the most commonly used plugins have been found to contain the vulnerability including:

Friday, 27 March 2015

The origins of data visualisation: Michael van Langren

The Chinese philosopher Confucius is thought to have said "Study the past if you would define the future". Whilst I have no intention of defining the future of data visualisation, I certainly believe that looking at its origins, successes and failures can help us to better visualise data today.

It is fairly widely accepted that the first true data visualisation was made by the Dutch cartographer, mathematician and engineer Michael van Langren. Langren served as royal mathematician to King Philip IV of Spain, and became interested in one of the most important mathematical problems of the day - how to accurately determine longitude. Being able to determine longitude was hugely important for navigation, especially at sea. There were various methods used at the time but most were known to be estimations at best.

To demonstrate the wide difference in the estimations, in 1644 Langren published a simple, single dimensional chart to demonstrate the significance of the problem to the Spanish court.

Langren drawing for the Spanish court of 1644

Thursday, 12 March 2015

QlikView Components v10.1 Released

A new version of QlikView Components (QVC) is now available. Version 10.1 brings bug fixes and improvements to additional functionality. This new release can be downloaded from:

Changes for V10.1:
  • Closed issue 23. Non-English characters not supported in log file. (Thanks to Alkopfer)
  • Qvc.Log -- New variable Qvc.Log.v.WriteToQvLog, indicated if the logging should also be written to the QlikView/Sense application log file and script progress window.
  • Closed issue 24. Qvc.IncrementalSetup failing when QVD exists but is empty. (Thanks for Luca Jonathan Panetta)
  • Qvc.SegmentedStore -- New segment type of 'day' added to create daily QVDs.

You can read the full release notes here.

Friday, 27 February 2015

Populate QlikView variables from an external file

When building multiple tiered QlikView solutions, it is often handy to be able to define global variables that are then used across all QVWs within the solution. For example, having a single variable that defines where QVDs are to be stored and loaded from, can make moving the app from a development environment to a production server a little quicker and simpler.

I'm starting to feel like a broken record saying this, but there are of course multiple ways to achieve this in QlikView. One method, and probably the most commonly used, would be to define the variables in a QlikView script file as follows:

SET vQVDPath = C:\QlikView\Data\QVDs\;

The script file can then be included in multiple QVWs by added the following line towards the start of each script:


Monday, 23 February 2015

QlikView Components v10 Released

A new version of QlikView Components (QVC) is now available. Version 10 brings many new features and big fixes, most notably, the first additions from the merger of QVC with QlikView Addict CodeBox (QVACB). This new release can be downloaded from:

Changes for V10:
- QVC Documentation and Examples are Personal Edition enabled.
- Merged QVACB library with QVC.
    - Migrated Sub from QVACB, Qvc.Icons. Bundle loads image files into a QVW.
    - Migrated sub from QVACB, Qvc.QvdEmpty. Empties data from a QVD.
    - Migrated sub from QVACB, Qvc.SegmentedStore. STOREs table into segmented QVDs by date range.
    - Migrated function from QVACB, Qvc.DateDiff.
    - Migrated function from QVACB, Qvc.Days360.
    - Migrated function from QVACB, Qvc.NVL.
    - Migrated function from QVACB, Qvc.InRange.
- Closed Issue 12. Qvc.ExpandInterval script error when field name contains comma.
- Closed Issue 5. Qvc.DbExtract Initial extraction proceeds even when KeyField has typo in it.
- Closed Issue 4. Qvc. DbExtract Provide table specific BaseValue.

You can read the full release notes here.


Friday, 13 February 2015

QlikView Addict CodeBox merging with QlikView Components

The QlikView Addict CodeBox (QVACB) isn't a thing most people will be familiar with; the reason why will become clear as you read on. Several years ago now, I had some time on my hands and so I set about collating into a single package, all the reusable and useful bits of QlikView code I had lying around. The end result was QVACB. My intention was that at some point I would release it so that other QlikView developers could make use it, but maintaining my other released tools (such as the syntax highlighting) kept getting in the way. And so QVACB has been sat on the virtual shelf, only ever getting as far as being released to a handful of QlikView consultants/developers in something loosely resembling an alpha trial. I'm sad to say it hasn't even been updated in well over a year.

Recently I started to receive a few messages from people asking me to fix issues or add features to QVACB. After a little digging, it transpired that QVACB was being used by more people than I had thought and in some cases even in production solutions. This made me consider what the best way would be to go about releasing it properly. However, the last thing I wanted to do was release something which I never got the time to maintain properly.