Purpose of this website
I can make a website. That was reason enough for me to do it.
Some images don't load…
Some images are SVG. Google Chrome understands this, but Firefox and Internet Explorer didn't (fully) understand it at one point, and mobile browsers still struggle with it. I've created alternatives for some images. They don't look as good as intended, but the intention remains clear. If this is a problem, you've got outdated software. I respect the right to use a text-only browser, but then you will not see the lousy images.
I made an effort to make this page accessible for blind readers. I am not claiming a perfect result, but I hope that my use of structure helps screen reader software to do its job.
Privacy
I also care about the privacy of visitors to this page, no matter how few there are. If you visit this page, it will be included in the statistics if I so choose. I can then see how often each section is visited, and from which page visitors come if they access it through a link. I don't receive any more information, so I don't store it. The purpose of this is purely to track how many people visit and how they reach my page. I disabled this option back in 2012, but who knows, I might use it again someday. As of 2025, I have never turned it back on.
For every page that displays an error, a database stores the exact page, how many errors/warnings there were, the time, and the last IP address that visited this page. I only do this so I can place an IP block for strange access attempts (where I suspect hacking attempts). After I've examined this database for anomalies (which I do every few months), I clear it without a backup.
This site once used minimal cookies: when you adjusted the settings, they were stored on your computer. Two things were stored: "style," which indicated your chosen style, and "googlead," which indicated whether you had Google ads turned on or off. This cookie was stored for one month. If you didn't change the settings, you shouldn't have received a cookie, and the page would be blue. So, you didn't miss anything if you didn't use cookies. Years ago (before 2017?), I completely removed the ads, and the cookies are no longer active. I think they're also no longer stored, but I'm not sure. In case anyone is interested: over five years, I earned 10 euros from ads, but Google only pays out starting at 70 euros, so I didn't make any money at all. I did the cookie thing mainly because I wanted to find out if I could get it working.
Nerd things
This page is built using PHP (that's why every URL ends with ".php"). I chose PHP because I didn't know of any alternative that was available on the server.
For the few simple things I wanted to do at the time (the most complex was the menu on the left), this was an excellent choice: it was quick to create, easy to maintain, and fast enough.
Since then, some function creep has occurred: a small database was added from which things were looked up, another database was added, information from databases was combined, to the point where quite extensive calculations are performed using information from multiple databases. For example: I'm showing the standings in the general classification of the Tour de France for any given stage, which requires:
- The times of each rider in each stage;
- The penalties imposed that year;
- The intermediate sprint finishes for any intermediate sprint bonuses;
- The mountain finishes for any mountain bonuses;
- The team composition for team time trials;
- The type of each stage, for stage bonuses;
- The known errors that I have discovered but have not yet been able to identify.
The rules aren't the same every year, so not every database is needed every year. The bonuses also change occasionally, so I also have functions that indicate this per year, and they essentially also serve as a database. Currently, it takes a maximum of a few seconds to calculate such an interim result.
I find that time just about acceptable. In the first implementation, with the sole purpose of getting everything working, this calculation still took tens of seconds, so the efficiency is already better. It's certainly not optimal yet. I don't know the exact time, but I estimate that the calculation involves reading a database about 200 times, adding about 40,000 numbers, and sorting a database of 200 elements; that should be possible within a second.
Update in 2016: it now takes 1.9 seconds to generate the final result for 2016.
Second update in 2016: I used to open and close the same database many times. I have fixed this, and it has made everything a lot faster. The most extreme example: a script that would have taken 18 hours now finishes in 10 minutes.
Update in 2017: I've now reduced the number of database reads even further, and now this script only takes 5 minutes. I don't have to run this script very often, but because I've implemented the same improvement on all pages, it does give an indication that all pages will now be faster. The next improvement will be storing data in a consistent format, so I don't have to constantly check case. If that doesn't make the scripts faster, it will at least make them shorter and easier to maintain.
Update 2019: it currently takes 0.32 seconds to generate the final result
But if I'm going to improve this, I might as well rewrite this entire function. And if I do, I might have to do it in a different language that's better suited for this than PHP. PHP is a clunky language: fine for doing a few quick things, but not recommended for complex tasks. For a non-programmer, I use quite a lot of comments, but despite this, my code has become so overgrown that sometimes I don't even understand why it works. And I haven't always been consistent, which doesn't help either.
I'm not a web designer. I just messed around, and now I have an effective but inefficient solution. I've realized I could have done some things differently. Is it bad that I didn't get it perfect the first time? No. Is it actually great that I learned something? Not at all. I knew before I started that I wouldn't create optimal code, and also that I would learn things. Things I'll probably never use elsewhere.
There's a small chance I'll rewrite the core of my scripts in a better language. If I do, the main goal won't be to make this website faster, but to figure out how the other language works. I don't think that will happen now, but I wouldn't rule it out either.
I could also convert all the databases to a better format anyway. It's currently XML, which obviously doesn't make sense. A SQL format would make much more sense. But converting that seems like a tedious task, and then I'd also have to adjust my method for adding data. I don't feel like doing that, so it's very unlikely I'll ever do that.
Update in 2019: I tested this with a subpage, and the result was that the page loaded just as quickly, but it couldn't be updated with a text editor. So I won't elaborate on this further.
In any case, I don't feel obligated to improve this page. I only do things when I feel like it. The only exception: if the server usage becomes too high, I'll simply make (part of) the page inaccessible to others until I've made the necessary adjustments. But that seems like a purely theoretical consideration, and I wonder why I'm making it.
GDPR
On May 25, 2018, the GDPR came into effect. I believe I already complied with that law in terms of my organization, but perhaps not formally on every point, for example, maintaining a register.
To summarize, below is a summary of the personal data I collect, how I process it, and so on.
- Personal information of athletes: I believe this is justified because the individuals in question are deceased, or could expect, based on their profession, that their basic personal data would be processed by media. See also the bottom of this page.
- Personal information of people who send me a message: As stated on the contact page, I only use the name and email address to be able to send a reply.
- Personal information of people who visit this page: As shown above, if a page returns an error, I log a visit with some basic information, with the only personal data being an IP address. I only check this IP address in the event of a "suspicious" page visit that could indicate a hacking attempt. Once I've searched the database for hacking attempts, I'll clear the database without creating a backup.
- Cookies: This page doesn't use any cookies in principle. In the distant past, there were cookies that allowed me to change the background color (because I wanted to test how cookies worked). I don't think they're used anymore, but some of the code is still intact, so it's possible but unlikely that cookies are still being used somewhere. Not having these cookies doesn't limit visits to this page in any way, and the cookies are stored for a month.
- External processors: As far as I can tell, there are no external processors. There used to be Google ads, but I removed them. I use Google Webmasters, but I don't think they're a processor. (Update 2025: No more Google Webmasters.)