Tuesday, February 02, 2016

συνεντεύξεις στην Premier League του IT - μια ιδιαίτερη εμπειρία (προσγείωση) - landing in London #job


Ο τελευταίος 1,5 μήνας, ήταν αρκετά έντονος και αγχωτικός, θα ήταν κρίμα να μην τον καταγράψω εδώ για να τον θυμάμαι. Δεν είναι μυστικό πια ότι αποφασίσαμε να φύγουμε απ' το όμορφο και 'βολικό' Λουξεμβούργο. Δεν θα αναλύσω σε αυτό το post τους λόγους, επιγραμματικά θα πω ότι είναι αυστηρά επαγγελματικοί. Δεν μείναμε ευχαριστημένοι με τις δουλειές, ούτε και με την αγορά και ότι potential είχε να μας δώσει για τα επόμενα χρόνια. Θεωρήσαμε ότι έπρεπε να μεταβούμε σε μια πιο μεγάλη, σταθερή και με ποικιλία σε προτάσεις αγορά, όπου θα εκτεθούμε σε μεγαλύτερο ανταγωνισμό, θα δυναμώσουμε τα βιογραφικά μας τεχνικά και θα μπορέσουμε να πειραματιστούμε με τα διαφορετικά industries. (όχι μόνο πχ ευρωπαϊκά έργα ή μόνο τράπεζες και αν σου αρέσει).

Εξετάσαμε την αγορά της Ελβετίας, συγκεκριμένα την Ζυρίχη. Έκανα κάποιες συνεντεύξεις, μιλήσαμε με μερικούς agent και recruiters, μάλιστα στο τέλος κατάφερα να πάρω και ένα offer, από μια γνωστή Ελβετική τράπεζα - παρόλα αυτά την απέρριψα, μιας και από την έρευνα μας, καταλήξαμε ότι επαγγελματικά πάλι θα υπήρχε κίνδυνος να κλειστούμε σε μια 'ιδιαίτερη' αγορά η οποία την συγκεκριμένη εποχή είναι μεταξύ 2 κόσμων. Τις τράπεζες  που μαζικά κάνουν development σε near shore περιοχές (Πολωνία, Ισπανία, Ουκρανία ήταν αυτό που άκουγα συνέχεια) και κρατούν μικρότερες ομάδες onsite - και τους 'made in Switzeland' software vendors όπου more or less θέλουν να μιλάς γερμανικά και να είσαι κοντινός 'τους', μιας και προωθούν μια λογική, software από ντόπιους σαν τα ρολόγια μας. Μπορεί κάποιοι που είναι ήδη εκεί να έχουν κάπως διαφορετική εικόνα, τουλάχιστον αυτή είναι η κατάσταση όπως την σημείωνα, μέσα απ' τις συνεντεύξεις και τις συζητήσεις.

Ο προορισμός μας, ήταν εκεί για πολλά χρόνια στο μυαλό μου, αλλά δεν είχα πάρει την απόφαση. Μετά το crash course εδώ στο κέντρο της Ευρώπης, αφού βγάλαμε τα συμπεράσματα μας,  και αφού ήδη μπαίνουμε αρκετά δυναμικά με δεύτερο relocation σε λιγότερο από 1 χρόνο - το Λονδίνο ήταν ο νέος και λογικά final destination.

Στην καριέρα μου έχω κάνει αρκετές συνεντεύξεις, τις πιο πολλές στην Ελλάδα, μερικές πιο παλιά στο Βέλγιο, μετά αρκετές εδώ στο Λουξεμβούργο και κάποιες για την Ελβετική αγορά. Δεν μπορείς να πεις ότι δεν έχω εμπειρία, σίγουρα όχι τεράστια αλλά δεν βγήκα τώρα απ' το καβούκι μου. Ότι εμπειρία και να είχα, ήταν σχετικά λίγη θα τολμήσω να πω, για ότι είδα στην προσπάθεια μου να φέρω το πρώτο μου landing job στην Αγγλία. Πώς βλέπεις το GIF πάνω, μια ανώμαλη προσγείωση που σου χτίζει χαρακτήρα, σε ανεβάζει σε γνώσεις (έστω και αν δεν το καταλαβαίνεις) που σου υπενθυμίσει ότι όσο καλός κι αν νομίζεις ότι είσαι, υπάρχουν εκεί 'έξω αρκετοί καλύτεροι από εσένα και πρέπει να τους ανταγωνιστείς'.

