Greek in Tech

Τον τελευταίο καιρό δουλεύω σε ένα προσωπικό projectάκι το οποίο έχει αρχίσει και μ’αρέσει πολύ. Ξεκίνησε σαν project Σαββατοκύριακου, το οποίο τελικά μου πήρε 2-3 επιπλέον Σαββατοκύριακα, ωστόσο πλέον έχει φτάσει σε μια μορφή που βλέπεται και λειτουργεί.

Πρόκειται για το Greek in Tech, ένα minimal single-page application (aka. SPA), το οποίο έχει μία και μόνο λειτουργία, να δείχνει ελληνικές λέξεις που χρησιμοποιούνται στην τεχνολογία. Για τους πιο geeks, το site φιλοξενείται κατευθείαν στο Github pages και είναι φτιαγμένο με Backbone.js και RequireJS.

Όποιος θέλει μπορεί να συνεισφέρει στο project ανά πάσα στιγμή είτε με pull request είτε πολύ απλά ανοίγοντας ένα issue για κάποιο feature που θα ήθελε ή για κάποια τεχνολογική ελληνική λέξη που λείπει (μπορείτε να βρείτε όλες τις διαθέσιμες λέξεις σε ένα JSON αρχείο).

Καλές γιορτές σε όλους και αν σας αρέσει η ιδέα διαδώστε το.

Linux summer switch

Τον τελευταίο καιρό έχω κάνει μια δυναμική επιστροφή στο open source και οφείλω να ομολογήσω πως δεν το έχω μετανοιώσει καθόλου. Για κάποιο λόγο έχω απογοητευτεί εντελώς από την Apple (fanboys/girls μην βαράτε) και λιγότερο από τα Windows (τα Windows 7 με υπηρέτησαν μια χαρά τα τελευταία χρόνια), ωστόσο αποφάσισα πως πρέπει επιτέλους να γίνω λίγο πιο expert σε linux-based συστήματα. Άλλωστε εκεί καταλήγει το 90% των πραγμάτων που φτιάχνω…

Εκτός λοιπόν από το switch μου σε Android, με το Nexus 4 (από iPhone 3GS) τον περασμένο Δεκέμβρη, φέτος το καλοκαίρι αποφάσισα να κάνω και switch και στο desktop μου. Η διανομή που με κέρδισε μετά από μερικά tests, ήταν το Linux Mint (με Xfce για default windows manager ωστόσο έχω και τα KDE/MATE για να ρίχνω μια ματιά και εκεί) το οποίο χρησιμοποιεί τα repositories του Ubuntu. Αυτό σημαίνει ευκολία και υποστήριξη Ubuntu χωρίς ωστόσο να έχεις Ubuntu (για κάποιο λόγο δεν με κέρδισε). Με άλλα λόγια το μόνο “κλειστό” προϊόν που μου έχει απομείνει πλέον είναι το iPad 2 (χωρίς retina-display), που κάποια στιγμή στο μέλλον μάλλον θα αντικατασταθεί από κάποιο nexus.

Από εφαρμογές δεν μου λείπει τίποτα, ίσα-ίσα στο linuxακι καταφέρνω να βρίσκω περισσότερες λύσεις οι οποίες είναι και δωρεάν! Πιο συγκεκριμένα και για web-development έχω τα εξής:

Για τα υπόλοιπα τώρα, το Linux έχει κάνει πολλά βήματα μπροστά και δεν θα έχετε πρόβλημα στο να δείτε video, να ακούσετε μουσική κτλ. Μέχρι και το Steam έχει κυκλοφορήσει για να παίζετε και κανένα παιχνίδι την προκοπής (αν και προτιμώ το PS3 μου). Αν το κόλλημα σας πάντως είναι το software (για κάποιο λόγο αυτό είναι το πρόβλημα των περισσότερων) στο Linux υπάρχουν άπειρες περισσότερες λύσεις και μάλιστα οι περισσότερες είναι και ποιητικές και free*. Ρίξτε μια ματιά πόσες επιλογές έχετε και θα με θυμηθείτε.

*Free as freedom 😉

Στατιστικά και ματαιοδοξία…

