Revelation

This is a quote from John R Boyd:

A loser is someone is someone —individual or group —who cannot build snowmobiles when facing uncertainty and unpredictable change;

Whereas,

A winner is someone —individual or group —who can build snowmobiles, and employ them in an appropriate fashion, when facing uncertainty and unpredictable change.

Yesterday’s match (FCB vs Chelsea: 2-2) reminded me of this.

[source pdf]

Note: Boyd’s favorite example during speeches, was to have his audience build a mental “snowmobile” from what they can gather from the surroundings of the situation they are in, by decomposing other stuff to build it.

memcached and MIMEDefang – a cool combination

I like milter-ahead a lot. But in our particular deployment it is not a best fit for it assumes that all the useful information for deciding whether to accept or reject email resides not on the server that it runs on, but in the servers that it queries. This is not milter-ahead’s fault. Milters have no way of expanding aliases while checking the recipient address so the programmer has to use tricks like parsing the output of sendmail -bv user@address thus running a second sendmail process for the same delivery. The alternative would be to hack milter-ahead to check with the alias database the existence of recipient addresses, but doing so the way sendmail reads the alias database is overly complex. One could also write an external daemon to monitor the alias database and inject entries in the (Berkeley DB) database maintained by milter-ahead, but that database is locked exclusively. And yes, exceptions could be entered in the access database, but that would mean maintaining two files for a single (and not so frequent) change in the alias files.

As I’ve blogged before, one of the reasons that I like MIMEDefang is that it gives the Postmaster a full programming language to filter stuff. By simply using md_check_against_smtp_server() a poor man’s non-caching version of milter-ahead is possible. Adding support to read the alias database (be it the text file or the hash table) is also trivial.

But what about the case of busy mail systems? You do not want to hammer your mail servers all the time with queries for which the answer is going to be constant for long periods of time. You need a caching mechanism. At first I thought of implementing such a mechanism the way milter-ahead does: By using a Berkeley DB database and some expiration mechanism, either from within MIMEDefang (retrieve the key and if it should have been expired by now delete it, otherwise proceed as expected) or by an external “garbage collecting” daemon. But such an interface with a clean way to enter keys and values already exists and performs well: memcached. So by using Cache::Memcached within the mimedefang-filter mimicking basic milter-ahead behavior (with caching) was done.

