Askia at Printemps des Etudes

Askia will be at the Printemps des Etudes at the Palais Brongniart for the 6th edition, the April 20th & 21st 2017.

As a key player and innovative partner in the French research market, we couldn’t miss this opportunity to be once again at Printemps des Etudes to showcase our latest solutions as well as our vision:

A new edge, our new identity

We’ll be showcasing our brand new stand layout, reflecting Askia’s new identity and we will be happy to welcome you on our Stand 5 and have an introductory chat on these solutions or a demo with our team.

Here’s some info about the Printemps des Etudes.

AskiaField 5.4 is ready for you

We are thrilled to announce that Askia’s entire software suite is ready for deployment in version 5.4.

Among the list of features of this major version, we want to highlight the very reason that made us switch to a new version track.

Quota revamp


5.4 introduces a total revamp of the quota system. Among the main features are

  • Quotas can now be set up on multi-coded questions and numeric questions.
  • Minimum and maximum quota targets.
  • Easy crossed-quotas.
  • Quota definition, monitoring and quota breakdown by interviewing mode are now on one single view.
  • Copy-paste large quota structures from Excel.
  • New keywords to master least-filled setups with a single routing.

This means a lot more control during the crucial moments of the fieldwork : balancing the last interviews so that all quota targets are filled up together, neatly, and fast.

You can check all new quota specs in the Knowledge Base.

And for the curious crowd, here is a good read if you’re interested in discovering what’s behind the scene, from a previous blog post.

CAWI to CATI, back and forth

5.4 is our first fully bi-directional multimode version. You can now natively switch interviews from CAWI to CATI and vice versa.


Field API

5.4 lays the ground stones for extensibility with Field API, allowing you to build ambitious end-to-end automation systems. Upon checking an extra checkbox during the setup, AskiaField can now receive orders from the outside. This also leaves an open-end for various integrations (with CRMs, CMSs, productivity systems….you decide).

Here is our developer reference if you’re interested.

Getting started

Like what you see ? Check out our full KB section to start mastering your new toolbox, and contact our support team to schedule the installation

Askia is back at Insight Show

The Insight Show strikes back in 2017: new date – 8th & 9th March, new location – Olympia West, and a brand new event organisation. Askia couldn’t miss this opportunity to come back to this major event as an exhibitor once again.

The timing couldn’t be better as we have a wealth of new developments to share with visitors. For starters, we’ll be showcasing our brand new stand layout, reflecting Askia’s new identity; we will also bring our uber-cool Engager for a refreshingly interactive experience; our fantastic sales team will be on hand for live demos and to discuss Askia’s latest product releases and developments.

Here’s some info about Insight. Askia will be on stand ID 604 right at the entrance of the show. Get in touch now to schedule an introductory chat or a demo with our team.


As the askiavista user base keeps growing, vista Administrators have asked if we could provide broader and more flexible usage statistics. Well, as we start this new year, we’re delivering a brand new Activity monitoring with vastly improved monitoring capabilities.

Available by default to askiavista Administrators, it will enable them to monitor: surveys, users, groups, companies, servers, errors, as well as the different actions and types of analyses that their end-users are running on the platform. Furthermore, for those who are administering multi-server askiavista instances, the ability to see statistics per server(s) will further improve your ability to manage performance with survey and user loads, as well as plan for maintenance or further server provisioning to scale up.

Check out the following screenshot to get an idea of the information you can expect to see on your server:

AskiaVista Activity monitor

And the good news doesn’t stop here… We decided to enable all these new Activity monitoring capabilities in the API, which means developers can include these Activity statistics in their web applications and dashboards!

For a full overview of the options available for the Activity monitoring please refer to the specifications; developers can refer to the updated API documentation.

Another area we’ve worked on in is load-balancing for multi-server architectures. When an end-user logs in, askiavista can now “automagically” assign the user’s session’s analytical work to be handled by the “best” AVS-server available in the pool. Basically, askiavista monitors the work-load of the servers it has available, and will assign a user session’s analyses to the server which at that point in time happens to be the least solicited, and thereby significantly improve the response time for returning those analyses results to the user.