Θα ήθελα λοιπόν να μοιραστώ μερικά tip με όσους θέλουν να κάνουν το ίδιο ή το έχουν βάλει στο μυαλό τους. Δες το σαν μικρή βοήθεια, στο τέλος της ημέρας εσύ θα πρέπει να αποδείξεις πόσο καλός/καλή είσαι - δεν υπάρχουν σκονάκια στην διαδικασία.

1. Φτιάξε το CV σου, ιδιαίτερα οι ημερομηνίες μεταξύ θέσεων.  (βασικό πρέπει να το ξέρεις ήδη)

2. Φτιάξε το CV σου, μην προσθέτεις τεχνολογίες ή buzzword αν δεν μπορείς να τις υποστηρίξεις ή αν δεν μπορείς να εξηγήσεις τι κάνουν και πως τις χρησιμοποίησες. (βασικό πρέπει να το ξέρεις ήδη).

3. Θεωρείς τον εαυτό σου Java Developer? Javascript Developer? ή Χ  developer? τότε κάτσε και διάβασε, όχι για πλάκα, κάτσε και διάβασε όλα τα βασικά της γλώσσας που θεωρείς ότι είναι το μεγάλο σου προσόν. Όσο πιο senior θες να λέγεσαι τόσο πιο δύσκολες θα είναι οι ερωτήσεις σε θέματα γλώσσας. Πάρε παράδειγμα ερωτήσεις που κάνουν σε διάφορα certification- tricky questions. Μπορεί να ερωτηθείς κλασικά πράγματα όπως πχ για την equals/ hashcode μέχρι τα χαρακτηριστικά του CMS και G1 garbage Collector και το ποιο datastructure είναι πιο γρήγορο απ' το άλλο. Δεν μπορώ να καταγράψω όλες τις πιθανές ερωτήσεις, μπορείς να google- άρεις και θα βρεις αρκετές, το σημαντικό είναι ότι πρέπει να διαβάσεις, μην το πάρεις στην πλάκα. Αν είσαι Java developer τοτε δες, core java, concurrency, performance είναι hot topic. Επίσης μην ξεχάσεις να διαβάσεις σχετικά για test driven development.

4. Γύρνα πίσω στα φοιτητικά σου χρόνια και στα μαθήματα 1) εισαγωγή στους αλγόριθμους 2) applied mathematics (ή γενικά μαθηματικά). Πολλές συνεντεύξεις (όχι όλες) έχουν σαν core μέρος τους την εξήγηση, λύση γνωστών αλγοριθμικών puzzle ή ασκήσεων. Όσο πιο πρόσφατα σου είναι πράγματα όπως sorting algorithms, applied mathematics, πιθανότητες, γνωστοί αλγόριθμοι ή number generators τόσο πιο εύκολα θα μπορέσεις να απαντήσεις γρήγορα ή να πολεμήσεις ένα πρόβλημα. Πχ, στις μισές συνεντεύξεις που έδωσα, ασχοληθήκαμε με τα string palindromes. Το πρόβλημα μπορεί να είναι απλό, πχ να εξετάσεις μόνο αν μια λέξη είναι και να γράψεις τον κώδικα αλλά και ιδιαίτερα σύνθετο πχ να βρεις το max palindrome σε μια παράγραφο (δεν είχα ακουσει ποτέ για τον αλγόριθμο του Manaher να πω την πικρή μου αλήθεια έκανα κάποιες ώρες να διαβάσω όλη την λύση) . Το πιο σημαντικό σε συνεντεύξεις με τέτοιο βήμα είναι ότι, πρέπει να απαντήσεις σχετικά γρήγορα και να μην κολλήσεις. Σε αντίθετη περίπτωση θα σε κόψουν (το ξέρω δεν βρίσκω λογική αλλά θα το κάνουν - πιο πολλά μετά επί των διαδικασιών). Ένας τρόπος να πας καλά σε αυτό το στάδιο είναι να κάνεις εξάσκηση και να διαβάσεις, εκτός και αν έχεις μια φυσική τάση να λύνεις τέτοια προβλήματα ή διάβαζες ακόμα και στον ελεύθερο σου χρόνο, οπότε δεν θα έχεις πρόβλημα.

