Hopefully soon, I will post something on driving RGB-leds and colorspaces. In the meanwhile, you can already play around with the thing shown below. Can you guess what it does?
Caveat salutor: this gizmo uses CSS 3D transforms, so it will not work on old browsers such as Internet Explorer 9. It is supposed to look like this:
On the 14th of June 2013, I defended my thesis and obtained my PhD. The thesis contains (most of) the stuff I did the past few years around exponential fitting and numerical methods for differential equations. If you want to learn more about this subject, or if you just want to peek at the fruits of my work, then you can find the PDF-file on the Ghent University Academic Bibliography:
For the curious: the image on the cover is an actual plot of something I studied: it's a stability plot of an exponentially fitted Obrechkoff method. The same plot can be found on page 232, although there it's shown on a different colour scale.
You can also take a look at the slides I used for the presentation during the defense. I made use of the deck.js framework, pimped up with a few extra plugins, animations and, most imporantly, MathJax.
Caveat salutor: the slides were specifically tailored for Chrome at 1280x1024.
Somewhat related, I recently found out that my master thesis is also publicly available, and, yes, you can also read it, if you can read dutch.
Also: please don't report typos. Too late, man.
[Indianio is an online hand-in assignment platform I develop and maintain at work. It checks what the students submit -file type, content of archives, etc.- and rejects if necessary. Accepted files can be processed further: compiling, converting to PDF, automatic unit-tests, etc. It even has integration with BlueJ and SPOJ.]
As administrator of Indianio, I had the displeasure of watching it crash and burn a few weeks ago. During an exam. Granted, the number of students was higher than Indianio ever had to endure before. And all those students wanted to hand-in their solutions at the same time: at the end of the exam. But still, there were only 287 students...
When I received the phone call with the message that the server was unreachable, I immediately logged into the server. The Apache daemon had crashed, and the error log was filled with
[emerg] (43)Identifier removed: couldn't grab the accept mutex
[emerg] (22)Invalid argument: couldn't grab the accept mutex
After fiddling about a bit with AcceptMutex (to no avail), I noticed the following lines, preceding the ones about mutexes:
[alert] (11)Resource temporarily unavailable: setuid: unable to change to uid: 33
[alert] Child $p returned a Fatal error... Apache is exiting!
A resource exhaustion! The Apache server tried to use system resources, but ran into a limitation. Had I set my limits.conf wrong? Turns out, kind of.
To protect the server agains processing scripts that go haywire, there is a limit of 25 processes for all users that are part of the Indianio platform (group indianio). As it happens, the account that I use to administer server, is also a member of this group. But that poses no problem, because everything happens through
sudo, which resets the rlimits, right?
Well, on my server, it didn't:
davy@indianio:~$ ulimit -u
davy@indianio:~$ sudo bash -c "ulimit -u"
This limitation was also imposed on the Apache daemon and its subprocesses, after restarting it with
sudo /etc/init.d/apache2 restart. The output of the CGI-script I installed to verify my suspicion:
id + id uid=33(www-data) gid=33(www-data) groups=33(www-data) ulimit -u + ulimit -u 25
Note that this doesn't happen when restaring Apache with
apachectl, because that doesn't create a new process.
I just had to share this with you; marvelous song!