Δευτέρα, Ιανουαρίου 16, 2017

Πίσω στο XMPP

Επιστροφή στο XMPP/Jabber, γιατί κουράστηκα με τα Telegram, Whatsapp και τις υπόλοιπες αηδίες. Αν ξαναδώ τηλεφωνικό αριθμό ως account id σε messaging app θα ξεράσω.

Το Conversations είναι ε-ξαι-ρε-τι-κός Jabber client για Android. Οι δημιουργοί του μάλιστα προσφέρουν hosted service για €12 τον χρόνο. Τσίμπησα account, έστησα το προσωπικό μου domain, άρχοντας.

Στο desktop Adium/Pidgin γιατί είμαι παραδοσιακός κατά βάθος. Το Finch είναι η command-line έκδοση του Pidgin και βολεύει τρελά αν είσαι ο τύπος που έχεις ένα tmux ανοιχτό όλη την ώρα.

Ευτυχία είναι να μπορείς να διαλέξεις όποιο ρημάδι client θες :)

By the way, τα παιδιά του hackerspace.gr έχουν κάνει πολύ καλή δουλειά στο στήσιμο του gnu.gr, ενός ελληνικού public jabber server. Εξαιρετική επιλογή αν δεν θες να ασχοληθείς με στήσιμο δικού σου server/domain και απλά θες ένα account και να ξεκινήσεις. Άσε που το να έχεις username τύπου "me παπάκι gnu.gr" είναι απείρως cool :)

Δευτέρα, Δεκεμβρίου 12, 2016

Reading challenge 2016

Τα πάντα είναι θέμα κινήτρου.

Τα τελευταία 10 περίπου χρόνια διάβαζα βιβλία πολύ αραία. Μοναδική και παντοτινή εξαίρεση βέβαια ο αγαπημένος Pratchett, άντε και λίγο η αρρώστια με το Game of Thrones που με έσπρωξε να κατεβάσω αμάσητα όλους τους τόμους της σειράς Song of fire and ice, αλλά από λογοτεχνία ως εκεί.

Στον τεχνικό τομέα τα ίδια. Πολλά, πάμπολλα, αναρίθμητα τεχνικά άρθρα αποθηκευμένα στο Pocket. Κάθε τόσο αγοράζα κάποιο βιβλίο από O'Reilly και το άφηνα σε κάποια γωνιά, για "αργότερα". Η εικονική στοίβα με τα epubs μόνο μεγάλωνε.

Πριν ενάμισι περίπου χρόνο αγόρασα ένα e-reader της Kobo για να αντικαταστήσω το παλιό Sony PRS 650, κυρίως λόγω του Pocket integration με το αυτόματο syncing μέσω wifi. Με βοήθησε να αρχίσω να μειώνω τον αριθμό των ανέγγιχτων άρθρων που περίμεναν με υπομονή να ασχοληθώ μαζί τους. Δυο-τρία αρθράκια στο τρένο/λεωφορείο για την δουλειά κάθε μέρα και η λίστα μειώθηκε σε πιο νορμάλ μεγέθη.

Κάπου τον Μάρτιο ανακάλυψα ότι το Goodreads (social network για βιβλιοφάγους) έχει reading challenge: συμμετέχεις δηλώνοντας πόσα βιβλία στοχεύεις να διαβάσεις μέχρι το τέλος του χρόνου. Ξεκινάς κάποιο βιβλίο; Το μαρκάρεις ως 'currently reading'. To τελείωσες; Mark as read.

Τσίμπησα και έβαλα στόχο τα 30 βιβλία για φέτος. Λίγο αισιόδοξος ο στόχος, δεδομένου ότι ξεκίνησα κάπου τον Μάρτιο. Τα πράγματα έγιναν λίγο χειρότερα το καλοκαίρι καθώς λόγω ενός burnout στην δουλειά δεν είχα κουράγιο να ασχοληθώ με τίποτα και πέρασα ολόκληρο τον Ιούλιο στο χαζοκούτι, σε παραλίες και στις μπύρες, μη διαβάζοντας ούτε σειρά.

Ο στόχος τελικά επετεύχθη - και μάλιστα στις τελευταίες μέρες του Νοέμβρη - για αυτό και το καμαρωτό post στο ξεχασμένο τούτο blog :)

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

Η πλήρης λίστα είναι εδώ: https://www.goodreads.com/user_challenges/4142422.

Νομίζω φαίνεται ότι ξεκίνησα λίγο από τα classics, με 1984 και Lord of the Flies εκεί μέσα.
Χαίρομαι πολύ που διάβασα Lovecraft, Edgar Allan Poe και Philip K. Dick. Η τριλογία Hannibal Lecter ήταν αρκετά ενδιαφέρουσα και η μεταφορά της στο σινεμά ήταν, απ'ότι φαίνεται, πολύ πιστή. Παρομοίως και το Godfather, πολύ καλό. Το American Psycho ήταν ένα πολύ κουραστικό βιβλίο και διαβάζεται μόνο μια φορά, και αυτή με το ζόρι.

