The Gosling Tarpit

I think Panagiotis is going to love this:

“because the Java programming language and Java Virtual Machine are (surprise!) so tightlyCoupled, new language designers are compelled to make their languages such that they use only those features they can implement efficiently on the JVM. For example, implementations of Scheme for the JVM either lack call/cc or have a very slow and slightly buggy implementation of it. We call this the Gosling Tarpit.”

From Phosphorous, The Popular Lisp.

[via]

Warren’s Abstract Machine: A Tutorial Reconstruction

Hassan Aït-Kaci has written the excellent tutorial on the WAM entitled Warren’s Abstract Machine: A Tutorial Reconstruction. This book is out of print (I consider myself one of the lucky ones to have purchased a copy). For years it was available at vanx.org, but now the domain seems parked.

I had downloaded a copy of the files, and now the electronic version of the book has a new home at: http://wambook.sourceforge.net

Update 2013/04/13: Also available on https://github.com/a-yiorgos/wambook

new toy

Last week, after doing a lot of searching about a commercial Prolog implementation, I decided to go along and purchase WIN-PROLOG from LPA. On Tuesday the CD-ROM was delivered to my mailbox and I had the chance of trying out some stuff to get accustomed to the environment. Pretty impressive documentation, even if you have never written a line of Prolog before! It reminds me of the days that I was reading the DEC manuals.

Ιδιωτικότητα και Ελευθερία του Λόγου στο Διαδίκτυο

Πέρα από τη στέρεη ή όχι νομική βάση της γνωμοδότησης Σανιδά εδώ έχουμε να κάνουμε με τον ορισμό της technically uninformed γνωμοδότησης (π.χ. μια και οι εναλλακτικοί πάροχοι τηλεφωνίας δουλεύουν με VoIP, αυτό σημαίνει πως δεν υπάρχει θέμα απορρήτου των επικοινωνιών για τους συνδρομητές τους;).

Νομίζω πως ο Γιώργος Κεραμιδάς έχει αναπτύξει εκτενώς και επαρκώς το θέμα: Ιδιωτικότητα και Ελευθερία του Λόγου στο Διαδίκτυο

Ας το συζητήσουμε εκεί.

Windows shutdown

This is a photograph that I took while passing by a colleague’s desk:

shutnever

I know that at the end of the day everyone wants to go home (or for a walk, or whatever) but please wait the extra seconds to make sure that your computer actually shut down. What if it was Friday?

Exceptions

Usually a system manager proposes a policy, gets approval from higher management (a written one if lucky enough, or if compliance with standards is needed) and proceeds to implement it.

Then it begins:

The manager must enforce the policy, with one exception. Then another and another. And later an exception of the form: Deny access to this resource, except from these people, with the exception of these circumstances and provided that the stars are in the right angles. Or in order to give a real life (pseudo)example:

You use a DNSBL. A certain host is included and there are valid reasons for this. But you need to unblock this host because someone with authority asks you to. However, the hard reality forces you not only to implement the exception, but also an exception to the exception (unblock this host for certain recipients, who do not want certain senders from this host, etc).

In this process nobody tries to understand the very root cause of the problem: Are we correct in using the particular DNSBL? And if we are, is there a valid reason for the sending host to be (black)listed? And if there is, is it wise to implement a series of exceptions, or is it better to wait for the host’s administrators solve the problem?

A great number of people seem to misunderstand the robustness principle: “Be liberal in what you accept; be conservative in what you send” (they stick to the “accept” part) and I think we need to rephrase it:

If you want me to be liberal in what I accept, be conservative in what you send

A policy ruled by exceptions is not an exceptional policy.

Asking the security team for a firewall exception.

reboot before dist-upgrade

[ Παρόλο το debianism του τίτλου, αυτό είναι ένα γενικότερο post ]

Πριν από δραστικές αλλαγές στο λειτουργικό σύστημα ενός server, καλό είναι να γίνεται ένα reboot. Ειδικά εάν έχουν περάσει αρκετές ημέρες (μήνες, χρόνια) από το προηγούμενο reboot. Οι εξαρτήσεις στο πολύπλοκο περιβάλλον που ζουν οι servers φτάνουν σε σημεία που δεν μπορούμε να ελένξουμε ή δεν θυμόμαστε πάντα από μνήμης (Documentation; Τι είναι αυτό;).

Για αυτό ένα reboot πριν μια θεμελιώδη αλλαγή επιβάλλεται. Downtime is an option, αρκεί να μπορούμε να έχουμε μια ιδέα τι το προκάλεσε. Μετά π.χ. από ένα dist-upgrade από Etch σε Lenny, δεν είναι σίγουρο πως θα μπορεί να εντοπιστεί το πιθανό πρόβλημα στην αναβάθμιση του software ή σε μια άλλη εξάρτηση που έχει προστεθεί στην πορεία και δεν μας περνάει από το μυαλό.

Αλλάζουμε μία μεταβλητή (από όσες ελέγχουμε) τη φορά και θυμόμαστε πως συνήθως εάν ένα ext3 filesystem δεν έχει γίνει fsck για περισσότερες από 30 μέρες, θα κάνει fsck στο επόμενο reboot. Είσαι σίγουρος πως αυτό θέλεις να είναι το reboot του dist-upgrade;

Fear of rebooting.