Blog Pseudoaccidentale

2009-11-08

Full Circle, Issue #30

Το περιοδικό Full Circle, το οποίο ασχολείται κυρίως με την οικογένεια διανομών Ubuntu, ανακοίνωσε το τεύχος #30:

King Arthur Was Computer Savvy; Full Circle, Issue #30

Με ενδιαφέροντα άρθρα, όπως την ιστορία μιας συνταξιούχου κυρίας η οποία όχι μόνο έμαθε να χρησιμοποιεί το Ubuntu Linux αλλά το διαδίδει πλέον και στις φίλες της, περιγραφές από χρήσιμα προγράμματα και δικτυακές σελίδες για βιβλιόφιλους, αλλά και reviews από e-book readers (Sony PRS-505), το τεύχος 30 του Full Circle είναι ένας ωραίος τρόπος να ξεκινήσει κανείς τη μέρα του σήμερα, συντροφιά με ένα καλό πρωινό καφέ και ένα όμορφα στοιχειοθετημένο, ελεύθερα διαθέσιμο περιοδικό για το Linux!

It’s OK for Scepticism to Yield to Humanism

Filed under: Humanity, Skepticism — keramida @ 06:46:57
Tags: ,

An excellent post appeared today at the Skepchick blog. The post was authored by Sam Ogden, and it is called “Biting My Tongue For A Good Cause“.

Skepticism has certainly been on the rise lately and there are those of us who think that this is good. Requiring actual evidence before we accept, reject or suspend judgement on new information (as the Wikipedia defines skepticism) is a stand and outlook towards life that is logical, founded on the notion of a verifiable blend of empirical and scientific information. As such, it is often one of our best tools to understand reality and our own life.

There are still cases however when it may be OK for strong skepticism to yield to Humanism. Sam’s post describes one of these cases. Despite the fact that I am known for my tendency to argue for strong skepticism, sometimes even at the expense of my own personal relationships with other humans, I am really glad there are still people out there who value compassion for our fellow humans, dignity and the well-being of everyone else more than taking a fanatic stand behind a certain idea.

Thank you, Sam! You have taught all of us a valuable lesson about respecting our fellow humans and caring for those of us who are in a more difficult position than us.

2009-11-07

Using the Condensed DejaVu Font-Family Variant by Default

The DejaVu font family is a very popular font collection for Linux and BSD systems. The font package of DejaVu includes a condensed variant; a variation of the same basic font theme that sports narrower characters.

The difference between the two font variants is very easy to spot when they are displayed side by side. The following image shows a small part of a Firefox window, displaying news articles as part of a Google Reader session:

DejaVu Font Family Variants

The window snapshot on the left of this image shows the normal variant of the DejaVu Sans font family. The right-hand snapshot shows the condensed variant of the font family.

I usually to prefer the condensed variant for the display of text on a computer monitor. The narrower characters, with a height that is slightly larger than the width of each glyph, are more æsthetically pleasing for my eyes. Naturally, this is only a matter of personal preference; the normal variant may look and feel more pleasing to some other person. If your own preference leans towards the normal variant of the font, this article may not be very interesting to you, so it is probably ok if you stop reading now.

If you are one of those people who like the condensed variant of the DejaVu font family more than the normal variant though, by all means, keep reading. The “hack” I am going to describe uses a configuration tweak of the fontconfig package to forcibly replace all instances of the DejaVu Sans and the DejaVu Serif fonts with their condensed version.

The Main Problem with Firefox and Condensed Fonts

An interaction between fontconfig and the way some programs select font variants means that Firefox, OpenOffice and a few other programs cannot display the condensed variant in their GTK+ font selection dialog. Firefox, for example, shows only “DejaVu Sans”:

Firefox Font Selection Dialog

As a result, it is impossible to use the font selection dialog of Firefox to configure the condensed font variant as the default font for web content. This kept annoying me for a while, but not enough to actually do something about it. I always thought it would be much better if we could select either font variant, but kept saying to myself that “this may eventually be fixed”. Since this is a long standing bug that has not been fixed in Firefox or the other programs that exhibit the same misbehavior, I decided this morning to forcefully substitute all instances of DejaVu Sans with DejaVu Sans Condensed and all instances of DejaVu Serif with DejaVu Serif Condensed in my FreeBSD/Gnome desktop.

What Could Work but is Not a Good Idea

One way to do this is, of course, by manually replacing the TrueType font files of the non-condensed font variants with their condensed counterparts (e.g. by logging in as the system administrator and overwriting the non-condensed font files). I didn’t want to go that way. Manually modifying the installed versions of files registered into the package database is a bad idea and very ugly hack, because it will stop working the next time the same package is installed. So I chose to read a bit more about fontconfig and see if I could do the same without all the smelly hackery of overwriting font files.

Using Fontconfig Might be a Better Idea

Fontconfig is a library that enables system-wide and per-user configuration, customization and application access to font files. The personal fontconfig configuration of each user is stored in a file called .fonts.conf, in the home directory of each user. The format of this file is defined by a relatively “simple” XML schema. Some of the options supported by the fontconfig schema are described in the fontconfig manual. The quotes around “simple” are there because once you see a few examples of fontconfig tweaks, it is not very hard to come up with similar configuration tweaks, but the precise format and syntax of all the options supported by the syntax is, alas, not very intuitive.

When the .fonts.conf exists in your home directory it has the following general format:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
...
</fontconfig>

Font options that apply to your personal fontconfig setup go inside the <fontconfig>...</fontconfig> element. There are many sorts of options that can be placed inside this XML element, but it is not the intent of this article to describe all of them. For a full list of the options, you should read the fontconfig manual.

There are only three fontconfig options that we are interested in to install the condensed font tweak: <match>, <test> and <edit>. Using these three, we can forcefully replace all uses of the DejaVu fonts with their condensed versions, by adding the following XML snippet to ~/.fonts.conf:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">

<fontconfig>
  <match target="pattern">
    <test name="family" qual="any">
      <string>DejaVu Sans</string>
    </test>
    <edit mode="assign" name="family">
      <string>DejaVu Sans Condensed</string>
    </edit>
  </match>

  <match target="pattern">
    <test name="family" qual="any">
      <string>DejaVu Serif</string>
    </test>
    <edit mode="assign" name="family">
      <string>DejaVu Serif Condensed</string>
    </edit>
  </match>
</fontconfig>

XML is a very verbose and chatty format, but what these two small snippers of XML configuration do should be easy to understand:

  • When an application asks for a font whose family matches “DejaVu Sans”, return a font from the “DejaVu Sans Condensed” variant.
  • When an application asks for a font whose family matches “DejaVu Serif”, return a font from the “DejaVu Serif Condensed” variant.

