Jotpub – Minimalistic Language Tests Platform

I am happy to announce a new website project, following several months of development:, titled Minimalistic Language Tests Platform Jotpub is a website that enables anyone, from most modern devices, to solve, create, and share language tests, see the score and keep track of the solved tests — for free.


Jotoub logo (green circle with white JP letters in it)

The purpose of Jotpub is to be a simple, creative, open, non-obstructive and trusted solution for language practice by online tests. It is simplistic in design and idea — there are too many complex learning platforms and Jotpub is not trying to be one. It is open, so all interested visitors can solve tests and check their answers, and thus non-obstructive. It encourages creativity  by giving an opportunity to all registered users (the registration is free and necessary so tests could have an author) to make and share tests. “Trusted” means that the author (and the editor) pays close attention to the sources of the selected tests and texts, and that only checked, reliable, content is visible to learners. All in all, Jotpub an attempt to reach, educate, and help language learners (an their teachers). And, yes, it’s free.


Main features of Jotpub are focused on solving, creating, and sharing language tests. Solving is based on entering, checking, and revealing answers to “traditional” questions: fill in the blanks, true/false and multiple, with either one or several correct answers — try solving The Indefinite Article Basics or Articles from “Golden Bird” (a lengthy one). Creating is done on the website on a special page (Jotpub Test Maker) that uses a simple interface to create new language tests.  Sharing is made possible by publishing a page address (for now by using a third-party solution), and all authors can share the link to their tests.

How Language Tests on Jotpub Function

Fill-in-the-blanks - text and lozenges to enter answers
Fill-in-the-blanks, one of the questions on Jotpub

The language test are organized into  two main groups: by categories and tags. The categories follow a strict linguistic division, for example Grammar > Articles > All articles, while tags represent more loose, mixed, labeling (in the tag listings, the categories are tags as well). Users can browse the tests and then select one to solve. After entering the answers and clicking on Check my answers, the analysed test will appear, showing correct, incorrect and missing answers. Users can now redo the test, or reveal the answers (this option is available only when tests are first attempted).

If users are registered, their test is saved in Testbook,  so they can redo it later. Also, each listing has small symbols that show solved and attempted tests.

Jotpub has a nice printing style and only the relevant information for test solving is shown on the paper. You can copy it and share to your learners. You can also print solved tests.

Creating Language Tests

making multiple answers question on jotpub
Jotpub Test Maker – an example of creating a multiple select question.

The test creation is done in the Jotpub Test Maker — the page anyone can use, and the one I use to make all tests on Jotpub. After users register, they will be able to load the Test Maker  and enter their questions. Great attention was given to an attempt to make this as simple as possible. For example, to make a blank, just enter the sentence and enclose any word (or a letter) in square brackets ([like this]); for multiple select either one or several answers — this will render two types of questions.

The test are at first unlisted. This means they are not available to all users. After the test is checked it may be listed and visible to all visitors. However, all created tests can be shared if the test creator shares a link to it.

Further Plans For Jotpub

There are several plans regarding the future development of Jotpub. Some are focused on stability and optimization, and others on new features (particularly about statistics). For now, the  primary task is to see what users think abut the website, and what they would like to see changed, improved or added. You are invited to be one of the visitors to solve some tests!


FONRYE English Dictionary: Phonetic and Syllable Search

It’s not always possible to find a good searchable phonetic dictionary. That is why I created a free and open source program that searches phonetically transcribed words and filters the results against some basic rules. It uses BEEP and Moby Hyphenator II sources.

Download: FONRYE 0.3.3 (2.2 MB)

In this post: why phonetic dictionary search, what is FONRYE, download and search, settings and results, credits.

Why I needed a searchable phonetic dictionary

For several month I have been working on my M.A. in experimental phonetics. One of the prerequisites is an acceptable corpus. My work is about the English diphthongs. However, diphthongs have to be pronounced after voiced plosives and before voiced/unvoiced plosives, and the words containing diphthongs should preferably be monosyllabic.