Στα τεχνικά βιβλία, το βαρύγδουπο όνομα είναι το Site Reliability Engineering της Google, ένα must read, αλλά όχι απαραίτητα κορυφαίο. Ωραίο το insight για το πως δουλεύει η φάμπρικα της Google, αλλά το scale of operations και οι πόροι που έχει στην διάθεση της η εταιρεία τα κάνει όλα διαστημικά για εμάς τους πτωχούς πλην τίμιους εργάτες στα μαγαζάκια των 50, 100, 200 ατόμων.
Θεωρώ το Clean Coder ως πολύ πιο σημαντικό ανάγνωσμα από το SRE book. Περιέχει μαθήματα επαγγελματισμού για τον κάθε IT worker, ανεξαρτήτως ειδικότητας, και νομίζω ότι θα έπρεπε να μοιράζεται δωρεάν σε κάθε απόφοιτο, μαζί με το πτυχίο του. Απλά εξαιρετικό.
Την λίστα συμπληρώνουν το Art of Monitoring (πολύ Reimann, λίγο Graphite και ELK) και το Logstash book, και τα δύο από τον James Turnbull. Ωραία, απλή γραφή, αλλά περισσότερο για αρχάριους παρά για experts στο εκάστοτε αντικείμενο. Πάραυτα, ενδιαφέροντα βιβλία.

Δεδομένου ότι το έτος δεν έχει τελείωσει, η ανάγνωση συνεχίζεται και ίσως προλάβω να στριμώξω 2-3 βιβλία ακόμα. Διαβάζω ταυτόχρονα το Martian, που είναι εξαιρετικό, και το early preview του Modern System Administration, το οποίο αναλύει τα devops-y skills που πλέον χρειάζεται ένας sysadmin.

Μ'αυτά και μ'αυτά, είμαι πολύ χαρούμενος που πίεσα τον εαυτό μου να διαβάσει περισσότερο. Το reading challenge ήταν ακριβώς αυτό που χρειαζόμουν για να πιάσω ρυθμό. Τώρα το μόνο κακό είναι ότι μπαίνω ενθουσιασμένος στο μαγαζί του O'Reilly και του Kobo και απλά πατάω κουμπιά και αγοράζω και η στοίβα μεγαλώνει :)

Τρίτη, Μαΐου 24, 2016

Θεωρία για το Game of Thrones

Προφανώς και έχω spoilers παρακάτω. Όσοι δεν έχετε δει s6e5 ("The Door"), Σεπτέμβριο με τον κηδεμόνα σας.

Spoilers λέμε!

You have been warned.

Το "The Door" είναι χαλαρά από τα καλύτερα επεισόδια της σειράς, επάξιο του Hardhome και του Red Wedding. Καλή τηλεόραση ρε φίλε, πως το λένε.

Η τελική σκηνή ("hold the dοor", κλάααμααα) ξεκίνησε ουσιαστικά από ένα συμβάν: ο Μπραν ανακάλυψε ότι δεν κάνει απλά flashbacks, αλλά έχει την δύναμη να αλληλεπιδρά με το παρελθόν. Τι warging και αηδίες, αυτή είναι η κορυφαία υπερδύναμη στο Westeros. Πιάσαμε φάση Lost.

Κάπου εδώ ξεκινάει η θεωρία μου, φορέστε ζώνη.

Ο Μπραν έχει την δύναμη να επηρεάσει πράγματα στο παρελθόν. Μάλλον σε πολύ μεγάλο βαθμό. Σε βαθμό που να... χτίσει το Τείχος;

Σύμφωνα με τον θρύλο, ο Bran the Builder το έχτισε. Εδώ ο κουτσο-Μπραν μόλις τα έκανε σκατά με τους Whitewalkers, σίγουρα θα φτάσει η ώρα που θα το μετανιώσει και θα προσπαθήσει να αλλάξει το παρελθόν για να τα διορθώσει.
Σε αυτό το σημείο αναρωτιέμαι αν το σημάδι από τον Night's King του έδωσε κάποιες δυνάμεις να ελέγχει τον πάγο, κάτι πολύ χρήσιμο για την ανέγερση του Τείχους.

Αν λοιπόν ο κουτσό-Μπραν είναι/γίνει όντως ο Bran the Builder... δεν αντιπροσωπεύει τρόπο τινά τον "Smith", τον έναν από τους Εφτά (the Seven ή the new Gods);

Ρίξε μια ματιά στους υπόλοπους του Faith of the Seven. Κάποιες περιγραφές είναι ΠΟΛΥ γνώριμες.

The Stranger: αντιπροσωπεύει τον θάνατο, δεν ξέρουν καν αν είναι άντρας ή γυναίκα και έχει το πρόσωπο κρυμμένο. Για σκέψου τώρα... πόσες φορές έχει τονιστεί ότι η Arya είναι αγοροκόριτσο; Σαν φωτογραφική προκήρυξη για θέση στο δημόσιο είναι.
The Warrior: στοιχηματίζω Jon Snow.
The Mother: mother of dragons, mother of slaves, γενικά mother του πλανήτη.
The Crone: γριά, guiding wisdom, φως στο σκοτάδι, Μελισάνδρη μυρίζει, Catelyn Stark δεύτερη επιλογή.
Τhe Father: μουσάτος λέει, υπόδειγμα δικαιοσύνης λέει, εγώ ψηφίζω Ned Stark.
The Maiden: innocence, chastity, protects a maiden's virtue, σαν Brienne μου ακούγεται.

Μπορεί να έχασα κάποιες λεπτομέρειες και να βγουν κάποιοι άλλοι, αλλά το βασικό κόνσεπτ είναι το ίδιο. Επίσης μου έχει κολλήσει ότι ίσως και οι υπόλοιπες θρησκείες να έχουν το ίδιο θέμα, οπότε ξεκινήστε να ψάχνετε για R'hllor και Drowned God. Φαντάζεσαι Tyrion και Theon αντίστοιχα;