That’s it. Now every time an application asks for a font of the DejaVu family, fontconfig will always return a condensed variant of the font. The font-variant replacement is done transparently by fontconfig, so you don’t have to configure each application separately, or to install application-specific hacks that will work for one application but fail or be invisible to all other programs running on your desktop.

The downside of this forceful font-variant replacement is that it is now impossible to select the non-condensed variants of the DejaVu fonts. The good thing is that, at least in my case, this is “ok” and I can certainly live with it, because I always prefer the condensed variant for this particular font family.

2009-10-03

Αγαπητέ κ. Μπεκίρη

Filed under: Uncategorized — keramida @ 03:14:57

Αγαπητέ κ. Μιχάλη Μπεκίρη,

Το σταθερό τηλέφωνο του σπιτιού μου το έχω για να επικοινωνώ με τους ανθρώπους που εγώ επιλέγω και για να μπορεί να με βρει ο κόσμος με τον οποίο έχω τακτικά επικοικωνία. Δεν το έχω όμως για κανένα από τους παρακάτω λόγους:

  • Για να με καλείς ότι ώρα σου κατέβει με σκοπό να μου παρουσιάσεις το μεγαλεπήβολο “σχέδιο” που έχεις για τη σωτηρία του κόσμου
  • Για να με καλεί ο αυτόματος τηλεφωνητής σου το μεσημέρι παίζοντας μια κασέτα χωρίς εγώ να μπορώ να κλείσω τη γραμμή

Δεν υπάρχει κανένας λόγος να απασχολείς τη γραμμή του σπιτιού με άχρηστες αηδίες όπως αυτές που λένε οι κασέτες του αυτόματου τηλεφωνητή σου. Αν ήθελα να ακούσω τις ακατάσχετες βλακείες που αραδιάζεις στην κασέτα (νομίζοντας ότι τις πιστεύει κάποιος ή ότι πραγματικά επειδή τις άκουσα θα έρθω σε εκλογικό οργασμό και θα σε ψηφίσω με στραβά μάτια) θα ερχόμουνα να τις ακούσω σε μια από τις “εκδηλώσεις” που οργανώνει το επιτελείο σου, ρυπαίνοντας τη πόλη μας με κάθε δυνατό τρόπο.

Το σημερινό δεκάλεπτο τηλεφώνημα της κασέτας σου ήταν το τελειωτικό χτύπημα. Άμα σε ψηφίσω ποτέ να μου γράψεις.

2009-08-07

My Life According to Blackmore’s Night

Filed under: Misc — keramida @ 01:51:53
Tags:

Konstantinos tagged me in http://kouk.tumblr.com/post/151525401/mycocteaulife. I’m not a big fan of this particular meme, but I’ll try to respond in an appropriate manner.

Pick your artist: Blackmore’s Night
Are you a male or female: I Guess it Doesn’t Matter Anymore
Describe yourself: Spirit of the Sea
How do you feel? Diamonds and Rust
Describe where you currently live: Locked Within the Crystal Ball
If you could go anywhere, where would you go? Far Far Away; Beyond the Sunset
Your favourite form of transportation: Wind in the Willows
You and your best friends are: Written in the Stars
What’s the weather like? Rainbow Blues
If your life was a TV show, what would it be called? Spanish Nights
What is life to you? Renaissance Faire
Your relationship: Gone with the Wind
Your fear: Where Are We Going From Here?
What is the best advice you have to give? Play Minstrel, Play
Thought for the day: Wish You Were Here
How I would like to die: Under a Violet Moon
My soul’s present condition: Ghost of a Rose
My motto: Toast to Tomorrow

Who tagged you: Kouk

Tagged in this post: adamo, foteinoula, glezos, irene, psychia, korinoskilo

2009-07-05

fts(3) or Avoiding to Reinvent the Wheel

One of the C programs I was working on this weekend had to find all files that satisfy a certain predicate and add them to a list of “pending work”. The first thing that comes to mind is probably a custom opendir(), readdir(), closedir() hack. This is probably ok when one only has these structures, but it also a bit cumbersome. There are various sorts of DIR and dirent structures and recursing down a large path requires manually keeping track of a lot of state.

A small program that uses opendir() and its friends to traverse a hierarchy of files and print their names may look like this:

% cat -n opendir-sample.c
     1  #include <sys/types.h>
     2
     3  #include <sys/stat.h>
     4
     5  #include <assert.h>
     6  #include <dirent.h>
     7  #include <limits.h>
     8  #include <stdio.h>
     9  #include <string.h>
    10
    11  static int      ptree(char *curpath, char * const path);
    12
    13  int
    14  main(int argc, char * const argv[])
    15  {
    16          int k;
    17          int rval;
    18
    19          for (rval = 0, k = 1; k < argc; k++)
    20                  if (ptree(NULL, argv[k]) != 0)
    21                          rval = 1;
    22          return rval;
    23  }
    24
    25  static int
    26  ptree(char *curpath, char * const path)
    27  {
    28          char ep[PATH_MAX];
    29          char p[PATH_MAX];
    30          DIR *dirp;
    31          struct dirent entry;
    32          struct dirent *endp;
    33          struct stat st;
    34
    35          if (curpath != NULL)
    36                  snprintf(ep, sizeof(ep), "%s/%s", curpath, path);
    37          else
    38                  snprintf(ep, sizeof(ep), "%s", path);
    39          if (stat(ep, &st) == -1)
    40                  return -1;
    41          if ((dirp = opendir(ep)) == NULL)
    42                  return -1;
    43          for (;;) {
    44                  endp = NULL;
    45                  if (readdir_r(dirp, &entry, &endp) == -1) {
    46                          closedir(dirp);
    47                          return -1;
    48                  }
    49                  if (endp == NULL)
    50                          break;
    51                  assert(endp == &entry);
    52                  if (strcmp(entry.d_name, ".") == 0 ||
    53                      strcmp(entry.d_name, "..") == 0)
    54                          continue;
    55                  if (curpath != NULL)
    56                          snprintf(ep, sizeof(ep), "%s/%s/%s", curpath,
    57                              path, entry.d_name);
    58                  else
    59                          snprintf(ep, sizeof(ep), "%s/%s", path,
    60                              entry.d_name);
    61                  if (stat(ep, &st) == -1) {
    62                          closedir(dirp);
    63                          return -1;
    64                  }
    65                  if (S_ISREG(st.st_mode) || S_ISDIR(st.st_mode)) {
    66                          printf("%c %s\n", S_ISDIR(st.st_mode) ? 'd' : 'f', ep);
    67                  }
    68                  if (S_ISDIR(st.st_mode) == 0)
    69                          continue;
    70                  if (curpath != NULL)
    71                          snprintf(p, sizeof(p), "%s/%s", curpath, path);
    72                  else
    73                          snprintf(p, sizeof(p), "%s", path);
    74                  snprintf(ep, sizeof(ep), "%s", entry.d_name);
    75                  ptree(p, ep);
    76          }
    77          closedir(dirp);
    78          return 0;
    79  }