5. Έχεις γράψει ποτέ κώδικα σε χαρτί; Ίσως παλιά στο πανεπιστήμιο; Ε γύρνα πίσω σε αυτά τα χρόνια , πάρε αρκετές Α4 και μολύβι. Μάθε να λύνεις κάποια προβλήματα (όπως τα παραπάνω) με το να γράφεις κώδικα σε χαρτί. Είναι φοβερό να ανακαλύπτεις πόσο δύσκολο είναι να γράφεις κώδικα χωρίς πληκτρολόγιο και IDE. Πάλι δεν καταλαβαίνω 100% την φύση της διαδικασίας αλλά όπως και να έχει εδώ παραθέτω τα fact. Σε πολλές συνεντεύξεις θα σου ζητηθεί να γράψεις από κανονικό compile safe κώδικα μέχρι ψευδο-κώδικα. Θεωρώ ότι ένας καλός τρόπος να το συνηθίσεις είναι να το κάνεις μόνος σου στο σπίτι. Το να πας για πρώτη φορά σε τέτοια συνέντευξη και να μην το έχεις ξανακάνει τότε θα σε δυσκολέψει. Ανάλογα το seniority  της θέσεις θα σου ζητηθεί αρκετές φορές να σηκωθείς στον πίνακα και να ζωγραφίσεις διαγράμματα. Μπορεί να είναι system design, μπορεί class hierarchies μπορεί να είναι abstract system integration, πρέπει να έχεις μια άνεση να μπορείς να σταθείς στο χαρτί και στον πίνακα και να μην σε πιάσει κρύος ιδρώτας.

6. Φρόντισε να έχεις ελεύθερο χρόνο για να κάνεις ασκήσεις (assignments). Στα πρώτα στάδια, αρκετών συνεντεύξεων θα σου δώσουν ασκήσεις για να ολοκληρώσεις μέσα σε ενα εύλογο χρονικό διάστημα. Συνήθως είναι σχετικά απλά πράγματα, πχ  standard library development, ίσως μερικά παιχνίδια. Θα σου πάρουν από 1-3 μέρες. Το σημαντικό είναι ότι στο τέλος δεν πρέπει να δώσεις απλά την λύση, θα πρέπει να είναι άριστα documented, fully tested και φυσικά να κάνει αυτό που σου ζήτησαν.  Άρα πρέπει να βρίσκεις χρόνο για να τις κάνεις και να τις παραδίδεις στην ώρα τους. Από τις πιο ωραίες διαδικασίες θα έλεγα, μιας και πραγματικά χωρίς ιδιαίτερο άγχος μπορείς να δείξεις τι μπορείς να κάνεις και μάλιστα με το δικό σου στυλ. Δυστυχώς μερικές φορές το feedback που θα πάρεις πίσω δεν θα είναι αρκετά justified , άλλες φορές ναι - οπότε είναι και στην εταιρία και στον εξεταστή πολλές φορές. Σίγουρα μια συμβουλή είναι keep it simple, documented and tested και δώστο. Μην προσπαθήσεις να χτίσεις κάτι το ιδιαίτερα πολύπλοκο ή framework heavy, άσε που τις πιο πολλές φορές σου γράφουν στην ίδια την άσκηση ότι μπορείς να χρησιμοποιήσεις μόνο core language apis και τίποτα παραπάνω.

7. Δούλεψε με τους recruiters. Ένας από τους πιο γνωστούς τρόπους να βρεις δουλειά είναι οι recruiters, (head hunters). Ζήτα από φίλους και γνωστούς που είναι ήδη στην αγορά να σου προτείνουν 1-2 agencies που θεωρούν καλά. Θα σε βομβαρδίσουν αρκετοί, οι παραπάνω από τους μισούς θα σου πουν τα πάντα για να σου παρουσιάσουν την κάθε δουλειά σαν καλό fit για σένα, δεν θα είναι όμως. Από τους 10 που μπορεί αν σε πάρουν τηλέφωνο, 2 -3 ειναι αυτοί που θα καταλάβουν ποιος είσαι, τι ζητάς και που θα μπορούσες να είσαι καλό fit. Από την άλλη όταν είσαι στην αρχή θα αναγκαστείς και να πάρεις προτάσεις και από ανθρώπους που σε βλέπουν 100% σαν fee, δηλαδή τον στέλνω σε οποιαδήποτε δουλειά απλά για να πάρω εγώ το fee μου. Αυτό ίσως σε οδηγήσει και σε άκυρες συνεντεύξεις, ή κάποιες που δεν θα πάνε καλά, αλλά σίγουρα είναι μια εμπειρία.

