Δευτέρα, Ιανουαρίου 24, 2011

"Άλλο να στο λέω"

Όλοι το έχουμε δει το σκηνικό. Ρωτάς αν το Χ είναι καλό και η απάντηση που παίρνεις ακολουθεί το παρακάτω φορμά:
- Είναι... κάτσε καλά!
- Άλλο πράμα!
- Τσαλακώνει!
- Τσσσσσς!
- Άλλο να στο λέω...!
Στο 99% των περιπτώσεων, συνοδεύεται από την χαρακτηριστική κυκλική κίνηση του βραχίονα.

Και κάπου εδώ χτυπάει κόκκινος συναγερμός. Γιατί ξέρεις ότι αν ρωτήσεις γιατί είναι τόσο καλό, θα λάβεις φοβερά αναλυτική επεξήγηση της μορφής "βρε άμα σου λέω εγώ!".

Η άποψη του κυρίου διαγράφεται από τα πρακτικά.

Τετάρτη, Ιανουαρίου 19, 2011

vi stories (και κανά-δυο tips)

Πρώτη επαφή με τον vi, κάποια χρόνια πριν, στο εργαστήριο των ΛΣ ΙΙ. "Όποιος δεν ξέρει να χειρίζεται vi στο τέλος του εξαμήνου, κόβεται αυτόματα." Ακολούθησε ένα γενικό στραβομουτσούνιασμα στην αίθουσα και 20κάτι άτομα πάλευαν για τους επόμενους μήνες να συνηθίσουν τα τρία modes του vi.

Για κάποιο λόγο, μόνο εγώ είχα ενθουσιαστεί - και μάλλον ήταν ο λόγος που κάποιοι με κοιτούσαν περίεργα. Απαξιώ όμως, για αυτό και έκατσα και ασχολήθηκα με τον vi (και τον vim - vi improved) και εκτός μαθήματος, και αργότερα και εκτός σχολής. Κατέληξα να βγάλω όλη την πτυχιακή του master σε vi - σετάρισμα των router, scripting, γράψιμο του thesis report παρέα με LaTeX (άλλη ταλαιπωρία από κει, αποτελεσματικό όμως).

Είμαι σίγουρος ότι σε αυτό το σημείο οι περισσότεροι κουνάτε το κεφάλι σας αποδοκιμαστικά. Haters gonna hate, απαξιώ.

Το θέμα είναι όμως ότι όσο δύστροπος και unfriendly μπορεί να είναι ο vi, είναι ένας ελαφρύς αλλά ΠΟΛΥ ισχυρός text editor από μόνος του, πριν ακόμα βάλεις plugins ή τον παραμετροποιήσεις. Αυτό ακριβώς είναι που τον κάνει 1η επιλογή σε άτομα που πρέπει να δουλεύουν σε διαφορετικά συστήματα. Δεν έχει σημασία αν δουλεύω στο Macbook μου, στον Debian server, στο χακαρισμένο με OpenWRT Linksys, στον Bifrost/Linux router, στο FreeBSD μηχάνημα - ο vi είναι εκεί, με τα ίδια shortcuts, με το ίδιο functionality. ΟΚ ίσως όχι το ίδιο ακριβώς functionality, τα desktop συστήματα συνήθως έχουν vim και όχι απλό vi, αλλά δεν πειράζει να σου λείψουν μερικές υπερ-προχωρημένες λειτουργίες πάνω στο embedded σύστημα του bluetooth handsfree σου (λέμε τώρα). Υπάρχει σχεδόν παντού και για αυτό ακριβώς τον θεωρώ ως το πρώτο πράγμα που πρέπει να μαθαίνει ένας εκκολαπτόμενος sysadmin ή network engineer.

Νταξ, μην αρχίσετε οι πιστοί της Εκκλησίας του Emacs τις επιθέσεις. Έτυχε να μάθω πρώτα vi και δεν έτυχε να ασχοληθώ ποτέ με Emacs, αυτό είναι όλο. Φαντάζομαι ότι τα ίδια περίπου ισχύουν και για τον Emacs, αν και έχω την εντύπωση ότι υπάρχει μεγαλύτερη δυνατότητα παραμετροποίησης μεν, μικρότερο portability δε.