With more than 80 lines, this looks a bit too complex for the simple task it does. It has to keep a lot of temporary state information around in the two ep[] and p[] buffers, and all the manual work of setting updating and maintaining this internal state is adding so much noise around the actual printf() statement at line 68 that it is almost too hard to understand what this particular bit of code is supposed to do.

The program still “works”, in a way, so if you compile and run it, the expected results come up:

keramida@kobe:/home/keramida$ cc -O2 opendir-sample.c
keramida@kobe:/home/keramida$ ./a.out /tmp
d /tmp/.snap
d /tmp/.X11-unix
d /tmp/.XIM-unix
d /tmp/.ICE-unix
d /tmp/.font-unix
f /tmp/aprtdTjbX
f /tmp/aprEdWP4d
d /tmp/fam-gdm
f /tmp/.X0-lock
d /tmp/fam-keramida
d /tmp/.esd-1000
d /tmp/screens
d /tmp/screens/S-root
d /tmp/screens/S-keramida
d /tmp/emacs1000
f /tmp/a
f /tmp/b
f /tmp/kot
f /tmp/logsort
keramida@kobe:/home/keramida$ ./a.out /tmp /etc/defaults
d /tmp/.snap
d /tmp/.X11-unix
d /tmp/.XIM-unix
d /tmp/.ICE-unix
d /tmp/.font-unix
f /tmp/aprtdTjbX
f /tmp/aprEdWP4d
d /tmp/fam-gdm
f /tmp/.X0-lock
d /tmp/fam-keramida
d /tmp/.esd-1000
d /tmp/screens
d /tmp/screens/S-root
d /tmp/screens/S-keramida
d /tmp/emacs1000
f /tmp/a
f /tmp/b
f /tmp/kot
f /tmp/logsort
f /etc/defaults/rc.conf
f /etc/defaults/bluetooth.device.conf
f /etc/defaults/devfs.rules
f /etc/defaults/periodic.conf

But this program looks “ugly”. Fortunately, the BSDs and Linux provide a more elegant interface for traversing file hierarchies: the fts(3) family of functions. A similar program that uses fts(3) to traverse the filesystem hierarchies rooted at the arguments of main() is:

% cat -n fts-sample.c
     1  #include <sys/types.h>
     2
     3  #include <sys/stat.h>
     4
     5  #include <err.h>
     6  #include <fts.h>
     7  #include <stdio.h>
     8
     9  static int      ptree(char * const argv[]);
    10
    11  int
    12  main(int argc, char * const argv[])
    13  {
    14          int rc;
    15
    16          if ((rc = ptree(argv + 1)) != 0)
    17                  rc = 1;
    18          return rc;
    19  }
    20
    21  static int
    22  ptree(char * const argv[])
    23  {
    24          FTS *ftsp;
    25          FTSENT *p, *chp;
    26          int fts_options = FTS_COMFOLLOW | FTS_LOGICAL | FTS_NOCHDIR;
    27          int rval = 0;
    28
    29          if ((ftsp = fts_open(argv, fts_options, NULL)) == NULL) {
    30                  warn("fts_open");
    31                  return -1;
    32          }
    33          /* Initialize ftsp with as many argv[] parts as possible. */
    34          chp = fts_children(ftsp, 0);
    35          if (chp == NULL) {
    36                  return 0;               /* no files to traverse */
    37          }
    38          while ((p = fts_read(ftsp)) != NULL) {
    39                  switch (p->fts_info) {
    40                  case FTS_D:
    41                          printf("d %s\n", p->fts_path);
    42                          break;
    43                  case FTS_F:
    44                          printf("f %s\n", p->fts_path);
    45                          break;
    46                  default:
    47                          break;
    48                  }
    49          }
    50          fts_close(ftsp);
    51          return 0;
    52  }

This version is not particularly smaller; it’s only 34-35% smaller in LOC. It is, however, far more elegant and a lot easier to read:

  • By using a higher level interface, the program is shorter and easier to understand.
  • By using simpler constructs in the fts_read() loop, it very obvious what the program does for each file type (file vs. directory).
  • The FTS_COMFOLLOW flag sets up things for following symbolic links in one simple place (something entirely missing from the opendir version).
  • There are no obvious bugs about copying half of a pathname, or forgetting to recurse in some cases, or forgetting to print some directory because of a complex interaction between superfluous bits of code. Simpler is also less prone to bugs in this case.

So the next time you are about to build a filesystem traversal toolset from scratch, you can avoid all the pain (and bugs): use fts(3)! :-)

2009-07-01

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

Filed under: Computers, Network Freedom, Software — keramida @ 12:22:19

Σήμερα εμφανίστηκαν σε διάφορα Ελληνικά weblogs άρθρα που αγγίζουν το θέμα της “ελευθερίας του λόγου στο διαδίκτυο”.

Ενδιαφέρουσα είναι η άποψη του http://metablogging.gr/archives/2432. Πολύ ενδιαφέρουσα είναι επίσης κι η γνωμοδότηση του κ. Σανιδά, όπως καταγράφεται στα άρθρα της Καθημερινής, του Βήματος και της Ελευθεροτυπίας.

Το κείμενο στο «Βήμα» μοιάζει να έχει γραφτεί λίγο βιαστικά. Με κορώνες όπως «Αίρεται το απόρρητο επιστολών για τους bloggers» δείχνει να έχει γραφτεί στο πόδι, με σκοπό κυρίως τον ενυπωσιασμό των αναγνωστών. Προφανώς το απόρρητο δεν «αίρεται» με μια γνωμοδότηση, αφού δεν είναι δημοσιευμένος νόμος του Κράτους. Ούτε γράφουν «επιστολές» οι bloggers, άρθρα γράφουν! Καμιά φορά αναφέρονται και σε μέρη από επιστολές, αλλά αυτό γίνεται με τον ίδιο τρόπο που μια εφημερίδα αναφέρει αποσπάσματα από κάποιο άλλο γραπτό κείμενο. Το ίδιο το κείμενο της γνωμοδότησης δεν υπάρχει στο «Βήμα». Αναφέρονται μόνο πολύ λίγα και πολύ μικρά μέρη του. Ο βασικός κορμός του άρθρου είναι μια ερμηνεία του «Βήματος», με την οποία δε θα ασχοληθώ καν. Δεν αξίζει τον κόπο.

