About W.Scholten (Netherlands)

I've programmed in C/C++ for many years, with some stints in other languages such as Eiffel, Python. I've also programmed in Fortran, mostly related to light scattering calculations to try to determine more about comets while I was working at LAF (astrophysics department of the university of Leiden). I've worked on various open source projects over the years, such as finding and fixing bugs in kernels (such as in OpenBSD), ditto for various utilities that go with those operating systems. Further I've for example worked on GGI (http://www.ggi-project.org) and started GSI (http://gsi.sourceforge.net/) which in the end wasn't widely adopted (by Linux users, largely due to licencing as they wanted GPL/LGPL; I believe that these licencing issues in general, are one of the reasons the use of Linux by home users hasn't progressed further than it has) despite being years ahead of other sound systems for unix-like operating systems.

The programming I did was almost exclusively using unix like operating systems such as Solaris, Linux, FreeBSD, OpenBSD, NetBSD. Fortran programming was mostly done on ConvexOS on a Convex mini-supercomputer.

Since the late 1990s I use FreeBSD and not Linux anymore. I have no intention of going back and some of the reasons I have written up here with my response to some truly inane comments from a linux zealot on slashdot.org.

If you need a free-lance programmer for a project on a unix-like OS, or to do website development etc., just send me an email!

My most recent project is developing nearly maintenance free bicycles, made mostly from titanium + stainless steel.

See my bicycle website for more information.

My qualities: I have good ideas (see for example the alphanumeric sort I proposed long ago, I proposed a CGPL which is a GPL type licence for classes, which in effect is a per-file-licence but with a requirement to publish changes to that file if used in a piece of software that is distributed (the same idea as GPL/LGPL), in the Netscape newsgroup that was setup to discuss open sourcing Netscape as a possible type of licence they could use. The Mozilla public licence (MPL) is very similar to what I suggested and the CDDL was based on the MPL. This idea was again not that big of a deal I thought, it comes naturally when thinking about classes in object oriented programming. The MPL/CDDL are more in 'lawyerese' which I hate... I also actually 'invented' earlier than those google guys what is now known as Google's pagerank system ca. 1987, so long before Google, when I tried to get a better ranking system for Chess/Reversi playing programs (reason for this was a ranking shown in a dutch 'HCC nieuwsbrief' where I thought "That program actually did much better than the other that is ranked higher". I mentioned this to someone I'd been at school with and asked him also "look at this table, what do you think about the rankings of these programs". He, also being quite clever, said precisely what I did "this program could be ranked above that one"...; I didn't know this was the same as Google's method until I wrote a bit on my idea for a ranking system in a comment on slashdot.org several years ago (2008? Will check, time flies...), and someone said this was Google's pagerank patent... (I checked the patent and he was right, it was the essence of my idea). I will write more about this with the example that started me on this idea, at a later date), I like minimal but good software and ditto in websites, i.e. I prefer something that works, works well, and works fast, to something that has a lot of functions but is slow and/or buggy. Hence the bicycle website referred to above uses no Java or Flash (also because it's not very well supported under FreeBSD, which is the operating system I use on my home PCs), and uses a simple interface.. I also value service, to support the software I make and with anything else such as with those bicycles that I will sell to discerning buyers who value service, and who can ask for advice on anything such as saddles, lighting etc.

2013-9-18: I didn't get round to explaining the ranking idea due to life getting in the way, and I haven't found all the papers from that era yet (it was long ago), but I will explain: In 1985-1988 I was working on a Reversi playing program (on a BBC microcomputer, see my website here and you can download a version of my Reversi playing program for that computer from various BBC microcomputer websites) and in 1987 I wanted a way to tell how powerful one program is vs. another. A particular nuisance for me was the ranking in a 1987 issue of HCC nieuwsbrief in which there was a description of the latest Reversi tournament for computer programs in NL. In it there was a ranking list and the usual way to rank programs was used which is first of all based on total number of points, and then when the points of 2 or more programs are equal, on 'resistance points' (strengh of the opponents that that program encountered). This is done because not all programs play against each other due to time constraints. I looked at the table of results and thought that it was screwy. Even a program that was ranked lower with 1 less point IIRC (I will add a scan of the article), to me looked to be better than a few other programs. I went to a friend in Rotterdam, we talked about reversi and he was going to make a program as well. I showed him the article and asked "What do you think of the ranking of these programs?". He gave me exactly the same answer as my view, in how strong each program was... I then told him of my idea for a ranking method which I had been working on, or perhaps at that time I had not implemented it yet, but perhaps it was only an idea at the time, not sure, I will think a bit about it. Anyway, the idea is very very simple (and not patent worthy, even in the US (Note that google's patent is not a valid patent in the EU...): The strength of each program is a number in a vector s, and the results table + identity matrix is a matrix R. This is then used as follows: Rs = k s, where k is a constant. I.e. on each row of this matrix multiplication the result against a certain program that has a certain strength, will give points, and the more points the stronger that that program is (the higher the value of that program in the strength vector). I expected, or wanted, this to be an identity so that the strength was clearly given, from this identity.

To calculate the strength vector s, it's possible to just run iteratively, so choose just about anything as a starting vector (just (1 1 1 ... 1) for example), then use the output of that as the input of the next run and hopefully it will converge. And there was the problem: It didn't converge to steady non-zero values for many programs, even though the strengths at each run after perhaps a few initial runs, showed the true relative strength, so a larger number in the strength vector means a stronger program. But the numbers kept going down for the lower rated programs (convergence to zero) and in this way, the thing I had wanted to achieve, an estimate of strength of each program compared to the other, did not work out. So I felt my method had failed. And I worked on other stuff (various Gaussian type integration methods, but with more than 10 points, I remember wasting a lot of time on those :) Even though they are not very useful compared to other methods, not as accurate for the number of points used I mean).

So there you have it, and it shows clearly the thoughts behind how the matrix-strength ranking works, and it does work just doesn't give a ranking value that's useful, it just gives a relative ranking.

So, when I described a little the matrix multiplication in a posting on slashdot, someone mentioned this is google's page rank patent, and indeed, I had done it almost a decade earlier and considered it trivial (which I still do) and certainly not worthy of a patent.

Oh, and in case you are wondering how it relates to websites: The 'strength' of a weppage could be defined to be how many links there are to that page. The number of links is the number of points but similar to my example from HCC nieuwsbrief from 1987, the number of points and resistance points don't always give a proper indication of (relative) strength. Therefore the relation of how good a page is compared to another page, which will usually be in the range of other pages with the same or similar number of points but it can be quite different, is done with such a matrix of points similar to the example of Reversi-programs. So the result matrix is filled with number of links to each page, and the strength vector then shows how good a webpage is relative to other webpages.

I'm interested in working on interesting programming projects, anything that's challenging really. I'd also like to work on 'green' projects, because I think it's inevitable we need to use the resources we have, in a better manner. This is also a reason behind my bicycle project, to counter the throw-away culture. I don't like people buying bikes that rust away after a few years, then buy another. Just buy a single good one! They can last decades (even with standard steel frames (*)), and in case of Titanium/Stainless steel, they will remain as good as new, and almost new looking too..

(*) aluminium and carbon fiber frames are much more fragile. With aluminium, galvanic corrosion or just corrosion at any part that's not protected properly by an anodizing layer or paint, is a big problem. Aluminium handlebars can even be eaten away by the glue in bar tape...

I also like science, esp. physics (I've got a degree from the University of Leiden in mathematical physics), and esp. foundations of physics, string theory and axiomatic characterisations of systems etc.

To email me go to the email page



valid html 4.01valid css 2.1