Μετά από τέτοιο παραλογισμό, ούτε καν με νοιάζει ποιος θα πάρει τον Iron Throne.


Πέμπτη, Δεκεμβρίου 24, 2015

Το 2015 ενός sysadmin

Ήρθε η περίοδος του self-reflection, ε; Θα κάνω μια προσπάθεια, αλλά θα μου επιτρέψετε να μείνω στα sysadminικά και να μην πιάσω τα προσωπικά μου.

Ξεκίνησα να μπλέκομαι στην στην διαδικασία προσλήψεων της εταιρίας, τουλάχιστον για τους sysadmins. Υπάρχει παλιότερο post επί της διαδικασίας, αργότερα ακολούθησαν και κάποιες άλλες συνεντεύξεις και άλλη μια πρόσληψη - τρεις στο σύνολο για το έτος.

Μαθήματα από την διαδικασία:
  • Πρέπει να είσαι ξεκάθαρος με τον υποψήφιο. Πρέπει να είσαι ακόμα πιο ξεκάθαρος με τον νεο-προσληφθέντα. Δικαιούνται να ξέρουν τι γίνεται και πρέπει να έχουν τακτικό και ειλικρινό feedback. Ειδικά αν η εταιρία έχει δοκιμαστική περίοδο πρόσληψης πριν το μόνιμο συμβόλαιο (σουηδικός νόμος), δώσε feedback τακτικά στον νέοπα για να ξέρει πως τα πάει και αν πιάνει τους στόχους που του έχει θέσει η εταιρία. Η μαγική λέξη είναι "τακτικά", τουλάχιστον κάθε δύο μήνες, αν όχι κάθε μήνα.
  • Πρέπει να είσαι ξεκάθαρος στον εαυτό σου. Φρόντισε να ορίσεις τι κενό ακριβώς θέλεις να γεμίσεις με έναν νέο συνάδελφο. Θα είναι καλύτερα και για σένα και για την εταιρία και για τον νέο συνάδελφο.
  • Η δοκιμαστική περίοδος στην Σουηδία είναι έξι μήνες, όπου η εταιρία έχει την δυνατότητα να διώξει τον νέο υπάλληλο άμεσα αν δει ότι δεν τραβάει/δεν κολλάει στο πνεύμα της εταιρίας. Σιγουρέψου ότι ο υποψήφιος το ξέρει από πριν. 
  • Η τεχνική κατάρτιση βρίσκεται εύκολα. Η εργασιακή προσωπικότητα που ταιριάζει στην ομάδα σου όμως είναι δυσεύρετη. Ξέρεις τι ακριβώς χαρακτήρα έχει η ομάδα σου και πως δουλεύει;
  • Μη βασίζεσαι στο HR για την μη τεχνική εκτίμηση του υποψηφίου. Just don't.
  • Πρέπει να διώξεις sysadmin; Όσο φιλικά και να γίνει, πολύ πιθανόν να πρέπει να κλείσουν τα accounts του όση ώρα του μιλάει ο μάνατζερ του. Δυστυχώς οι sysadmins ανήκουν σε αυτή την ειδική κατηγορία που σε μια έκρηξη θυμού μπορούν να κάνουν ζημιά. Και αυτή η έκρηξη μπορεί να μην έρθει άμεσα, μπορεί να έρθει το βράδυ, μετά από δύο μέρες, την επόμενη βδομάδα.
Αν όλα αυτά σου ακούγονται σαν προϊόν κακών εμπειριών, έπεσες μέσα.

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