Το άρθρο της «Καθημερινής», αντίθετα, είναι πολύ καλογραμμένο. Αν το κείμενο το οποίο αναφέρει ως μέρος της γνωμοδότησης είναι πιστό αντίγραφο από το κείμενο του κ. Σανιδά, αξίζει να το διαβάσουμε με πολλή προσοχή.

Ειδικότερα. Στην γνωμοδότήση του ο Σανιδάς καταλήγει:

«1) Το απόρρητο των επικοινωνιών δεν καλύπτει α) την επικοινωνία μέσω του διαδικτύου (Internet) και β) τα εξωτερικά στοιχεία της επικοινωνίας (ονοματεπώνυμα και λοιπά στοιχεία συνδρομητών, αριθμοί τηλεφώνων, χρόνος και τόπος κλήσεως, διάρκεια συνδιάλεξης κ.λ.π.)

1) Οι εισαγγελικές, ανακριτικές και προανακριτικές αρχές, πολύ δε περισσότερο τα Δικαστικά Συμβούλια και τα Δικαστήρια, δικαιούνται να ζητούν από τους παρόχους των υπηρεσιών Επικοινωνίας, μέσω του διαδικτύου (Internet) τα ηλεκτρονικά ίχνη μιας εγκληματικής πράξεως, την ημεροχρονολογία και τα στοιχεία του προσώπου στο οποίο αντιστοιχεί το ηλεκτρονικό ίχνος, από τους λοιπούς δε παρόχους των υπηρεσιών επικοινωνίας τα ‘εξωτερικά στοιχεία’ της επικοινωνίας και ο πάροχος υποχρεούται να τα παραδίδει χωρίς να είναι αναγκαίο να προηγηθεί άδεια κάποιας Αρχής και ιδία της Αρχής Διασφάλισης του Απορρήτου των Επικοινωνιών.

2) Η Αρχή Διασφάλισης του Απορρήτου των Επικοινωνιών αλλά και οποιαδήποτε άλλη Ανεξάρτητη Αρχή ούτε νομιμοποιείται ούτε δικαιούται να ελέγξει με οποιονδήποτε τρόπο, αμέσως ή εμμέσως, το εάν η περί άρσεως ή μη του απορρήτου απόφαση των οργάνων της Δικαιοσύνης είναι σύννομη ή όχι. Αυτό κρίνεται από τα ίδια τα όργανα της Δικαιοσύνης. Ούτε όμως περαιτέρω η ρηθείσα Αρχή μπορεί να ελέγξει τους παρόχους υπηρεσιών επικοινωνίας για τη, σε κάθε περίπτωση, συμμόρφωσή τους προς τις αποφάσεις των οργάνων της Δικαιοσύνης. Εάν πράξει τούτο ενεργεί καθ’ υπέρβαση της δικαιοδοσίας της».

— «ΚΑΘΗΜΕΡΙΝΗ», 29 Ιουνίου 2009 http://www.kathimerini.gr/4dcgi/_w_articles_kathremote_1_29/06/2009_286481

Δεν ξέρω πόσο μπορεί μια γνωμοδότηση σαν αυτή να επηρεάσει τη λειτουργία της Δικαιοσύνης, αλλά ακόμη και ελάχιστη επιρροή να έχει, αξίζει να προσέξουμε πολύ μια συγκεκριμένη έκφραση:

Το απόρρητο των επικοινωνιών δεν καλύπτει α) την επικοινωνία μέσω του διαδικτύου (Internet)

Δεν είμαι σίγουρος ότι ο κ. Σανιδάς εννοεί ακριβώς αυτό που κυριολεκτικά γράφεται παραπάνω, αλλά αν όντως θεωρεί ότι κάθε επικοινωνία μέσω Διαδικτύου εκπίπτει του απορρήτου των επικοινωνιών, τότε ελπίζω να μην κωδικοποιηθεί σε κάποιο νόμο αυτό. Αν γίνει κάτι τέτοιο τότε είναι φοβερά απίθανο να μην μπει στον πειρασμό ο νομοθέτης να αχρηστεύσει εντελώς κάθε επικοινωνία στο Διαδίκτυο, επιβάλλοντας νομοθετικά αυτό που σε άλλα μέσα επικοινωνίας (π.χ. στο τηλέφωνο) θεωρούνται αυτονόητα: το δικαίωμα δύο ανθρώπων να χρησιμοποιούν το «μέσο» για να επικοινωνήσουν με τη σχετική ασφάλεια ότι δεν έχει, όχι πολύ εύκολα τουλάχιστον, το σύμπαν ολόκληρο τη δυνατότητα να κρυφακούει τι λένε, να καταγράφει και να χρησιμοποιεί για οποιοδήποτε σκοπό το περιεχόμενο της συνομιλίας, κοκ.

Ακόμη κι αγνοήσουμε αυτό το πρώτο μέρος, όμως, η γνωμοδότηση έτσι όπως παρουσιάζεται στην «Καθημερινή» έχει κάποια ακόμη σχετικά εμφανή προβλήματα. Το ένα από αυτά είναι περισσότερο νομικής φύσης, και δε μπορώ να προσποιηθώ ότι γνωρίζω τα πάντα σχετικά με το θέμα, αλλά κάποιες σχετικές σκέψεις μπορώ να τις καταγράψω εδώ.

