Πέμπτη, Δεκεμβρίου 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 σου. Πολύ-πολύ βολικό.


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

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 εταιρία, και οι άλλοι δύο είχαν κάνει αυτό το παραπάνω βήμα - η κοπέλα ειδικά είχε κάνει ολόκληρη έρευνα.

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

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

Σάββατο, Μαρτίου 14, 2015

Για τον φίλο απλό χρήστη: SSL certificates και HTTPS

- Καλημέρα, είμαι απλός χρήστης του Ίντερνετ. Τι πρέπει να ξέρω για το HTTPS και τα πιστοποιητικά SSL για την απλή χρήση που κάνω στο Ίντερνετ;

Καλημέρα φίλτατε απλέ χρήστη του Ίντερνετ και καλώς ήρθες στην παρέα μας.
Το HTTPS και τα πιστοποιητικά SSL είναι δύο αλληλένδετες τεχνολογίες που εξασφαλίζουν ότι οι πληροφορίες που στέλνεις σε ένα site θα φτάσουν ασφαλείς και μόνο στον παραλήπτη για τις οποίες προορίζονταν.

Θα το εξηγήσω με ένα παράδειγμα για να γίνει πιο κατανοητό.

Άνοιξε τον αγαπημένο σου browser, Firefox, Chrome, Safari, Internet Explorer, Opera, όποιον θες. Γράψε facebook.com, πάτα enter και θα αντικρύσεις αυτή την οθόνη:

Η μπάρα της διεύθυνσης σου δύο πολύ χρήσιμες πληροφορίες.
  1.  Η διεύθυνση στην αρχή λέει https αντί για http.
    Το έξτρα S σημαίνει Secure (ασφαλές). Για εσένα φίλε χρήστη αυτό σημαίνει ότι η επικοινωνία του υπολογιστή σου με το facebook είναι ασφαλής - το password σου θα το διαβάσει μόνο το facebook και όχι ο κάθε τυχάρπαστος που τυγχάνει να παρακολουθεί την σύνδεση σου στο internet. Δηλαδή είναι αυτό που λέμε ότι η σύνδεση σου στο Facebook είναι κρυπτογραφημένη.
  2.  Υπάρχει μια κλειδαριά μπροστά από την διεύθυνση.
    Η κλειδαριά σημαίνει ότι το Facebook έχει πιστοποιητικό SSL για να δείχνει ότι όντως είναι το Facebook και όχι κάποιος άλλος - κάτι σαν ψηφιακό δελτίο αστυνομικής ταυτότητας. Δεν θέλεις να δώσεις τον κωδικό σου και άλλες ευαίσθητες πληροφορίες σε κάποιον που παριστάνει το Facebook αλλά δεν είναι, έτσι; Το πιστοποιητικό SSL ταυτοποιεί ότι το site είναι αυτό που λέει ότι είναι.
 Για το https δεν μπορείς να κάνεις πολλά πράγματα. Είτε υποστηρίζεται από το site είτε όχι.

Για το πιστοποιητικό SSL όμως μπορείς να κάνεις και μόνος σου επαλήθευση ότι όντως το site είναι αυτό που λέει ότι είναι. Κάνε απλά κλικ στην κλειδαριά και θα δεις αυτό:
Ο Firefox έχει κάνει κάποια δουλειά στα γρήγορα και έχει επαληθεύσει το πιστοποιητικό SSL για σένα και τώρα σου το κάνει λιανά:

"Είσαι συνδεμένος στο: facebook.com"
Έτσι ξέρεις ότι όντως είσαι στο σωστό site.

"Πιστοποιημένο από: DigiCert Inc"
Όπως όλα τα πιστοποιητικά στον κόσμο, έτσι κι αυτό έχει μια "αρχή έκδοσης". Στην προκειμένη περίπτωση, το πιστοποιητικό έχει εκδοθεί από την DigiCert, μια εταιρεία που ο Firefox εμπιστεύεται.

"Η σύνδεση σε αυτή την σελίδα είναι ασφαλής"
Το τελικό συμπέρασμα :)