Finally, brings many new features, and various bug fixes (see our version history for full details)

  • Added support for Nested Edges
  • Added support to pick-up a question’s Long caption when the Short caption is empty
  • Added support for dynamic Universe captions for ??U??
  • Added a select|deselect all button in the Create filter / response window
  • Added the option Appears like a stat calculation for Calculations by script
  • Added a place-holder page which is displayed when accessing deleted Portfolios
  • Added support to show Raw Data for Date variables
  • Added a new Activity page to monitor application usage statistics (accessible via the API)
  • Added support to set a Survey’s Properties’ default Level to: {Row level} or {Column level}
  • Added a warning message when switching from AskiaScript‘s Advanced mode to Assisted mode
  • Improved fail-over and load-balancing features for AVS farming
  • Improved Calculation by script to show a Column total for a variable outside the Level (Wave), ie. return the Interview Level Column total
  • Improved Number formatting, by ensuring it is not applied on Significance and Column Significativity
  • Improved support for Cleanup scriptssearch & replace functionality
  • Updated the URL-link from within askiavista to our online help documentation
  • Updated askia.config documentation
  • Upgraded LDAP SSO from v5 to v6

Of Askia Scripts and Functions

Introduction: What are Askia Scripts for? Or should I say what are their function?

AskiaScripts were designed to evaluate conditions within a survey – at first to branch the survey and then to set values to (often dummy) questions. They needed to be easy to write (and re-read!) and the user should know at creation time if the script was going to succeed or not.

The needs to improve AskiaScripts came as our clients’ surveys became incredibly complex – and that we used our language to produce our ADC.

Lately, AskiaScripts have been used to run very complex routings – like the post-codification of open-ended responses. We had a request to optimise a routing which had hundreds of lines…

AskiaScripts are also used in Tools to verify the quality of data at the end of collection. It’s here that the demand of functions came loudest where there is a need to norm the way straight-lining is evaluated for grid questions for instance. Here again we have seen scripts which have thousands of lines.

Finally, AskiaScripts are also used in Analyse to achieve increasingly complex calculations on the fly – and aggregating data while being at interview level.

From the feedback we received, we believe 2.0 is a success although the in-take has been slow (even internally).

I believe AskiaScripts will be used for weird custom adaptive conjoint, very complex calculations at run-time (segmentation) – I think it will also be used in defining and running super portfolios at a later stage.

Let’s summarise what the core values of AskiaScripts are – knowing they could be antonymic:

  • Simplicity
  • Adapted to survey research
  • Reliable: minimise the likelihood of runtime errors
  • Powerful: the competition often uses JavaScript (which does not have the 3 previous points)
  • And finally extensible – by Askia and by users

Functions: extending Askia Scripts

Rather than us adding functions whenever they are needed (which will still happen), we have decided to let users create their own functions. Teach a man to fish and you have saved yourself a fish.

A function is a piece of code that you can call with different parameters.

By default, the parameters of a function will be passed by value for our basic atomic types: numbers, strings, and dates. The arrays (and all complex objects) will be passed by reference.

Script Value Reference screenshot

If we want to change the way the parameters work, we can use the keyword ByVal or ByRef to force passing the parameter by value or by reference respectively.

Script By Val By Ref screenshot

Let’s talk about scope, baby

Scopes of variables screenshot

A scope defines where a variable is available.

Variable1 is available throughout your script. Referring to Variable2 will generate an error if it’s after the Else statement.

AskiaScript hit the same problem that most scripting languages have had (JavaScript, old VBA, … ). Every variable created is global – unless it’s within a For or an If – or a function.

This might not be a problem when you write a routing condition. It will be if you write an Adaptive Conjoint or a full-on survey analyser. You will need to remember which variables you have already used and name them differently and it will make it very hard to re-use code (the holy grail of any programmer). It also makes IntelliSense (automatic code completion) absolutely unusable.

Every language came up with a different solution to that problem. The original 1960 languages had global variables. Then functions were invented (with parameters passed by value or by address). Then classes and name spaces were invented. JavaScript went another way – it used nested functions to make sure that variables (and sub-functions) were not visible everywhere.