Μέχρι σήμερα, όταν κάποιος ανταλλάσει χειρόγραφη αλληλογραφία με ένα φίλο του, όταν χρησιμοποιεί το τηλέφωνό του για να μιλήσει με συγγενείς, ή όταν στέλνει ένα δέμα με φαγητό στο γιό του σε μια άλλη πόλη, θεωρεί ότι είναι νομικά κατοχυρωμένο το δικαίωμά του στην «ιδιωτικότητα» της επικοινωνίας. Δε μπορούμε να είμαστε ποτέ 100% σίγουροι με αυτά τα πράγματα, αλλά μου φαίνεται ότι θα είμαστε προ των πυλών μιας μεγάλης έκτασης αντίδρασης αν κάποια στιγμή ανακοίνωνε το Ελληνικό κράτος ότι «όλες οι τηλεφωνικές συνομιλίες θα πρέπει να καταγράφονται από τις εταιρείες τηλεπικοινωνιών, και να είναι στη διακριτική ευχέρεια της Δικαιοσύνης να ζητήσει, χωρίς κανένα άλλο έλεγχο, ούτε καν από την ΑΔΑΕ, τα πλήρη στοιχεία τόσο των ατόμων που επικοινώνησαν, όσο και το περιεχόμενο της συνομιλίας». Το ίδιο έντονη και μεγάλης έκτασης πιθανολογώ ότι θα ήταν η αντίδραση αν κατοχυρωνόταν νομικά για το Ελληνικό κράτος ότι «κάθε δέμα ή γράμμα ή άλλο αντικείμενο που στέλνεται με ταχυδρομείο ή άλλη εταιρεία παροχής υπηρεσιών μεταφοράς θα ανοίγεται και το περιεχόμενό του θα καταγράφεται, έτσι ώστε να είναι διαθέσιμη αυτή η πληροφορία, οποιαδήποτε στιγμή, σε όποιον ζητήσει να την έχει, χωρίς να μπορεί η ΑΔΑΕ να διαμαρτυρηθεί ή να ασκήσει έλεγχο».

Το Διαδίκτυο μπορεί κι αυτό να χρησιμοποιηθεί για προσωπική επικοινωνία μεταξύ δύο ή περισσότερων ατόμων. Για την ακρίβεια, όχι μόνο μπορεί να χρησιμοποιηθεί για επικοινωνία, με τον συμβατικό τρόπο, μεταξύ δύο μόνο ατόμων, αλλά έχει κάνει δυνατές και βιώσιμες μορφές επικοινωνίας οι οποίες μέχρι πριν σχετικά λίγα χρόνια ήταν είτε αδύνατες, είτε ασύμφορες. Έχει ανοίξει έτσι νέους ορίζοντες τόσο στην προσωπική όσο και την κοινωνική ζωή εκατομμυρίων ανθρώπων στον πλανήτη. Ο λόγος για τον οποίο μπορεί, έτσι απλά — μια τόσο ευέλικτη μορφή επικοινωνίας, μια τόσο σημαντική και με τεράστια επιρροή στην κοινωνία — να μείνει χωρίς προστασία της ιδιωτικότητας από το υπάρχον νομικό πλαίσιο, μου διαφεύγει εντελώς αυτή τη στιγμή. Μου φαίνεται απλά αδιανόητο, αλλά μπορεί να μου ξεφεύγει κάτι πολύ βασικό.

Το δεύτερο πρόβλημα είναι «τεχνικής» φύσης, κι αγγίζει, επιπλέον, κάπως επιφανειακά αλλά με ολοφάνερο τρόπο, τα όρια της επιχειρηματικότητας. Ακόμη κι αν ξεπεραστεί το «κοινωνικό» και νομικό πρόβλημα που εισάγει μια πρόταση με τόσο εύρος και έκταση επιδράσεων όσο η φράση «το απόρρητο των επικοινωνιών δεν καλύπτει την επικοινωνία μέσω του διαδικτύου», ακόμη κι αν κατοχυρωθεί νομικά ως απαίτηση του Ελληνικού κράτους και προϋπόθεση για την λειτουργία ενός παροχέα διαδικτυακών υπηρεσιών η καταγραφή τόσο των «στοιχείων» κάθε επικοινωνίας όσο και, σε κάποιο βαθμό, το περιεχόμενο κάθε επικοινωνίας, υπάρχει α) το τεχνικό πρόβλημα του πώς ακριβώς θα γίνει αυτό και β) πώς θα αποθηκευθεί τόσος όγκος πληροφορίας σε ένα Ελληνικό παροχέα υπηρεσιών διαδικτύου.

Το πρώτο από αυτά τα δύο τεχνικά προβλήματα φαίνεται απλοϊκό, αλλά η μέχρι τώρα εμπειρία μου έχει δείξει ότι δεν είναι τόσο απλό όσο μπορεί να δείχνει αρχικά. Το τεχνικό υπόβαθρο για κάτι τέτοιο υπάρχει μεν, αλλά είτε είναι σε σχετικά εμβρϋικό στάδιο ή έχει κάποια τεχνικής φύσεως όρια, τα οποία θα είναι μαζί μας για ένα μη αμελητέο χρονικό διάστημα. Όπως και να έχει θα έχει ενδιαφέρον να δούμε πώς ακριβώς μπορεί κάθε Ελληνικός παροχέας διαδικτυακών υπηρεσιών να κρατάει πληροφορίες για κάθε μία από τις χιλιάδες συνδέσεις που μπορεί να κάνει την ώρα οποιοσδήποτε από τους εκατομμύρια υπολογιστές υπάρχουν σε όλη τη χώρα.

Ανάλογο με τον όγκο της πληροφορίας που απαιτεί η καταγραφή αυτή και το χρόνο για τον οποίο θα πρέπει να διατηρείται ένα μέρος αυτών των πληροφοριών (από μερικές ώρες, μέχρι μήνες ή και χρόνια), μπορεί να είναι τόσο τεράστια τα μεγέθη σε αποθηκευτικό χώρο που να είναι α) απαγορευτικό το κόστος του αποθηκευτικού χώρου, β) ασύμφορη η αναζήτηση πληροφορίας, η συσχέτιση των διαφορετικών μερών της, κλπ. Τεράστιες εταιρείες, όπως η Google, μπορεί να έχουν τη δυνατότητα να αποθηκεύουν αστρονομικά μεγέθη πληροφοριών, αλλά μπορεί να το κάνει αυτό κάθε ένας Ελληνικός παροχέας δικτυακών υπηρεσιών; Αν όχι, μήπως αυτό αποτελέσει, σε βάθος χρόνου, σημαντική τροχοπέδη στη δυνατότητα νέων & μικρών τηλεπικοινωνιακών εταιρειών στο σύνολο της χώρας;

