A Bug’s Life
Και κυρίως η ζωή του bug που πλήττει το iGreekNews και το κάνει ασταθές πολλές φορές.
Ύστερα από αναρίθμητα mails με το ίδιο παράπονο, μπορώ να πώ με σχετική σιγουριά ότι εντόπισα το πρόβλημα. To πρόβλημα είχε ως σύμπτωμα το κλείσιμο της εφαρμογής ενώ επισκέπτεστε ολόκληρο το άρθρο. Μέχρι πριν λίγο καιρό μου φαινόταν ότι το πρόβλημα ήταν κακή διαχείριση μνήμης, αλλά τελικά δεν είναι έτσι.
Πολυάριθμα tests με έκαναν να συμπεράνω ότι έφταιγε κατά ένα μεγάλο μέρος το ενσωματωμένο browser, το οποίο βασίζεται στην κλαση UIWebView της Apple, με μερικά tweaks από μένα για καλύτερη λειτουργία με τους Ελληνικούς δικτυακούς τόπους. Φαίνεται ότι κατά το heavy loading, το απλό iPhone 3G έμενε από μνήμη, και προσπαθούσε να την απελευθερώσει. Έτσι, αυθαίρετα, το iPhone κατέστρεφε δεδομένα, που ήταν απαραίτητα για να λειτουργήσει η εφαρμογή.
Θα κάνω ένα bug report για το πρόβλημα αυτό στην Apple, αν και πιστεύω ότι πλεόν αντιμετώπισα το πρόβλημα στην επερχόμενη 1.1 έκδοση, εφόσον αναγκάστηκα να ξαναγράψω μεγάλο μέρος του RSS parser μου. Μέχρι τώρα τα αποτελέσματα είναι εξαιρετικά, ακόμα και για το απλό iPhone 3G, το οποίο δεν μου έχει κολλήσει ακόμα ούτε μία φορά!
Βέβαια, βγήκε σε καλο το ότι αναγκάστηκα να ξαναγράψω τον parser. Πλέον, το iGreekNews αναγνωρίζει αυτόματα δικτυακούς τόπους κωδικοποιημένους με Windows Servers, κάτι το οποίο δεν γινόταν με το αρχικό parser, όπου έπρεπε να του πώ εγώ τι να κάνει και πού να ψάξει. Έτσι, οι custom δικτυακοί τόποι δεν θα έχουν αυτό το -1028 error που μερικές φορές εμφανίζει στο χρήστη το iGreekNews.
Πλέον δουλεύω στην τρίτη μου εφαρμογή, η οποία κατά έναν περίεργο λόγω απορρίφθηκε από την Apple. Την βελτιώνω για να την κάνω submit ξανά, αν και πρέπει να βρω τρόπο να κάνω submit την τεράστια αυτή εφαρμογή των 1GBytes (και κάτι ψιλά), χωρίς την βοήθεια του Application Loader της Apple το οποίο έχει τεράστια προβλήματα (έχει καταφέρει κανείς να κάνει submit με αυτό το πράγμα (για να μην το πώ αλλιώς)?).
Ελπίζω το update του iGreekNews να βγει σύντομα, και όλοι να χαρούν την πλήρη λειτουργία του ενσωματωμένου web browser. Έχουν γίνει και ένα σωρό αλλαγές, όπως μπορείτε να δείτε κι εδώ.
Προγραμματισμός και Ηθική part 2.
Συνεχίζω να γράφω τις εμπειρίες μου και τις περιπέτειές μου, όσον αφορά την ζωή μου ως freelance programmer.
Ένα από τα πιο βασικά πράγματα που έμαθα τα τελευταία χρόνια που ασχολούμαι με τον προγραμματισμό είναι ότι έχει πολύ μεγάλη σημασία το πώς θα δηλώσεις ποιος είσαι και το τι κάνεις.
Η δουλειά του freelance programmer έχει πολλά θετικά, όπως το να ζητάς πιο πολλά από ότι θα ζητούσες σε μία δουλειά ως υπάλληλος, ελεύθερα ωράρια εργασίας, και είσαι κύριος του εαυτού σου. Αλλά έχει και πολλά αρνητικά, όπως το ότι δεν είσαι νομικά καλυμμένος αν κάτι πάει στραβά.
Σε περίπτωση που η δουλειά που έχει αναλάβει ένας ελεύθερος επαγγελματίας στραβώσει κάπου στη μέση, δεν υπάρχει καμία απολύτως περίπτωση να πάρει τα λεφτά για τα οποία έχει δουλέψει μέχρι εκείνη τη στιγμή. Για αυτό και οι περισσότεροι ελεύθεροι επαγγελματίες ακολουθούν την τακτική του τύπου “pay as you go” στον πελάτη.
Η τακτική του “pay as you go” (PAYG) δηλώνει ότι ο ελέυθερος επαγγελματίας θα δουλεύει και θα προσφέρει τα πρωτότυπα της δουλειάς του στον πελάτη. Όσο πιο πολύ προχωρά η συνεργασία, τόσο περισσότερα θα δίνει ο πελάτης. Σε μία υποθετική κατάσταση μίας δουλειάς η οποία θα έπαιρνε έναν μήνα και που ο πελάτης δεν έχει υπογράψει κανένα συμφωνητικό στο οποίο δεσμεύεται αυτός ή ο developer, ο developer θα προχωράει όλο και περισσότερο στην δουλειά του και θα δείχνει το τι έχει έτοιμο διαρκώς, και ο πελάτης θα πληρώνει μέρος του τελικού ποσού όσο η δουλειά προχωρά.
Αυτο καλύπτει και τον πελάτη, επειδή διαρκώς βλέπει ότι η δουλειά προχωράει, αλλά και τον developer, ο οποίος έχει ένα κίνητρο παραπάνω να δουλέψει, και που δεν μπορει να “πάρει τα λεφτά και να φύγει”, εφόσο, μένουν να πάρει και τα υπόλοιπα, και εφόσον δεν θέλει να πάει στράφι η δουλειά που έχει κάνει μέχρι στιγμής. Εάν για οποιονδήποτε λόγο η δουλειά δεν ολοκληρωθεί, χάνουν και οι δύο πλευρές από κάτι. Ο πελάτης έχασε τα χρήματά του, αλλά όχι όλα αυτά που ήταν να πληρώσει για την ολοκληρωση του έργου, και ο developer έχασε τον χρόνο του και τις εργατοώρες του, αλλά πήρε τουλάχιστον κάποια χρήματα για αυτό που δούλεψε.
Αυτό είναι κάτι το οποίο ακολουθώ εδώ και χρόνια ως freelance programmer. Και έχει δουλέψει άψογα, τόσο για μένα όσο και για τον πελάτη.
Αλλά είναι μερικοί που αρνούνται να καταλάβουν τι σημαίνει προγραμματισμός. Προγραμματισμός δεν είναι site. Και ένα στατικό site δεν είναι δυναμικό site. Πρέπει στην Ελλάδα να μάθουμε να διαχωρίζουμε τι σημαίνει web designer, web developer, και σκέτο developer. Αντίθετα με ό,τι πιστεύουν οι περισσότεροι, ένα πρόγραμμα θέλει πιο πολλές εργατοώρες από ένα μέτριο site και η μέθοδος δημιουργίας ενός προγράμματος κατά παραγγελια δεν έχει κανένα μα κανένα template το οποίο θα μπορούσε να επισπεύσει την διαδικασία. Ο developer πρέπει να σκεφτεί κάποιον τρόπο να ικανοποιήσει τον πελάτη, και να προσφέρει μία λύση που να είναι ειδικά σχεδιασμένη για αυτόν. Το site, απο την άλλη, μπορεί να φτιαχτεί στην βασική του μορφή εύκολα με ένα πρόγραμμα μέσα σε καμιά δεκαριά ώρες. Ακόμα και για δύσκολα και δυναμικά sites, υπάρχουν έτοιμα templates τα οποία λυνουν τα χέρια. Τίποτα τέτοιο όμως δεν υπάρχει στον προγραμματισμό για iPhone, Mac, ή ακόμα και Windows και Linux.
Η τιμή λοιπόν, και ο τρόπος διαικπεραίωσης της εργασίας, αντανακλά ακριβώς αυτά τα γεγονότα. Όταν ο πελάτης συμφωνεί με το PAYG τότε πρέπει να το ακολουθεί. Και συνήθως, ο πελάτης αφήνει το 1/3 της τιμής απλήρωτο, μέχρι να δει το τελικό αποτέλεσμα που έχει ζητήσει. Όχι παραπάνω όμως.
Αυτά για κάποιους που τώρα αρχίζουν την ζωή τους ως freelance developers και που δυσκολεύονται να βρούν σχετικές πληροφορίες στο Internet, αλλά και για επίδοξους πελάτες που ίσως έχουν παρεξηγήσει την διαφορά μεταξύ web designer και application developer.
Εξεταστική τέλος…
Posted by soulstorm in Uncategorized on January 29, 2010
Ζήτω η επόμενη εξεταστική!
Ναι, σε μία εβδομάδα πάλι τα ίδια! Και το δώρο για τον κάθε μακίστα είναι ένα νέο Mac-like product. Και το νέο SDK από την Apple, το 3.2 το οποίο θα επιτρέπει το development των applications για το iPad με μερικές πολύ χρηστικές βελτιώσεις.
Εκτός από αυτό, το project soulstorm γιορτάζει το σπάσιμο του ορίου των 8000 επισκεπτών το μήνα. Φαίνεται πολύ περισσότεροι από ό,τι νόμιζα βρίσκουν ενδιαφέροντα τα άρθρα μου, αν και ένα πολύ μεγάλο ποσοστό από αυτούς επισκέπτεται τη σελίδα του iGreekNews.
Επίσης, σε λίγο καιρό, μπορείτε να περιμένετε την επόμενη εφαρμογή να γίνει release από την Apple.
Καλή συνέχεια!
Κάθε τέλος και μια καινούργια αρχή
Posted by soulstorm in Uncategorized on January 3, 2010
Μερικές φορές τα πιο απλά πράγματα σου φαίνοντα δύσκολα, και τα πιο δύσκολα απλά. Πρόσφατα δέχτηκα μία δουλειά για μία εφαρμογή η οποία θα είναι στατική και θα έχει τη μορφή εγκυκλοπαίδιας.
Το δύσκολο της υπόθεσης ήταν ο χειρισμός του τεράστιου όγκου δεδομένων ο οποίος μου δόθηκε. Δεν ήταν η κατηγοριοποίηση το δύσκολο. Ούτε και η απεικόνιση. Το δύσκολο ήταν η ενσωμάτωση με τρόπο που θα επέτρεπε την προσθαφαίρεση περιεχομένου χωρίς κάθε φορά να ανακατεύομαι με τον κώδικα. Είναι πραγματικά ασύμφορο και τρελό να βάζω μέσα στον κώδικα 1000 “if-else” για να δείξω τι αντιστοιχεί πού.
Την λύση μου την έδωσε το iGreekNews, το οποίο χρησιμοποιούσε κάποιο memory management model το οποίο ενσωμάτωσα και στην καινούργια εφαρμογή (η οποία ευελπιστώ να κυκλοφορήσει σύντομα). Μεγάλη επιτυχία. Με μερικές βελτιώσεις έκανα επεξεργασία φωτογραφίας on-the-fly χωρίς απώλεια μνήμης. Ακόμα και ένα iPhone 3G θα τα πάει πολύ καλά φορτώνοντας μεγάλο σε περιεκτικότητα περιεχόμενο.
Και συνεχίζω και το φτιάχνω. Ευελπιστώ να έχω κάτι έτοιμο σύντομα, αλλά από τα όσα έχω δεί, και εγώ και ο εργοδότης μου, τα αποτελέσματα είναι πολύ καλά.

