Mulberry opensourced!

Φρέσκο, φρέσκο από το INBOX μου:

Hi folks,
All the Mulberry code is now available as open source under an Apache 2 license. Details here:

<http://trac.mulberrymail.com/mulberry/wiki/opensource>

A mailing list has been setup for anyone interested in working on the Mulberry code. You can subscribe to the list at:

<http://lists.mulberrymail.com/mailman/listinfo/mulberry-dev>


Cyrus Daboo

Bye bye Thunderbird…

Πειρατικό λογισμικό – Ελεύθερο λογισμικό

Η BSA “τρέχει” μια καμπάνια στον Τύπο (ή τουλάχιστον είναι η δεύτερη Κυριακή που τη βλέπω στην Καθημερινή), που πάει κάπως έτσι:

ΠΕΙΡΑΤΙΚΟ ΛΟΓΙΣΜΙΚΟ:
ΔΕΝ ΠΛΗΡΩΝΕΤΕ ΤΙΠΟΤΕ ΓΙΑ ΝΑ ΤΟ ΒΑΛΕΤΕ.

ΠΛΗΡΩΝΕΤΕ 1000 ΕΥΡΩ ΓΙΑ ΝΑ ΤΟ ΒΓΑΛΕΤΕ.

Είναι νομίζω μια καλή ευκαιρία για τους υποστηρικτές του ελεύθερου λογισμικού να κάνουν μια ανάλογη καμπάνια:

ΕΛΕΥΘΕΡΟ ΛΟΓΙΣΜΙΚΟ:
ΔΕΝ ΠΛΗΡΩΝΕΤΕ ΤΙΠΟΤΕ ΓΙΑ ΝΑ ΤΟ ΒΑΛΕΤΕ.

ΔΕΝ ΧΡΕΙΑΖΕΤΑΙ ΝΑ ΤΟ ΒΓΑΛΕΤΕ.

Φαντάζομαι όμως πως δεν υπάρχουν οικονομικοί πόροι τέτοιοι για αντίστοιχες καταχωρήσεις στον Κυριακάτικο Τύπο.

Και με την ευκαρία: Μπορεί να έχουμε συνδέσει την έννοια του πειρατικού λογισμικού με την παράνομη διακίνηση και χρήση του εμπορικού-κλειστού λογισμικού, αλλά είναι εύκολο να καταλάβει κανείς πως η πειρατική χρήση είναι φαινόμενο που συμβαίνει και στο ανοιχτό λογισμικό (όταν δεν τηρούνται οι όροι της άδειας χρήσης, αναδιανομής, κ.ο.κ.).

predefined symbols in gcc

I keep forgetting this, so although it is a note to self, I post it here too. The easiest way to find out what symbols are predefined by gcc in your platform; follow these steps:

$ touch p.c
$ gcc -E -dM p.c

#define __DBL_MIN_EXP__ (-1021)
#define __FLT_MIN__ 1.17549435e-38F
#define __CHAR_BIT__ 8
#define __OpenBSD__ 1
#define __WCHAR_MAX__ 2147483647
#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
#define __FLT_EVAL_METHOD__ 2
#define __unix__ 1
#define __i386__ 1
#define __SIZE_TYPE__ long unsigned int
#define __ELF__ 1
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __GNUC_PATCHLEVEL__ 5
#define __FLT_RADIX__ 2
#define __LDBL_EPSILON__ 1.08420217248550443401e-19L
#define __SHRT_MAX__ 32767
#define __LDBL_MAX__ 1.18973149535723176502e+4932L
#define __LDBL_MAX_EXP__ 16384
#define __LONG_MAX__ 2147483647L
#define __SCHAR_MAX__ 127
#define __DBL_DIG__ 15
#define __USER_LABEL_PREFIX__ 
#define __STDC_HOSTED__ 1
#define __LDBL_MANT_DIG__ 64
#define __FLT_EPSILON__ 1.19209290e-7F
#define __LDBL_MIN__ 3.36210314311209350626e-4932L
#define __WCHAR_TYPE__ int
#define __FLT_DIG__ 6
#define __FLT_MAX_10_EXP__ 38
#define __INT_MAX__ 2147483647
#define __FLT_MAX_EXP__ 128
#define __DECIMAL_DIG__ 21
#define __DBL_MANT_DIG__ 53
#define __WINT_TYPE__ unsigned int
#define __GNUC__ 3
#define __LDBL_MIN_EXP__ (-16381)
#define __LDBL_MAX_10_EXP__ 4932
#define __DBL_EPSILON__ 2.2204460492503131e-16
#define __DBL_MAX__ 1.7976931348623157e+308
#define __DBL_MAX_EXP__ 1024
#define __ANSI_COMPAT 1
#define __FLT_DENORM_MIN__ 1.40129846e-45F
#define __LONG_LONG_MAX__ 9223372036854775807LL
#define __FLT_MAX__ 3.40282347e+38F
#define __GXX_ABI_VERSION 102
#define __FLT_MIN_10_EXP__ (-37)
#define __FLT_MIN_EXP__ (-125)
#define i386 1
#define __GNUC_MINOR__ 3
#define __DBL_MAX_10_EXP__ 308
#define __LDBL_DENORM_MIN__ 3.64519953188247460253e-4951L
#define __DBL_MIN__ 2.2250738585072014e-308
#define __PTRDIFF_TYPE__ long int
#define __tune_i386__ 1
#define __LDBL_MIN_10_EXP__ (-4931)
#define __REGISTER_PREFIX__ 
#define __LDBL_DIG__ 18
#define __NO_INLINE__ 1
#define __i386 1
#define __FLT_MANT_DIG__ 24
#define __VERSION__ "3.3.5 (propolice)"

