JoomlaDay 2013 (και η παρουσίαση μου εκεί)

Το προηγούμενο Σάββατο (15 Ιουνίου) είχα την τιμή να βρίσκομαι στο JoomlaDay 2013 ως ομιλητής (και όχι μόνο). Το event ήταν πάρα πολύ καλά οργανωμένο και ανά πάσα στιγμή μπορούσες να βρεις την παρουσίαση που σου ταίριαζε στις 2 αίθουσες του κινηματογράφου Δαναού. Αξίζουν συγχαρητήρια στον Φώτη που κάθε χρόνο αναλαμβάνει και οργανώνει ένα μεγάλο event το οποίο μπορούν να παρακολουθήσει ο καθένας εντελώς δωρεάν! Αυτό που μου άρεσε – δεν ξέρω αν θα συμφωνήσουν όλοι με αυτήν την άποψη – είναι πως σχεδόν οι μισές παρουσιάσεις δεν είχαν να κάνουν με το Joomla αλλά γενικότερα με το web design, web developemt, με mobile developement (Firefox OS και Windows mobile) αλλά και με cloud services. Βρίσκω μόνο θετικά μια τέτοια αντιμετώπιση και ελπίζω να συνεχιστεί και σε άλλα event – μην κολλάμε με τεχνολογίες/CMS/frameworks… Παρακολούθησα όλες (εκτός από μία) τις παρουσιάσεις του Σαββάτου (αυτές που γινόντουσαν στην μεγάλη αίθουσα) και μου άρεσαν ιδιαίτερα οι παρουσιάσεις από τα παιδιά της Mozilla Greece για το Firefox OS, του Γεράσιμου για “Web Typography” αλλά και του Γιάννη τόσο για το “Responsive Web Design Workflow” όσο και για το “Fire the workaholics”! Δυστυχώς την Κυριακή την έχασα λόγο άλλων υποχρεώσεων, ωστόσο κατάφερα να ρίξω μια ματιά ματιά σε ελληνικές προσπάθειες που δεν γνώριζα όπως το Radiojar αλλά και σε άλλες που γνώριζα όπως το Akeeba backup και ελπίζω στο μέλλον να καταφέρω να δω κάποιες παρουσιάσεις τους. Τέλος για αυτούς που έχασαν την παρουσίαση μου, με θέμα “Responsive Web Design & Touch Devices” μπορούν να την δουν/κατεβάσουν από το Speakerdeck. Κάποια στιγμή θα έχουμε και το video της παρουσίασης ωστόσο μέχρι τότε μπορείτε να χαζέψετε τα slides. Άντε και του χρόνου.

Το internet είναι η θρησκεία μου

Αν και συνήθως δεν κάνω post με τέτοια θέματα, τα συγκεκριμένα videos τα βρήκα εξαιρετικά ενδιαφέροντα! Στο πρώτο οι κορυφαίοι web experts εξηγούν γιατί αγαπάνε το web. Απαντήσεις που πραγματικά εμπνέουν και σε προτρέπουν να πας λίγο παραπέρα… Η δεύτερη ονομάζεται “The Internet is My Religion” και δείχνει την τεράστια δύναμη του internet μέσα από την ζωή του Jim Gilliam! Μην τις χάσετε…

Watch live streaming video from pdf2011 at livestream.com

Mobile app vs native app

Ο τίτλος θα μπορούσε να είναι και “θέλω να φτιάξω ένα site που να παίζει σε όλους τους browsers, κινητά και tablets που υπάρχουν στην αγορά”. Δυστυχώς όμως μερικά πράγματα δεν γίνονται όσο μαγικά θέλουμε… Αλλά καλύτερα ας πάρουμε τα πράγματα από την αρχή. Το mobile web έχει μπει για τα καλά στην ζωή μας, μιας και μπορούμε πολύ εύκολα είτε με ένα smartphone είτε με ένα tablet να κάνουμε σχεδόν τα πάντα και μάλιστα ενώ είμαστε μακριά από το γραφείο μας. Η πλειοψηφία των παραπάνω συσκευών λειτουργεί με μόλις 2 λειτουργικά, το iOS της Apple που είναι ενσωματωμένο σε όλες τις συσκευές της (iPhone, iPad, κτλ.) και το Androind OS το οποίο είναι η πρώτη σοβαρή και open source επιλογή για τους υπόλοιπους κατασκευαστές.

Το πρόβλημα συνήθως ξεκινάει με το πως θα φαίνεται το site μας σε μια τέτοια συσκευή. Για κάποιο περίεργο λόγο, οι περισσότεροι χρήστες/πελάτες είναι αρκετά μπερδεμένοι, μιας και δεν ξέρουν τι λύσεις υπάρχουν (και υπάρχουν λύσεις για όλα τα budgets), ποια είναι τα πλεονεκτήματα και μειονεκτήματα τους, και γενικότερα επικρατεί μια σύγχυση για το θέμα, με αποτέλεσμα να δημιουργούνται προβλήματα και παρεξηγήσεις. Ελπίζω το παρακάτω άρθρο να ξεδιαλύνει κάπως το τοπίο έτσι ώστε να επωφεληθούμε όλοι. Σε αυτό το σημείο θα ήθελα να τονίσω πως δεν είμαι κανένας φοβερός mobile guru/expert, και ίσως κάπου κάνω λάθος, γι’ αυτόν τον λόγο όποιος έχει να συμπληρώσει/προσθέσει κάτι, απλά ας μου αφήσει ένα σχόλιο. Έχουμε και λέμε λοιπόν, το site μας μπορεί να εμφανιστεί στο smartphone/tablet μας με δύο τρόπους.