Σύντομο ανέκδοτο: ο technical supervisor της πτυχιακής στο μάστερ είναι linux guru παλιάς κοπής και Emacs ninja - όταν βλέπεις στο X-mailer field "Emacs+κάποιοplugin", ΞΕΡΕΙΣ. Όταν με είδε πρώτη φορά να κάνω edit ένα configuration file σε vi, ψιλοχλώμιασε. "No, no, don't use that, it's no good." Την άλλη βδομάδα, άρχισα να κουβαλάω μαζί μου την αγαπημένη μου κούπα του καφέ, The Mug of Vi References, η οποία καθόταν επιδεικτικά δίπλα στο πληκτρολόγιο. Δεν νομίζω ότι έχω ξαναδεί άνθρωπο να προσπαθεί να αγνοήσει κάτι με τέτοια αποτυχία. Είμαστε κι εμείς, αλλά είστε κι εσείς...

Ναι, η εκμάθηση του vi είναι μανίκι, αλλά οι πραγματικοί λόγοι είναι δύο μόνο.
α) Τα operation modes και η λογική τους είναι λίγο περίεργη (ακολουθεί σύντομο tutorial στο τέλος), τελείως διαφορετική από την WYSIWYG λογική απεχθών προγραμμάτων όπως Notepad, Word κλπ. Ο κόσμος στραβώνει.
β) Ο κόσμος δεν κάθεται να μάθει keyboard shortcuts. Θα επιλέξω αυτή την παράγραφο με το mouse, θα κάνω δεξί κλικ, θα κάνω κλικ στο copy κλπ κλπ. Μόλις μάθεις να δουλεύεις αποκλειστικά με πληκτρολόγιο, δύσκολα γυρνάς πίσω.

Πιστεύω ότι σαν χρήστης vi έχω δρόμο ακόμα - είμαι ένας μικρός vi padawan. Το functionality που παρέχει είναι ατέλειωτο και ο vim, ο οποίος αναπτύσσεται ενεργά, προσθέτει συνεχώς καινούρια χαρακτηριστικά. Δεν θα απαριθμήσω features - δεν ξέρω ούτε τα μισά. Θα γράψω όμως μερικά tips που μπορούν να βοηθήσουν τους αρχάριους.

- Με :set number εμφανίζεται αρίθμηση των γραμμών στα αριστερά, πολύ χρήσιμο για όλες τις λειτουργίες που θέλουν πλήθος γραμμών (π.χ. 13dd). Όσοι έχετε Vim 7.3, :set rnu για σχετική αρίθμηση - ο αριθμός δίπλα από την γραμμή δείχνει την σχετική απόσταση από την γραμμή του κέρσορα.

- Το find and replace all matches γράφεται :%s/old_text/new_text/g

- Αυτό κάπου το είδα πρόσφατα, αλλά δεν θυμάμαι που. Τα :help! και :Ni! επιστρέφουν εξυπνάδες :)

- Προσωρινή έξοδος στο shell με :sh. Ιδιαίτερα χρήσιμο όταν έχω κάνει 5-10-50 αλλαγές σε ένα αρχείο, κάνω :w και μου λέει Read-only. Drop to shell με :sh, αλλαγή δικαιωμάτων ή remount του δίσκου ως writable και επιστροφή στο vi γράφοντας exit.

- :make για να αρχίσει η εκτέλεση του make, σύμφωνα με το makefile που έχεις ετοιμάσει. Έχω ένα μικρό makefile για το LaTeX, για να μου ετοιμάζει και ανοίγει το pdf.
 # makefile
pdf: thesis.tex
pdflatex --shell-escape --synctex=1 thesis.tex
evince thesis.pdf (ή open thesis.pdf για MacOSX)
- Πατάς m και ένα γράμμα για να αφήσεις bookmark (mark κατά το vi manual) στην γραμμή που είσαι εκείνη την στιγμή. Επιστροφή με ' ("μονό αυτάκι") και το γράμμα. Δηλαδή, ma για να μαρκάρεις με a την γραμμή, πας 23.000 γραμμές κώδικα (τσσσσ) παρακάτω, αντιγράφεις κάτι, 'a για να επιστρέψεις εκεί που ήσουν. Και φυσικά, άλλο το ma, άλλο το mb, άλλο το mc, άλλο το mA κ.ο.κ. ;)

- Η ταπεινή τελεία επαναλαμβάνει το τελευταίο edit του αρχείου. Όταν λέμε edit, εννούμε ό,τι έκανες στην τελευταία φορά που μπήκες σε insert mode. Αναίρεση φυσικά με undo (πλήκτρο u).