Στις νέες προσθήκες στην εργαλειοθήκη μου έχουμε τα εξής:
  • Ansible
    Νομίζω ότι είχα σχηματίσει μια άλλη εικόνα για την Ansible πριν αρχίσω να την χρησιμοποιώ. Ερχόμενος από τον κόσμο του Puppet, περίμενα κάτι πιο structured και managed. Η Ansible είναι ακριβώς το αντίθετο και θα την περιέγραφα ως ένα python-based SSH loop. Η χρήση της είναι εύκολη, γράφεις τα βήματα που θέλεις να κάνει σε YAML format και ορίζεις σε ποια hosts θα συνδεθεί για να εκτελέσει το playbook.
    Τα προβλήματα που βλέπω στην Ansible είναι η σχετική ανωριμότητα του εργαλείου. Υπάρχουν κάτι bugs από δω κι από κει, υπάρχουν και κάτι προβλήματα performance. Μακάρι να έλεγα ότι οφείλεται στην (προς το παρόν) απλοϊκή χρήση που κάνω, αλλά πήγα σε ένα continuous deployment meetup και ο ένας παρουσιαστής, από μια Ansible-heavy εταιρία, έκραζε για αυτά ακριβώς τα προβλήματα.
    Προς το παρόν την βλέπω ως ένα βολικό orchestration tool, ειδικά στην περίπτωση ενός rolling update, αλλά θα αφήσω το Puppet να κάνει την βαριά δουλειά.
    Πάντως, φαίνεται να είναι φοβερά δημοφιλής, το community της αναπτύσσεται ραγδαία και έχει φτάσει στο σημείο να εξαγοραστεί από την RedHat. Σίγουρα ένα καλό εργαλείο να μάθεις για λόγους επαγγελματικής προόδου.
  • Travis CI
    Δεν είναι τόσο το συγκεκριμένο εργαλείο, όσο το τι εκπροσωπεί: Test driven development + Continuous Integration. Η συζήτηση γίνεται μέσα στο context του infrastructure operations, οπότε μη φαγωθείτε να με κράξετε φίλοι devs :)
    Για τους λίγους σαν εμένα που δεν ξέρουν, το Travis CI αναλαμβάνει να τρέξει κάποια προκαθορισμένα tests στον κώδικα σου κάθε φορά που κάνεις commit. Το πόσο περίπλοκα θα είναι τα tests είναι δικό σου θέμα, αλλά συνήθως μιλάμε για unit testing μαζί με code style conformity.
    Καθώς ασχολούμαι κυρίως με Puppet σε αυτή την περίπτωση, τα tests αυτά τρέχουν με rspec-puppet και puppet-lint. Τα functionality tests τα τρέχω σε vagrant με το χέρι γιατί είμαι κολλημένος, αλλά θα το διορθώσω κι αυτό σύντομα :)
    Βέβαια το Travis CI είναι κατιτις Github-specific. Καθώς στην εταιρία είμαστε οπαδοί του Gitlab, έχουμε προγραμματίσει να κάνουμε deploy το Gitlab-CI, το οποίο δίνει ακριβώς το ίδιο functionality με το Travis. Για μαθησιακούς σκοπούς πάντως το να σηκώσεις ένα Github repo και να το συνδέσεις στο Travis είναι πανεύκολο και δωρεάν, highly recommended.
  • Puppet-lint
    Το puppet-lint είναι ένα ελαφρώς... κομπλεξικό εργαλειάκι που φροντίζει ο κώδικας σου να είναι γραμμένος σύμφωνα με τα puppet code styles. Σπαστικό ώρες-ώρες και η διαφορά που θα κάνει στο τελικό αποτέλεσμα είναι μικρή, αλλά που και που πιάνει κάποιο θέμα συμβατότητας (πχ κώδικας που τρέχει σε παλιότερες εκδόσεις puppet αλλά όχι 3.8+). Είναι στιγμαίο σε εκτέλεση, οπότε δεν υπάρχει σοβαρός λόγος να μη το χρησιμοποιήσεις.
  • Rspec-puppet
    Το rspec-puppet είναι ένα νόθο αδέρφι του rspec που αναλαμβάνει να δει ότι πχ το nginx module σου δεν έχει ξεχάσει να κάνει start το service. Πολύ χρήσιμο αν π.χ. δώσεις στον junior sysadmin ένα module που δεν έχει τροποποιηθεί πάνω από χρόνο και θέλεις να σιγουρευτείς ότι δεν θα σβήσει απαραίτητα κομμάτια. Το γράφεις τώρα και κάνεις επένδυση για το μέλλον.
  • Jenkins
    Κάπου εδώ φρικάρουν οι περισσότεροι έμπειροι αναγνώστες τελείως. "ΤΩΡΑ ΕΜΑΘΕΣ JENKINS;"
    Εντάξει παιδιά, και στα γεράματα καλά είναι :P
    Η επαφή μου με τον Jenkins ήταν μικρή, στα πλαίσια του commit-push-deploy-restart. Για να είμαι ειλικρινής, εφόσον έσπρωχνε το puppet code μου, δεν με ένοιαζε και πολύ, άφηνα τους devs να παίζουν με το jenkins, αυτά είναι του διαβόλου, μη με μπλέκετε με maven κλπ κλπ.
    Ο λόγος που άρχισα να δουλεύω λίγο παραπάνω με Jenkins είναι ότι αποφασίσαμε να το χρησιμοποιήσουμε ως troubleshooting tool. Σε συνεργασία με το DBA team και τους senior devs έχουμε γράψει αρκετά jobs που μαζεύουν forensics ή κάνουν maintenance tasks. Πολύ-πολύ χρήσιμο όταν πρέπει να τρέξεις τέτοια πράγματα από το κινητό σου και εύκολο να δώσεις access στον καημένο junior που είναι on-call, χωρίς να έχει shell/DB access.
  • Debian packaging
    Έχω απαγορεύσει στους devs μας να εγκαθιστούν software με το χέρι. Πατ. Τζιζ. Θέλεις Tomcat στο local env σου;
    apt-get install tomcat
    Θέλεις Tomcat σε dev/test/staging/prod server;
    package{'tomcat': ensure => installed}
    Μαλώνουμε λίγο αλλά δεν πειράζει. Μόλις δούνε ότι δεν χρειάζεται να κάνουν καν ssh στο vm, αρχίζουν να γλυκαίνονται. Στην τελική, ο μέσος dev αυτό θέλει: να γράφει τον κώδικα και να μην ασχολείται με την εγκατάσταση του.
    Για να το πετύχει αυτό η ομάδα, θα πρέπει να σπρώξεις λίγο τα κατάλληλα εργαλεία. Ευτυχώς κάποια standalone services αναπτύχθηκαν εξαρχής σε Dropwizard, για τα υπόλοιπα προσπαθώ να φτιάξω jobs που παίρνουν τα deployables και τα πακετάρουν σε .deb format. Απέχουμε ακόμα από 100% κάλυψη, αλλά το παλεύουμε.
    Επί της ευκαιρίας, I'll toot my own horn και θα λινκάρω την παρουσίαση που έκανα στην εταιρία για εισαγωγή στο Debian packaging, ίσως κάποιοι την βρουν χρήσιμη:
    http://www.slideshare.net/DimitrisTsompanidis/debian-packaging-55056414
  • Graphite
    Late to the party, ξέρω. Είμαστε ακόμα σε δοκιμαστική περίοδο, αλλά έχουμε ζητήσει beta access σε μια καινούρια startup, την Raintank (παιδί του δημιουργού του Grafana), που αναλαμβάνει την διαχείριση του dashboard σου. Το μέλλον προβλέπεται ενδιαφέρον.