… ή πολύ απλά vanity metrics που λένε και στο εξωτερικό. Αναρωτιούνται πολλοί, ακόμα και επαγγελματίες του χώρου, γιατί ενώ έχουν x unique επισκέπτες, οι πελάτες/συνδρομητές τους δεν αυξάνονται ή ενώ το site έχει y pageviews οι πωλήσεις είναι λίγες, το μαγαζί δεν βγαίνει κτλ. Τέτοια ερωτήματα κάνουν ακόμα πιο συχνά την εμφάνιση τους στα social media. – Μα πως γίνεται να έχω 5000 followers/10.000 likes και ενώ ανεβάζω μια πολύ καλή προσφορά να έχω ελάχιστη ανταπόκριση;

Αν έχετε βρεθεί σε αυτήν την θέση, πρέπει να καταλάβετε πως τα στατιστικά είναι απλά κάποια μετρήσιμα στοιχεία και τίποτα παραπάνω! Το ότι έχετε x uniques visitors την μέρα δεν σημαίνει πως αυτοί είναι πελάτες σας, συνδρομητές σας ή οτιδήποτε άλλο. Σημαίνει πολύ απλά πως αυτοί μπήκαν στο site σας (σίγουρα ένα πολύ καλό πρώτο βήμα). Από εκεί και πέρα θα πρέπει να τους αποδείξετε πως είστε οι καλύτεροι και πως πρέπει  να επιλέξουν εσάς και όχι τους υπόλοιπους, με την καλοστημένη υπηρεσία σας, τις καλές τιμές σας, την ευκολία χειρισμού και χιλιάδων άλλων παραμέτρων! Το ότι σας έχουν κάνει like 10.000 άτομα, είτε επειδή απλά κάνουν like τους πάντες, είτε επειδή τους αναγκάσατε κάποια στιγμή (πχ. για να μπουν σε κάποιον διαγωνισμό, να δουν κάποιο άρθρο σας, κτλ.), δεν σημαίνει πως την επόμενη φορά που θα ανακοινώσετε μια προσφορά ή θα προωθήσετε κάποιο προϊόν θα περιμένουν πως και πως να σας ακούσουν και να σας στηρίξουν (πόσο μάλλον να σας προμοτάρουν)!

Αυτό είναι κάτι που πρέπει να αρχίσουμε να καταλαβαίνουμε σιγά-σιγά και να μην “ψαρώνουμε” από αριθμούς που πολύ απλά μπορεί να μην σημαίνουν και τίποτα. Τι και αν έχω εκατομμύρια visitors και καθόλου convertion ή άπειρους “άσχετους” με το προϊόν/υπηρεσία μου followers. Καλύτερα να είχα πολύ λιγότερους και να ήταν όλοι τους πελάτες/χρήστες της υπηρεσίας/προϊόντος μου. Καλύτερα να έχω πραγματικό user engagement από 100 άτομα παρά “εικονικό” από 10000! Έξω ήδη μιλάνε για actionable-metrics, όπως active users, convertions, engagement, και πολλά άλλα, ενώ εμείς εξακολουθούμε να συζητάμε για στατιστικά ματαιοδοξίας.

Καλό είναι λοιπόν να ξέρουμε που βρισκόμαστε από pageviews και visitors, αλλά να έχουμε στο μυαλό μας και πιο ουσιαστικά στατιστικά (actionable-metrics).

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

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

Watch live streaming video from pdf2011 at livestream.com

Front-end development: Libraries, frameworks και άλλα εργαλεία

H εποχή που με έναν απλό και ταπεινό text editor ξεκινάγαμε να γράφουμε από την αρχή τα πάντα έχει τελειώσει εδώ και πολύ καιρό. Πλέον για την δημιουργία ακόμα και του πιο απλού HTML template είναι σχεδόν υποχρεωτικό να χρησιμοποιήσουμε τουλάχιστον ένα CSS-reset καθώς και αρκετά javascript files, έτσι ώστε να προσθέσουμε συμβατότητα σε παλιότερους browsers, να ελέγξουμε τι υποστηρίζει ο κάθε browser κτλ κτλ. Παρακάτω περιγράφω τι διαδικασία, και φυσικά τα εργαλεία, libraries, scripts και snippets που χρησιμοποιώ σχεδόν σε κάθε νέο project, από το πιο μικρό μέχρι το πιο μεγάλο…