Το δεύτερο τεχνικό πρόβλημα είναι ότι ένα μέρος από τα «στοιχεία» που θεωρεί ο κ. Σανιδάς απαραίτητα ως μέρος της καταγραφής είναι από πολύ δύσκολο έως πρακτικά αδύνατον να βρεθούν. Είναι τέτοιος ο τρόπος που λειτουργεί το Διαδίκτυο σήμερα που ο ίδιος υπολογιστής μπορεί να συνδεθεί, σε διαφορετικές στιγμές της ίδιας μέρας, από πολύ διαφορετικά μέρη. Για παράδειγμα, οποιοσδήποτε μπορεί να έχει μια σύνδεση με την εταιρεία «Forthnet» στο σπίτι του. Αυτή τη μία σύνδεση τη μοιράζεται όλη η οικογένεια, και υπάρχουν τουλάχιστον 5 διαφορετικοί «υπολογιστές» στο ίδιο σπίτι: 1) ο φορητός του πατέρα, τον οποίο του τον έχει δώσει η εταιρεία στην οποία δουλεύει, 2) ένας μικρός υποφορητός υπολογιστής, τον οποίο χρησιμοποιεί ο γιός της οικογένειας για να μοιράζεται φωτογραφίες με τους φίλους του και να μιλάει στο facebook, 3) ένας σταθερός υπολογιστής Macintosh, στον οποίο γράφει το επόμενο βιβλίο της η μάνα της οικογένειας, η οποία είναι συγγραφέας, 4) δύο κινητά τηλέφωνα με δυνατότητες ασύρματης σύνδεσης, τα οποία ενίοτε χρησιμοποιούνται και ως μίνι συσκευές πλοήγησης στο Διαδίκτυο, και τέλος 5) ένα σύστημα αναπαραγωγής πολυμέσων, με δυνατότητα σύνδεσης στο Διαδίκτυο και αναζήτηση πληροφοριών για ταινίες και μουσική σε βάσεις όπως η IMDB, το MTV και άλλες.

Οποιοσδήποτε από αυτούς τους φορητούς υπολογιστές μπορεί το πρωί να συνδεθεί από το σπίτι, το μεσημέρι από μια καφετέρια στο κέντρο της πόλης, το απόγευμα από το ασύρματο δίκτυο του λιμανιού για αναζήτηση πληροφοριών για ταξιδιωτικά προγράμματα, κοκ. Κάθε φορά που ένας από τους μεταφέρσιμους υπολογιστές «αλλάζει δίκτυο» χρησιμοποιεί την εκάστοτε σύνδεση, η οποία φαίνεται (από νομικής πλευράς τουλάχιστον) να ανήκει και σε διαφορετικό «αγοραστή», μπορεί να είναι σε οποιονδήποτε παροχέα υπηρεσιών Internet και σίγουρα έχει διαφορετική δικτυακή διεύθυνση και διεύθυνση στον «φυσικό» κόσμο, εκτός δικτύου από οποιαδήποτε άλλη σύνδεση χρησιμοποιεί η ίδια οικογένεια.

Ακόμη κι αν υπάρχει κάτι επιλήψιμο σε κάποιες από τις ενέργειες ενός από τα μέλη της οικογένειας που περιγράψαμε μόλις, δεν υπάρχει (τουλάχιστον αυτή τη στιγμή) κάποιος καλός τρόπος να πιστοποιηθεί ποιό από τα μέλη ήταν αυτό, όταν είναι μαζί, και ακόμη περισσότερο όταν έχουν σκορπίσει κατά τη διάρκεια της ημέρας τους σε όλο σχεδόν το εύρος μιας πόλης δεκάδων χιλιάδων ή εκατομμυρίων κατοίκων.

Αυτό το πρόβλημα της αντιστοίχησης ενός υπολογιστή με μια νομική οντότητα — όπως ένα πρόσωπο με συγκεκριμένα στοιχεία, όνομα, διεύθυνση, ηλικία, και γενικά οτιδήποτε μπορεί να πιστοποιήσει την ταυτότητα κάποιου — περιγράφεται πολύ καλά στο βιβλίο “Code version 2.0″ του Lawrence Lessig. Μερικά αποσπάσματα από το βιβλίο, τα οποία φαίνεται να έχουν άμεση σχέση με το πώς, ποιός, πότε, πόσο και γιατί θα πρέπει να «ελέγχει το δίκτυο» είναι τα εξής:

“As I describe in the first chapter, the dominant idea among those who raved about cyberspace then was that cyberspace was beyond the reach of real-space regulation.”

“In the years since, that common view has faded. The confidence of the Internet exceptionalists has waned. The idea—and even the desire—that the Internet would remain unregulated is gone.”

“Cyberspace was increasingly everywhere, but it was very hard for those in the audience to imagine it tamed to serve the ends of government. And at that time, commerce was certainly interested in cyberspace, though credit card companies were still warning customers to stay far away from the Net. The Net was an exploding social space of something. But it was hard to see it as an exploding space of social control.”

Ολόκληρο το βιβλίο περιγράφει τις αλληλεπιδράσεις που μπορεί να έχουν δύο σημαντικές δυνάμεις με δυνητικά φοβερή επίδραση στην κοινωνία: ο Νόμος και το Εμπόριο.

Ο Νόμος ως «κώδικας», ως «πηγαίος κώδικας» του Κράτους, ως η «υλοποίηση» του Κράτους, αφού ο Νόμος είναι η οντότητα η οποία έχει άμεση επίδραση και επιρροή στον σχηματισμό και τη λειτουργία της κοινωνίας στον φυσικό κόσμο. Ο Νόμος, επίσης ως δύναμη επιρροής και ελέγχου του τι «μπορεί» και τι «επιτρέπεται» να κάνει το Εμπόριο.

Το Εμπόριο, από την άλλη, ως ενεργοποιός και κατευθυντήρια δύναμη, η οποία δίνει τόσο τη δυνατότητα (μέσω άμεσης ή έμμεσης χρηματοδότησης για την υλοποίηση και εφαρμογή μιας τεχνολογίας). Το Εμπόριο σε συμβουλευτικό ρόλο για το Νόμο, με τις de facto υλοποιήσεις ιδεών και πρακτικών, οι οποίες είτε δεν καλύπτονται πλήρως ακόμη ή δεν έχουν προβλεφθεί από το υπάρχοντα Νόμο.

Αρχίζοντας από αυτό το πλαίσιο το “Code version 2.0″ εξελλίσεται γρήγορα σε ένα συναρπαστικό βιβλίο. Καταφέρνει να παρουσιάσει ορισμένα κρίσιμα θέματα από τεχνική, νομική, ηθική και κοινωνική άποψη. Είναι από τα βιβλία που ξαναδιαβάζω συχνά, απλά γιατί μου αρέσει τόσο πολύ κι επειδή κάθε φορά ανακαλύπτω λεπτομέρειες τις οποίες δεν είχα προσέξει παλιότερα.

Ένα από τα παραδείγματα του βιβλίου έχει σχέση με την ταυτοποίηση κάποιου στο δίκτυο. Είναι πολύ καλή περιγραφή των απαιτήσεων που φαίνεται να έχει η γνωμοδότηση του κ. Σανιδά, οπότε το παραθέτω εδώ αυτούσιο, με μερικά σχόλια στο τέλος.


Is the Way it is the Way it Must Be?