Τι έχω στην λίστα για το 2016;

Automation, automation, automation. Πραγματικά, δεν έχω καμιά όρεξη να κάθομαι να κάνω manually δουλειές που θα έπρεπε να κάνουν οι υπολογιστές για μένα. Deployments, provisioning, packaging, testing, δεν με νοιάζει, θέλω μόνο να βλέπω ένα Job succeeded στο Hipchat.


Τα πρώτα εργαλεία που θα κοιτάξω να πιάσω τον επόμενο χρόνο είναι Packer, serverspec, Rundeck, Puppet v4 και ένα καλό χέρι ELK stack. Ειδικά το τελευταίο, όλοι το διαφημίζουν σαν ΤΗΝ λύση για centralized logging, αλλά δεν σου λέει κανένας ότι θα σου γεμίσει ό,τι δίσκο και μνήμη του πετάξεις αν δεν το ταράξεις στο tuning.

Δυστυχώς, θα πρέπει να μάθω και systemd...

Κυριακή, Δεκεμβρίου 13, 2015

Truncating live logs

So... your Tomcat has created a huge catalina.out log file that is now larger than the remaining space on your disk. Logrotate kicks in, tries to make a copy of the file before truncating it, but the copy (as expected) takes up the rest of the disk space, logrotate fails and exits in humiliation and you end up with 100% disk usage.

If you can afford to restart Tomcat, things are going to work out for you.
Stop Tomcat, transfer catalina.out to a different partition/server and start Tomcat again.

If Tomcat is on your production server and you can't afford a restart because its peak-traffic-time-of-the-day, things are more complicated.

You can NOT just move catalina.out to a different mountpoint or server or just plain delete it. The file is actively open by the Tomcat process. 'rm catalina.out' will only delete the reference to the file, but the actual space on the disk will remain occupied by the file (and still actively written to). You'll end up needing to stop Tomcat so that it releases the space.

Make a copy of the file somewhere else, then truncate that thing.
'man truncate' is your friend, but this should be ok:
sudo truncate -s 0K catalina.out

It's not an instant process, so this will probably mean you'll lose a few seconds of logging.
If few minutes of downtime is more expensive than Tomcat logs (it usually is), this is the way to go.

Now, if I only I had set up central logging and/or log rotation properly...

Παρασκευή, Ιουλίου 31, 2015

Αξιόλογες υπηρεσίες - καλοκαιρινή έκδοση 2015

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

Το κοινό τους χαρακτηριστικό: επιτρέπουν την συνεργασία διάφορων υπηρεσιών και πλατφόρμων μεταξύ τους. Δεν έχει σημασία αν έχω iPhone, Android, Windows, Mac ή Linux ;)

Τέλος πάντων, είναι ενδιαφέρουσες υπηρεσίες, ρίχτε μια ματιά.

IFTTT

Προσφέρει έναν απλό/απλοϊκό τρόπο να προγραμματίσεις actions σε κάποιες υπηρεσίες ή συσκευές που χρησιμοποιείς βασισμένα σε events που συμβαίνουν σε άλλες υπηρεσίες ή συσκευές σου. Το ifttt ονομάζει αυτές τις συσχετίσεις event-action ως συνταγές (recipes).

Παράδειγμα συνταγής: όταν κάνω favourite κάποιο tweet, τότε το ifttt το σώζει σε ένα Evernote notebook (το χρησιμοποιώ για bookmarking διάφορων tips και guides).

Άλλο παράδειγμα: όταν μπαίνω στο γραφείο, βάλε το κινητό στο αθόρυβο.

Τρίτο παράδειγμα: όταν πατάω το τάδε κουμπί, βάλε τις συντεταγμένες μου στο facebook.

Η λίστα υπηρεσιών (τα λέει "channels") με τις οποίες συνεργάζεται το ifttt είναι πολύ μεγάλη και συνεχίζει να μεγαλώνει. Ενδιαφέροντα πρόσφατα channels που προστέθηκαν είναι για Spotify, Instagram και "Maker channel", το οποίο ουσιαστικά κάνει REST API requests σε δικές σου DIY services.

Τα διαθέσιμα mobile apps είναι δύο: το IF και το DO.
Το IF αναλαμβάνει την διαχείριση των αυτόματων συνταγών (αυτές που συμβαίνουν χωρίς την δικιά σου παρέμβαση).

Πουλιά, ελέφαντες, χαμός.
Το DO είναι σχεδόν το ίδιο, με την διαφορά ότι αυτό που κάνει είναι να σου έχει μια λίστα από πλήκτρα πάνω στην οθόνη - σαν keyboard shortcuts. Οι συνταγές που έχεις επιλέξει εκτελούνται όταν πατήσεις το σχετικό shortcut (βλέπε τρίτο παράδειγμα).

Do app: swipe αριστερά-δεξιά για τα υπόλοιπα buttons.


Bonus point: αν έχεις Pebble, υπάρχει watchapp (Pushbutton) για να σου δίνει πρόσβαση στα Do buttons σου. Πολύ-πολύ βολικό.
video