- Το προηγούμενο tip είναι και ο λόγος που θα πρέπει να μάθεις από νωρίς μια καλή συνήθεια: να επιστρέφεις πάντα σε command mode. Δηλαδή, πατάς i για να μπεις σε insert mode, γράφεις αυτό που θες, πάτα Esc για να βγεις από insert mode σε command mode. Μην μετακινείσαι με βελάκια 40 σειρές πιο κάτω ενώ είσαι ακόμα σε insert mode, γιατί αν χρειαστεί να κάνεις undo, θα το μετανιώσεις - θα φύγουν όλες οι αλλαγές από τότε που μπήκες στο insert mode. Ναι, είναι σπαστικό στην αρχή αυτό το πράγμα, αλλά αν πρέπει να κρατήσεις ένα tip από όλα αυτά, είναι αυτό εδώ.

- Indentation μιας γραμμής με >> (προσθέτει ένα επίπεδο indentation). Προφανώς με << φεύγει ένα indentation level. Φυσικά, όπως και στις περισσότερες εντολές του vi, μπορείς να ορίσεις ομάδα γραμμών, π.χ. 4>> για να κάνεις indent την γραμμή που είσαι και τις τρεις επόμενες. Και αν δεν σου κάνει ένα indentation level, πάτα την τελεία για επανάληψη της εντολής ;)

- Syntax highlighting με :set syntax=on.

- Search κάνεις με το /, πχ /wordtofind. Προχωράς στο επόμενο match με n. Επίσης, βοηθάει το :set hlsearch (κάνει highlight τα αποτελέσματα) και το :set incsearch (κάνει LIVE highlight τα αποτελέσματα όπως οι πιο πρόσφατοι browsers, δηλαδή την ώρα που γράφεις το search term). Λίγοι έχουν πάρει χαμπάρι ότι σαν tribute στον vi, το / χρησιμοποιείται και στον Firefox για search. Μεταξύ μας, πολύ πιο βολικό από το Ctrl/Cmd+F.

- Που είναι η άλλη άκρη της παρένθεσης; :set showmatch για να σου δείχνει αυτόματα το άλλο άκρο παρένθεσης ή bracket όταν ο κέρσορας περνάει πάνω από ένα τέτοιο.

- Σου αρέσουν αυτά τα options για showmatch, hlsearch κλπ; Βάλτα στο αρχείο .vimrc που (πρέπει να) βρίσκεται στο home dir σου. Όταν θα ξανανοίξεις τον vi, θα είναι ήδη ενεργοποιημένα.

ΥΓ: vi-vi-vi, the number of the beast :P
-----------------

Υπεραπλουστευμένο vi operation modes tutorial.

Δεν είναι τόσο άσχημα τα πράγματα, βασικά τα operation modes του vi είναι πολύ εύκολα, απλά δεν είναι όπως στους τυπικούς text editors. Θα το πάω συγκριτικά με το notepad για να έχουμε κάποια σημεία αναφοράς.

Περίληψη:

insert mode: γράφω κείμενο
command mode: δίνω εντολές με shortcuts
command line mode: δίνω εντολές γράφοντας όλο το command και τα parameters
Το βασικό mode λειτουργίας του vi είναι το command mode!

Λίιιιιγο πιο αναλυτικά:

Κατά vi, υπάρχουν τρία modes λειτουργίας: command, insert και command line modes. Στο notepad υπάρχει μόνο το insert mode. Και στους δύο editors είναι το mode στο οποίο ό,τι πληκτρολογείς εισάγεται στο κείμενο. Για το notepad, είναι το default mode λειτουργίας.

Στο notepad, αν πατήσεις ctrl+κάποιο γράμμα, θα κάνει μια δουλειά. Θα εκτελέσει μια εντολή. Αφήνεις το ctrl και συνεχίζεις να γράφεις. Στον vi, αυτό λέγεται command mode, αλλά έχει αρκετές διαφορές. Για να πας από insert mode σε command mode, πατάς το Esc ΜΙΑ ΦΟΡΑ. Δεν το κρατάς πατημένο. Πλέον, ό,τι πατήσεις είναι εντολή. Αν πατήσεις δύο φορές d, θα σου σβήσει την γραμμή που είχε τον κέρσορα. Μπορείς να δώσεις πολλές εντολές, την μία μετά την άλλη. Για να πας πάλι σε insert mode, δίνεις μια εντολή εισαγωγής κειμένου (i, a ή o).

