Πέμπτη, Οκτωβρίου 25, 2007

The wonderful world of open source and Java...

This is I think the first blog entry in English, something we will be doing from time to time, after popular demand. Skipping various very googoomuckish topics (like the upcoming new logos), I will proceed to something ridiculously off topic

Having recently switched from working with .net, to working in a j2ee web application (mind it's not the first time I did it), I am... ehm... impressed. In a not very positive way. I'll explain with some "advice"...
Mind that we have a set of wonderful developers, and that I could make a funny list for .net too so this is not intended to start a flame war!

1) Choose free. It doesn't matter that the software might cost less than 10% of the annual cost of the developers' salaries. Choose free anytime you can. This means that you might choose a mediocre free IDE in favour of a very good free IDE, because the first promised to have UML support for free 2 months earlier. It doesn't matter that this UML support was so lacking that it was bordering to uselessness.

2)The test framework is your God. The God is always right. If you cannot make a unitary test for a 6 line method in less than 100 lines it's always a problem of the method. It doesn't matter that the framework 1) cannot test anything that has to do with the database, 2) cannot test anything that has to do with another public call of the class that contains the tested method, 3) needs at least 5 lines per test even if the original function is 1 line long.

3) The solution to the above problem is to add another layer to the application. This is what java means by n-tier. If you think about it, n-tier means nothing. Even if n is a natural, a 0-tier application is meaningless, and an 1-tier is an n-tier :P. Normal people use 2-4 tier. Java community by n means n->infinity. It's a number that has to start as big as possible, and whenever in doubt, it has to increase.

4) The perfect way to achieve this ->infinity is to add layers of classes that do something like this for every function of the layer below:
class Something
{...
insertSomething(Something something)
{ somethingLayerBelow.insertSomething(something); }
...
}
As you can guess, you can add an infinite number of layers like this .

5) Do unitary tests for the above layers(because you cannot really do tests for the complicated ones). Then be confident that the unitary tests showed you really that the application is bug-less.

6)Notice the notation? It could have been written like this:
class Something
{...
insert(Something value)
{ somethingLayerBelow.insert(value); }
...
}
Don't do it. It makes copy paste easier and takes less characters. Keyboards are made for a reason: type.

7) Having to change 12 files (written in java, various types of xml, sql and a couple of web notations) to add a simple page to edit a data table is a feature, not a bug. This has to be done manually. There is an evil variation of this, where it has to be done by a wizard that doesn't really work, and then you have to do complicated things in another 6 files. It is called the Oracle version.

8) WAR is good. .War files help you upload all these files together to a server. It was such a good idea that everybody copied it. It works even better when you have no ftp access on the server. Thus, every time you fix a broken link, you have to redeploy the whole application, recopy a gazillion of data and possibly even rebuild the database and pass 2 days fixing the differences. WAR creates jobs.

9) It is not paradoxical to be adamant about performing unit tests for 20 specific classes in a project that uses 60 more classes and around 400 untested scripts and xml files that can break after every refactoring.

10) Of course, apart from your gazillions of files, there are tons of packages to manage. To avoid dll (ehm jar) nightmare, assign the task to someone else, who's not even paid for this job, and start using his/her repository before every jar there gets a description and all its prerequisites are in the repository. If you do it after, you miss the excitement of having a production application that suddenly doesn't build because someone in the repository added an impossible prerequisite in the description of the jar you used. Or one of the other 787 jars in the dependency trees.

Δευτέρα, Οκτωβρίου 15, 2007

Για άλλο πήγαινε και άλλο βγήκε...