Web app

Επιλέγοντας αυτήν την λύση, εννοούμε πως θα χρησιμοποιούμε τον browser της συσκευής μας (smartphone/tablet) για να δούμε το site μας. Μια αρκετά απλή λύση μπορεί να είναι η χρήση κάποιων CSS queries (Responsive Web Design) έτσι ώστε το site μας να φαίνεται λίγο πιο μαζεμένο και optimised στις συσκευές (οθόνες) που έχουμε αποφασίσει να υποστηρίξουμε. Αυτό δεν σημαίνει πως μπορούμε να φτάσουμε μέχρι εκεί. Ανάλογα με τις ανάγκες του project, και φυσικά το budget του, το mobile site μπορεί να γίνει όσο πολύπλοκο θέλουμε, χρησιμοποιώντας όσο καλύτερα γίνεται τις δυνατότητες της συσκευής και του browser που μας παρέχει. Για παράδειγμα η Google (λόγω και του Android), αποφεύγει τις native εφαρμογές, προσφέρει όμως σχεδόν σε όλες της τις υπηρεσίες ειδικά διαμορφωμένες web εφαρμογές για κινητά και tablets (μπείτε στο Gmail από τον browser του κινητού σας και θα καταλάβετε τι εννοώ).

Τα πλεονεκτήματα μιας web app είναι αρκετά. Το πρώτο και σημαντικότερο είναι πως δεν χρειάζεστε κάποιο συγκεκριμένο SDK (όπως πχ. το iOS SDK) για να δημιουργήσετε την web εφαρμογή σας. Μπορείτε να χρησιμοποιήσετε web τεχνολογίες όπως HTML (HTML5 καλύτερα), CSS και Javascript! Σε αυτό το σημείο αξίζει να σημειώσω πως οι browsers των κινητών/tablet (των σοβαρών κατασκευαστών τουλάχιστον) είναι φοβερά εξελιγμένοι και με πολλά χαρακτηριστικά, πράγμα που σημαίνει πως ήδη υποστηρίζουν πολλά HTML5 και CSS3 καλούδια. Το δεύτερο πλεονέκτημα μιας web app είναι πως, αν είναι καλοσχεδιασμένη φυσικά (βλέπε Progressive enhancement, Responsive Web Design, κτλ. κτλ.), μπορεί να καλύψει την πλειοψηφία των συσκευών και των browser που υπάρχουν! Αυτό σημαίνει πως με μόλις μία εφαρμογή μπορεί να καλυφθούν όλα τα κινητά και tablets ανεξαρτήτου κατασκευαστή και λειτουργικού συστήματος. Τέλος ακόμα ένα πλεονέκτημα μπορεί να θεωρηθεί και η ανεξάρτητη διανομή, μιας και στην ουσία η εφαρμογή ζει στο web και όχι σε κάποιο store (o χρήστης απλά συνδέεται με την εφαρμογή χρησιμοποιώντας τον browser του). Χαρακτηριστικό παράδειγμα φοβερής web εφαρμογής που ήθελε να παρακάμψει το γνωστό για την εκκεντρικότητα του Apple App Store, είναι η εφαρμογή της Financial Times. Ρίξτε οπωσδήποτε μια ματιά από το κινητό σας και δείτε τι φανταστική δουλειά έχουν κάνει…

Τα μειονεκτήματα τώρα (ναι υπάρχουν και αυτά) έχουν να κάνουν κυρίως στο ότι δεν είναι εγγενής (native) εφαρμογή (τι έγραψα τώρα!). Οι web εφαρμογές λοιπόν, είναι συνήθως λίγο πιο αργές σε ανταπόκριση, μιας και στέλνουν σε έναν server κάποιο request και περιμένουμε απάντηση, ενώ συνήθως δεν έχουν και την “γυαλάδα” του native user interface. Επίσης οι web εφαρμογές μπορούν να κάνουν μόνο ότι μπορεί να καταλάβει ο browser της εκάστοτε συσκευής, δεν έχουν με άλλα λόγια πρόσβαση σε πιο advanced χαρακτηριστικά της συσκευής (όπως πχ. camera, GPS, πυξίδα, γυροσκόπιο, κτλ.).

Native app

Εγγενείς (native) εφαρμογές ονομάζουμε αυτές που τις κατεβάζουμε και της εγκαθιστούμε στην συσκευή μας από κάποιο store (πχ. App Store), είτε δωρεάν, είτε πληρώνοντας κάποιο χρηματικό ποσό. Η κάθε εφαρμογή έχει φτιαχτεί ειδικά για την συγκεκριμένη συσκευή, πράγμα που σημαίνει πως εκμεταλλεύεται πολύ καλά τα χαρακτηριστικά της εκάστοτε συσκευής, αλλά όπως καταλαβαίνεται πρέπει να γράψετε τουλάχιστον 2 διαφορετικές εφαρμογές (και να δουλέψετε με 2 διαφορετικά SDK) έτσι ώστε να δημιουργήσετε εφαρμογές για τα 2 βασικά λειτουργικά των κινητών/tablet (iOS και Android).