Δεν είναι τόσο περίεργο τώρα που το σκέφτεσαι, έτσι; Ε είναι λίγο, γιατί το command mode είναι το default του vi - όταν τον ξεκινάς, ο vi αρχίζει ΠΑΝΤΑ σε command mode. Άρα με τον που ανοίγεις, πρέπει να πατήσεις π.χ. i για να αρχίσεις να γράφεις. Και πάλι όμως, δεν είναι πυρηνική φυσική, έτσι;

Στο notepad νομίζω υπάρχει ένας συνδυασμός πλήκτρων (Ctrl+F10; Alt+F10; θα σε γελάσω) ο οποίος σε πηγαίνει στο menu bar, εκεί που έχεις τα File, Edit κλπ. Εκεί πλέον μπορείς να πλοηγηθείς με τα βελάκια μέχρι να βρεις το search and replace, να βάλεις την λέξη που θες να αλλάξεις και να πατήσεις το ok. Σε γενικές γραμμές, δεν θα έλεγες ότι αυτό είναι μια υπολειτουργία του "command mode" του notepad;

Στο command mode του vi πατάς το : για να σου εμφανίσει μια σειρά στο κάτω μέρος της οθόνης όπου γράφεις μια πιο περίπλοκη εντολή μέχρι να την ολοκληρώσεις και να πατήσεις enter για να εκτελεστεί. Ένα παράδειγμα; :w filename και Enter για να σώσεις (write) το αρχείο με το όνομα filename. Αυτό λέγεται command line mode.

Ναι, οι διαφορές command και command line mode είναι μικρές και να σου πω την αλήθεια, ούτε εγώ κάθομαι να τα πολυξεχωρίσω. Είναι πιο εύκολο (και ίσως πιο "υγιές") να τα θεωρήσεις ένα και να τελειώνεις. Απλά, στο command mode, οποιοδήποτε πλήκτρο πατήσεις, εκτελείται μια εντολή (πχ το u είναι undo), ενώ στο command line mode πρώτα συνθέτεις την εντολή και μετά την "τρέχεις" πατώντας το enter.

Παρασκευή, Ιανουαρίου 07, 2011

Deal-breakers

Τώρα τελευταία, πολλοί προσπαθούν να με πείσουν ότι το δικό τους κινητό είναι καλύτερο και να πετάξω την μπαχατέλα το iPhone 3G που πάλιωσε και είναι αργό και δεν γράφει και video και δεν έχει multitasking και δεν δεν δεν δεν.

Πάρτε deal-breakers για όλες τις πλατφόρμες γιατί μου την έσπασαν όλοι:

iPhone 4:
Μπορώ να πω πάρα πολλά εδώ πέρα, γιατί 2,5 χρόνια τώρα ξέρω τα κουσούρια του iOS από την καλή και την ανάποδη. Μεγαλύτερα προβλήματα για μένα είναι η μηδενική υποστήριξη Linux, η micro-SIM (έχω διαφορετικές SIM για κάθε Ελλάδα, Σουηδία, Ολλανδία), το κλειστό οικοσύστημα της Apple που δεν σου αφήνει π.χ. να αλλάξεις το απλοϊκό Mail.app με έναν πιο σοβαρό mail client, αλλά και το πάρα πολύ εκνευριστικό multitasking, το οποίο είναι απλά άθλιο και τελείως un-Apple.

Παράδειγμα κλεισίματος εφαρμογής: πατάς Home button για να βγεις, η εφαρμογή πάει στο background. Διπλό Home button για να ανοίξεις τον task manager. Βρίσκεις το εικονίδιο της bg'ed εφαρμογής, click-and-hold μέχρι να αρχίσει να "κουνιέται". Πατάς το X που εμφανίζεται για να κλείσει η εφαρμογή). Home button για να βγεις από τον task manager. Αν το κάνεις τρεις φορές γρήγορα μπροστά σε καθρέφτη, εμφανίζεται ο Steve Jobs.

Android:
Το αντίπαλο δέος. Που δεν ξέρεις αν θα συνδεθεί στο εταιρικό/πανεπιστημιακό wifi (το WPA-enterprise είχε μέχρι πρόσφατα χοντρό πρόβλημα). Που είναι ανοικτό σύστημα (χα!), αρκεί να κάνεις root την συσκευή. Που επιτρέπει τα πάντα στο Android market και έχει γεμίσει ο τόπος infected 'droids.

