Carp reference

Perl has a Carp module, that prints error messages from the context of the caller. This page gives an overview of the available functions in the module.

Apache mod_proxy environment variables

The mod_proxy documentation of Apache 2.2 describes some environment variables to influence the behavior of mod_proxy. However, these environment variables are not available in every version of Apache 2.2.

Installing msvcp60.dll

To get Adobe Acrobat running under Wine I needed the DLL file msvcp60.dll, and I found out that it is contained in the Visual C++ 6.0 run-time by Microsoft. Installing this fixed my problem.

How I handle spam

If you have an e-mail address, you receive spam. In this article I describe three ways I handle spam.

Composite C1

Composite C1 is a free open source .NET-based web content management system. This page describes how to accomplish some tasks, especially with regard to XSLT functions and data types.

Run custom tool on each resx file when building

When saving a resx file, Visual Studio automatically creates a corresponding code file for it. However, if you edit the resx file outside of Visual Studio, the code is not updated. This article demonstrates some ways to let Visual Studio create corresponding Designer.cs files for the resx resource files just before building the project.

PHP SOAP Client with timeout

If the webserver serving the WSDL is down, the SoapClient constructor will block for a minute and only then throw a SoapFault. This article will explain common problems and how to reduce the annoyance to the user.

Design and code inspections to reduce errors in program development

Substantial net improvements in programming quality and productivity have been obtained through the use of formal inspections of design and code. Improvements are made possible by of a systematic and efficient design and code verification process, with well-defined roles for inspection participants. The manner in which inspection data is categorized and made suitable for process analysis is an important factor in attaining the improvements. It is shown that by using inspection results, a mechanism for initial error reduction followed by ever-improving error rates can be achieved.

Strings in PHP

In PHP kan je stukken tekst gebruiken als parameter of waarde voor een variabele. Omdat een tekst bestaat uit een boel letters achter elkaar, heet dit een tekenreeks of een string. Dit artikel legt uit hoe je strings maakt.

Sniffing a HTTP session

To diagnose problems with HTTP, it is useful to see the whole HTTP transaction. This article describes some methods for obtaining the HTTP conversation.

Code smell of abstract classes

If your software project has a lot of abstract classes, this may indicate that there is something wrong with it. Many abstract classes may indicate premature generalization and a too complex inheritance tree. In this article I explain these two problems and the alternative to abstract classes.

Firefox XML search broken

Firefox can show XML files, nicely indented and with pretty colors. However, searching text in an XML file does not work correctly. When pressing Ctrl-F and searching for some text which is present in the XML file, Firefox will report it has not found anything.

Date pitfalls

Time and date are not simple concept, and most of the time you realize that after you have done some simple assumption and your code turns out to be buggy. This article explains some common pitfalls when handling dates and times.

Ataxx for Linux

The game gataxx was removed as of gnome-games 2.17. However, I get the impression that there are some people who are still interested in an ataxx implementation for Linux. Therefore, I created a deb package of gataxx from gnome-games 2.16.3.

When preg_replace just isn't enough

Sometimes, you want to replace a word in a string with another word. You may want to replace all swear words with more neutral statements, replace BBCode tags with the corresponding HTML tags or use placeholders for data in a templating system.

Getting parameter names in PHP

In a function, it is difficult to obtain the name of the variable which the caller used. In this article I show a way to get it using debug_backtrace and reading the PHP source file.

The Programming Languages LISP and TRAC

The handout "The Programming Languages LISP and TRAC" by W. L. van der Poel, Aug. 1972.

"The purpose of these lectures is to give an approach to some basic aspects underlying many programming languages. [...] For demonstrating these concepts I shall make use of two particularly simple languages, both used in a conversational way: LISP and TRAC."

Circumvent password expiry in Windows

In Windows, administrators can configure the system to let passwords expire after a certain period of time. This expiration policy can be easily circumvented by changing the password multiple times and then changing it back to the original. This article shows some code which does that.

String performance in Java

There are various String classes which can be used to concatenate strings. In this article, we look into the performance of the various ways to concatenate strings.

Connecting Wireless Sensor Networks Using Gateway Nodes

Wireless sensor networks consist of many radio-equipped nodes which are limited in resources and power. Nodes that can be reached by radio, possibly through multiple hops, form one network. This master thesis presents a way to connect two or more networks together, using gateway nodes that have a wired connection with each other. This way, it appears to the nodes as if the two networks have a radio connection. We also show through simulations that the system we propose gives a good connection between the networks, but breaks the working of synchronous protocols.