Τα πλεονεκτήματα και εδώ είναι αρκετά, με πρώτο και σημαντικότερο πως δεν χρειάζεται να είσαι συνδεδεμένος στο internet για να χρησιμοποιήσεις την εφαρμογή (εκτός φυσικά και αν αυτό είναι requirement της ίδιας της εφαρμογής). Το user interface και η απόκρισή είναι πολύ πιο γρήγορα και συνήθως πιο εντυπωσιακά από τα αντίστοιχα μιας web εφαρμογής, ενώ μπορούμε να χρησιμοποιήσουμε και όλα τα advanced χαρακτηριστικά της εκάστοτε συσκευής όπως camera, GPS, πυξίδα, γυροσκόπιο, κτλ. (εδώ την έχει πατήσει λίγο το Android μιας και οι κατασκευαστές εκτός από ότι είναι πολλοί, προσφέρουν και διαφορετικά χαρακτηριστικά στις συσκευές τους, πράγμα που δημιουργεί αρκετά προβλήματα στους developers).

Το βασικότερο μειονέκτημα τώρα, το ανέφερα και πιο πάνω, δεν είναι άλλο από το γεγονός πως η εφαρμογή είναι platform-dependent, που σημαίνει πως πρέπει να γράψετε την ίδια εφαρμογή για πολλές πλατφόρμες (τουλάχιστον 2), χωρίς να κάνω λόγο για τις υποπεριπτώσεις τους (όπως πχ. τις αλλαγές που μπορεί να υπάρχουν σε hardware χαρακτηριστικά πχ. retina display, ή εντελώς διαφορετικά hardware setup σε android συσκευές). Τέλος ένα μικρό μειονέκτημα μπορεί να θεωρηθεί και το γεγονός πως για να γίνει update η εφαρμογή, πρέπει να ξανά-ανέβει στο εκάστοτε store (αφού εγκριθεί κτλ .κτλ.), να την ξανά-κατεβάσει και να την ξανά-κάνει install ο εκάστοτε χρήστης (στην περίπτωση της web app το update είναι πολύ πιο άμεσο).

Αυτά τα λίγα περί web και native εφαρμογών για κινητά και tablets. Ελπίζω να ξεκαθάρισα λιγάκι το τοπίο, μιας και για κάποιο ανεξήγητο λόγο τα πράγματα είναι αρκετά μπερδεμένα! Αν κάποιος θέλει να συμπληρώσει κάτι, ας αφήσει απλά ένα σχόλιο…

HTML5 σκέψεις

Αυτό το καλοκαίρι το έριξα – όπως και πολλοί άλλοι φαντάζομαι – στην HTML5 η οποία έχει ήδη αρχίσει να κάνει δειλά-δειλά την εμφάνιση σε αρκετά sites, σε μικρότερο ή μεγαλύτερο βαθμό. Τα βιβλία που διάβασα ήταν το “HTML5 for web designers” του Jeremy Keith και το “Introducing HTML5” των Bruce Lawson και Remy Sharp. Καταρχάς όποιος σκέφτεται να αγοράσει κάποιο βιβλίο αυτήν την στιγμή, του προτείνω το δεύτερο (Introducing HTML5), μιας και το πρώτο με απογοήτευσε αρκετά για “A book apart” βιβλίο. Γενικότερα δεν θα το περιέγραφα καν ως βιβλίο, αλλά σαν μια γενική, θεωρητική εισαγωγή για το τι είναι η HTML5. Αντίθετα, το Introducing HTML5 με ξάφνιασε ευχάριστα τόσο με τα πολλά θέματα που καλύπτει όσο και με τον τρόπο που τα καλύπτει, μιας και δεν μένει μόνο στην θεωρία, αλλά προχωράει και στην πράξη (ρίξτε οπωσδήποτε και μια ματιά στα παραδείγματα του βιβλίου).

Μετά από αυτήν την μικρή εισαγωγή λοιπόν, και με την ελάχιστη εμπειρία που έχω στο θέμα, θέλω να καταγράψω κάποιες σκέψεις, προβληματισμούς, και γενικότερα να ξεκινήσω μια συζήτηση με τα πιο ανήσυχα μυαλά… Θα προσπαθήσω να είμαι σαφής και γρήγορος, έτσι ώστε να μην μπερδέψω  και να μην κουράσω. Επίσης σε αυτό το post γράφοντας HTML5 εννοώ και τα APIs ή τις τεχνολογίες οι οποίες δεν είναι μέρος του επίσημου HTML5 specification (είναι από μόνα τους ξεχωριστά specifications), ωστόσο θα χρησιμοποιηθούν κυρίως με αυτήν την markup και την ίδια περίοδο. Ας δούμε λοιπόν τι μας επιφυλάσσει το μέλλον, ε, το παρόν ήθελα να πω!

Markup