Markup

Ίσως το πιο εύκολο κομμάτι του puzzle. Μέχρι και πέρσι, συνήθως χρησιμοποιούσα ένα δικό μου template (βασισμένο σε Strict XHTML), ωστόσο μιας και προσπαθώ να το γυρίσω σε HTML5, πιάνω τον εαυτό μου να χρησιμοποιεί όλο και πιο συχνά το HTML5 boilerplate του Paul Irish. Το μόνο κακό που του βρίσκω είναι πως δεν μου φαίνεται και τόσο “boilerplate”, και συνήθως μου παίρνει αρκετή ώρα στο να διαγράφω αρχεία και κώδικα έτσι ώστε να το φέρω στα μέτρα μου. Σιγά-σιγά θέλω να φτιάξω και την δική μου λύση, ωστόσο μέχρι τότε το HTML5 boilerplate κάνει μια χαρά την δουλειά του.

CSS

Το πρώτο πράγμα που χρειάζομαι είναι ένα καλό CSS-reset. Αν η markup μου είναι HTML5, χρησιμοποιώ το HTML5 reset του HTML5 Doctor, αν όχι χρησιμοποιώ το παλιό καλό HTML reset του Eric Meyer . Πολλές φορές αν το project “βιάζεται”, χρησιμοποιώ και σαν βάση την τυπογραφία κάποιου έτοιμου CSS framework, συνήθως του Blueprint ή του HTML5 boilerplate. Τέλος, αν το project βιάζεται απελπιστικά ή θέλω κάποιο γρήγορο prototype εδώ και τώρα, χρησιμοποιώ και το grid system του Blueprint (είναι και το μόνο που έχω μάθει!). Τέλος, συνήθως περνάω και τα media queries του Andy Clarke αλλά και ένα print-only style που περιέχει όλη την βασική τυπογραφία για εκτύπωση, για να υπάρχουν (αργά ή γρήγορα θα χρειαστούν)…

Javascript

Και εφόσον κλείσαμε από markup και CSS το μόνο που μας μένει είναι η Javascript μας. Εάν το project έχει HTML5 markup, το html5shiv είναι το πρώτο “must” script που πρέπει να φορτώσουμε. Από εκεί και πέρα συνήθως περνάω το modernizr και το jQuery γιατί όλο και κάπου θα χρειαστούν. Τώρα τελευταία μου αρέσει πολύ σαν ιδέα και το selectivizr μιας και σε βοηθάει πολύ στο να κρατάς την markup σου ακόμα πιο καθαρή, ωστόσο μπορώ να ζήσω και χωρίς αυτό. Τέλος, υπάρχει πιθανότητα (πάντα ανάλογα το project και εάν ο πελάτης είναι περίεργος/φανατικός χρήστης IE) να χρησιμοποιήσω και το Respond.js, έτσι ώστε τα media queries να παίζουν και σε IE 6-7-8…

Αυτά τα λίγα σχετικά με το front-end κομμάτι των site. Όπως καταλαβαίνεται, ακόμα και μικρά projects μπορεί να θέλουν όλα τα παραπάνω και ακόμα περισσότερα για να στηθούν και να λειτουργήσουν όπως πρέπει. Τέλος αν κάποιος χρησιμοποιεί φανατικά κάποιο εργαλείο/library που δεν αναφέρω παραπάνω, ας αφήσει ένα σχόλιο έτσι ώστε το τεστάρουμε και εμείς…

H παρουσίαση μου στο DrupalCamp 2010

Ξεκινάω να μιλάω στο 24′ λεπτό, ωστόσο στα πρώτα 24 λεπτά μπορείτε να μάθετε πολλά πραγματάκια για το Drupal από τον συνάδελφο και Drupal ninja Μιχάλη Μαυρομμάτη!

Επίσης επειδή τα slides δεν φαίνονται καλά στο παραπάνω video, have a look here 😉

CSS3 και CSSS