Τα μεγαλύτερα προβλήματα του Android είναι ότι η Google δεν ασχολείται με λεπτομέρειες και με την έννοια του support. Και όταν λέμε support, εννοούμε "deal with it" - η απάντηση της Google για κάτι προβλήματα 3G στο Nexus One (αν θυμάμαι καλά), όταν βαρέθηκε να ασχοληθεί άλλο. Η νοοτροπία των beta πέρασε από το Gmail στο Android.

Επίσης, βγάζει τα updates του Android χύμα, και μετά οι manufacturers πρέπει να τα βάλουν στις συσκευές τους. Το οποίο στην πλειοψηφία των περιπτώσεων απαιτεί υπολογιστή με Windows. Και πάλι, ΑΑΑΑΝ βγει το update. Πρόσφατο παράδειγμα η Sony Ericsson που ανακοίνωσε ότι το X10 δεν θα πάρει καν το Android 2.2 "Froyo". Κινητό των 400 ευρώ με λιγότερο από έναν χρόνο κυκλοφορίας, έτσι; Ας μην ξεχνάμε και το Nexus One που αποσύρθηκε μετά από 6 μόλις μήνες κυκλοφορίας. Τι στο διάολο - μίας χρήσης είναι;

Υπάρχουν ένα κάρο συσκευές Android με διαφορετικό hardware. Θέλεις να κατεβάσεις ένα game και ψάχνεις το compatibility. Σαν πολύ... desktop pc δεν θυμίζει αυτό;

Symbian:
Χαχα.

Νεκρό λειτουργικό, με μηδενικό μέλλον - η Nokia το κυκλοφορεί ακόμα γιατί δεν έχει προλάβει να συμμαζέψει το Maemo/MeeGo. Είπαμε, ήταν πρωτοποριακό πριν 5-6-10 χρόνια, αλλά και η γιαγιά μου γκομένακι το έπαιζε στα νιάτα της. Η διαδικασία του mail setup σε Symbian είναι Σταυροφορία σε σχέση με τους υπόλοιπους και προφανώς πρέπει να πας σε Ν8 και Symbian 3 για να δεις κάτι που να μην θυμίζει '90s σε αισθητική και λειτουργικότητα. (και πάλι επιφυλάσομαι για το Ν8 μέχρι να το πιάσω στα χέρια μου για αναλυτική επαφή). Πριν καιρό είχαν βγει στο φως δηλώσεις ενός υπαλλήλου της Nokia που έλεγε ότι οι softwareάδες είναι παρακατιανοί μέσα στην Nokia και κουμάντο στην παραγωγή κάνουν οι hardwareάδες, με αποτέλεσμα να γράφουν τις ανάγκες του OS εκεί που δεν πιάνει μελάνη. Που να βάζεις μνήμη τώρα, είναι και ακριβή, πάμε στο μισό από το OS requirement, κι άλλα τέτοια ωραία.