Ας ξεκινήσουμε με το πιο απλό μέρος της HTML5 – θεωρητικά πάντα – την markup και τα semantics. Τα semantics λοιπόν έχουν αλλάξει αρκετά και πλέον γίνεται ακόμα πιο δύσκολο το να γράψεις σημασιολογική markup. Παρακάτω περιγράφω αυτά που μου φάνηκαν πιο περίεργα, σημαντικά ή παράξενα!

  • Το outline – το οποίο δεν έχει υλοποιηθεί ακόμα από κανέναν browser (!!!) – αλλάζει τελείως τον νόημα των headings (h1-h6). Πλέον ένα h3 heading μπορεί να είναι πιο σημαντικό από ένα h1 heading! Στην ουσία στην HTML5 θα μπορούσαμε να είχαμε ένα και μοναδικό τύπο heading (h για παράδειγμα), ωστόσο υπάρχουν ακόμα έξι (h1-6) για compatibility θέματα. Μένει να δούμε πως θα επηρεάσει και το SEO αυτό το θέμα.
  • Τα sections και τα articles είναι αρκετά δύσκολα στην κατανόηση, μιας και το ένα μπορεί να υπάρχει μέσα στο άλλο αρκετές φορές! Θέλει αρκετή μελέτη έτσι ώστε να τα χρησιμοποιήσει κάποιος σωστά.
  • Τέλος είμαι πραγματικά περίεργος να δω πως θα φτιάξουν τους WYSIWYG web editors (Dreamweaver για παράδειγμα) έτσι ώστε να γράφουν semantic HTML5. Παλιότερα τα πράγματα ήταν πανεύκολα, απλά πετούσαν παντού ένα div και το θέμα τελείωνε, τώρα τι λύση θα βρουν άραγε;

Φόρμες (forms)

Οι φόρμες επιτέλους δεν θα σπάνε τα νεύρα σε αυτούς που τις φτιάχνουν. Μερικά attributes στην markup μας και θα αφήνουμε τον browser να κάνει όλη την “βρόμικη” δουλειά. Οι περισσότεροι browsers υποστηρίζουν λίγα πράγματα προς το παρόν (ο πιο ολοκληρωμένος browser στο θέμα είναι ο Opera) ωστόσο σιγά-σιγά θα τον φτάσουν και οι υπόλοιποι.

  • Πολύ έξυπνο compatibility μιας και όλες οι φόρμες εμφανίζονται σαν απλά text inputs σε παλιότερους browsers που δεν καταλαβαίνουν τα νέα HTML5 attributes.
  • Δυστυχώς θα γράφουμε για πολύ καιρό ακόμα Javascript validation scripts (ιδιαίτερα στην Ελλάδα, με τους αρχαιοελληνικούς browsers που κυκλοφορούν)!
  • Πρέπει οπωσδήποτε να υπάρξει μια επίσημη γραμμή για το πως θα εμφανίζονται/φαίνονται τα διάφορα widgets (πχ. επιλογή ημερομηνίας) και τα λάθη (validation errors), καθώς και για το πως θα διαγράφουμε αυτά τα default browser styles, γιατί προβλέπω να γίνεται χαμός σε αυτό το θέμα.
  • Ακόμα λιγότερη Javascript χάρις τα autofocus, placeholder, autocomplete και required attributes.
  • Το pattern attribute απλά τα σπάει! Ελέγχει κατευθείαν στον browser το regular expression που έχει δηλωθεί στο pattern!

Video και Audio

Εδώ πέρα τα πράγματα ξεκίνησαν καλά και απλά, αλλά μια (τραγική;) παράληψη στο specification έκανε τα εύκολα δύσκολα! Όπως όλοι ξέρουμε ο κάθε κατασκευαστής browser αποφάσισε (ή θα αποφασίσει) να υποστηρίξει τον video codec που τον συμφέρει.

  • Χρησιμοποιώντας πολλαπλά source elements μπορούμε να φορτώσουμε πολλά διαφορετικά φορμάτ. Πολύ χρήσιμο για την κατάσταση που θα επικρατήσει.
  • Χρησιμοποιώντας το video element με codec Ogg Theora (.ogg), H.264 (mp4) και webM (βασισμένο στον VP8 codec της Google), είμαστε καλυμμένοι στους μοντέρνους browsers, ωστόσο 3 διαφορετικές κωδικοποιήσεις είναι πολλές για το ίδιο video.
  • Και μην ξεχνάτε πως πρέπει να το κωδικοποιήσουμε και σε Flash video για να παίζει σε παλιότερους browsers!
  • Στο audio τα πράγματα είναι αρκετά πιο απλά, μιας και με ένα mp3 έχουμε τελειώσει.
  • Στα θετικά είναι πως το API του video και audio tag είναι ακριβώς το ίδιο (αν θυμάμαι καλά το audio element έχει κανα-δυο λιγότερες methods και attributes – όπως πχ. width και height).

Canvas

Με το Canvas API μπορείς να κάνεις πραγματικά τρελά πράγματα, ωστόσο το θέμα accessibility είναι τεράστιο! Στην ουσία ότι “ζωγραφίζεται” πάνω στον καμβά, δεν μπορεί να διαβαστεί από screen readers. Είναι δηλαδή (προς το παρόν) ένα καθαρά οπτικό (visual) element/API, χωρίς μάλιστα να έχει προβλεφθεί κάποια εναλλακτική λύση για την προβολή περιεχομένου (όπως στο video tag για παράδειγμα)!

Client-side Data storage

Και εδώ δεν γνώριζα αρκετά πράγματα. Οι 2 σοβαρές τεχνολογίες ονομάζονται Web Storage και Web SQL Database (υπάρχει και μια τρίτη από την Mozilla η οποία μάλλον θα σβήσει – δεν θυμάμαι καν το όνομα της), με αρκετή υποστήριξη από τους browsers.

  • Το Web Storage είναι κάτι σαν cookies on steroids. Επίσης η τεχνολογία υποστηρίζετε από όλους (!!!) τους μοντέρνους browsers.
  • H Web SQL υποστηρίζεται σε Opera, Chrome και Safari ενώ η SQL μηχανή που χρησιμοποιούν είναι η SQLite (δεν γνωρίζω εάν το αναφέρει πουθενά το specification, ωστόσο αυτή την έκδοση SQL έχουν οι παραπάνω browsers).
  • Και πάλι θα συνεχίσουμε να γράφουμε για πολύ καιρό cookies για να υποστηρίξουμε τους παλιότερους browsers (fallback κώδικας).