Making a corpus is not an easy task and it involves a painstaking search for suitable material. I had no searchable phonetic dictionary of any sort (a version of Macmillan Advanced Dictionary refused to work). It was a pure luck, then, to come across a paper where the bibliography listed one interesting source:  University of Cambridge public FTP server. That is where I found BEEP and MH2 and decided to compile my own searchable dictionary, hopefully usable for the making the corpus.

What FONRYE is, and what it is not

FONRYE (named after fonetski rječnik in Serbian) is a very simple program (or script, if you like) written in Python 2.6. It is a specific piece of software I created for personal use: to search for diphthongs in a phonetic context. It does not have any fancy search rules or regular expression syntax. The plan was to use regexp, but it was very slow to run – I guess it can be improved if needed. So, please bear in mind that it was not planned for releasing: the code may contain strange comments, bad spelling etc.

Its settings are contained in the script itself, in 4 lines of code, which will be explained later. Here’s an example:

before = ('m', 'n', 'r', 'l' ),
after = sounds['voiceless'] + sounds['voiced'],
diphthongs = sounds['diphthongs'],
syllable = 0

The user enters desired search conditions, executes the program, which then saves the results in a folder, accompanied by a short info.

FONRYE phonetic dictonary search
FONRYE phonetic dictonary search, code view

How to use FONRYE

  1. On Windows/Mac: Download Python, but a version lower than 3.0. The version 2.6 is preferred. On Linux: You already have Python installed, but make sure you have an “old” version as well (again, prior to the version 3).
  2. Download FONRYE files, and unpack them. Please make sure you do not delete ‘results’ folder or the program will not work. On Windows go to Start menu and find IDLE inside Python folder. On Linux: Use any plain text editor which supports code editing, such as gedit. Or, install Python IDLE from your OS repository. Edit file, enter your settings and save the file. Finally, run the program (double click or press F5 in IDLE).
  3. The program will start the search, and after it finishes the results will be in results/fonyre_results_n, where n is the search counter.

Settings and results format

In the step 3 above you opened file. Here is how to enter the “settings”. First, locate these lines:

before = (),
after = (),
diphthongs = ()
syllable = 0

Do not modify anything except content inside the brackets and syllable number (that is, unless you are familiar with programming). By the way, syllable = 0 means words with 1 syllable, syllable = 1 with 2 syllables etc. Enter your phonemes in the brackets. For example, the settings:

before = ('b', 'd'),
after = ('p', 't'),
diphthongs = ('ay',)
syllable = 0

…will search for all words containing diphthong ay (IPA: aɪ) if the diphthong is between b/d and p/t. After the search is done, go to ‘results/fonrye_search’ folder and locate search_info.txt (here is a vowel search info, a sample) – that is info about your search, including unique mark (ID) placed in all result files to keep track of the searches/results. The folder ‘files’ is where your searches are placed. For the provided sample search the program produced the following file/results:

# uniqueid-dzzic
BIGHT		b ay t
BITE		b ay t
BLIGHT		b l ay t
BRIGHT		b r ay t
BRIGHTS		b r ay t s
BY-PASS		b ay p aa s
DIGHT		d ay t

You can find computer phonetic code in phoncode.txt in ‘data’ directory or in the file beep-1.0-edited. Please enter only this plain phonetic notation. IPA is not applicable.


I could create and use this little project, and place it on the Net, thanks to two people who provided the core of the project: a phonetic dictionary and a hyphenation dictionary. The phonetic dictionary was compiled by Toby Robinson from Cambridge University Engineering Department;  Moby Hyphenation dictionary was created by Grady Ward. Both the projects were placed into the public domain in 1996. See Bibliography page for FTP addresses.

My credits are for some fast-writing not-so-good-looking slow Python code, which you are free to improve and share.

Feedback is very welcome!