8. Πήγαινε σε συνεντεύξεις. Όσο πιο πολλές κάνεις ιδιαίτερα με εταιρίες που ίσως δεν σε ενδιαφέρουν τόση  εμπειρία μαζεύεις ειναι καλύτερα για εκείνες που σε ενδιαφέρουν. Μάθε να διαχειρίζεσαι το άγχος, θα υπάρχουν στιγμές που θα κολλήσεις, θα υπάρχουν στιγμές που θα ντραπείς που δεν μπορείς να απαντήσεις κάτι που σου ακούγεται τόσο απλό, θα υπάρχουν στιγμές που θα σου κάνουν επίθεση παραπάνω από ένας εξεταστής και θα σε εκνευρίζουν με follow up ερωτήσεις ή θα έχουν κολλήσει σε κάτι. Θα υπάρξουν στιγμές που μετά από 2 και 3 ώρες συνέντευξης θα έρθει ένας ευγενικός κύριος και θα σου πεί ότι δεν τους κάνεις, άλλοτε θα σου πει ακατανόητες βλακείες , άλλες φορές θα σου δώσουν εξήγηση (δεν έλυσε το πρόβλημα γρήγορα, δεν μας αρέσει το πως δούλεψες στο pair programming, είσαι αρκετά μονο-θεματικός σε τεχνολογίες κτλ κτλ). Στην αρχή θα σε πειράξει, θα σου δημιουργηθεί ένας κόμπος στο στομάχι, μπορεί να απογοητευτείς, αλλά θα πρέπει να το ξεπερνάς και να περνάς στην επόμενη συνέντευξη. Κάτι σαν τους αγώνες του NBA για ομάδα, συνέχεια test, χωρίς break.


Επί της διαδικασίας.

Ομολογώ δεν βρήκα  τα πάντα 'λογικά'. Πολλές συνεντεύξεις που έκανα ήταν κάτι σαν τρίωρες εξετάσεις που σε περιμένουν με το όπλο. Όσο πιο πολλά λεφτά και senior θέση τόσο πιο πολλές πιθανότητες να δυσκολευτείς. Από την άλλη μου αρέσει δεν μου αρέσει είναι φανερό ότι το σύστημα στο Λονδίνο, έχει βρει έναν τρόπο να κάνει speed check σε μεγάλο αριθμό developers. Δεν γίνεται να το αλλάξεις οπότε το πιο πιο λογικό είναι να προετοιμαστείς. Δεν είναι ακατόρθωτο αλλά όσο πιο ενημερωμένος είσαι τόσο πιο ευκολο γίνεται - αυτός είναι και ο σκοπό τους post. Δεν είναι όλες οι εταιρίες ίδιες, ούτε όλες οι συνεντεύξεις γεμάτες παγίδες και time bomb tests, αλλά θα τις δεις και αυτές και ίσως σου χαλάσουν στην αρχή την ψυχολογία ή σε κάνουν να αμφιβάλεις για τον εαυτό σου. Είναι εντελώς ανθρώπινο και κατανοητό, μόνο οι βλάκες ή πάρλες (όπως ονομάζω) νομίζουν ότι τα ξέρουν όλα και μπορούν να κάνουν τα πάντα.  Σε κάποιες περιπτώσεις, εξαιτίας εμπειρίας μπορούσα να αφουγκραστώ ή να δω ότι τελικά η πραγματική δουλειά ή project δεν ήταν σε τόσο elite επίπεδο όσο η συνέντευξη. Δηλαδή τα πράγματα ήταν πιο normal, τσαπατσούλικα ή λίγο ανοργάνωτα απ΄ τι στα λένε ή σε ρωτάνε. Είναι και αυτό μέρος της διαδικασίας.

Overall