Δεν ξέρω πόσοι από εσάς το πείραν χαμπάρι, αλλά η “δική” μας Λία ήταν ομιλήτρια στο τελευταίο Front-Trends Conference, το οποίο έγινε στην Βαρσοβία. Περισσότερα για τo θέμα μπορείτε να διαβάσετε στο post της (πάντα στα αγγλικά), ωστόσο εάν ασχολείστε έστω και λίγο με το web – και για να διαβάζετε αυτό το blog μάλλον ασχολείστε – πρέπει οπωσδήποτε να παρακολουθήσετε την παρουσίαση της ή ακόμα καλύτερα να την κατεβάσετε! Προσωπικά πιστεύω πως είναι μια από τις καλύτερες και πιο επεξηγηματικές παρουσιάσεις για το τι είναι το CSS3, τι λύσεις δίνει και τι νέες δυνατότητες παρέχει σε όλους εμάς. Καιρό είχα να παρακολουθήσω μια τόσο καλοφτιαγμένη και δομημένη παρουσίαση, και για να πω την αλήθεια στεναχωρήθηκα που δεν κατάφερα να την δω live, ωστόσο ελπίζω ακόμα σε κάποιο video της παρουσίασης…

Πέρα από αυτό και για τις ανάγκες της ίδιας της παρουσίασης, η Λία δημιούργησε και το δικό της slideshow system το οποίο ακούει στο όνομα CSSS. Όπως εύκολα καταλαβαίνει κάποιος στηρίζεται κυρίως σε CSS3 χαρακτηριστικά (και Javascript φυσικά), ενώ μπορεί να το κατεβάσει και να το  χρησιμοποιήσει ο καθένας για τις παρουσιάσεις του (απορώ ποιοι χρησιμοποιούν ακόμα Powerpoint!). Και πάλι συγχαρητήρια και μακάρι να δούμε ανάλογου επιπέδου events και στην Ελλάδα (αν και το βλέπω πάρα πολύ δύσκολο)…

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 είναι άλλωστε 😉 Τα υπόλοιπα τα λέμε στα σχόλια!

Γράψτε HTML5 χρησιμοποιώντας XHTML…

Πολλοί είναι αυτοί που παραπονιούνται πως ενώ θέλουν να χρησιμοποιήσουν την καινούργια markup (HTML5), και όλα τα ωραία semantics που περιέχει, δυστυχώς είναι ακόμα κάπως νωρίς για μια τέτοια αλλαγή, ιδιαίτερα σε μεγάλα sites. Ευτυχώς για όλους εμάς όμως, κάποιοι άνθρωποι είναι ιδιαίτερα δημιουργικοί και βρήκαν μια πολύ εύκολη και πρακτική λύση. Χρησιμοποιώντας απλά την υπάρχον XHTML μαζί με κάποιες συγκεκριμένες και προκαθορισμένες κλάσεις, μπορούμε να προσφέρουμε τα semantics της HTML5 στην (X)HTML μας. Το μόνο που χρειάζεται να κάνετε, είναι να προσθέσετε στα elements σας κάποιες κλάσεις όπως article, section, header κτλ.

Ακολουθώντας τους παραπάνω κανόνες λοιπόν, αν και συνεχίζουμε να γράφουμε την παλιά, καλή και δοκιμασμένη XHTML, κερδίζουμε δύο πράγματα: Πρώτον μαθαίνουμε να σκεφτόμαστε και να χρησιμοποιούμε την HTML5, η οποία έχει αρκετές διαφορές και ιδιαιτερότητες από την (X)HTML. Τέλος, το δεύτερο και πιο σημαντικό είναι πως το site μας θα είναι κατά 99% έτοιμο (σε markup επίπεδο τουλάχιστον) όταν αποφασίσουμε να το αναβαθμίσουμε σε πραγματική HTML5. Το μόνο που θα χρειαστεί να κάνουμε, είναι να αντικαταστήσουμε τα παλιομοδίτικα divs με τα καινούργια πιο semantic elements.

Προσωπικά θα προσπαθήσω να εισάγω αυτό τον τρόπο συγγραφής markup σε καινούργια projects, μιας και μόνο κερδισμένος μπορώ να βγω από αυτήν την διαδικασία. Όσοι ενδιαφέρεστε και θέλετε να ξεκινήσετε, ρίξτε μια ματιά στα παραπάνω links τα οποία περιέχουν τις πιο τεχνικές λεπτομέρειες.