$ rm p.c
$

The output in this example is from a PIII machine running OpenBSD-4.2.

compiling the ns2 network simulator under ubuntu 6.06

Although the ns-allinone source distribution of the ns-2 network simulator is supposed to compile out of the box for most current architectures, this is not always the case. At least not for ns-2.31* and Ubuntu 6.06.

[ ./configure && make && make install (or ./install in this case) makes one lazy. Most of the time there is no real difference between this and double clicking SETUP.EXE on a Windows box. That is why I like these problems: They take you back to the good old days, long before autoconf took over the world; when you had to edit files by hand and make changes that varied from changing a line to writing a whole wrapper function in order to compile the damn thing for your system. ]

First:

sudo apt-get install gcc g++ make libc6-dev libx11-dev libxmu-dev

Then change the ./install script inside the ns-allinone-2.31/ directory:

$ diff install install-
483c483
<         ./configure --x-includes=/usr/include || die "otcl-$OTCLVER configuration failed! Exiting ...";
---
>         ./configure || die "otcl-$OTCLVER configuration failed! Exiting ...";
508c508
<         ./configure --x-includes=/usr/include --with-otcl=../otcl-$OTCLVER
|| die "tclcl-$TCLCLVER configuration failed! Exiting ..."
---
>         ./configure --with-otcl=../otcl-$OTCLVER || die "tclcl-$TCLCLVER configuration failed! Exiting ..."
537c537
<         ./configure --x-includes=/usr/include --with-otcl=../otcl-$OTCLVER
--with-tclcl=../tclcl-$TCLCLVER || die "Ns configuration failed! Exiting ...";
---
>         ./configure --with-otcl=../otcl-$OTCLVER --with-tclcl=../tclcl-$TCLCLVER || die "Ns configuration failed! Exiting ...";
570c570
<         ./configure --x-includes=/usr/include --with-otcl=../otcl-$OTCLVER
--with-tclcl=../tclcl-$TCLCLVER || die "Nam configuration failed! Exiting ...";
---
>         ./configure --with-otcl=../otcl-$OTCLVER --with-tclcl=../tclcl-$TCLCLVER || die "Nam configuration failed! Exiting ...";

In a few words, the above diff shows that the ./configure scripts cannot locate the X11 #include files in an Ubuntu system (although they reside under /usr/include) hence the need for –x-includes=/usr/include .

Read also: How to install ns-2.34 on Ubuntu 9.10 Karmic Koala (Ubuntu 9.10).


[*] – ns-2.33 does not require the above hack.

κάτι κάνουμε λάθος


(Υποσχέθηκα στον apostolo μια απάντηση. Αυτή είναι μια απόπειρα)

Ο Μιχάλης Δερτούζος στην Ανολοκλήρωτη Επανάσταση αφηγείται:

“Διάφοροι συνάδελφοι από το Εργαστήριο Επιστήμης Υπολογιστών του MIT και εγώ πετάμε για την Ταϊβάν. Εδώ και τρεις ώρες προσπαθώ να κάνω τον καινούριο φορητό υπολογιστή μου να δουλέψει με μια από αυτές τις “έξυπνες κάρτες” που συνδέονται με το μηχάνημα, προκειμένου να κατεβάσω το προσωπικό μου ημερολόγιο. Όταν το λογισμικό της κάρτας είναι ικανοποιημένο, το λειτουργικό σύστημα διαμαρτύρεται, και το αντίστροφο. Εκνευρισμένος, απευθύνομαι στον Τιμ Μπέρνερς-Λι, που κάθεται δίπλα μου, και ο οποίος ευγενικά προθυμοποιείται να με βοηθήσει. Μετά από μία ώρα, ο εφευρέτης του Web παραδέχεται ότι το έργο αυτό είναι πέρα από τις δυνατότητές του. Στρέφομαι στον Ρον Ρίβεστ, εφευρέτη του RSA, του αλγόριθμου κρυπτογράφησης με δημόσιο κλειδί, και του ζητώ να βοηθήσει. Αρνείται, επιδεικνύοντας τη σοφία του. Ένα νεαρό μέλος του τομέα που κάθεται πίσω μας ακούγεται να λέει: “Εσείς παιδιά είστε πολύ γέροι. Αφήστε να το κάνω εγώ”. Εγκαταλείπει μετά από μιάμιση ώρα. Έτσι, επιστρέφω στην “αλάνθαστη” μέθοδο του να περνάω τυχαίες καταχωρήσεις στα διάφορα βοηθητικά μενού που εμφανίζονται αδιάκοπα στην οθόνη. Μετά από δύο ώρες, και δύο μπαταρίες, το κάνω να δουλέψει – από καθαρή τύχη και χωρίς να θυμάμαι πως.”

Γράφει ο Bob Lucky στο IEEE/Spectrum (Ιούλιος 2007):

So my old computer is filled with stuff I don’t remember putting there. Occasionally I try to remove something and get a message like, “Other programs may use this file: are you sure you want to delete this?” Well, if you put it that way, what can I say? When the computer boots up, I hear the beeps from things it couldn’t execute, and when I shut it down, it warns me about closing programs I’ve never heard of, that if terminated early, may lose valuable data. Both start-up and shutdown take forever, and in between the computer is sluggish, seemingly disdainful of anything I want to do. […] The registry in my computer is beyond repair. I can’t go there anymore. My only hope is to start over”

Τις προάλλες βοήθησα ένα φίλο να ενεργοποιήσει τη σύνδεση DSL που αγόρασε από μεγάλο ISP. Το μόνο που είχε στα χέρια του ήταν ένα FAX με τον κωδικό χρήστη και το password. Ξεκινήσαμε τηλεφωνικά:

– Μπες στο http://192.168.1.1
– Μου ζητάει username και password. Να τα βάλω;
– Όχι. Βρες το manual του modem […]

(βρίσκει τα default και τα βάζει)

– Ωραία, πάμε τώρα να φτιάξουμε το DSL
:
– Μου ζητάει username και password. Να τα βάλω;
– Όχι, τώρα πρέπει να βάλεις mitsos@mitsos.gr και password mitsos
:
– Πήγαινε στο http://my.mitsos.gr
:
– Μου ζητάει username και password. Να τα βάλω;
– Ναι

(επιφώνημα ανακούφισης)

– Τώρα τι κάνω;
– Τώρα θα φτιάξεις ένα username και ένα password για το DSL
– Μα αφού έχω συνδεθεί!
– Όχι, δεν έχεις, πρέπει να φτιάξεις το δικό σου λογαριασμό

(φτιάχνεται ο λογαριασμός)

– Τώρα;
– Τώρα πρέπει να φτιάξεις ένα username και ένα password για το email σου
– Μα δεν έφτιαξα account;
– Ναι για το DSL

(φτιάχνεται ο λογαριασμός email)

– Τώρα;
– Τώρα πρέπει να πας στο http://192.168.1.1 και να βάλουμε τις νέες ρυθμίσεις

(Του βγάζει username και password popup, βάζει αυτά του DSL και δεν του παίζουν)

– Δεν με αφήνει να μπω.
– Μα δεν έβαλες το σωστό ζεύγος κωδικών
– Ποιο πρέπει να βάλω;
– Αυτό που βρήκες στο βιβλιαράκι
:
– Θυμάσαι το mitsos@mitsos.gr; Πρέπει να το αλλάξουμε αυτό και να βάλουμε αυτό που φτιάξαμε προηγουμένως.

– Βραχυκύκλωσα!

Έκλεισα το τηλέφωνο και πήγα σπίτι του.

Δεν συνεχίζω την ιστορία με το πως ρυθμίστηκε το Outlook Express, ή πως θα διάβαζε το email του μέσω webmail. Την έχετε την εικόνα. Ο συγκεκριμένος άνθρωπος δεν είναι καν απλός χρήστης. Μου έχει χαρίσει ένα TI-59 για το οποίο έγραφε προγράμματα από το 1978.