Ήταν μια ιδιαίτερη περίοδος. Διάβασα(με) αρκετά, αγχωθήκαμε, είχαμε καλές και άσχημες στιγμές. Στις άσχημες στιγμές μαθαίνεις να συνεχίζεις και να μην το βάζεις κάτω. Μαθαίνεις να λες στον εαυτό σου ότι δεν είσαι πάντα τόσο καλός όσο νομίζεις ή παράλληλα μπορεί να υπήρχε κάποιος καλύτερος από εσένα. Πάντα υπάρχει κάτι να μάθεις και στην αποτυχία. Όπως λέει και ένας σοφός 'φίλος' μαθαίνεις να κρατάς το cool σου και να μην σε παίρνει από κάτω.

 Στις καλές στιγμές τις νιώθεις νικητής και νιώθεις περήφανος που πέρασες 2-3 rounds και τελικά κάποιος σου κάνει πρόταση για να σε εντάξει στην εταιρία του/ομάδα. Νιώθεις ότι έπαιξες στα trial της μεγάλης κατηγορίας και είσαι μέσα, θα σου κάνουν μεταγραφή, ανεβαίνεις στο πρωτάθλημα με τους καλύτερους.

 Υπήρξαν περιπτώσεις που πέρασα συνεντεύξεις και είχα πολύ καλό feedback και πρόταση, όταν δεν το περίμενα, και υπήρξαν περιπτώσεις που έλεγα ' εντάξει εδώ θα είμαι άνετος τους έχω - και τελικά δεν τα πήγα καλά'. Θυμήθηκα τόσα πολλά βασικά πράγματα που είχα ξεχάσει, και στο τέλος αυτής της διαδικασίας τεχνικά βγαίνω πολύ πιο έτοιμος και διαβασμένος όσο ποτέ άλλοτε τα περασμένα χρόνια. Ναι κύριοι μέχρι και 2 βιβλία για Spring κατανάλωσα σε μερικές εβδομάδες, γιατί έπρεπε να το κάνω.  Σίγουρα την επόμενη φορά που θα ξαναβγώ στην γύρα  θα είμαι με ακόμα λιγότερο άγχος και πιο καλά προετοιμασμένος. Το μόνο σίγουρο είναι ότι θα το ξανακάνω, μιας και το Λονδίνο είναι η χαρά του προγραμματιστή, ότι ζητήσει η ψυχή σου, ότι έχεις ονειρευτεί από business, τεχνολογίες, μικρές μεγάλες ευκαιρίες, είναι εκεί για σένα, σε περιμένουν αρκεί να πας με σοβαρότητα, διαβασμένος και μετρημένος - και να βρεις την επόμενη σου ευκαιρία που θα σε φέρει πιο κοντά στα τεχνολογικά και επαγγελματικά σου θέλω. Για  αυτά τα θέλω και τα όνειρα, αποφασίσαμε να ξοβολευτούμε από εδώ που είμαστε και να κάνουμε μια προσπάθεια να τα κυνηγήσουμε, τώρα λίγο πιο σοφοί και πιο έμπειροι από πριν.

Εύχομαι σε όλους καλή επιτυχία και  τα λέμε πια στο Λονδίνο. Ίσως ένα μικρό παράρτημα του JHUG να πρέπει να ξεκινήσει εκεί, με έμφαση στην κατανάλωση σοβαρού καφέ!



*update

Μια ενδιαφέρουσα τριλογία - από έναν σοφό φίλο για την διαδικασία.
Επίσης ένα σχετικό άρθρο κι εδώ από την Σοφία (digital era).

Tuesday, January 19, 2016

Wildfly Swarm, towards maturity and a small contribution #wildfly #wildflyswarm

One of the projects I follow lately, is Wildfly Swarm. Eventually my request during this year's Devoxx in the JBoss BOF, to consider changing the name of the project, did not go through (due to the conflict with the famous Docker Swarm).

So what is Wildfly Swarm?

Simply put, is the Wildfly application server (app server of choice for many devs -including me), split into in several pieces - (modules or fractions as they are called), and made available to any developer to use them  and assemble a new modular solution. You wont have to bundle or install the whole app server any more, just the layers and functionality you want. You can pick from a list of several sub-modules those that your application is going to leverage, pull their dependencies and assemble your final jar application along with your code. The model resembles a lot on what many teams and developers out there do with Spring Boot.

Wildfly and modularity -  ahead of it's time 
One side note, is that Wildfly is one of the few application servers that invested on it's modularity and related infrastructure long before other technologies or containers emerged. The JBoss/ Wildfly code base through out these years, changed a lot towards providing a flexible core with plug-gable modules and this is something we need to give credit to their development and design team for many years now. If you have worked on any project using Wildfly or JBoss  you are already exposed to it's modules architecture and the simplified class and library loading features. So the application server and  components were already modular by design and constructs, the only thing missing is to make it official and provide some extra tools and APIs to the end developer - to fully leverage this ability. That is Wildfly Swarm. The development is still ongoing. The official site can be found here, a long list of examples and code can be found here, the official documentation can be found here, twitter account here, and the mailing list can be found here.