Κόστος: δωρεάν.

Pushbullet

Βάζεις την εφαρμογή στο κινητό σου, βάζεις και το plugin στον browser σου, τώρα μπορείς να στείλεις links ή photo από το ένα στο άλλο.

Π.χ. είσαι στο τρένο, βλέπεις στο κινητό σου ένα λινκ για ένα άρθρο αλλά είναι μεγάλο και δεν προλαβαίνεις να το διαβάσεις. Το κάνεις share to Pushbullet και βλέπεις αυτό:

Επιλέγεις τον browser σου και σκάει στον desktop browser σου εντός λίγων δευτερολέπτων.

Πέρα από κάποια social features που έχουν προστεθεί και τα οποία δεν καταλαβαίνω, το άλλο killer feature είναι ότι μπορεί να διαχειριστεί τα sms του κινητού σου. Ανοίγεις το browser plugin και βλέπεις άμεσα όλα τα sms threads σου και φυσικά μπορείς να συνεχίσεις την συζήτηση εκεί, με την χαρά του πλήρους πληκτρολογίου.

Τα voicemails παραμένουν πρόβλημα.

Κόστος: δωρεάν.


Pocket casts

Η κατάσταση με τους podcast catchers/players στο Android είναι λίγο άσχημη. Το Pocketcasts είναι ίσως η μόνη αξιόλογη επιλογή.

Το ιδιαίτερο με το Pocketcasts είναι ότι έχει:
  1. server sync
  2. web player
Αυτό σημαίνει ότι μπορώ να ακούω τα podcasts μου στο δρόμο, και μπορώ να συνεχίσω στον web player μόλις κάτσω μπροστά σε υπολογιστή.



Κόστος: $9 εφάπαξ για τον web player, $5 για το mobile app.

Τρίτη, Μαΐου 19, 2015

Η πλευρά του interviewer

Προειδοποίηση: ακολουθεί σεντόνι, βάλε καφέ.

Φέτος για πρώτη φορά έτυχε να πάρω μέρος στην διαδικασία που λέγεται "πρόσληψη κόσμου για IT". Ήταν μια θέση για το γραφείο μας στο Λονδίνο, το οποίο είναι ξεχωριστή εταιρία αλλά μέρος του "ομίλου". Αυτό σημαίνει ότι έχουν τους δικούς τους HR και μάνατζερς για αυτά, απλά δεν είχαν κάποιον να αναλάβει την αξιολόγηση των τεχνικών δεξιοτήτων των υποψηφίων. "Ο κλήρος πέφτει στον γενναίο", οπότε εγώ και ο φίλτατος συνάδελφος sysadmin παραλάβαμε και κοιτάξαμε πάνω από 60 βιογραφικά για να κάνουμε το τεχνικό ξεσκαρτάρισμα.

Ας ξεκαθαρίσω ένα πράγμα από την αρχή: δεν ξέρω πως να κάνω συνεντεύξεις και να κοιτάω βιογραφικά. Ήταν η πρώτη φορά που έπρεπε να κάνω κάτι τέτοιο (τουλάχιστον σε αυτή την κλίμακα) και ανέτρεξα στο Google πολλές φορές. Υπάρχουν πολλοί που περιγράφουν μεθόδους για το πως να κάνεις συνεντεύξεις για τέτοιες θέσεις. Κάποιες συμβουλές είναι καλές, κάποιες φαίνονται καλές αλλά δεν δουλεύουν στην πράξη και με κάποιες διαφώνησα τόσο πολύ που άρχισα να βρίζω την οθόνη μου. Δοκίμασα αρκετές από τις μεθόδους και τελικά κατέληξα στο ότι αν δεν ξέρεις ΕΣΥ ως interviewer τι θες να μάθεις από τον υποψήφιο, η προσέγγιση που θα επιλέξεις δεν παίζει ρόλο.

Επίσης, συνειδητοποίησα πως ότι είχα ακούσει στην σχολή σαν φοιτητής για το πως να κάνεις βιογραφικό είναι σχεδόν κακό. Πραγματικά, έψαξα και ξέθαψα το βιογραφικό μου από την εποχή που ήμουν φοιτητής και το πέρασα ένα χέρι, με το βλέμμα του interviewer. Χ δαγκωτό.

Οργανωθήκαμε με τον συνάδελφο, γράψαμε μια λίστα με προσόντα που πρέπει να έχει ο υποψήφιος ΑΠΑΡΑΙΤΗΤΩΣ. Η λίστα αυτή ήταν επίτηδες μικρή και οι υπόψηφιοι που δεν είχαν τις λέξεις-κλειδιά στο βιογραφικό τους έμπαιναν στην στοίβα των απορριφθέντων. Ακούγεται σκληρό και ναι, είχα στο μυαλό μου συνεχώς το "δώσε μια ευκαιρία στο παιδί, μπορεί να μάθει στην πορεία, δεν ξέρεις πόσο χρειάζεται την δουλειά", αλλά εδώ δεν γίνονται σκόντα. Όπως είπα, η λίστα ήταν επίτηδες μικρή (3-4 πράγματα) και περιελάμβανε δεξιότητες που ήταν πραγματικά απαραίτητες. Δεν γίνεται να κοιτάς για Windows sysadmin που δεν ξέρει Active Directory, τόσο απλό.