But what about the local aliases in the mail server? After all this was all the fuss that prompted the switch anyway. I wrote a Perl script that opened the alias database using the BerkeleyDB package. Two details need caution here:

  • The first one is ignoring the invalid @:@ entry in the alias database. You do not see it in the alias text file, but you will see it when you run praliases. Sendmail uses this entry in order to know whether the database is up-to-date or not. See the bat book for a longer discussion of this.
  • The second detail is that since the alias database is written by a C program, all strings are NULL terminated. This is not the case with strings that are used as keys and values with Perl and the BerkeleyDB package. However the Perl BerkeleyDB package provides for filters to deal with this case. You need something like:
    $db->filter_fetch_key( sub { s/\0$// } );
    

And then there’s the issue of making such a script a daemon. One can go the traditional way, use a daemonizer on steroids or simply use Proc::Daemon::Init and be done with it.

memcached comes handy to storing key-value pairs in many system administration tasks and I think I’m going to use it a lot more in mail filtering stuff.

Two types of leadership

I was trying to find a particular quote on “responsibility without authority” (and still am) and thanks to Google Books I bumped into this:

Though he would probably have preferred another word to describe it, “purposing” was something like what James M. Burns had had in mind a decade earlier. Leadership is nothing, he wrote in his insightful and influential 1978 study of the subject, “if [it is] not linked to collective purpose.” Burns agreed that a crisis had arrived. People in power were too often mediocre or irresponsible. But he thought this crisis was fundamentally an intellectual one: We simply do not know enough (indeed, we know very little) about leadership. He argued that leadership comes basically in two forms: transactional and transforming. Transactional leadership, in which the relationship between leaders and followers is based on an exchange of favors for support, had become the dominant mode. The transforming variety is “a relationship of mutual stimulation and elevation that converts followers into leaders and may convert leaders into moral agents”. To be a transforming leader is to recognize the relationship with followers and their needs and goals. That relationship and the character of the leader were prime ingredients of Burns’s theory of effective leadership.

Emphasis and links added by me. Good stuff to contemplate on until the May 6 elections…

Update: I use to say that one of the greatest faults in the Greek Public Sector is the existence of parallel hierarchies. Which means that there exists the documented organizational hierarchy and there exist also conditions where a subordinate, because of being close to people “with power” (meaning a political ally, a party member or even an elected member of the Parliament), is ranked higher than his direct supervisor. How is one supposed to lead someone who he cannot order to perform any function at all? Transactional leadership at its best.

Where Wizards Stay Up Late

A lot of us think that they know fragments of the birth of the Internet. Most of these fragments we cannot put in the proper chronological order, nor are they always accurate (with the most notable example that the Internet was invented as part of the US nuclear defense).

If you make even a penny from the Net you must read the book. You will learn a lot about the “founding fathers” (even if many of them disagree on who is the elder one) their dreams and the bottom up emergence of TCP/IP and the Net (in contrast with the top down push for the OSI protocols). Learn the history (and pre-history) of the medium until the early 90s. You have to.

22 λεπτά

22 λεπτά

Αυτά τα 22 λεπτά κράτησαν μέχρι τις 14:35. Βάλε ένα wireless ρε ΤΣΜΕΔΕ να κάνουμε και καμιά δουλειά όσο περιμένουμε. Ευτυχώς είχε καλό καιρό:

ΤΣΜΕΔΕ, 2012/04/09

Ταυτόχρονα υπήρχε και μια όχι και τόσο πετυχημένη κινητοποίηση εγκύων Μηχανικών.

ΥΓ: Εάν έχετε θέματα Ειδικής Αγωγής, καλό είναι να έχετε μαζί σας και τα παλιά βιβλιάρια …

(previous) (next)

Not a simple note this one

Dimitris Christoulas' suicide note

“The Tsolakoglou government has annihilated all traces for my survival, which was based on a very dignified pension that I alone paid for 35 years with no help from the state. And since my advanced age does not allow me a way of dynamically reacting (although if a fellow Greek were to grab a Kalashnikov, I would be right behind him), I see no other solution than this dignified end to my life, so I don’t find myself fishing through garbage cans for my sustenance. I believe that young people with no future, will one day take up arms and hang the traitors of this country at Syntagma square, just like the Italians did to Mussolini in 1945″ [source]

This was not the only suicide. About a month ago, a next door neighbor jumped from the 5th floor. And given a bit of time, everyone left behind will know someone who committed suicide. The Dimitris Christoulas’ suicide moved people so much because he simply stated what many of us think and what most, if not all, of us foresee.

Christoulas was old enough to remember the German occupation and atrocities, the civil war, the dictatorship and the rest of our modern history. Decision makers should take a hint on their effectiveness and escape their groupthinking party.

re: Στρατηγικός και διευθυντικός ο νέος ρόλος των στελεχών Τεχνολογίας της Πληροφορίας

“Ομοφώνησαν ότι ο CIO πρέπει να σπάσει τη «γυάλινη οροφή» που τον κρατά κάτω από την ανώτερη διοίκηση. Παραδέχονται, όμως, ότι χρειάζονται καλύτερη επιχειρηματική εκπαίδευση και μεγαλύτερη εταιρική εμπειρία προκειμένου να γίνουν περισσότερο «στρατηγικοί». Μερικοί συμφώνησαν μάλιστα ότι ένας CIO μπορεί θαυμάσια να είναι ο φυσικός υποψήφιος για μια θέση ανώτατου διευθυντή, είτε του διευθύνοντος συμβούλου.”

(Σημείωση: Ομοφώνησαν == Groupthink)

Αυτά τα συζητάμε πριν από το 1999, είναι γραμμένα σε βιβλία χρόνια τώρα και εν τω μεταξύ το ταβάνι παραμένει και έχουμε γεμίσει με στρατηγούς χωρίς στρατιώτες και γραφειοκράτες. Όπως λέει και ο Nicholas Carr IT does not matter.

Ο Sun Tzu έχει κάνει ζημιά. Με το να διαβάσει κανείς το “Art of War” ή το “Περί Πολέμου” δεν γίνεται και στρατηγός, ειδικά επειδή διάβασε κάτι out of context. Το σκάκι προσφέρει πιο μετρήσιμα αποτελέσματα: Έχεις στη διάθεσή σου 16 εργαζόμενους με συγκεκριμένες δεξιότητες για να τα βγάλεις πέρα. Επειδή διάβασες τους κανόνες και δυο ανοίγματα, δεν είσαι και ο Fisher. Και έτσι καταλαβαίνεις τη διαφορά του “στρατηγού” από αυτόν που διάβασε την τρέχουσα προσαρμογή της “Τέχνης του Πολέμου” στο μάνατζμεντ. Αλλά είναι πάντα πιο εύκολο να συμμετέχει κανείς σε συζητήσεις και brainstorming για meta-strategies (“Τι καλά που θα ήταν εάν υιοθετούσαμε αυτή τη στρατηγική”).

Αν θέλεις να περάσεις τη “γυάλινη οροφή” πρέπει να ξέρεις το τερέν. Αν θέλεις να ξέρεις το τερέν, δεν πας για CIO, μαθαίνεις τη δουλειά end-to-end.

(In-Reply-To:)