Είχα μια μεγάλη ανάλυση για το γιατί δεν πέτυχε το gunslinger girl, αλλά μου την έφαγε η αποθήκευση σε rtf (άγνωστο γιατί!!). Αντί αυτής παίρνετε περίληψη:
1) Τα κοριτσάκια δεν είναι playable. Μόνο ο Φοίβος θα είχε την υπομονή να τα παίξει σωστά για καιρό. Τα gunslinger girls ΔΕΝ είναι emo έφηβοι που κάνουν την επανάστασή τους (η Sina ήταν, και είχα την αφέλεια να σκέφτομαι ότι θα είναι η μόνη στην παρέα).
2) Το μυστήριο δεν βγήκε, διότι ο ένας εκπαιδευτής δεν ήταν εκεί, ο άλλος δεν μπορούσε, και τα κοριτσάκια δεν είχαν τα στατ, την ευχέρεια κινήσεων και την τάση να λύνουν δύσκολα μυστήρια.
3) Οι παίκτες σκόρπισαν. Κάποια στιγμή όλη η αρχική ομάδα δεν ήταν εκεί, και το μέλλον του παιχνιδιού καθορίστηκε από τους νέους, αφήνοντας τους παλιούς να απορούν πώς πήγε εκεί.
4) Πρόβλημα προσφοράς και ζήτησης: οι παίκτες δεν ξέρανε τι παίρνανε (σε αντίθεση με το προηγούμενο και επόμενο campaign), και αυτό άλλαζε στην πορεία. Κάποια στιγμή για να έρθουν νέοι παίκτες, το παιχνίδι διαφημίστηκε ως Expedition to Castle Ravenloft (η προσφορά αυτού ήταν υπερβολικά εύκολη).
Και όπως έλεγα στο αρχικό κείμενο... αυτό οδήγησε σε μια ιστορία αχταρμά: ο ιός της ζομποποίησης και τα πράγματα με τα πλοκάμια ήταν κάπως οκ για μια τελική πινελιά resident evil. Το γιατί έπρεπε οι παίκτες να περάσουν από 10 λυκανθρώπους, 3 γριές μάγισσες, ένα γίγαντα, κάτι δαίμονες και 10 gargoyles μέχρι να ανακαλύψουν την εξήγηση, απλά μου διαφεύγει (και σαφώς είναι δική μου ευθύνη).

Πάρτε τώρα και κάτι άλλο που έγραψα την ίδια μέρα, να μη σας βγάλω με περίληψη:



Ξεκίνησα να γράφω και δεν ξέρω τι θα βγει. Για πρώτη φορά δεν ξέρω αν θα είναι ποίημα ή μυθιστόρημα, ή περιπέτεια, ή άρθρο. Απλά θέλω να γράψω.

For he is count jefferey…

Αναμνήσεις.

Ναι, τελικά νομίζω ότι αποφάσισα: κοίταξα μέσα μου τι με τράβηξε στο χαρτί, το λόγο για τον οποίο ήθελα να γράψω, και όχι να διαβάσω για UML 2.0. Γιατί μου λείπετε.

Δεν είναι περίεργο, και όμως είναι ασυνήθιστο. Ονόματα που πετάγονται σε ευχαριστίες κάτω από άσχετα projects και εργασίες, αλλά που αλλιώς δεν ευχαριστώ ποτέ. Ανθρώπους που ευγνωμονώ αλλά δεν τους το λέω πάντα.


Και ξαφνικά νιώθω σαν να βρίσκομαι σε ένα σκοτεινό αερόπλοιο πάνω από έναν ομιχλιασμένο κόσμο: όλοι τόσο μακριά. Δεν είμαι θλιμμένος. Είναι απλά (σχεδόν) ελεύθερη γραφή.

Δεν είναι δύσκολο να καταλάβει κανείς γιατί: είμαι εθισμένος στο διαδίκτυο και δεν έχω πρόσβαση, κι έτσι όλοι τώρα είστε τόσο μακριά. Είμαι εθισμένος στην προσωπική έκφραση και δουλεύω σε ζευγάρι στη δουλειά, και αυτή η σελίδα είναι η ελευθερία μου. Έτρεχα επί εβδομάδες, και, για πρώτη φορά, δεν έχω τι να κάνω (πέρα από το να διαβάσω ένα βαρετό βιβλίο ευέλικτης μοντελοποίησης μπλα μπλα). Δεν είχα ακούσει μουσική από αξιοπρεπή ηχεία επί ΠΑΝΩ ΑΠΟ ΕΝΑ ΜΗΝΑ, και τώρα έχω τα ηχεία μου και ακούω τις παλιές εκπομπές μου, και ειδικά αυτή που είναι αφιερωμένη στο Λεώ.

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

