Port forwarding bij Tele2

Als je internet afneemt van Tele2 en aan port forwarding wilt doen, dan kun je op het Tele2-forum voldoende informatie over allerlei instellingen vinden. Echter, als je een ‘nieuwe’ modem hebt – de Comtrend VI-3223u – dan moet je bij het port forwarden aangeven op welke interface de regel van toepassing is. Die optie was bij de oude modem niet zichtbaar, dus dat kan voor enige verwarring zorgen.

Kies bij het opstellen van de regels – onder het menu-item ‘Advanced/NAT/Virtual Servers‘ – steeds voor de interface-naam waarin ‘PPPoE’ voorkomt. Helaas is die optie niet standaard geselecteerd, dus vandaar deze post.

Library and require in R

So, what’s the difference between the require and library functions in R? Yihui Xie explains it pretty clear: require() tries to load a package, while library() actually loads a package.

This means that require returns true if it succeeded and false if it failed. Library, on the other hand, generates an error if the package could not be loaded, instantaneously terminating the script. This is more desirable, because such an error is very traceable and more easily solved. Require simply returns false in this scenario and an error will only occur at the point the package is called for.

Is require therefore obsolete? No, it isn’t. When you want to use the success (or failure) of loading a package in your script, you can only use require. In most cases, however, library will be the better choice.

Reference: http://yihui.name/en/2014/07/library-vs-require/

Dynamic character counter in JavaScript

For a new textbook on JavaScript programming I wrote a small function to count the characters in a textarea (or another input element). The function displays the characters left (max. characters minus characters used) in a corresponding span element – just like Twitter does when writing a tweet.

The function showCharacterCount has three parameters.

  1. The textarea (or input element) to be counted, on which the keyup event must be bound. This way, the function will update the number of characters left on every keystroke.
  2. The span element which will contain the number of characters left. Contrary to common practice, this argument must be a DOM object and not a string referring to the id of an object. Although other ways of doing this are available, this way satisfies the purpose of the example in the textbook the best. The reasons for this are consistency in argument handling and predictability.
  3. The maximum number of characters allowed in the textarea (optional). If this argument (integer) is not supplied, it will be set to the default of 150 characters.

The code (HTML, CSS, JavaScript) is supplied below. You can find a working example of the code here: http://www.reuneker.nl/files/code/character-counter/index.html.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Character counter</title>
		<style type="text/css">
			*, body {
				font-family: Arial, sans-serif;
				font-size: 1em;
			}
			h1 {
				font-size: 2em;
			}
			textarea {
				width: 80%;
				min-width: 400px;
				max-width: 600px;
			}
			label {
				display: block;
			}
		</style>
		<script type="text/javascript">
			//count the characters in a textarea and write maxLength minus the number of characters to the corresponding span section
			function showCharacterCount(textarea, span, maxLength) {
				if (maxLength === undefined) { //if maxLength parameter is not defined, set it to 150
    				var maxLength = 150;
    			}
				var messageLength = textarea.value.length; //get length of textarea value
				span.innerHTML = maxLength - messageLength; //write to the span's innerHTML the result of maxLength - messageLength
				return True; //not entirely necessary, but good practice
				}
			window.onload=function(){ //on the onload event...
				document.getElementById("message").onkeyup = function() { //add keyup event listener to a textarea
					showCharacterCount(this, document.getElementById(this.id+'Counter'), 140); //and on the event, call function showCharacterCount using arguments textarea (DOM object), message span (DOM object), and an (optional) max. number of characters (integer). If last argument is not provided, the function defaults to 150 characters.
				};
			};
		</script>
	</head>
	<body>
		<h1>Character counter</h1>
		<form action="#" method="get">
			<label for="message">Message</label>
			<textarea name="message" id="message" placeholder="You message in max. 140 characters..."></textarea>
			<p id="messageCounter">140</p>
		</form>
	</body>
</html>

Gespeld voor docenten

Op Gespeld.nl zijn er extra functies beschikbaar voor docenten. Zo kun je als docent klassen aanmaken en de vorderingen van je leerlingen volgen.

Klassenpagina

Op de klassenpagina kun je per leerling zien of hij/zij wel regelmatig oefent en met welke categorie hij/zij moeite heeft. Ook kun je als docent de laatste tien antwoorden van je leerlingen bekijken en deze bijvoorbeeld bespreken in de klas.

Ben je docent en wil je gebruikmaken van de bovenstaande en andere functies? Schrijf je dan in en vink het vakje ‘docent’ aan.

Hoe wordt er gespeld op Gespeld?

De website Gespeld.nl is sinds januari 2014 online en er hebben zich inmiddels een kleine 500 mensen ingeschreven.

In het gestapelde staafdiagram hieronder zie je in welke categorieën de meeste fouten worden gemaakt. (Of, positief geformuleerd, in welke categorieën de meeste goede antwoorden worden gegeven.) Het diagram is slechts een eerste en zeer grove weergave van de beschikbare data.

statsGespeld19-04-2014

In het diagram (klik voor een vergroting) is vrij snel te zien dat de meeste fouten worden gemaakt met leenwoorden in de verleden tijd (updatete, langlauften, freelancete), maar er zijn veel interessantere en gedetailleerdere statistieken te genereren. Zo houdt de site bij welke woorden binnen de categorieën het moeilijkst worden gevonden. Zonder al te veel moeite kun je bekijken of de hypothese klopt dat werkwoorden waarvan de stam eindigt op een d (word, rijd, begeleid) meer fouten opleveren dan andere werkwoorden. Ongetwijfeld klopt dat – er is immers al aardig wat onderzoek naar gedaan – maar het is altijd de moeite waard om zoiets nog eens, in detail, te checken. Ook is het mogelijk om relaties tussen (persoons)kenmerken en resultaten in kaart te brengen. Spellen ouderen beter dan jongeren? Is er een relatie tussen spelfouten en provincies, opleidingsniveau of moedertaal?

Hoe meer mensen de site gaan gebruiken, hoe beter dergelijke vragen te beantwoorden zijn. De scores in het bovenstaande diagram lijken trouwens vrij hoog. Wellicht heeft dat te maken met het hoge percentage docenten dat nu meedoet. Ik ga ervan uit dat die bovengemiddeld scoren (ook dat valt uiteraard te controleren), maar misschien spellen we allemaal gewoon beter dan we denken. Het kan natuurlijk ook zo zijn dat vooral mensen meedoen die het leuk vinden om met taal bezig te zijn. Daarvoor geldt, gok ik, hetzelfde.