To be or not to be typed, that is the question…

Any variable or method in Askia is strongly typed – this means that at compilation time, we already know the type of the variable. This allows us to know if you can use a method or not for every object.

For questions, this means that we we know that Gender.Value is a number (1, 2 or DK) and that FavouriteNewspapers.Value is an array of numbers.

But if we have a function that takes a question as a parameter, we do not know the type of its value: it could be a number, an array of numbers, a string or a date…

Script Typed Question screenshot

Within the function, we say that the question is anonymous. And we have defined its Value to be a Variant. A variant is an object whose type we only know at run-time. For this, you have a few properties that you can use to convert a Variant into something more useful.

A variant has the property InnerType which indicates what it holds. You can convert any Variant into something else with the following methods: ToNumber(), ToString(), ToDate(), ToNumberArray().

Script Variant To String screenshot

Mods rule!

After a lot of internal discussion, we have decided to define Modules – or name spaces. You will be able to put together a set of variables and functions together. By default – and unless you specify it – these variables and functions will not be accessible from outside of the modules – in Object-Oriented Programming, this is called encapsulation.

You will be able to make some of the variables and functions available from outside the module – they will need to be prefixed by the keyword Export.

To clarify everything, let’s have some sample code:

Script Module screenshot

Inside the module, you can refer to the variables MaxAnswers and Pi from every-where. And you can call any function defined in there.

Outside the module, you will have to write SampleModule1::DoTheCalculation or SampleModule1::MaxAnswers to access the public members.

The default way to create a module is with Module XX / EndModule. You can either include the definition of your module in your condition script OR write it in a file that you add as a resource. These files must have a .asx extension (Askia Script eXtension). To use a module in a routing, you need to call Import + name of the module.

Script Import Module screenshot

Note that a call to SampleModule::PI or SampleModule::DoTheCalculation would return an error.

When Import SampleModule1 is called, all the code which is outside of the function will be run – that is everything in Initialisation a) and Initialisation b) in the example above.

AskiaScripts evolve all the time… and we might create a function which conflicts with a user defined one. The user defined one should still work (and be called) once the new version is released – back compatibility is important.

One side effect of what we have decided to do with modules is that variable declared in the main scope will be global in a whole script if modules are not used. We are hoping we won’t regret this in the future but the aim of AskiaScripts is not to build full on applications… yet!


Functions and modules will be available in 5.4.5 – released in askiafield in February 2017. We will – at a later stage – introduce newer concepts – true OOP, lambda functions. Imagine two instantiated similar modules, it’s pretty much like two objects! We might have something like Dim myObject As Module1 somewhere down the line.

I also believe that we will like to add methods to Askia objects: example Array.RemoveDuplicates().

Script Remove Duplicates screenshot

Note the possible keywords Extends and This (should we call it This or Self?)

But in the meantime, what we have added should make most advanced users happier. We’d love to hear what you think and you suggest what we do next.

Quota: sticking to the script

Nobody likes quota. They have the off-putting echo of a well-wishing community reluctantly leaving Apartheid behind. If researchers mention quota, it’s because you did not hit the targets. If a financial director mentions them, it’s to tell you how you went over and blew the budget. You do not like quota – and us, programmers, well, it was never our favourite part of the job.

But with askiafield 5.4, we have put that behind us and made quota sexy. We have rebuilt the quota interface and the quota distribution engine.  Upgrading an interface – although time consuming – is rarely a problem. Well, we made it look cool which was quite a bit of work.

Changing the entire quota engine is not something that one should approach lightly. We did it with extra care: we put together hundreds of unit tests (where we predict and verify the output of code) and integration tests (where a full automated run of CCA is monitored and the results analysed).

This refactoring had a few goals:

  • Simplify interface(s): quota definition and the quota monitoring could be done in the same window
  • Add functionality: multiple questions, numeric, grouping responses, remove all limitations on the size of the quota tree
  • Expose through an API: the quota can be defined and monitored from a web interface – or automated from an external system (like Platform One)
  • Clarify quota scripting

This article does not focus on the actual functionalities of the quota – they are documented here – but on the impact of scripting quota through routing.