Offline Application Caching

Μια τεχνολογία που δεν είχα ιδέα πως λειτουργούσε, η οποία αν και εντυπωσιακή για κάποιο λόγο δεν μου αρέσει ο τρόπος λειτουργίας της (ωστόσο θα ενθουσιάσει αυτούς που ασχολούνται με web servers, .htaccess files κτλ.). Πολύ απλά δηλώνουμε σε ένα “μανιφέστο” ποια αρχεία θέλουμε να cachαριστούν (αλήθεια πως θα το μεταφράζατε αυτό;) στον browser, έτσι ώστε το site/web app μας να συνεχίζει να λειτουργεί ακόμα και εάν πάψει να λειτουργεί η σύνδεση μας.

  • Η χρήση είναι σχετικά απλή, απλά δημιουργούμε ένα .manifest αρχείο στο οποίο αναφέρουμε τα αρχεία που θέλουμε να cashaρηστούν, και το δηλώνουμε στην markup μας (<html manifest="demo.manifest">). Για κάποιο λόγο ωστόσο δεν μου αρέσει αυτός ο τρόπος λειτουργίας… Με κάνει να αισθάνομαι κάπως έξω από τα νερά μου, μιας και όπως εξήγησα και πιο πάνω μοιάζει πιο πολύ με την δημιουργία κάποιου .htaccess αρχείου, κάτι που δεν κάνει συχνά κάποιος web designer (ή έστω front-end developer).

Geolocation

Ένα από τα πιο εύκολα και αγαπημένα μου χαρακτηριστικά. Το Geolocation API δεν είναι μέρος της HTML5, ωστόσο το αναφέρω για τους λόγους που εξήγησα στην εισαγωγή. Είναι σχετικά απλό (με 2 methods έχετε καθαρίσει – getCurrentPosition και watchPosition), και πιστεύω πως όλο και περισσότερα sites θα το χρησιμοποιούν για να μας δείχνουν πιο “ντόπια” προϊόντα, διαφημίσεις, νέα, προσφορές, κτλ. κτλ. Με λίγα λόγια, “θα φορεθεί πολύ”…

Web Messaging API, Web Workers API και Web Sockets API

Τα παραπάνω APIs τα αναφέρω και τα 3 μαζί μιας και είναι φτιαγμένα για καθαρά Web εφαρμογές (δεν είναι ούτε και αυτά μέρος της HTML5). Με τα παραπάνω APIs μας δίνονται οι παρακάτω δυνατότητες:

  • Το Web Messanging υποστηρίζεται από πολλούς browsers (και IE) και μας επιτρέπει να κάνουμε διάφορα ωραία, όπως να στέλνουμε μηνύματα σε άλλα domains κτλ. Φανταστείτε το κάτι σαν AJAX on steroids και αυτό.
  • Χρησιμοποιώντας Web Workers μπορούμε να κάνουμε την web εφαρμογή μας να τρέχει την Javascript σε διαφορετικά threads! Από μια γρήγορη ματιά που έριξα, η λογική είναι αρκετά πολύπλοκη και πιστεύω πως αυτήν την στιγμή είναι πολύ κακό για το τίποτα, ωστόσο οφείλω να ομολογήσω πως σε μια πολύπλοκη web εφαρμογή (φανταστείτε κάτι σε Photoshop στο web) μπορεί να κάνει τρελή διαφορά (πχ. να χρησιμοποιεί ένα φίλτρο, και ενώ ο web worker κάνει τους υπολογισμούς του, ο χρήστης να συνεχίζει να χρησιμοποιεί την εφαρμογή, χωρίς αυτή να φαίνεται σαν να έχει κολλήσει).
  • Τα Web Sockets ανοίγουν μια αμφίδρομη επικοινωνία μεταξύ του server και του client χρησιμοποιώντας τον browser σαν “μεσάζοντα”. Αρκετά βολικό και χρήσιμο…
Αυτές είναι οι πρώτες εντυπώσεις/σκέψεις μου για την HTML και όλα τα άλλα ωραία καλούδια που έρχονται μαζί της. Έχετε στο μυαλό σας πως  υπολογίζουν πως η HTML5 θα είναι 100% ολοκληρωμένη (σε browser επίπεδο τουλάχιστον) γύρω στο 2020 (!!!) ωστόσο δεν χάνουμε τίποτα με το να χρησιμοποιούμε και να μαθαίνουμε τα νέα χαρακτηριστικά της. Πολλά από αυτά άλλωστε υποστηρίζονται και από τους σημερινούς μοντέρνους browsers ενώ λογικά με την έλευση του IE9 θα δούμε ακόμα πιο πολλές HTML5-based εφαρμογές. Μην φοβάστε λοιπόν να την χρησιμοποιήσετε εδώ και τώρα, απλή HTML είναι άλλωστε 😉 Τα υπόλοιπα τα λέμε στα σχόλια!

InterACT with Web Standards : A Holistic Approach To Web Design