Zend PHP5 study guide

The php|architect's Zend PHP 5 Certification Study Guide is supposed to learn you everything you need for the exam for Zend Certified Engineer.

Scalability of routing protocols in wireless ad-hoc networks

With wireless devices increasing in popularity and ad-hoc wireless networks getting larger, scalable routing protocols are needed. There are already many routing protocols for ad-hoc wireless networks, but very few of them were conceived with scalability in mind. This paper will provide an overview of various routing techniques and consider their scalability. We will show that only the HSLS protocol is scalable without imposing trivial restrictions on the nodes.

Code Propagation in Wireless Sensor Networks

Wireless sensor networks consist of many radio-equipped nodes which are limited in resources and power. After deployment, these nodes may need reprogramming to fix bug s, add features or make the nodes suitable for another task, among others. Because it may be imprac tical to physically visit these nodes to reprogram them, several methods have been proposed to repr ogram nodes using data sent over the network. This paper gives an overview of methods to propagate code through the network and to reduce the size of this code.

Automatic downloading in Limewire

Limewire is a P2P program for downloading files. I made it possible to automatically download a list of files. The modification makes it possible to load a list of searches from a file. Limewire will do all these searches and download the best match for every search. This way, it effectively downloads all files in a list.

Suspending a process on high load

Loadmin is a program I wrote which suspends a process when the load average of the system raises above a certain level and continues the process when the load gets lower.

Bootstrapping Gnutella Using UDP Host Caches

In peer-to-peer networks, like Gnutella, an overlay network is used where nodes connect to each other. Not all nodes in a network support the overlay network, so a joining node has to have a way to find nodes already in the network. Finding good nodes and connecting to them is called bootstrapping and is a problem in modern peer-to-peer networks.

Presenting an extensive list of settings to the user

This paper addresses some problems which show themselves when a extensive list of settings or options is shown to the user of a program. It lists some examples and tries to identify the problems in those examples. Furthermore, this paper tries to suggest some recommendations to keep in mind when developing the "settings" part of a program.

Corporate funding of research at universities

Modern research requires an ever increasing amount of money. While a couple of centuries ago one could still invent light bulbs and steam engines in the backyard, most of todays research requires big investments for laboratories, supercomputers and other expensive equipment. In these economical dim times, governmental organisations are less keen to invest in research. Private companies can come to help: they can invest in research projects they find interesting, or, financially rewarding. However, this comes at high costs.

Ethics in science

The Internet throws up a number of serious ethical issues at just the time when ethical resources are few and far between. Various reasons for this state of affairs are discussed, several of which show a continuity rather than a disjuncture with other communication and information technologies (CITs).


When I had a programming exercise at the university a few weeks ago, the task assignments where not as clear as they had to be and I had a lot of free time while I was in the computer room. It was then that I discovered gataxx, the ataxx game for gnome. After a few tries I was able to win of the computer, even with the highest level. A friend of me suggested that I looked into a better algorithm for ataxx, so I did and this document is the result of that.

Veilige scripts schrijven

Om u te wapenen tegen slecht geschreven scripts zal ik hier een poging doen uit te leggen wat er mis kan gaan bij het schrijven van een script. Het eerste deel gaat over alle scripts, verderop worden de gaten die specifiek zijn voor CGI scripts behandeld.


Paging staat toe om je harde schijf te gebruiken alsof het geheugen is.

Een gebruiker chrooten bij het inloggen

Deze HOWTO legt uit hoe je je systeem moet configureren zodat een gebruiker of een aantal gebruikers in een chroot-omgeving komen zodra ze ingelogd zijn. Mogelijke toepassingen hiervan zijn FTP, onveilige programma's, shell access.

Chrooting a user during login

This HOWTO shortly explains how one can chroot a user during login. This means that after the user has logged in, he is restricted to a certain directory. This directory is his new root directory. See the chroot manual for more details about chroot. Also available in Dutch.

Modules in Apache

The Apache server is build out of several modules, which are pieces of computer code. By combining these pieces, you can create your own server and configure it for every detail. Many modules are installed by default, such as the mod_dir module, which serves a nice starting page instead of the directory contents.