Why script quota?

Scripts are not usually used for screen-out quotas. These are usually dealt automatically (by the dialler in CATI or by the automatic settings in quota). You want 500 males in region X – once you have them, the interview is simply terminated.

Typically you need script when you want have to take a decision about which concept(s) you want to test. You first ask which ads they have seen and you decide to randomly pick 2 of them and question about them.

Ideally you want to select the ones that are the least filled – the ones furthest away in counts or lowest compared to the target percentage. And you might have weird priorities to take into account (always test your client’s brand against another one, etc…).

The rules can be complicated but we have provided simple functions for this.

5.3: the unbearable weakness of strings

In 5.3, you had the possibility of querying the state of the quota by using IsQuotaFullFor, QuotaToDo, MaxQuotaToDo, and AvailableQuota.

It did the trick for a while but there were problems:

  • It was dependent on a string (e.g, QuotaDoTo(“Region:1; Product”)). It was easy to spell it wrong and only realise that you had misspelled a question near the end of fieldwork.
  • It assumed you knew your quota tree – if you had not nested the Product within the Region (or decided to relax the rules near the end), you would get the wrong result.
  • The returned result was only looking at one quota row at a time.
  • The target counts were not taken in account to prioritise your selection.

Quota in 5.4? Sorted!

Enter 5.4 – well 5.4.4 really. We have introduced new keywords: they are methods of questions instead of functions. In other words, you write something like Gender.AvailableQuota() instead.

  • AvailableQuota: returns an ordered list of responses for the quota which are still open. The ordering is done according to the count: the first element is the response where the highest number of interviews are to be found.
  • AvailableBalancedQuota: Same as AvailableQuota but the ordering is done by the difference between targets and observed.
  • QuotaList: Same as AvailableQuota but all responses are returned (even the one ones over quota).
  • BalancedQuotaList: Same as AvailableBalancedQuota but all responses are returned (even the ones over quota).

If you want to specify some additional information about the tree you can: its works like this: Product.AvailableQuota (Gender: 1, Region :3). This means no more spelling mistakes would get in the way as the compiler would pick on the fact that you specify an incorrect question.

Another thing: if the gender and the region are specified in the interview, you do not need to indicate them but you could get information about another region for instance.

But from now on, if you need to pick 2 products to test and regardless of the nightmare of a quota tree you may have defined, you should simply write:

Dim arrProductsToTest = Product.AvailableBalancedQuota()

Return {} + arrProductsToTest[1] +  arrProductsToTest[2]

Back compatibility – what is it good for?

You know we care about it. We really wanted it to make sure that scripted surveys would work as usual. But we wanted to ensure that the old weaknesses were gone. So all previous quota functions will work with the old string… but we also took the liberty of sorting the result for your convenience… and to check the whole quota tree in case a priority at top level interfered with one of the nested quota.

So we have back-compatibility but not quite: it’s simply better and more flexible – and when the old quota tree was failing, you will get the expected results. We hope you agree.

Quota categories

The algorithm to know if a quota target applies to a given interview is actually quite complicated but we are going to explain it as simply as we can… feel free to skip this (and trust us).

Let’s imagine we have a quota tree like:

Root TO DO
1 Male 50
2 Product A 40
3 Product B 0
4 Female 40
5 Product A 15
6 Region1 10
7 Region 2 5
8 Product B 15