Μου λείπει ακόμα και ο Θανάσης στο dark cell!

Ο Φοίβος, παίκτης, φίλος, μια φωτεινή παρουσία στα μαύρα.

Η Μαριλένα! Σπανίως μου λείπει αυτή… Αλλά, έχει πλάκα: η απουσία της Μήδειας, με κάνει να θυμάμαι και όλες τις άλλες κοπέλες. Νομίζω ότι ψοφάω για ένα άγγιγμα αυτή τη στιγμή… Οκ, λιγότερο από 4 εβδομάδες ακόμα…

Ο Πύρρος, και η Γιώτα. Μαζί σας θυμήθηκα, ετερόκλιτα πράγματα. Είναι αλλόκοτη η ζωή χωρίς την καθημερινή διαδικτυακή κουβέντα με τον Πύρρο. Η Γιώτα, έχει τόόση πλάκα. Πύρρο, σε ευχαριστώ πολύ που ήρθες ως τη Γλασκώβη. Ήταν σχεδόν διακοπές για μένα.

Η Μήδεια, χεχ, η τέταρτη θέση είναι παραπλανητική. Μου λείπει η παρουσία της και είναι ένας από τους λόγους που γράφω αυτές τις σελίδες. Απλά η συνειρμική γραφή την έφερε σε αυτή τη θέση. Σεβασμός στο υποσυνείδητο! Μου λείπει πιο πολύ από όλους, κι ας μιλάμε κάθε μέρα, αλλά μου λείπει με πολύ διαφορετικό τρόπο: η απουσία της εντείνει την αίσθηση απουσίας όλων των υπολοίπων.
Βλάκα Σαρλί, αν ξαναμπείς μεταξύ εμένα και της Μήδειας κρατώντας τις άδειες (όχι για τον εαυτό του, γιατί αυτός δεν παίρνει ποτέ άδεια), θα το πληρώσεις. Χαιρετίσματα από την Κομισιόν, μαλάκα (ΠΟΙΑΝΟΥ ΙΔΕΑ ΗΤΑΝ TO WORD ΝΑ ΜΗΝ ΑΝΑΓΝΩΡΙΖΕΙ ΤΗ ΛΕΞΗ ΜΑΛΑΚΑ;).

Η τουαλέτα. Πάω και ξανάρχομαι…

Η Αμαλία, η Νίκη, η Δήμητρα και η Μαρία. Και η Ηρώ, βεβαίως, βεβαίως, της οποίας τα σχέδια παρελαύνουν αυτή τη στιγμή στην οθόνη μου. Μια παρέα που υφίσταται ακόμα ως σύνολο μόνο στο υποσυνείδητό μου. Σας ευχαριστώ. Μαζί με τη Χριστίνα (που ποτέ δεν βλέπω σαν μέλος της ίδιας παρέας, αλλά που είχε παρόμοιο ρόλο και σε παρόμοια φάση της ζωής μου) με κάνατε αυτό που είμαι σε πολύ μεγάλο βαθμό. Εκεί που είχα ατσαλώσει τη θέλησή μου και όλα περνούσαν σαν να μη συνέβαινε τίποτα… συνέβηκαν πολλά. Ένιωσα ξανά ζωντανός. Έκανα λάθη, μεγάλωσα. Και το πιο σημαντικό: χωρίς να χάσω ό,τι ήθελα να κρατήσω από την παιδικότητά μου.