Μόλις τέλειωσα την ανάγνωση του παραπάνω βιβλίου, και για να μην τα πολυλογώ πιστεύω πως είναι ένα βιβλίο που πρέπει να διαβαστεί από όλους όσους θέλουν να ασχοληθούν σοβαρά (ή ασχολούνται ήδη)  με την κατασκευή sites, οποιοδήποτε ρόλο και αν έχουν στην παραγωγή (από design και development μέχρι copywriting και management). Προσωπικά θα το συστήνω και σε πελάτες, μιας και πιστεύω πως με 34 δολάρια παραπάνω (τόσο κάνει το βιβλίο), μπορείς να γλιτώσεις πάρα πολύ χρόνο που θα κατανάλωνες σε άσκοπες συζητήσεις και requests.

Το βιβλίο είναι από τα πιο καθαρό-γραμμένα βιβλία που έχω διαβάσει και απευθύνεται κυρίως σε αρχάριους του χώρου, ωστόσο όλο και κάτι θα μάθουν/βρουν ενδιαφέρον και οι πιο έμπειροι. Η δομή του βιβλίου ξεκινάει από τις απολύτως απαραίτητες γνώσεις όπως τι είναι το web και το internet, πως λειτουργούν  κτλ., για να περάσει στα πιο ενδιαφέροντα όπως Ιnformation Architecture, Content Analysis/Strategy και να καταλήξει στις σωστές τεχνικές markup/styling (HTML/CSS) και accessibility. Επίσης αγοράζοντας το παραπάνω βιβλίο ενισχύεται το “Open Web Education Alliance”, κάτι που χρειάζεται μιας και για κάποιο πολύ περίεργο λόγο η εκπαίδευση στις web τεχνολογίες πάντα βρίσκεται αρκετά βήματα πίσω από την πραγματικότητα/αγορά (διεθνές φαινόμενο – φανταστείτε πόσο πίσω είμαστε στην Ελλάδα).

Καλή ανάγνωση 😉

Τα hilights της 10ετίας…

Ακόμα δεν μπορώ να πιστέψω πως πέρασαν 10 ολόκληρα χρόνια από τότε που αλλάξαμε χιλιετία! Παρακάτω γράφω τα highlights (κατά την γνώμη μου πάντα) του χώρου μας… Όποιος θέλει να προσθέσει κάτι ας αφήσει σχόλιο, αφού όλο και κάτι θα ξέχασα. Έχουμε και λέμε λοιπόν:

  • To web μεγαλώνει και ωριμάζει ακόμα περισσότερο, για να γίνει social ή αλλιώς Web 2.0. Οι περισσότεροι χρήστες του συχνάζουν στις γειτονιές του Facebook, MySpace, Youtube κτλ κτλ…
  • Τα blogs γίνονται mainstream, ενώ το microbloging κάνει και αυτό την επανάσταση του (προς το τέλος της 10ετίας).
  • Η Apple κερδίζει μεγάλο μερίδιο αγοράς χάρις τον χαρισματικό CEO της, Steve Jobs. Προσωπικά πιστεύω πως η Apple δεν θα τα κατάφερνε χωρίς αυτόν. Αξιοσημείωτο είναι το γεγονός πως το διοικητικό συμβούλιο της Apple τον είχε απολύσει/διώξει κάπου στα 90s (τον ίδιο τον ιδρυτή της)!
  • Η Microsoft προσπαθεί να αποκαταστήσει το κακό όνομα των Vista, με τα Windows 7, τα οποία επιτέλους παίζουν! Τέλος κάνει την ύστατη προσπάθεια να κρατηθεί και στον χώρο των search engine με το Bing.
  • Η Google αρχίζει να κατακτά τα πάντα στον κυβερνοχώρο. Ξεκίνησε σαν μια απλή search engine στον γκαράζ 2 φοιτητών!
  • Τα netbooks και smartphones κάνουν το internet και τις εφαρμογές του πιο “φορητές”…
  • Τα δωμάτια με τους server όλο και λιγοστεύουν. To cloud computing έχει ξεκινήσει…
  • Το Skype κάνει μια πρώτη επανάσταση στον χώρο των τηλεπικοινωνιών με VoIP. Κάποιες από αυτές μάλιστα προσπαθούν να το κλείσουν!
  • Τα πρώτα e-book reader κάνουν την εμφάνιση τους. Ανάμεσα τους και το Kindle, το e-book reader της Amazon, του μεγαλύτερου online βιβλιοπωλείου στον κόσμο.

Τα καλύτερα links – Οκτώβριος 09

Web Design

  • Dive into HTML5 : Μια φανταστική πηγή εκμάθησης HTML5.
  • CSS παρουσιάσεις που πρέπει να δείτε : Απλά εξαιρετικές… Και τι δεν θα έδινα για να έβλεπα τις παρουσιάσεις  “Efficient, Maintainable CSS” και “CSS Inheritance“, όταν πρωτο-ξεκίναγα και εγώ (δυστυχώς έπρεπε να τα μάθω με τον δύσκολο τρόπο)…

Web Development

  • Underscore.js : Ακόμα μια ελαφριά utility javascript library.
  • Mu Connect : Μια library αποκλειστικά φτιαγμένη για την εύκολη ενσωμάτωση του Facebook Connect στο site σας.
  • FireQuery : Σε beta ακόμη, αλλά το περιμένω πως και πως…
  • CSScaffold : Ένα πρωτοποριακό CSS framework γραμμένο σε PHP. Μου άρεσε πιο πολύ από αντίστοιχες λύσεις σε περίεργες γλώσσες που παίζουν δύσκολα και παραείναι πολύπλοκα. Το CSScaffold γίνεται install πανεύκολα και μπορείτε να το χρησιμοποιήσετε αμέσως!

