Firstly, the tatool website should be your go to place to learn about tatool in great detail if you are wanting to get to grips with the source code to either modify the tasks provided here or indeed create your own. There is a number of tutorial videos/pages that they provide to get you up and running as well as example code. What I am going to describe here is a brief explanation of tatool, just enough to get you comfortable with using the tasks provided here. So, once again to reiterate if you are interested in learning more about tatool please go to their website, sign up for the forums, and have a go. What they have created is a very excellent tool that I have benefitted from greatly, the code I have written for these tasks is absolutely nothing compared to the framework provided by Tatool that allows me to more or less focus on coding the task itself and not having to worry too much about the really complicated stuff.

Why Java/Tatool?


As I mentioned on the homepage, the cross-os compatibility is the principal benefit to using Java to program these tasks. Part of my research during my PhD involved conducting experiments in schools. At each school I went to I had to make best use of the IT setup they had. I found that I encountered netbooks running Windows RT, laptops running windows XP or windows 7, or macbooks (which to be fair, always had a version of windows that could be run in parallel to OSX). In addition I conducted an experiment that involved adult participants completing working memory training at home using their own computers. And finally, some experiments were conducted in the computer labs in our department and the computers are running mac osx only. Therefore, you can see how for me, it is hugely beneficial to be able to use the exact same program freely between these different setups.

My first venture into conducting a large scale experiment using computer tasks I had developed was done using tasks programmed in python using the PsychoPy library developed by Jonathan Peirce at the University of Nottingham. I would whole heartedly recommend python/psychopy to researchers as a tool for creating research software. Python was an excellent introduction to learning to program (my only real experience with coding was coding in R/Matlab for data analysis) and PsychoPy has some excellent features as well as being excellently documented. However, I found that my python installations were much more fussy on the school computers, some days it would work and others it wouldn't. My conclusion is that I would happily recommend python/psychopy to fellow researchers if they were interested in developing a small bit of software and they had control over the computer setup they will be using. But in terms of having a task that I have confidence in deploying on just about any setup, java wins.

How it works


There are two contributing elements to running a task using the tatool framework. There is the source JAVA code, which is all stored inside the app (the executable .JAR file) and 'module' XML files. The source code is the bulk of the job, within the app is all the source code provided by the tatool developers plus the source code I have contributed. The app alone will do nothing however. Using the app you can load a module XML file, these files are essentially a set of instructions, it tells the app what bits of the source code you want to run for a particular task. We will get into this in more detail later. The take home message is that there is just one java application (in the form of an executable jar) that contains all of the code and resources. Small XML files can then be loaded in to the application to run the tasks.

Tell me more about these XML files...


OK, so the app contains all the source code that Java could possibly need to run any of the tasks I describe on this site. Within the app there are a bunch of java classes which are blocks of code that govern the program behaviour. There are a whole bunch of java classes that the tatool developers have created that deals with all the behind the scenes stuff as well as providing a workspace/helpful methods to the developer. And then there is a package of classes in there that I have written that utilise these helpful methods as well as my own methods to run tasks.

So what about the XMLs you ask! A module XML file is a sequence of instructions packaged up in a 'module' that is then presented in the app as an executable task. The type of things included in all task XML files are:

  • Which executables in the app do we need to use for this task? This will involve a number of helper executables that are part of Tatool as well as the task-specific executables. This could be a single executable or in the case of a complex span task it is likely going to involve two executables (one that handles the displaying of stims and recording responses while another carries out the processing phase).
  • How many trials you want to run.
  • Perhaps you want to run trials until a certain time limit is reached
  • Which status panels to present to participants (more about that here)
And then there are options that can be set in XML files that produce different behaviours that are task specific. I have tried to account for the most common variations in administration procedure to give users the flexibility with minimum fuss e.g. to be able to choose if you want span size of trials to adjust incrementally or randomly.