If there was a meme that ruled talk about cyberspace, it was that cyberspace was a place that could not be regulated. That it “cannot be governed”; that its “nature” is to resist regulation. Not that cyberspace cannot be broken, or that government cannot shut it down. But if cyberspace exists, so first-generation thinking goes, government’s power over behavior there is quite limited. In its essence, cyberspace is a space of no control.

Nature. Essence. Innate. The way things are. This kind of rhetoric should raise suspicions in any context. It should especially raise suspicion here. If there is any place where nature has no rule, it is in cyberspace. If there is any place that is constructed, cyberspace is it. Yet the rhetoric of “essence” hides this constructedness. It misleads our intuitions in dangerous ways.

This is the fallacy of “is-ism”—the mistake of confusing how something is with how it must be. There is certainly a way that cyberspace is. But how cyberspace is is not how cyberspace has to be. There is no single way that the Net has to be; no single architecture that defines the nature of the Net. The possible architectures of something that we would call “the Net” are many, and the character of life within those different architectures is diverse.

That most of us commit this fallacy is not surprising. Most of us haven’t a clue about how networks work. We therefore have no clue about how they could be different. We assume that the way we find things is the way things have to be. We are not trained to think about all the different ways technology could achieve the same ends through different means. That sort of training is what technologists get. Most of us are not technologists.

But underlying everything in this book is a single normative plea: that all of us must learn at least enough to see that technology is plastic. It can be remade to do things differently. And that if there is a mistake that we who know too little about technology should make, it is the mistake of imagining technology to be too plastic, rather than not plastic enough. We should expect—and demand—that it can be made to reflect any set of values that we think important. The burden should be on the technologists to show us why that demand can’t be met.

The particular is-ism that I begin with here is the claim that cyberspace can’t be regulated. As this, and the following chapters argue, that view is wrong. Whether cyberspace can be regulated depends upon its architecture. The original architecture of the Internet made regulation extremely difficult. But that original architecture can change. And there is all the evidence in the world that it is changing. Indeed, under the architecture that I believe will emerge, cyberspace will be the most regulable space humans have ever known. The “nature” of the Net might once have been its unregulability; that “nature” is about to flip.

To see the flip, you must first see a contrast between two different cyber-places. These two cyber-places are ideal types, and, indeed, one of the two ideals no longer exists anywhere on the Net. That fact is confirmation of the point this section aims to make: that we’re moving from one Internet to another, and the one we’re moving to will be significantly more regulable.

The following descriptions are not technical; I don’t offer them as complete definitions of types of networks or types of control. I offer them to illustrate—to sketch enough to see a far more general point.

CYBER-PLACES: HARVARD VERSUS CHICAGO

The Internet was born at universities in the United States. Its first subscribers were researchers. But as a form of life, its birth was tied to university life. It swept students online, pulling them away from life in real space. The Net was one of many intoxicants on college campuses in the mid-1990s, and its significance only grew through time. As former “New York Times” columnist J. C. Herz wrote in her first book about cyberspace:

When I look up, it’s four-thirty in the morning. “No way.” I look from the clock to my watch. Way. I’ve been in front of this screen for six hours, and it seems like no time at all. I’m not even remotely tired. Dazed and thirsty, but not tired. In fact, I’m euphoric. I stuff a disheveled heap of textbooks, photocopied articles, hilighters and notes into my backpack and run like a madwoman up the concrete steps, past the security guard, and outside into the predawn mist . . .

I stop where a wet walkway meets a dry one and stand for a sec . . .  [I] start thinking about this thing that buzzes around the entire world, through the phone lines, all day and all night long. It’s right under our noses and it’s invisible. It’s like Narnia, or Magritte, or Star Trek, an entire goddamned world. Except it doesn’t physically exist. It’s just the collective consciousness of however many people are on it. This really is outstandingly weird.

Yet not all universities adopted the Net in the same way. Or put differently, the access universities granted was not all the same. The rules were different. The freedoms allowed were different. One example of this difference comes from two places I knew quite well, though many other examples could make the same point.

In the middle 1990s at the University of Chicago, if you wanted access to the Internet, you simply connected your machine to Ethernet jacks located throughout the university. Any machine with an Ethernet connection could be plugged into these jacks. Once connected, your machine had full access to the Internet — access, that is, that was complete, anonymous, and free.

The reason for this freedom was a decision by an administrator —the then-Provost, Geoffrey Stone, a former dean of the law school and a prominent free speech scholar. When the university was designing its net, the technicians asked Stone whether anonymous communication should be permitted. Stone, citing the principle that the rules regulating speech at the university should be as protective of free speech as the First Amendment, said yes: People should have the right to communicate at the university anonymously, because the First Amendment to the Constitution guarantees the same right vis-à-vis governments. From that policy decision flowed the architecture of the University of Chicago’s net.

At Harvard, the rules are different. If you plug your machine into an Ethernet jack at the Harvard Law School, you will not gain access to the Net. You cannot connect your machine to the Net at Harvard unless the machine is registered—licensed, approved, verified. Only members of the university community can register their machines. Once registered, all interactions with the network are monitored and identified to a particular machine. To join the network, users have to “sign” a user agreement. The agreement acknowledges this pervasive practice of monitoring. Anonymous speech on this network is not permitted — it is against the rules. Access can be controlled based on who you are, and interactions can be traced based on what you did.

This design also arose from the decision of an administrator, one less focused on the protections of the First Amendment. Control was the ideal at Harvard; access was the ideal at Chicago. Harvard chose technologies that made control possible; Chicago chose technologies that made access easy.

These two networks differ in at least two important ways. First and most obviously, they differ in the values they embrace. That difference is by design. At the University of Chicago, First Amendment values determined network design; different values determined Harvard’s design.

But they differ in a second way as well. Because access is controlled at Harvard and identity is known, actions can be traced back to their root in the network. Because access is not controlled at Chicago, and identity is not known, actions cannot be traced back to their root in the network. Monitoring or tracking behavior at Chicago is harder than it is at Harvard. Behavior in the Harvard network is more controllable than in the University of Chicago network.

The networks thus differ in the extent to which they make behavior within each network regulable. This difference is simply a matter of code —a difference in the software and hardware that grants users access. Different code makes differently regulable networks. Regulability is thus a function of design.

Με αυτό το πολύ απλό παράδειγμα, ο Lawrence Lessig παρουσιάζει, λοιπόν, την άποψή του ότι το Διαδίκτυο δεν είναι «εγγενώς» ελεύθερο. Είναι τόσο ελεύθερο όσο επιλέγουμε ΕΜΕΙΣ να το κάνουμε.