Let’s look how we run the following Product.AvailableQuota (Gender: 2) call:

  1. We will look for the availability of the first modality (then second…) – so first we will look at Product A.
  2. We count the number of targets we need to attain: one for the question object and one for each of the questions passed as a parameter (Product.AvailableQuota (Gender: 2) would mean 2 targets, Product.AvailableQuota (Gender: 1, Region 2) would mean 3).
  3. We create a quota category where we set the Product (according to step 1) and we also set the parameters
  4. For all questions used in the quota, we look in the interview to see if we have data and we set it in the category.
  5. We are going to iterate through the tree – starting at the root
  6. When we hit a response for a question that’s defined in the quota category, we either explore the sub-tree or skip the branch. For example, for Product.AvailableQuota (Gender:2), when we arrive at row 2, we would skip the entire tree and continue at row 4
  7. We count the number of questions we have found which are part of our targets (as defined in step 1). If we are looking for product A in Product.AvailableQuota (Gender: 2) we would hit that target on row 5
  8. Once we have hit the target we add all the sub-quota rows. So for product A in Product.AvailableQuota (Gender: 2) we would select the following rows 5,6,7. All the quota rows? Not quite! If the region 1 was set in the interview, we would not add row 7
  9. Once the whole tree is scanned, if we have selected 0 rows, we remove one of the targets (like Gender or Region in the Step 2 example) and start again at Step 2
  10. We would go through all the selected rows, and we would return the To Do with the most constraining value (the maximum of the minimum To Do and the minimum of the maximum To Do). Yes you might have to re-read that last sentence.
  11. Do the next response (product B) and re-start at Step 1)

There is added complexity for groups… if a response is in a group and has no targets, we use the first parent group who has a target.

If a response does not have a target, we assume that the To Do value is 1.

That’s it folks!


We think that AvailableQuota and AvailableBalancedQuota should cover 99% of the scripting needs. We’d love to have your feedback on this of course. We might later introduce a quota object where you will be able to query the actual min and max target or the priority… let us know when you need that and how you think it should work!

New from the vault

If like us, you’ve been busy spending your time working (building surveys, helping clients, upgrading software, reading logs, …), you may not have had a chance to keep up with the latest tips & tricks from our Help Centre. Feel free to have a flick through our latest picks:

Design & Analyse FAQs

Your first steps with Askia’s range of software are now even smoother! The askiadesign & askiaanalyse FAQs will help cover your needs when start building your first questionnaire or analysing your first survey results.

Askia analyse FAQ screenshot

Access the Design FAQ and/or the Analyse FAQ to take a look!

How to import / export Askiavista projects

Upgrading your Askiavista server environment? Using a staging server before deploying your Askiavista projects to your live environment? Look no further, this article walks us through the simple steps of using AskiaVista Tool to import and/or export Askiavista projects from one server to another.

AskiaVista Tool screenshot

This nifty application allows AskiaVista administrators to manage the import / export of Vista project related components: Portfolios, Filters, Weightings, Profiles, Calculated variables, Chart templates, Table styles, …

Check out the full article for more details.

Web survey link encryption

As from version 5.3.5, we’ve had the ability to send survey links with URL encryption / prettyfying. Up until now, encryption could only be achieved manually and was only reserved for StartSurvey link type. We have therefore created a script which allows you to encrypt survey links by batch, based on a CSV file. With this script, you can encrypt many URLs at once.

Therefore, a standard DoExternalPanel link with some extra parameters looks like:

And the encrypted version would return a URL like:

Vista API tutorial

This article is a followup to the first API tutorial, it showcases a series of bite-sized examples to highlight important features of the Vista API.

askiavista API tutorial illustration

This extensive tutorial covers all the basics for Vista API development through 11 examples that feature such concepts as: displaying a cross-tab via the getPages method, securing your dashboard with a login page, grouping multiple requests to improve load management and client-side performance, retrieving a list of questions and/or responses via the askiavista.getQuestions and the askiavista.getResponses methods, adding a dropdown menu to your dashboards, … and many more!

Using Amazon S3 for resource uploads for Askiaface on iOS/Android

Using an external service to automatically upload your survey’s media captured on your iOS and/or Android devices is a very convenient way to centralise all such assets and a great method of securing all such resources.

This article covers all the steps from setting up your Amazon S3 account, checking all S3 settings and prepping your survey’s media capture questions in order to automate the upload of all media content.

Read the article for the full picture!

Big Data with just one digit

I know some of you think I only attend conferences for the free food, the drinks and the social scene. They are right – no point in me denying. But in-between parties, I tend to heal my hang-overs in the semi-darkness of conferences.

Coming back from the ASC and ESOMAR, there are a few new tendencies in the Autumn/Winter MRX fashion. Forgotten MROC, gamification, mobile research, Big Data – that’s so last year… it’s main stream, dude.