Η οικογένεια. Η Ρεβέκκα, μια σχέση αγάπης μίσους που βρίσκει το δρόμο της επιτέλους. Η Σοφία, που μοιάζει ταυτόχρονα μέρος του εαυτού μου και τόσο μακριά. Και ο Γιάννης, που μοιάζει τόσο περίεργο να τον λέω Γιάννη, και που έχασε πολλά, και είναι τόσο μόνος. Και η Νένη… που νιώθω να μου λείπει μετά από… δεκαπέντε χρόνια; Μιλάμε για ένα ποσό χρόνων που είναι απλά συγκλονιστικά μεγάλο για έναν άνθρωπο στην ηλικία μου.

Όλοι οι υπόλοιποι. Με τεράστια σημασία ο καθένας τους, όμως η μουσική σιγά σιγά αλλάζει και είμαι 100% εξαρτημένος από αυτή για να κρατήσω τη διάθεση να τους απαρριθμήσω. Ο Μιχάλης, σύντροφος στο έγκλημα. Η Χριστίνα-Ιωάννα, μια γνωριμία που αδυνατώ να καταλάβω εντελώς γιατί μοιάζει να έχει τόση σημασία αυτή τη στιγμή. Ίσως λόγω παράλληλων βίων;
Η Δανάη, η Ραψωδία… ανυπομονώ να σας φιλοξενήσω στο Παρίσι, σκατούλια!

ΚΑΙ Ο ΤΟΜΠΙΙΙΑΣ. Νομίζω ότι τελικά όντως μου άρεσε, αλλά η σκέψη δεν θα είναι καθόλου η πρώτη μου προτεραιότητα όταν θα πάω να τον δω. (Χμ, ίσως ήταν τόση η ταύτιση με τη Χριστίνα που είχε Αυστριακό πρώην που ξύπνησε περίεργα πράγματα σε μένα για τον Τομπίας; Κάτι πρέπει να κάνω με το μιμητισμό μου :P)



Τέλος πάντων. Καθόλου πολιτικώς ορθές αναλογίες και διατυπώσεις στο παραπάνω. Είναι λογικό. Μπορεί να σκέφτομαι κάποιον όλη μέρα και να τον σκέφτηκα μόνο 5 λεπτά στην ώρα που μου πήρε να γράψω αυτό, μπορεί κάποιον να είχα να τον σκεφτώ ένα μήνα και να τον θυμήθηκα τώρα. The fallacy of a small sample…


ΥΓ: Ξαναδιαβάζοντας βλέπω ότι δεν ανέφερα καν την Εύη ούτε τα περισσότερα googooμάκια… The fallacy of a small sample που λέγαμε…

Κυριακή, Οκτωβρίου 14, 2007

U KNOW I’M NOT DEAD :)

Χτες το βράδυ πήγα βόλτα στην πόλη μέχρι κάτω ως το ποτάμι. Είχε φωτάκια, τρομπετίστες στο δρόμο, μια έκθεση με επίσημο ένδυμα επίσης στο δρόμο, μεθυσμένο κόσμο, βρήκα ένα καφέ που είναι ανοιχτό και μετά τις 6μ.μ., ήπια ένα τραγικό κοκτέιλ σε νεροπότηρο, άκουσα το the next big thing να παίζει λάιβ, ήταν χαρούμενα κ διασκεδαστικά, κ ακόμα μου λείπουν όλοι. Goo Goo Mucks of the world UNITE!

Σάββατο, Οκτωβρίου 13, 2007

touroutoutou



01. Gunter Kallman Choir - Daydream
02. Marrillion - Kayleigh
03. Verve - Lucky man
04. Starsailor - Four to the floor
05. The Gentle Waves - Falling from Grace
06. Coldplay - Yellow
07. The Corrs - Only when I sleep
08. French Kiss - Dream a Little Dream
09. Pj Harvey - Good Fortune
10. Patti Smith - Dancing Barefoot
11. The Magic Numbers - Forever lost