ShrinkWrap - an excellent API

One of the advantages of using Wildfly Swarm, development wise, is the use of a very handy an excellent written API IMHO, called ShrinkWrap. ShrinkWarp emerged out of the Arquillian Project, and it is the API you use to build on the fly your 'testable' archive which will be deployed on the fly to a app server run time. What a great fit in the context of Wildfly Swarm, where you can compose programmatically your end  application.(There are other ways as well). I was always enjoying the beauty and simplicity of ShrinkWrap when developing test based on Arquillian and I am very happy to see it 'escape' to other tools and technologies as well.


A small maven contribution

While I was going through the examples, trying to learn and play with Wildfly Swarm, I noticed that  there was a small thing missing from the Maven perspective. Since there are a lot of modules (fractions) that eventually you can define as dependencies, in order to come up with your final solution, I was missing some help, in the form of a fractions Bill of Materials, so that you can import in your final POM and then pick whatever dependencies you may like. I decided to create an issue and provide a tiny pull request - with a proposed BOM. Happy enough the development team, progressed on this one fast enough and the latest version of Wildfly Swarm, features a new BOM for all Maven users.
I have a small demo project (not something fancy, just to show case some things or play with some others in the future). You can find it here.

The main idea is that, in any new Wildfly Swarm based project, built with Maven, you can now import the specific BOM (name bom) and you can have a concrete list along with version of the available fractions (components).



You can find the complete simple pom here.

Saturday, January 02, 2016

until next time

Ζω πια έξω, οπότε δεν θέλω να γκρινιάζω αρκετά για την Ελλάδα γιατί όπως λένε και πολλοί, 'μεγάλε δεν σου πέφτει λόγος πια' - δεκτό λοιπόν.

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

Καλη συνέχεια και υπομονή σε όλους. Until next time!

Thursday, December 31, 2015

year in review

2015, what a year. The year that I eventually managed to get out of my comfort zone (or one of them) and left my country, to work and live abroad, I also proposed to my wife and got engaged.

The most weird and unfortunate year in terms of job and career, that did not go very well - many funny people with funny stories during a very funny job (I am still trying to get over it and not explode with anger - but I am working on it). At least I got to do a lot of reading and self study!

Overall it was not bad. Yes, some things did not work out,  but I am feeling optimistic. It felt like a year of life changing events and now in this very last day, I'm making dreams for more exciting and bigger things to come (or hopes).  I feel that I am eventually changing as a person, embrace change a lot easier, while being happier and less stressed, than I used to be. This is a big change for a person that spent a lot of his time, constraining himself on several areas, beliefs or ideas.

Goodbye 2015, for sure you will be remembered :) . 2016 here I come!

ps
Dear Santa,  I would kindly like to ask you for a decent job next year. A job where I will manage to funnel all my passion and love.  A job where I will be able to share my knowledge and learn at the same time. I know it is not an easy gift to find but as I already elaborated I am feeling optimistic.

Paris

Καλή χρονιά σε όλους, υγεία και πολλά όνειρα.



Thursday, December 17, 2015

My evolved news crawler :) v1.8

Well I needed to kill some time during this strange intermission period - between jobs. My original 1 hour hack (less than 100 lines of code), evolved to something more flexible and useful (I hope so). Eventually my father is very happy now, instead of 1 newspaper summary he now receives 10.

He was also kind enough, to email me (from the Pacific) some early bugs like duplicate entries and formatting issues, which I tried to resolve. It is always fun to have someone use your code, isn't it? 

Of course in order to honor my Java development heritage, in this small tool I had to create my own  mini framework / crawling logic  - all java devs do it!! It's not that complex actually, and now I can easily add more crawlers for similar sites.

So currently I support the following sites (greek at the time being) but I will keep adding more :
I have also added 2 optional command line arguments.
  • flag to control the max amount of articles to be crawled and included in the final report.
  • flag to control the creation of zip files, that contain each  html report. That way I manage to reduce the size even more. So when I email them the payload is far less :).
You can find more in the official github page. By the way I try to keep my documentation up to date.

You will find all the required material in order to run or compile this small utility, plus any requirements.

I will soon add a small section, for those (if there is anyone interested) that would like to plug, extra crawling implementations for other RSS based sites.

Of course there a lot of stuff that I could do, in order  to improve the utility and most probably I will continue to add, crawlers for sites and make the design more 'modular'.

happy crawling .