Αυτό το πράγμα φίλε Απόστολε δεν είναι επανάσταση. Μπορεί για κάποιους η πρόσβαση να έγινε ευκολότερη, αλλά στα δικά μου μάτια εκεί που οι άλλοι βλέπουν επανάσταση, εγώ βλέπω:

  1. χαμένες εργατώρες σε υποστήριξη (φιλική ή επί πληρωμή) και επανεγκαταστάσεις
  2. χαμένα δεδομένα
  3. διαρκή επανάλληψη των ίδιων λαθών
  4. ημιμάθεια και
  5. ενίσχυση της τεχνοφοβίας

Καταλαβαίνω πως η διαδικασία που έπρεπε να ακολουθήσει ο συγκεκριμένος άνθρωπος θα μπορούσε να έχει λιγότερα βήματα σε άλλο ISP (ή εάν ο συγκεκριμένος ISP αποφασίσει να απλοποιήσει τη διαδικασία). Αλλά η αγορά δεν παύει να γεμίζει με ασταθή προϊόντα των οποίων η συμπεριφορά είναι προφανής μόνο για κάποιους που είναι έμπειροι χρήστες και on top of that τους προσφέρουμε τηλεφωνικό support των 10 λεπτών maximum με ανθρώπους ανεκπαίδευτους που παίρνουν €600 – €800 / μήνα (με ότι σημαίνει αυτό για τις ικανότητες και την όρεξη που έχουν να λύσουν ένα πρόβλημα που δεν είναι “στη λίστα”) οι οποίοι είναι υποχρεωμένοι να ακούνε το μακρύ και το κοντό του καθενός και μάλλιστα με χαμόγελο.

Και έτσι έχουμε φτιάξει ένα οικοσύστημα γεμάτο από μηχανές που έχουν default password (hello zombie network!), χρήστες που έχουν το ίδιο password παντού και για όλες τις υπηρεσίες (και έτσι π.χ. η ασφάλεια της αλληλογραφίας τους στο Gmail δεν εξαρτάται μόνο από το Google και τον χρήστη, αλλά και από όλα εκείνα τα sites στα οποία έχει βάλει το ίδιο password- με δικιά του ευθύνη φυσικά, αλλά δεν μπορεί να θυμάται 40 ζεύγη usernames-passwords και δεν εξετάζω την ευθύνη, αλλά την εξάρτηση) και αφελείς χρήστες που νομίζουν πως αυτά συμβαίνουν μόνο στους άλλους.

Βελτιώνει την ποιότητα της ζωής μας το να κοιτάμε τον υπολογιστή και να μην καταλαβαίνουμε το μήνυμα λάθους που του γράφει; Σε ποιον ακριβώς αρέσει να νιώθει ηλίθιος; Πως ακριβώς βελτιώνεται η συγγραφική μας ικανότητα από οποιοδήποτε fancy word processor όταν τον περισσότερο χρόνο τον καταναλώνουμε στο πως θα φαίνεται το κείμενο και όχι στο τι γράφει;

Είναι όλο αυτό επανάσταση; Μπορεί και να είναι, αλλά από τα αποτελέσματά της δεν είμαι ευχαριστημένος.


[ Παρακαλείσθε να μην επιχειρηματολογήσετε περί Information Superhighway και λοιπά δημοσιογραφικά και αστοιχείωτα. Το Διαδίκτυο και οι εφαρμογές του προσφέρουν πρόσβαση σε πολλή πληροφορία. Πληροφορία, όχι Γνώση ]

Downtime is an option

“Μου χάλασαν 460 μέρες uptime στο firewall”. Φίλος χτες, κατά τη διάρκεια δοκιμών προσπαθώντας να ξεπεράσει (route arround) το χθεσινό πρόβλημα.

Δεν χωρεί αμφιβολία πως το uptime είναι ένα καλό μέτρο σταθερότητας των συστημάτων που διαχειρίζεται (συντηρεί) ένας system administrator. Το να γίνεται όμως αυτοσκοπός (και μερικές φορές ένα είδος συναδελφικής “κόντρας”) είναι επικίνδυνο:

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

Τα συστήματα που διαχειριζόμαστε εξελίσσονται (μεταλλάσσονται που λέει και ένας καθηγητής μου) με την προσθήκη νέων υποσυστημάτων που “πατάνε” στην παλαιότερη υποδομή. Και ναι, η ικανοποίηση είναι μεγάλη όταν μπορείς να επιτύχεις δραστικές αλλαγές στο σύστημα χωρίς να “κατεβάσεις” μηχάνημα (χωρίς να χαλάσεις το uptime δηλαδή).