Μια δεύτερη, νοητή λίστα, περιείχε τα skills που θα ήταν καλό να έχει. Δεν είναι απαραίτητα, αλλά κάθε skill εδώ έδινε πόντους. Μας βοηθά να έχουμε ένα μέτρο σύγκρισης μεταξύ των υποψηφίων.

Προσπαθήσαμε να μην είμαστε τσαπατσούληδες. Διαβάσαμε όλα τα βιογραφικά και οι δύο και εφόσον συμφωνούσαμε και οι δύο ο υποψήφιος προχωρούσε στην επόμενη φάση.

Λίγα λόγια για τα βιογραφικά: δράμα.
Μία με δύο σελίδες είναι οκ, τρεις σελίδες απλά ξοδεύεις χώρο και τον χρόνο μας. Άσε τα χρωματιστά templates, τα περίεργα fonts και τα background images, απλά κάνουν το βιογραφικό σου 1) καρναβάλι 2) δυσανάγνωστο.

Επί της ευκαιρίας, να ακούτε τον Πάρη. Το post του περί σύνταξης CV ισχύει 100%. Θα προσθέσω μόνο ότι τα PDF δείχνουν περισσότερο επαγγελματισμό από τα αρχεία Word ;)

Τι κοιτούσαμε στα βιογραφικά; Σχετική εμπειρία! Ο υποψήφιος που είχε σχετική εμπειρία είχε προτεραιότητα σε σχέση με αυτόν που είχε ακαδημαϊκή εμπειρία με το αντικείμενο. Επίσης, βλέπαμε το πόσο καιρό έχει κάτσει ο υποψήφιος σε κάθε προηγούμενη δουλειά. Αλλαγή εργασίας κάθε δύο χρόνια = red flag.Τα κενά στο βιογραφικό επίσης χτυπάνε πολύ στο μάτι, έπρεπε να κρατάω συνεχώς στο μυαλό μου ότι, ξέρεις, σε κάποιες χώρες η ανεργία τσακίζει και είναι φυσιολογικό να μείνεις άνεργος για κάποια περίοδο, αλλά δεν νομίζω ότι οι υπόλοιποι συνάδελφοι κάθονται να το σκεφτούν αυτό.

Τα καλύτερα στην ανάγνωση βιογραφικά είναι εκείνα που για κάθε δουλειά έγραφαν θέση, σύντομη περιγραφή με τα σημαντικότερα καθήκοντα και κάποια "κατορθώματα" (πχ μετέτρεψα το τοπικό samba domain σε active directory). Είναι εκπληκτικό όμως πόσο άσχημα χτυπάει όταν ο υποψήφιος ξεκινούσε τις σάλτσες. Δεν είναι όλα τα "κατορθώματα" άξια αναφοράς και όσο να'ναι η παπαρολογία ξεχωρίζει με πολύ φωτεινά γράμματα - είμαστε συνάδελφοι σου, όχι ηλίθιοι ;)

Επίσης, εστιάζαμε κυρίως στην πιο πρόσφατη εμπειρία. Κοιτούσαμε περαστικά την παλιότερη εμπειρία, αλλά είναι δύσκολο να ενθουσιαστείς με "Windows NT knowledge".

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

Η κοπέλα του HR φίλτραρε αρκετό κόσμο, τώρα ήρθε η σειρά μας να αρχίσουμε την ανάκριση. Επειδή κατοικοεδρεύουμε Στοκχόλμη και η θέση ήταν στο Λονδίνο, συμφωνήσαμε να στείλουμε ένα assignment σε όλους, να φιλτράρουμε μερικούς ακόμα και να καλέσουμε για συνέντευξη τους τοπ 5-6 σε διάστημα ενός διήμερου που θα είμαστε κι εμείς Λονδίνο.

Οι ερωτήσεις του assignment ήταν γενικές και είχαν κάποια στοιχεία προσωπικής κρίσης, καθώς θέλαμε να δούμε τον τρόπο σκέψης του υποψήφιου, στην φάση "έχεις το εξής πρόβλημα, πως θα το έλυνες και γιατί". Ο υποψήφιος είχε περίπου μια μέρα να απαντήσει στο assignment, με την λογική ότι κάπου τόσο θα θέλαμε να του πάρει για να λύσει ανάλογα προβλήματα. Δεν μας πειράζει να googlάρει κάτι που δεν ξέρει - δεν είμαστε παντογνώστες και δεν περιμένουμε να είναι και ο υποψήφιος. Περιμένουμε όμως να έχει την όρεξη να ασχοληθεί και να μάθει κάτι που θα είναι εντός των ευθυνών του.

Οι απαντήσεις που λάβαμε ήταν αποκαλυπτικές. Υπήρξαν πολλές φορές που απλά φωνάζαμε "Noooooooo" στην οθόνη. Κάποιοι απλά έκαναν copy-paste κείμενο από το internet (διατηρώντας και το formatting του αρχικού κειμένου). Κάποιοι κατάφεραν να ξεθάψουν απαντήσεις που ήταν σωστές πριν δεκαετίες σε ερωτήσεις που ήταν φαινομενικά εύκολες. (Ποτέ wep στο wifi. ΠΟΤΕ.)

Ξέρεις τι δείχνει αυτό; Έλλειψη κριτικής σκέψης.