Search Engine Optimization (SEO)

Tools

  • 5 δυνατοί WYSIWYG web editors : Όλο και κάποιος θα σας βολέψει…
  • WMD : Και ακόμα ένας, πολύ πιο ελαφρύς (μόλις μία σειρά κώδικα)!
  • The Printliminator : Ένα bookmarklet που βοηθάει (θεωρητικά) στο να τυπώνεται μόνο τις πληροφορίες  που θέλετε, από σελίδες με πολλές διαφημίσεις και άλλες άσχετες πληροφορίες…
  • Conjoon : Για αυτούς που αναζητούν λίγη οργάνωση…

WordPress

  • Pods CMS : Ένα CMS framework για το WordPress. Αν και είμαι κατά της χρήσης τέτοιων plug in (τα χρησιμοποιώ μόνο σαν έσχατη λύση), οφείλω να ομολογήσω πως το συγκεκριμένο είναι πολύ ενδιαφέρον. Προσωπικά περιμένω το WordPress να αποκτήσει επιτέλους μια δικιά του τέτοια – εγγενής πάντα, όχι μέσω plug in – αρχιτεκτονική.
  • Maintenance Mode : Γιατί τώρα τελευταία δεν κάνουμε άλλη δουλειά…

Δωρεάν/Freebies

  • PicApp : Ανακαλύψτε και χρησιμοποιήστε στο blog σας φωτογραφίες υψηλής ποιότητας. Φοβερό!
  • VirtualBox :  Ένα δωρεάν και open source vistual machine, που υποστηρίζει όλα τα γνωστά λειτουργικά συστήματα.

Διάφορα links

Kαλοπιστικά γραφικά vs γραφικά περιεχομένου

Σε αυτό το μικρό postακι θα προσπαθήσω να εξηγήσω την διαφορά των συγκεκριμένων γραφικών/images καθώς και πως πρέπει να εμφανίζονται στην markup μας (με τι attributes κτλ.). Για κάποιον λόγο αυτή η απλή διαφορά δεν γίνεται αμέσως αντιληπτή, ιδιαίτερα στους  νέους του χώρου, οπότε ας ξεκαθαρίσουμε λίγο τα πράγματα.

Η λύση είναι απλούστατη και θέμα θέμα απλής λογικής. Όποιο γραφικό είναι μέρος του περιεχομένου, όπως πχ. μια φωτογραφία, ένα διάγραμμα, κτλ., πρέπει να παρουσιάζεται με το HTML img tag και να περιέχει – εκτός φυσικά από το src attribute – και ένα περιγραφικό alt attribute. Αντιθέτως τα γραφικά που δεν είναι μέρος του περιεχομένου, δεν θα πρέπει να υπάρχουν καθόλου στην markup μας (ως img tags)! Τα συγκεκριμένα γραφικά θα πρέπει να παρουσιάζονται είτε μέσω CSS, είτε μέσω DOM injection χρησιμοποιώντας κάποια Javascript library. Εάν φυσικά τα πράγματα δεν γίνονται αλλιώς (δεν μπορούμε να κάνουμε και μαγικά σε μερικές περιπτώσεις), τότε μπορούμε να προσθέσουμε τα συγκεκριμένα γραφικά με img tags τα οποία θα έχουν κενή την alt attribute τους (<img src="logo.jpg" alt="" />). Εύκολο έτσι;

Google Wave, μια πρώτη ματιά

Μετά από περίπου 10 μέρες (περίπου), κατάφερα επιτέλους να τελειώσω την παρουσίαση του Google Wave και να βγάλω και εγώ τα δικά μου συμπεράσματα. Για να μην σας κρατάω σε αγωνία λοιπόν, πιστεύω πως το Wave είναι η καλύτερη web platform που έχω δει μέχρι στιγμής – μιας και με τίποτα δεν μπορείς να το χαρακτηρίσεις ως ένα ακόμη καταπληκτικό web application – και πιστεύω πως θα αλλάξει τον τρόπο που επικοινωνούμε, όχι μόνο με άλλους συναδέλφους, φίλους και γενικότερα e-συμπολίτες μας, αλλά και με όλες τις web εφαρμογές που χρησιμοποιούμε αυτήν την στιγμή.

Ακούγεται λίγο υπερβολικό, και μάλιστα είμουν ο πρώτος που είχα σοβαρές επιφυλάξεις για το συγκεκριμένο project, μιας και ατάκες του στυλ “ξανα-ανακαλύπτουμε το e-mail, το IM (instant messaging), το web collaboration” κτλ. είναι κάπως δύσπιστες από μόνες τους. Οι τύποι όχι μόνο πραγματοποιησαν αυτά που υποσχέθηκαν, δηλαδή ξανα-εφεύραν το e-mail, το ΙΜ, το web-based collaboration και πολλά άλλα, αλλά πήγαν και πολλά βήματα παραπέρα, έτσι ώστε να μπορείς μέσα από ένα και μοναδικό web interface, να χρησιμοποιείς όλες τις web εφαρμογές σου (blogging, micro-blogging, social-media, photo-sharing κτλ.) καθώς και να κάνεις extend το Wave έτσι ώστε να σου παρέχει ακριβώς αυτό που θέλεις! Θα μπορούσα να το χαρακτηρίσω και ως Web OS, με την ένοια πως μπορείς να τρέξεις όλες τις άλλες web εφαρμογές μέσα από αυτό, να γράψεις custom web εφαρμογές γι αυτό, κτλ. Όπως καταλάβατε είμαι πολύ ενθουσιασμένος με την ιδέα και περιμένω πως και πως να ξεκινήσει και επίσημα.