Αν θες να δεις περισσότερες πληροφορίες, πάτα στο More Information.
Ανάλογα με τον browser θα δεις και διαφορετικό πακέτο πληροφοριών (όπως πχ τελευταία φορά που τσέκαρες αυτό το site), αλλά κυρίως μπορείς να δεις όλα τα στοιχεία του πιστοποιητικού.

Μην αγχώνεσαι, δεν κάνεις χακεριές, ούτε υποκλέπτεις δεδομένα. Κάνεις χειροκίνητα αυτό που έκανε ο Firefox αυτοματοποιημένα για να μην χρειάζεται να παιδεύεσαι. Το πιστοποιητικό ούτως ή άλλως είναι δημοσίως διαθέσιμο. To Facebook δεν σου κάνει χάρη να δημοσιεύσει το πιστοποιητικό του - είναι υποχρεωμένο να το δείχνει δημόσια αν θέλει:
  1. να δουλεύει το https 
  2. να το εμπιστευόμαστε

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

Δεν χρειάζεται να κάθεσαι να διαβάσεις φυσικά όλα τα αναλυτικά πεδία (το κάνει ο Firefox για σένα) αλλά μερικές φορές είναι χρήσιμο.

Για παράδειγμα, πριν κάποιο καιρό ένας φίλος μου είπε ότι το site της ΤραινΟΣΕ είχε πρόβλημα στο πιστοποιητικό τους και ο Firefox έριχνε προειδοποιητικές φωτοβολίδες. Μια ματιά στις αναλυτικές πληροφορίες του πιστοποιητικού (βλέπε τελευταία εικόνα) έδειξε ότι το πιστοποιητικό μόλις είχε λήξει την προηγούμενη μέρα και οι τεχνικοί δεν είχαν προλάβει να το ανανεώσουν. Συμβαίνει. Τα υπόλοιπα πεδία ήταν όλα μια χαρά, στείλαμε ένα email στην ΤραινΟΣΕ να τους ειδοποιήσουμε και αποφασίσαμε ότι μπορούμε να αγοράσουμε εισιτήρια χωρίς πρόβλημα.

Να πούμε εδώ ότι η ΤραινΟΣΕ ήταν ευγενικότατη στην απάντηση τους, μας ευχαρίστησαν, επιβεβαίωσαν το πρόβλημα και ανανέωσαν το πιστοποιητικό άμεσα - και χαίρουν της εμπιστοσύνης μας για αυτό :)

Άλλο παράδειγμα προβλήματος με πιστοποιητικά: κάποια δημόσια ασύρματα δίκτυα, ειδικά σε αεροδρόμια, προκαλούν μηνύματα λάθος του στυλ "το πιστοποιητικό για το mail.google.com είναι λάθος".
Σε τέτοιες περιπτώσεις, δεν κάνουμε άμεση αποδοχή του πιστοποιητικού! Αυτό που γίνεται είναι ότι το ασύρματο δίκτυο έχει ένα δικό του σέρβερ ανάμεσα σε σένα και το Ίντερνετ. Τα πάντα περνάνε μέσα από αυτόν τον σέρβερ, ο οποίος έχει ένα δικό του πιστοποιητικό και παριστάνει το Facebook, το Google κλπ. Αυτό γίνεται για διάφορους τεχνικούς λόγους, το αποτέλεσμα όμως είναι ότι κάποιος σέρβερ παριστάνει κάτι που δεν είναι και το μήνυμα λάθος για το πιστοποιητικό σε προειδοποιεί για αυτό.

Θα εμπιστευόσουν αυτό το δίκτυο για να κάνεις τραπεζικές συναλλαγές; Φυσικά όχι.