These days the cool kids talk about Automation, Data fusion, Artificial Intelligence… and the Tinderisation of research.

Automation – if you’re an assiduous reader of this blog, you know it’s coming and fully available at a software provider near you. I am not going to ramble anymore about this for now but watch this space.

Artificial Intelligence is the next big thing in Research. It has been successfully used to post-code and (less successfully) to measure sentiment in open-ended questions and tweets. It’s also good at recognising logos and objects on pictures and films, building accurate predictive models and beating me at Go (well the latter is not news and not strictly research)… but now AI is also used to merge data. There is an inconvenient truth about convenience panels… and MR data in general. If your survey is 40 minutes long (or 20 minute on a mobile device), the resulting data will be awful: the participants are either too unusual to be trusted or they don’t care because they are not incentivised.

Although there is no evidence of the length of surveys diminishing (according to SSI), every-one agrees that it needs to happen. One way is to… well… make up data. You do not ask all the questions to every-one and you copy the data around for similar looking interviews – this is called ascription (it has been around for some time). For you stat geeks out there, it’s traditionally done using the Mahalanobis distance. The new thing is to use machine learning to infer missing data. Mike Murray and James Eldridge from Research Now had a great paper about automating the splitting of surveys in chunks from their XML definition. Annelies Verhaeghe from Insites and John Colias from Decision Analyst also presented two great papers about enriching surveys with open big data.

And finally after the uberisation of research which has seen the arrival of monkeys, gizmos, nuts & limes, the new trend is the tinderisation of research. Millenials (there were boos whenever the term was used – and that was every 47 seconds) take decisions with their index. Left means no, right means yes… and survey research should follow. It’s easy to understand, fast to answer and it’s your system 1 talking… And the index is not just for decisions… the navigation of a survey should be done through flicks of the index. Almost being a millennial myself (the NSA has the names of those who are laughing), I see the attraction… and we are soon to release something code-named Jupiter that might just turn (or keep) Askia the best software for the Generations Y and Z.

Askia is changing: new digital identity

As initiated a couple of months ago in our “Askia’s mission, vision & values” blog post in which we mention the elements we have been processing over the past year (Askia’s 20th birthday!): our team has gathered to help (re)define our core statements.

In order to help us and you our clients, partners, friends, … better feel the revival of our aspiration as a business, Askia’s visual identity has undergone the same process over the past year.

We examined, reexamined, broke, rebuilt and finally achieved in evolving our brand identity without ever losing sight of our roots. From our logo to our brand colour palette, from our application icons to our print material, … we have completely redesigned our visual language in order to better mirror who we are now and where we are heading.

We have therefore began to rollout this new identity throughout our digital presence: website, blog, help centredocumentation.

Our new website

Askia website screenshot

Our new help centre

Askia help centre screenshot

Open Ends

Askia's Open Ends blog screenshot


Askia user documentation screenshot


As you can see, we have already achieved quite a lot this year! But there is still more! We’ve already completely overhauled our mobile face-to-face Android app, our dev centre will be updated in the coming weeks, … Keep an eye on us, much more will be coming out in the next months!

Askiaface for Android in a material world

Askiaface for Android has just been updated to version 3.3.0 and this major update brings some long awaited features!

Our mobile face to face app for Android devices is now finally compliant with smartphones as well as tablets:

Askiaface for Android on Nexus 6P screenshot
Askiaface for Android on a Nexus 6P

The user interface has been completely redesigned based on Google’s Material design principles in order to provide a seamless experience with the modern Android environment:

Askiaface for Android on Nexus 5X screenshot
Askiaface for Android on a Nexus 5X

Of course, the application remains optimised for high density display tablets and integrates Askia’s new identity style guide:

Askiaface for Android on Nexus 7 screenshot
Askiaface for Android on a Nexus 7

This update will allow your interviewers to access all our mobile face to face features with less hassle in a completely decluttered interface!

We have also updated geolocation capture by using Android’s latest GPS API in order to provide you with more precise geolocation could your devices be on cellular or Wi-Fi!

Download or update Askiaface for Android from the Play Store now!