Πρέπει να δώσω κάποιες εξηγήσεις όσον αφορά το SFCocoa. To SFCocoa πλέον μπορεί να θεωρηθεί abandoned. Είναι ένα ενθύμιο από το παρελθόν, και πλέον συνειδητοποίησα ότι είναι τόσο μεγάλο, που καλύτερα είναι να το ξαναχτίσω σε άλλη βάση, παρά να το συντηρώ. Και αυτό θα γίνει.
Το SFCocoa άρχισε να φτιάχνεται όταν ήμουν 18 χρονών, πριν από 5 χρόνια δηλαδή. Έκτοτε, η Apple έχει βγάλει 3 αναβαθμίσεις λειτουργικού συστήματος, και μία καινούργια συσκευή, το iPhone. Αναβάθμιζα το SFcocoa για να δουλεύει σε όλα τα συστήματα αυτά, αλλά αυτό δεν μπορεί να γίνεται πλέον. Το SFCocoa πρέπει να ξαναγραφτεί από την αρχή, υποστηρίζοντας το OS X 10.5 και μετά, και το iPhone 3.0 και μεταγενέστερο. Μέχρι τώρα λειτουργούσα με SFCocoa και ό,τι του έλειπε το έβαζα μέσα με το χέρι. Αλλά αυτό πρέπει να σταματήσει να γίνεται.
Το τελευταίο καλό που συνέβη στο SFCocoa είναι η ενσωμάτωση του νέου μου μοντέλου διαχείρισης μνήμης, το οποίο πιο πολύ με παίδεψε παρά με ευχαρίστησε. Και ήταν αυτό που με έκανε να συνειδητοποιήσω ότι το SFCocoa πρέπει να εγκαταλειφθεί. Και αυτό θα γίνει.
Όσον αφορά το documentation, και τους ήδη υπάρχοντες πελάτες, οφείλω να κοινοποιήσω ότι η υποστήριξη για το SFCocoa σταματάει την 1η Μαρτίου 2009. Αυτό δεν θα αποτελέσει έκπληξη σε κανέναν, εφόσον ήδη σε όλους τους υπάρχοντες πελάτες έχω ενσωματώσει κώδικα που θα τους επιτρέψει να ανεξαρτητοποιηθούν από το SFCocoa και να προσωρήσουν.
Τέλος, λοιπόν, ή μία καινούργια αρχή?
Χρόνια Πολλά! (2009-2010 version)
Posted by soulstorm in Uncategorized on January 1, 2010
Έψαξα και είδα το παρόμοιο post που είχα κάνει κατά το τέλος του 2008 κάνοντας μια μικρή ανασκόπηση του χρόνου που πέρασε.
Μπορώ να πώ ότι το 2009 ήταν ένας κουραστικός αλλά πολύ καλός χρόνος για μένα, με το iMe και το iGreekNews να έχουν κάνει επιτυχία, και έχοντας ανοίξει πολλές πόρτες. Παράλληλα, και με τη σχολή μου πολύ καλά τα πηγαίνω. Το Project Soulstorm πλέον έχει 7000 επισκέπτες το μήνα, σε σύγκριση με το ταπεινό 2000 του προηγούμενου χρόνου.
Καιρός για μία μικρή ανασκόπηση, και να πώ τι με έμαθε το 2009.
Το 2009 με έμαθε iPhone Development και πώς να χειρίζομαι την ελλειπή μνήμη. Μεγάλη υπόθεση. Και επίπονη διαδικασία.
Το 2009 με έμαθε να είμαι αναίσθητος με την καλή έννοια. Με νοιάζει λιγότερο η γνώμη των άλλων και περισσότερο η γνώμη του εαυτού μου για μένα. Και συνειδητοποίησα ότι δεν υπάρχει πιο αυστηρός κριτής από τον εαυτό του καθενός.
Το 2009 με έμαθε να είμαι ακόμα λιγότερο περήφανος που είμαι Έλληνας. Αγαπάω την Ελλάδα, αλλά όχι έτσι όπως είναι τώρα. Η οικονομική κρίση μας χτύπησε, αλλά πιο πολύ μας χτύπησε η βλακεία. Εκτός από την οικονομία, πάει και η ρουτίνα και η καθημερινή ζωή σκατά σε αυτόν τον τόπο, λόγω αδιαφορίας και κουτοπονηριάς.
Το 2009 με έμαθε ότι η δουλειά είναι δουλειά. Και πρέπει να γίνεται αξιοπρεπώς. Αυτός που δεν έχει αξιοπρέπεια είναι αυτός που δεν πιστεύει ότι την έχει. Και αυτός που ξέρει ότι δουλεύει και ξέρει πόσο καλή δουλειά έχει κάνει, μπορεί να έχει και αξιοπρέπεια.
Το 2009 με έμαθε να μην το βάζω κάτω. Πολύ χαίρομαι που δεν το έβαλα. Και πολύ χαίρομαι που το 2009 είναι η χρονιά που έκλεισα πολλά στόματα και επιβραβεύτηκα για την δουλειά μου.
Το 2009 με έμαθε ακόμα καλύτερα Call Of Duty. Ναι, συνεχίζω
Δεν μπορώ να σκεφτώ άλλα. Χρόνια πολλά σε όλους, και ειδικά σε αυτούς που την 1η του μηνός έχουν την ονομαστική τους εορτή!