Το μόνο που χρειάζεται είναι να έχεις τον νου σου.

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

  • Ο τρόπος με τον οποίο εξασφαλίζεται ότι το πιστοποητικό του facebook το έχει ΜΟΝΟ το Facebook και όχι κάποιος άλλος είναι ότι υπάρχει και ένα κρυφό κλειδί (ένα ειδικό αρχείο) το οποίο είναι συνδεδεμένο άρρηκτα με το πιστοποιητικό. Ο σέρβερ του Facebook και οποιοσδήποτε άλλος σέρβερ δεν μπορεί να δουλέψει μόνο με το ένα - χρειάζεται να έχει και τα δύο, και το πιστοποιητικό και το κλειδί.
    Ο πιο απλός τρόπος να το εξηγήσω είναι με την αναλογία του γραμματοκιβωτίου: όλοι ξέρουν που είναι το γραμματοκιβώτιο σου, είναι δημόσια πληροφορία (την δημοσιεύεις για να σου στέλνουν γράμματα), αλλά ο ιδιοκτήτης του γραμματοκιβωτίου είναι αυτός που έχει το κλειδί, δηλαδή εσύ.
  • Πως επαληθεύει η DigiCert ότι το Facebook είναι αυτό που λέει και του δίνει το πιστοποιητικό;
    Μέσα από μια σειρά ελέγχων που κυμαίνονται από απλή τηλεφωνική επιβεβαίωση, μέχρι και πλήρη εταιρικό έλεγχο παρουσία νομικών εκπροσώπων και δικηγόρων.
  •  Διαφορετικές εταιρίες κάνουν διαφορετική διαδικασία. Ως εκ τούτου κάποια πιστοποιητικά είναι πιο ακριβά αλλά έχουν κάνει και πιο αυστηρούς ελέγχους.
  • Γιατί εμπιστευόμαστε εμείς την κάθε DigiCert για να κάνει αυτή την δουλειά;
    Γιατί την εμπιστεύεται ο Firefox!
    Ένα από τα αρχεία που εγκαθιστά ο  Firefox στον υπολογιστή σου είναι και ένα πιστοποιητικό (από τον Firefox) που λέει ότι η DigiCert έχει ελεγχθεί και ως εκ τούτου τα πιστοποιητικά SSL που είναι υπογεγραμμένα από την DigiCert είναι ασφαλή.
    Η λογική αυτή ονομάζεται Αλυσίδα Εμπιστοσύνης (Chain of Trust).
  • Φυσικά δεν υπάρχει μόνο η Digicert. Υπάρχουν πολλές εταιρίες και δημόσιοι φορείς που έχουν πιστοποιηθεί από τον Firefox και θεωρούνται ασφαλείς.
  • Το ίδιο κάνουν και όλοι οι υπόλοιποι browsers (Internet Explorer, Chrome, Opera, Safari)
  • Αυτός είναι και ο λόγος που χρησιμοποιούμε ΜΟΝΟ γνωστούς και "επίσημους" browsers. Κάποιος "ύποπτος" browser μπορεί κάλλιστα να θεωρεί ασφαλή τα πιστοποιητικά που εκδίδει η Apateonas Ltd. - και τότε αυτόματα χάνεται η εμπιστοσύνη που μπορείς να έχεις στο σηματάκι της κλειδαριάς...
Ελπίζω κάποια πράγματα να ξεκαθαρίστηκαν και να έγιναν κατανοητά από όλους. Δυστυχώς είναι πράγματα που θα πρέπει όλοι να ξέρουν (έστω τα πιο βασικά), καθώς οι online συναλλαγές είναι καθημερινότητα για πολλούς.

Η αφορμή για αυτό το κείμενο είναι η δημοσίευση του ebalaskas.

Το "έγκλημα" που έκανε ο ebalakas είναι να έχει πολύ αυστηρά μέτρα ασφαλείας στον Firefox του. Ο Firefox παραπονέθηκε για κάποια μικρο-ατοπήματα στα πιστοποιητικά SSL δύο ελληνικών τραπεζών και όταν επικοινώνησε μαζί τους για να τους ειδοποιήσει, η μία τράπεζα τον απείλησε με νομικές ενέργειες.

Έχοντας εξηγήσει το τι είναι τα πιστοποιητικά SSL και πως περίπου δουλεύουν ελπίζω να καταλαβαίνετε ότι το να στέλνετε screenshots των ειδοποιήσεων που βγάζει ο firefox δεν είναι λόγος νομικών απειλών αλλά ευκαιρία από την πλευρά του τεχνικού τμήματος της τράπεζας για διορθώσεις. Αν μη τι άλλο, σαν πελάτες της τράπεζας η ασφάλεια του e-banking είναι κάτι που μας αφορά άμεσα.

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

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