Η τελευταία φορά που είχα ενθουσιαστεί τόσο με web τεχνολογία ήταν το RSS, ωστόσο είμαι βέβαιος πως το Google Wave θα θέσει νέα standards και θα αλλάξει ακόμα πιο δραστικά τον τρόπο με τον οποίο χρησιμοποιούμε το web.

XHTML tags που ξεχνάμε να χρησιμοποιήουμε (ενώ δεν θα έπρεπε)…

Αποφάσισα να γράψω αυτό το post για να διαφημίσω λίγο τα πιο “παρεξηγημένα”, κατά την γνώμη μου πάντα, XHTML tags. Δεν είναι λίγες οι φορές που θέλουμε να περιγράψουμε σημασιολογικά (semantically) κάποιο κομμάτι του περιεχομένου μας, αλλά δυστυχώς δεν γνωρίζουμε τον σωστό τρόπο. Πολλοί μάλιστα δεν έχουν τον χρόνο ή την διάθεση να ψάξουν, με αποτέλεσμα να μην χρησιμοποιούνται τα σωστότερα tags για την κάθε δουλειά. Με αυτό το post λοιπόν, θα προσπαθήσω να παρουσιάσω κάποια πολύ βολικά XHTML elements τα οποία δεν χρησιμοποιούνται όσο θα έπρεπε στο ελληνικό web. Έχουμε και λέμε λοιπόν :

Definition Lists

Οι συγκεκριμένες λίστες αποτελούνται από ένα ζευγάρι, όρου και περιγραφής. Με αυτόν το απλό τρόπο, μπορούμε να περιγράψουμε ένα κομμάτι περιεχομένου που περιέχει όρους και τις περιγραφές τους. Παρακάτω ακολουθεί και ένα πολύ απλό παράδειγμα.

<dl>
<dt>Tsevdos.com</dt>
<dd>Blog για το web design και development</dd>
</dl>

Fieldset και legend

Το Fieldset καθώς και το legend, είναι δύο από τα πιο σημαντικά tags που σπανίως συναντάω σε ελληνικά sites. Μία φόρμα μπορεί να χωριστεί, ανάλογα με τα δεδομένα που συλλέγει, σε διάφορα fieldsets, ενώ το κάθε fieldset μπορεί να έχει και ένα περιγραφικό legend. Έτσι πχ. μπορούμε να έχουμε ένα fieldset για προσωπικά δεδομένα, ένα για θέματα επικοινωνίας, κοκ.

<form>
<fieldset>
<legend>Personal Info:</legend>
<label for="name">Name: <input type="text" id="name" /></label>
<label for="surname">Surname: <input type="text" id="surname" /></label>
</fieldset>
<fieldset>
<legend>Address:</legend>
<label for="street">Sreet : <input type="text" id="street" /></label>
<label for="city">City: <input type="text" id="city" /></label>
<label for="zip">Zip Code: <input type="text" size="30" /></label>
</fieldset>
</form>

Caption και Summary

Το caption element μας δίνει την δυνατότητα να περιγράψουμε τι περιέχει ο πίνακας (table) μας. Το summary attribute πάει ακόμα ένα βήμα παραπέρα, και μας επιτρέπει να περιγράψουμε ακόμα πιο αναλυτικά τον πίνακα, για τους χρήστες που χρησιμοποιούν screen readers και text-only browsers.

<table summary="Ο παρακάτω πίνακας δίνει το character entity κωδικό
για όλα τα σύμβολα της HTML4.">
<caption>Σύμβολα της HTML4</caption>
...</table>

Βlockquote, abbr, cite και acronym

Ακόμα 4 πολύ χρήσιμα tags… Εάν το κείμενο σας περιέχει κάποιο quote, abbreviation, αναφορά (cite) σε κάποιο άλλο site/έγγραφο, ή είναι ακρώνυμο, απλά χρησιμοποιήστε τα ανάλογα tags! Με αυτόν τον τρόπο και κάνετε πιο semantic το κείμενο σας, ενώ ταυτόχρονα έχετε και πολύ περισσότερα elements για να δημιουργήσετε ενδιαφέροντα εφε στα styles και την Javascript σας (και να κάνετε το site σας ομορφότερο φυσικά). Το ξέρω πως κάθε αρχή είναι και δύσκολη, αλλά με λίγη υπομονή θα σας γίνει συνήθεια…

<blockquote cite="http://www.tsevdos.com/2009/04/28/mobifyme/">
<p>Η υπηρεσία ονομάζεται Mobify και σου επιτρέπει να δημιουργήσεις
σχετικά εύκολα μια custom mobile έκδοση του site σου.</p>
</blockquote>
<abbr title="Limited">Ltd.</abbr>
<cite cite="http://www.tsevdos.com/2009/05/22/maka-site/">Το πιο
τραγικό site που έχει φτιαχτεί!</cite>
<acronym title="Web Content Accessibility Guidelines">WCAG</acronym>