Η σημαντική λεπτομέρεια εδώ είναι πως «εμείς» στη συγκεκριμένη περίπτωση είναι ο κ. Σανιδάς και οποιοσδήποτε άλλος έχει τη δυνατότητα να επηρεάσει το νομοθετικό έργο.

Οπότε η δική μου, μάλλον αφελής, γνώμη σχετικά με τη γνωμοδότηση αυτή έχει τουλάχιστον δύο μέρη:

Κατ’ αρχήν μια έκκληση σε όσους βιάζονται να σχολιάσουν ότι «η πληροφορία θέλει να είναι ελεύθερη» ή ότι «το διαδίκτυο γεννήθηκε ελεύθερο και θα παραμείνει ελεύθερο ότι και να κάνουν οι ‘κακοί’ άλλοι»: μην έχετε τόσο σιγουριά ότι το διαδίκτυο γεννήθηκε ελεύθερο ή ότι, για κάποιο μυστηριακό λόγο, έχει μέσα του τα ψήγματα μιας τόσο ανώτερης ελευθερίας που δεν την αγγίζει τίποτα. Την αγγίζουν πολλά πράγματα. Ορισμένα, μάλιστα, από αυτά την έχουν ήδη καταφάει σα σαράκι από μέσα, και μόνο με πολλή προσπάθεια θα μπορέσει να συνέρθει, να πάρει τη μορφή που θέλουμε και να παραμείνει ζωντανή. Διαβάστε το “Code version 2.0″. Μετά ξαναδιαβάστε το. Είναι από τα πιο σημαντικά βιβλία που έχω βρει τα τελευταία 5 χρόνια για την ελευθερία στο διαδίκτυο, και γι αυτό το συνιστώ ανεπιφύλακτα. Ακόμη, αν έχετε κι εσείς με τη σειρά σας κάτι να μου προτείνετε για ενημέρωση, μη διστάσετε. Στείλτε το με email.

Τέλος μια παράκληση στον κ. Σανιδά: Πριν αφορίσουμε κάθε είδους ιδιωτικότητα, ελευθερία και δυνατότητα έκφρασης από το Διαδίκτυο, ας το σκεφτούμε λίγο. Αξίζει τον κόπο, γιατί το Διαδίκτυο που θα φτιάξουμε εμείς σήμερα δεν ανήκει σε εμάς. Ανήκει στις επόμενες γενιές, κι εμείς το δανειζόμαστε προσωρινά από αυτές. Τους χρωστάμε την καλύτερη προσπάθεια που μπορούμε να κάνουμε :)

Ενημέρωση (2 Ιουλ 2009): Η Έλενα Σπυροπούλου έχει κάνει ένα πολύ ωραίο και αναλυτικό σχολιασμό στο κείμενο της γνωμοδότησης: http://www.elenaspiropoulou.gr/node/106

2009-06-28

FreeBSD doc-el picking up speed

As pleasures go, it is a strange yet somewhat refined one to see a project one has started pick up speed. My fellow translators at the Greek documentation team of FreeBSD have been busy lately, and the result of our collective work is a fairly large number of commits to the “doc-el” repository.

There are now at least four translators actively working on a chapter of their own: Manolis Kiagias, Vaggelis Typaldos, Kyriakos Kentrotis and me. Changesets flow between our repository clones almost every day, and I often find myself pulling patches from two or three places at the same time.

This morning I picked up patches from both Kyriakos and Manolis. Manolis had already integrated with Vaggelis, so pulling from him I also got the translations of Vaggelis. In the meantime, my nightly cron job had finished importing a new snapshot from the official CVS tree, so today’s history graph looks scary:

Greek FreeBSD Translations: Commit History of 28 June 2009

The “surface complexity” of a change history like this may seem scary, but to me it is nothing of the sort. It is, in fact, quite the opposite: something to be proud and happy about, because it shows a lively team, working steadily towards our common goal—a fully translated doc/ tree with a translated, accessible version of the FreeBSD Handbook for Greek users.

It really makes me very happy to see an effort started several years ago gain momentum. My own personal commits are far less than those of the other translators now, and I often find myself in the role of a “patch integrator” instead of actively translating new text. But this is ok, because now we have more people working on the translations so we still get many improvements every day :-)

2009-06-15

Apparently Elephants and FreeBSD are Quite Popular

Looking at the search terms that people used to reach this weblog, I noticed that one of the most popular posts of all time is the “Contributing to FreeBSD” post of Feb 2009.

Search terms for this weblog

This is fantastic! I didn’t realize readers of this weblog would like the particular post so much, but I am extremely pleased you did!

Puzzle: Student grades and other amusements

Filed under: Misc — keramida @ 02:51:19
Tags:

An interesting problem was described to me by a friend last night.

Let us assume that there is a semi-fictional school, where a number of students start studying every year. The number of new students ranges between 70 and 150 every year.

The students can pick more than the strictly required number of classes during their few final terms. They get rated in all their optional classes, and just before graduating the students have the option of keeping some of the optional classes and aborting others.

Each time they pick or drop one of the optional classes, there is a system in place that immediatelly replies with their placement in the graduation list, depending on their final score in the selected set of classes.

The school now uses a very peculiar algorithm for selecting a number of the graduating students to cover some of the prestiguous positions for teaching assistants. There are 5 types of positions: A, B, C, D and E. The academic prestige, future options and monetary gains from each type of position are very well-defined, and there is a clear order of preference: A > B > C > D > E.

The peculiar algorithm for picking graduating students for each type of these teaching assistant positions is:

  • After all students have picked a set of class grades, and their graduation placement has been fixed, a ballot is drawn between the numbers 15, 16, 17, 18, 29 and 20.
  • The number N drawn from the ballot is used to split the graduating students in teams of N members, starting from the one with the highest grades as student #1, the second as #2, … the N-th as the last member of the first team, the (N+1)-th as the first member of the second team, and so on.
  • Then the first five students of each team are chosen for the five job position types: the first team member for an A position, the second for a B position, etc.

This is a very strange algorithm for selecting students for the five types teaching assistant positions. At first glance someone may be tempted to say that it is `fair’, because of the ballot. My intuition says this isn’t true, however. So the questions this discussion triggered were:

  • How “fair” is this selection algorithm?
  • Are there positions in the graduation order of all students that are favored a lot by this sort of selection process?
  • If there are positions that do have an advantage, how many are they and what is their overall distribution in the range of [1..150] students of each year?

I spent a bit of time last night trying to work this out, and I think I have an answer now. Before I post how I tried to answer, what are your thoughts? How would you approach this ‘problem’?

Next Page »

Blog at WordPress.com.