Αλλά:

Στη διαδικασία αυτών των αλλαγών μεταβάλλονται κατά τρόπο μη προφανή δύο διαδικασίες:

  • Διαδικασία παύσης όλου του συστήματος
  • Διαδικασία έναρξης όλου του συστήματος

και επηρεάζεται εξίσου και η διαδικασία επανεκκίνησης τμημάτων ή όλου του συστήματος. Πολλές φορές το να έχουν κάποια μηχανήματα υψηλό uptime (πάνω από 6 μήνες κατά τη γνώμη μου) είναι περισσότερο πρόβλημα, παρά στοιχείο υπερηφάνειας:

Μπορεί στο μεσοδιάστημα να έχουν αλλάξει περισσότερους από ένα διαχειριστές, με ότι σημαίνει αυτό ως “χαμένη εμπειρία” για το σύστημα, ειδικά εάν ο παλαιότερος διαχειριστής έχει αλλάξει εργοδότη.

Υψηλό uptime σημαίνει πως τουλάχιστον kernel patches δεν έχουν εφαρμοστεί, με ότι σημαίνει το ρίσκο αυτό κατά περίπτωση. Ναι, ξέρω πως υπάρχουν λειτουργικά συστήματα στα οποία μπορείς να κάνεις upgrade τον kernel χωρίς reboot. Πόσοι δουλεύετε με τέτοια και πόσοι από αυτούς που όντως δουλεύετε με τέτοια κάνετε έτσι τα upgrades;

Πολλές φορές δεν μπορούμε να δουλεύουμε με καινούριες μηχανές. Μερικές φορές κρίσιμη υποδομή ενδέχεται αναγκαστικά να βρίσκεται σε μηχανήματα 10+ χρόνια παλιά. Με το πέρασμα του χρόνου το κάθε μηχάνημα αποκτά τα “χούγια” του (π.χ. ο διακόπτης πρέπει να πατηθεί “κάπως” για να δουλέψει) ενώ ακόμα και στο software που τρέχει το να κάνεις reboot μπορεί να σημαίνει πως κάποιες διαδικασίες πρέπει να τις κάνει υποχρεωτικά με το χέρι πριν το reboot, ή μετά το boot, κ.ο.κ.

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

Και μην ξεχνάμε: 99.999% uptime is for Wal-Mart. Γι’αυτό:

Downtime is not an option.


Ο αρχικός τίτλος του post ήταν: uptime (ή ποιος την έχει μεγαλύτερη)

L.ROOT-SERVERS.NET has changed IP address

L.ROOT-SERVERS.NET has changed IP address to 199.7.83.42. A fellow DNSmaster suggested that I should put it up here. Mark Andrews of ISC posted:

	If you already have a root hints zone defined in named.conf
	you need to update the address in the file it loads from.

	The easiest way to create a new file is to run dig, check
	the contents of the file it generates then move the file
	into place.

		dig ns . @a.root-servers.net > newfile

	If you don't have any root zone defined they you will be
	using the built-in hints.  In this case you should create
	a root hints zone if you don't have a root zone already
	defined and you are using class IN (the default class).

		dig ns . @a.root-servers.net > root-hints

		zone "." {
			type hint;
			file "root-hints";
		};

	If you are not using views you do this at the options level.
	If you are using views you need to define this zone in
	each view of class IN.

	BIND 9.3.5, BIND 9.4.2 (9.4.2rc2) and BIND 9.5.0 (9.5.0a7) will
	have their built-in root hints updated to reflect this change.

	If you wish to change the built in hints apply the attached
	patch.  In the top level directory run.

		patch -p1 < l-root-servers.patch
		make clean
		make

	Mark
-- 
Mark Andrews, ISC
1 Seymour St., Dundas Valley, NSW 2117, Australia
PHONE:	+61 2 9871 4742		         INTERNET: Mark_Andr...@isc.org

[via comp.protocols.dns.bind]

ΤΣΜΕΔΕ #3

Με δεδομένο πως η διοίκηση του ΤΣΜΕΔΕ αποτελείται κατά τα 3/5 από Μηχανικούς, δηλαδή από ανθρώπους που ξέρουν από συστήματα αναμονής, είναι απορίας άξιο πως κανείς δεν έχει ασχολήθεί με το workflow των ουρών στο Ταμείο. Και μη σκεφτεί κανείς κακή ή ελλειπή μηχανογράφηση. Η διαχείριση ουρών και το indexing εγγράφων είναι προβλήματα για τα οποία υπάρχουν λύσεις αίωνες τώρα.

(#2) (#4)