Καταφέραμε να καταλήξουμε σε 5 υποψηφίους με περίπου 5 ακόμα σαν backup αν δεν καταλήγαμε κάπου με τους πρώτους. Δεν ήταν όλοι τους γκουρού του ΙΤ. Π.χ., μια κοπελιά, παρότι χωρίς σχετική εκπαίδευση, κατάφερε να φτάσει εκεί γιατί σε όλα τα στάδια έδειχνε με αποτελεσματικό τρόπο ότι δουλεύει σκληρά και μαθαίνει και αφομοιώνει νέες τεχνολογίες (και είχε μακράν το καλύτερο assignment).

Όταν ήρθε η ώρα των συνεντεύξεων, κλείσαμε 1,5 ώρα για τον κάθε υποψήφιο. Η συνέντευξη είχε αρκετό μπλα-μπλα και από τις δύο πλευρές.

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

Οι ερωτήσεις προς τον υποψήφιο προχώρησαν στο ίδιο μοτίβο της συζήτησης. Θέλαμε να δούμε μερικά συγκεκριμένα πράγματα για τον κάθε υποψήφιο:
  • αν το CV του ανταποκρίνεται στην πραγματικότητα
  • πως σκέφτεται όταν αντιμετωπίζει προβλήματα
  • αν μπορούμε να συνεργαστούμε με αυτό το άτομο ως συνάδελφοι
Υπάρχουν πολλοί τρόποι για να τα τσεκάρεις αυτά, εμείς απλά το ρίξαμε στη συζήτηση-ενώ-πίνουμε-καφέ. Είναι πιο εύκολο για τον υποψήφιο να απαντήσει όταν νιώθει άνετος και ανάμεσα σε ομοίους του παρά όταν βρίσκεται στο ανακριτικό απόσμασμα.

Ίσως κακώς, οι τεχνικές μας ερωτήσεις δεν ήταν τόσο τεχνικές. Προσωπικά απεχθάνομαι την live επίλυση προβλημάτων. Κανένας δεν έγραψε κώδικα της προκοπής με δύο interviewers να βλέπουν την οθόνη του. Προσπαθήσαμε να ρωτάμε τι έχει κάνει επαγγελματικά ο υποψήφιος για το οποίο νιώθει υπερήφανος (βλέπε τα "κατορθώματα" που λέγαμε πιο πάνω) και ρωτούσαμε κάποιες διερευνητικές ερωτήσεις πάνω σε αυτό το θέμα - είναι εύκολο να μάθεις λεπτομέρεις για κάτι που ο υποψήφιος καμαρώνει :)

Από τους 5 υποψήφιους, οι δύο δεν εμφανίστηκαν. Ο ένας τηλεφώνησε το προηγούμενο βράδυ και είπε ότι έχει προσληφθεί αλλού. Ο άλλος δεν εμφανίστηκε καν και καταφέραμε να μάθουμε την επόμενη μέρα ότι τελικά άλλαξε γνώμη.

Μιλήσαμε με τρία άτομα τελικά. Ο ένας ήταν senior Windows admin με πάνω από 12 χρόνια εμπειρία. Το assignment του ήταν οκ αλλά μέσα στην συνέντευξη κατάφερε να υποστηρίξει οτιδήποτε είχε πάνω στο CV του με λεπτομέρειες, όντας ταυτόχρονα φιλικότατος, άνετος, χαμογελαστός. Ναι, μπορούμε να δουλέψουμε με αυτόν.

Δεύτερη ήρθε η αυτοδίδακτη κοπέλα. Δεν είχε το μορφωτικό background αλλά το assignment ήταν λαμπρό. Όταν της ζητήσαμε να μας εξηγήσει πως θα έλυνε ένα (επίτηδες άγνωστο σε αυτήν) τεχνικό πρόβλημα, ο τρόπος με τον οποίο σκέφτηκε ήταν καλύτερο απ'ότι περιμέναμε. Ορισμός του go-getter, εξαιρετικά φιλική και χαμογελαστή και με τις καλύτερες και πιο διερευνητικές ερωτήσεις προς εμάς. People's person, αυτό ακριβώς που συνήθως λείπει από τις θέσεις για IT support.

Ο τρίτος είχε πανεπιστημιακή μόρφωση με μεταπτυχιακό στον τομέα. Ήρθε μια ώρα νωρίτερα από την συνέντευξη. Χαμογελούσε όλη την ώρα αμήχανα, μουρμούριζε τις απαντήσεις του και κάποιες φορές άρχισε να παρασέρνεται και να μιλάει για άσχετα πράγματα, το οποίο σε γενικές γραμμές δεν μας χαλάει, αρκεί να καταλαβαίνουμε τι λέει. Μέσα από την συνέντευξη ζοριστήκαμε να επιβεβαιώσουμε ότι γνωρίζει ό,τι αναφέρει στο CV του, σα να μην είχε όρεξη να πείσει ότι τα ξέρει. Το τελειωτικό χτύπημα ήταν ότι ήταν ο μόνος που δεν ήξερε με τι ασχολείται η εταιρία μας, κάτι που δείχνει ότι δεν έκανε καθόλου έρευνα, δεν ενδιαφέρθηκε καθόλου και απλά έστειλε το βιογραφικό του τυφλά. Δεν είναι απαραίτητα κακό, αλλά είμαστε μια online gaming εταιρία, όχι κάποια άγνωστη στο ευρύ κοινό B2B εταιρία, και οι άλλοι δύο είχαν κάνει αυτό το παραπάνω βήμα - η κοπέλα ειδικά είχε κάνει ολόκληρη έρευνα.

Τα πάντα καταλήγουν στην εξής ερώτηση:

Εσύ με ποιον από αυτούς θα ήθελες να συνεργαστείς;