Bug-ridden OS και μάπα ποιότητα κατασκευής. Οι χρήστες Nokia που ξέρω όλοι τρέχουν σε service. Και τι service, ε; Έπρεπε να μπλέξουμε με Rainbow και Systemgraph για να εξαφανιστούν οι κραυγές αγωνίας των πελατών της Alpha Copy. Όλοι οι haters ασχολούνται με την Apple (διότι το iPhone ως #1 παγκοσμίως γίνεται αυτόματα "ο εχθρός") και κατεβάζουν αμάσητο το πόσες συσκευές Nokia φεύγουν για service.

Palm:
Ε εντάξει, τι να πούμε... Θες να αγοράσεις και δεν μπορείς... Το αίσχος της διανομής. Κυκλοφορεί επίσημα σε περίπου... 5 χώρες, το Palm profile που απαιτείται κλειδώνει στην πρώτη χώρα που θα βάλεις, οπότε ξέχνα μετακομίσεις και τέτοια, κι αλίμονο σου αν δηλώσεις χώρα στην οποία δεν δουλεύει το Palm App Store. Πρακτικά, ξεχνάμε πώληση, service και εφαρμογές.

Φυσικά, με τέτοια προβλήματα κυκλοφορίας, οι developers δεν έχουν και ιδιαίτερο λόγο να ασχοληθούν, οπότε για το WebOS δεν υπάρχουν διαθέσιμες ούτε το 1/100 των εφαρμογών που έχει το iOS ή το Android. Και για να κρατήσει τις παραδόσεις η Palm, δεν υπάρχει ελληνικό πληκτρολόγιο στο WebOS. Επιστροφή στα 90s.

Maemo:

Νταξ, δεν πρόλαβε να το δει και κανένας... Ένα N900 βγήκε (πέρα από τα tablets που αγοράστηκαν μόνο από gadget freaks) και αυτό ήταν. Σαν συσκευή είναι βαρύ, αργό, με κακή αίσθηση σε πληκτρολόγιο και touch screen. Μιλώντας ουσιαστικά για μια mobile έκδοση του Debian, έχεις άμεσα διαθέσιμο ένα τεράστιο repository από εφαρμογές... αρκεί να είσαι ένα-δύο βήματα πριν το Linux guru status και να μην σε πειράζει που δεν είναι σχεδιασμένες για χρήση σε κινητό. Οι built-for-Maemo εφαρμογές είναι λιγότερες ακόμα και από αυτές για WebOS.

Επίσης, το Ν900 είναι συσκευή της Nokia, άρα... Alpha Copy, με ότι σημαίνει αυτό. 'H φαντάσου τώρα, εσύ ο προχώ χρήστης, την χαρά του να μπορείς να κάνεις μαλακία με το xorg.conf...

Windows Phone 7:
Είναι καινούρια πλατφόρμα ακόμα και είναι νωρίς για γκρίνιες, αλλά το παρελθόν ζέχνει και βρωμάει. Προς το παρόν, επιδεικνύει τα μισά κουσούρια του πρώτου iPhone. Multitasking ε; Αναμείνατε.

Και μιλάμε φυσικά και για Microsoft. Ξέρεις, αυτή η εταιρία που δεν κάνει ποτέ λάθη.

Blackberry:
Καμία άποψη. Δεν το έχω χρησιμοποιήσει αρκετά για να έχω γνώμη. Με κάτι λίγα λεπτά χρήσης σε demo συσκευές σε μαγαζιά, ένα πράγμα θα πω - η μπίλια πρέπει να καταργηθεί με προεδρικό διάταγμα.

--

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

Δευτέρα, Ιανουαρίου 03, 2011

Auto-localization done wrong: Google

For the last 1,5 year, I've ended up spending my life between Stockholm (Sweden), Thessaloniki (Greece) and Eindhoven (Netherlands). And this has made me notice something about Google.

Their auto-localization is horrible.

Here's how it works: typing google.com into your browser takes you to the Google homepage of the country you're in. I'm currently in Greece, so typing google.com takes me to www.google.gr. When I'm in Sweden, it takes me to www.google.se. Right? Right.

As expected, the interface is localized. Greek menus for google.gr, swedish for google.se, etc etc. For the sake of consistency (and my sanity), I prefer all of my online services in English. So, I log into my Google account, hit Settings and make the appropriate changes. Ready to go.

Alas, Google has decided that this is not how things should work. Language settings are cookie-based, not account-based. Yes, using a different browser means that you have to do this AGAIN. Have a second computer? AGAIN.

The way cookies work means that each cookie is associated with one domain. So, yeah, travelling from Sweden to Greece means that every single setting I have done while in Sweden is useless, because Google is now redirecting me to google.gr. Different domain, different cookies, different settings. AGAIN.

So... the number of times you'll have to adjust your Google settings is something along the lines of:

(total number of browsers installed) x (number of visited countries)

Ah, countries visited. As some of you may know, there is no direct flight from Stockholm to Thessaloniki. My itineraries have a lay-over, usually in Prague (Czech Republic) or Budapest (Hungary). Both have beautiful airports and free Wi-Fi. You guessed correctly: Google redirects me to google.cz or google.hu respectively. Yes, no matter how many times you change your language settings, you still end up on an undecipherable Google homepage.

(btw, 'Settings' is 'Ρυθμίσεις' in Greek and 'Inställnigar' in Swedish)

Google offers a quick and dirty fix: at the bottom of its homepage there's the 'Google.com in English' link, which points to google.com/ncr, the un-localized English version of Google.com. IMHO, a very annoying and undignified solution.

Anyway, I eventually manage to adjust every single browser in my possession. Then a new headache arises. Typing a search term into Chrome's address bar brings out results from google.se. But... but... but I'm in Greece right now! I know I've set this up!

I haven't found an explanation for this yet, but it does seem to be caused by the fact that I was in Sweden when I downloaded this (probably swedish) version of Chrome, ALTHOUGH all menus in Chrome are in english.

So, I found this beautiful solution that seems to work for the time being: I switched my default search engine to Yahoo!.