Στην TechEd 2009 Europe στο Βερολίνο
Γειά χαρά σε όλους! Γράφω από το υπέροχο (και παγωμένο) Βερολίνο. Εκτός του ότι έχουμε να εξερευνήσουμε το Βερολίνο (που κατά σύμπτωση τώρα γιορτάζουν το γκρέμισμα του berlin wall) έχουμε την μοναδική ευκαιρία να παρακολουθήσουμε την TechEd, μια από τα πιο μεγάλα conference της Microsoft, όπου μαζεύονται χιλιάδες developers & IT people, μαζί με τις σημαντικότερες εταιρίες του χώρου, όπως HP, Dell κ.α. Προφανώς υπάρχουν άπειρα sessions που μπορούμε να παρακολουθήσουμε, ενώ ερχόμαστε σε επαφή με υπάλληλους και developers της Microsoft, όπως επίσης και με άλλους Microsoft Student Partners από όλη την Ευρώπη =D
Τα από πάνω συνοπτικά για την εμπειρία, δεν θέλω να σας κουράσω πολύ με λόγια, αλλά ούτως ή άλλως δεν έχουμε πολύ χρόνο εδώ για γράψιμο!
Ημέρες 8/11/2009-9/11/2009
DEV305 ADO.NET Entity Framework in Microsoft Visual Studio 2010 and Microsoft .NET Framework 4
Αν και δεν κατέχω γρι από entity, ήταν ωραίο event γιατί είδαμε στην πράξη διάφορα όπως T4 templates για entities, LINQPad for CLR 4.0, lazy loading, POCO object to EDML, CodeOnly για Entity. Αυτό που έπρεπε να συγκρατήσουμε είναι ότι τα σφάλματα του παρελθόντος έχουν διορθωθεί και είναι η καλύτερη στιγμή για να ξεκινήσεις Entity framework.
MOB303 Adding Life and Intelligence to Windows Mobile 6.5 Applications
Ωραίο περιεχόμενο για νέα feautures σε Windows Mobile devices. Δυστυχώς καθόλου multitouch, αλλά είδαμε ένα ενιαίο mini framework του CodePlex (sensorapi.codeplex.com) για διαχείριση accelerometer, light sensor, stylus sensor, navigiation wheel. Επίσης είδαμε 6.5 gestures, και ενιαίο vibration (opennetcf extension).
SIA07-IS Security Assessment Planning and Implementation
Interactive session με ενδιαφέρον ομιλητή! Το μόνο ΙΤ που προσπάθησα να παρακολουθήσω, αλλά ήταν ok. Καλύτερο phrase για σκέψη: “If I hack your computer today, would you know it tomorrow?”. Το λειτουργικό είναι αρκετά ασφαλές πλεόν, τα third-party apps όμως όχι. Αρκετές λεπτομέρειες για security assessment, πως γίνεται, ποια είναι τα assets, η αξία τους. Auditing. The Human Asset: vulnerable, disgruntled people. Total Quality Management.
Ημέρα 10/11/2009
Την Τρίτη παρακολούθησα ένα κυρίως interactive session το οποίο είχε σχέση με Windows Mobile 6.5 Graphics. Επικεντρώθηκε κυρίως στο CodePlex project που ονομάζεται UI Framework for .NET Compact Framework 3.5. Με ένα απλό τρικ μπορεί να γίνει και για .ΝΕΤ 2.0. Έχει alpha blending με διάφορους τρόπους. Ενώ υποστηρίζει την δημιουργία μιας φόρμας που υποστηρίζει controls με alpha γραφικά που βρίσκονται μέσα στο συγκεκριμένο library. Όμως παραμένει κανονικό form που μπορεί να έχει windows forms controls. Ουσιαστικά απλά διαχειρίζεται το OnPaint event της φόρμας.
Το απόγευμα είχαμε interactive session με όλους τους υπόλοιπους Microsoft Student Partners της Ευρώπης που ήταν καλεσμένοι στην TechEd. Ένα από τα πιο ωραία events που παρακολούθησα! Είχαμε την ευκαρία να δούμε MSPs και ADEs από άλλες χώρες, όπως επίσης είδαμε μια καταπληκτική και χιουμοριστική παρουσίαση του Rob Miles για XNA για Zune HD. Τέλος είχαμε την απίστευτη ευκαρία για Q&A με τους major leaders των: Windows Embedded (Olivier Bloch), David Chappel, F# (Donald Syme), Web Client (Giorgio Sardo), predictive programming (Rafal Lukawiecki). Επιπλέον συζητήσαμε περί του IE8 και των πλεονεκτημάτων και μειονεκτημάτων του, όπως και για πιθανές ευκαιρίες σταδιοδρομίας στην Microsoft.
Ημέρες 11/11/2009-13/11/2009
Τετάρτη 11/11, DEV306 F# for Parallel and Asynchronous Programming, Donald Syme
Κατ’ αρχήν η F# είναι μια funcional γλώσσα προγραμματισμού η οποία έχει παρόμοιο πυρήνα με την OCaml, αλλά έχει παρόμοιο αντικειμενοστρεφής μοντέλο όπως η C# και το .ΝΕΤ. Ο Donald είναι από τους πατέρες της F# και είναι στο research τμήμα της Microsoft. Απέδειξε τις ικανότητες του, παρουσιάζοντας μάλλον το πιο ενδιαφέρον session της TechEd! Μας έκανε ένα γρήγορο introduction στην F# μαζί με το Visual Studio και ύστερα επικεντρώθηκε στο γεγονός ότι η ανάπτυξη παράλληλου κώδικα με την F# είναι παιχνιδάκι! Λύνει 4 σημαντικά προβλήματα:
- Shared State: threads, locks, semaphores. Τα λύνει εύκολα χρησιμοποιώντας πολλούς immutable τύπους οι οποίοι δεν είναι επικίνδυνοι για race conditions όταν μεταφέρονται από ένα thread σε άλλο ή όταν προσπελάζονται ταυτόχρονα, αφού δεν τροποποιούνται.
- Inversion of Control: delegates & callbacks, async workflow. Λύνεται με την F# Async.
- I/O Parallelism: not lots of threads, web requests and streams. Λύνεται επίσης με την F# Async.
- Messaging and Scaling. Χρησιμοποιώντας τα F# Agents + Web/Azure/MSQ κ.α.
Προχώρησε σε γρήγορα αλλά πολύ δυνατά παραδείγματα για web crawling και DirectX Managed Libraries. Επίσης παρουσίασε παραδείγματα παραλληλισμού για να δείξει ότι η F# μαζί με τα Concurrent Collections, PLINQ qeuries και Parallel Loops του .ΝΕΤ 4.0 δίνουν την πιο καλή λύση για εύκολο αλλά ισχυρό παραλληλισμό.
Τετάρτη 11/11, DEV204 Unit Testing Best Practices, Roy Osherove
Επίσης ένα από τα πιο ενδιαφέροντα sessions! Επειδή δεν είχα ασχοληθεί με unit testing, μου φάνηκε πολύ χρήσιμο. Παράλληλα ο Roy έδινε πολλά tips για καλό unit testing, ώστε τελικά τα tests να βοηθούν τον προγραμματιστή παρά να τον μπερδεύουν και να καταναλώνουν άδικα χρόνο. Σημείωση: Είναι επίσης ο συγγραφέας ενός πολύ καλού βιβλίου, του Art of Unit Testing.
Άρχισε επαναλαμβάνοντας και επαναλαμβάνοντας συνεχώς τη διάκριση μεταξύ unit testing και integration tests. Τα unit tests είναι στατικά, χωρίς I/O και χωρίς threads, δηλαδή είναι τα πιο απλά και τα πιο σταθερά που πρέπει να σκεφτόμαστε για να επαληθεύσουμε κάτι. Τα integration tests είναι πιο σύνθετα και επικοινωνού με resources, ή χρησιμοποιούν για παράδειγμα Random αριθμούς, και πρέπει να οργανώνονται σε διαφορετικό project από τα unit tests. Έλεγε ότι για αυτό το λόο πολλές φορές τα tests έχουν απρόβλεπτες εξελίξεις, όπως να κάνουν fail σε τυχαίες στιγμές κ.α. γιατί ακριβώς είναι integrations tests. Τα unit tests πρέπει να είναι ενιαία και να έχουν μόνιμη συμπεριφορά και να μην εξαρτώνται από άλλα tests.
Άλλα tis που μάθαμε: Κάνουμε testing μόνο public μεθόδους. Στα unit tests να μην υπάρχει λογική, να μεταφέρουμε τη λογική παραέξω. Test isolation και να μην υπάρχει dependedncy μεταξύ δυο tests. Να αποφεύγουμε τα πολλαπλά assertions σε ένα test case, και να το σπάμε σε περισσότερα, ώστε να μην υποσκιάζονται το ένα από το άλλο. Να μην υπάρχουν “μαγικές τιμές”, δηλαδή τυχαίοι αριθμοί που ένας οποιοσδήποτε αναγνώστης να μην μπορεί να καταλάβει τι είναι.
Κατέληξε στο ότι ένα unit test πρέπει να είναι readable, maintenable, trustworthy. Πρέπει οι μέθοδοι να ονομάζονται με καλό τρόπο όπως για παράδειγμα MethodNameTested_StateUnderTest_ExprectedBehaviour. Ενώ ο κώδικας συνήθως περιέχει τα εξής τρία μέρη: //Arrange … //Action … //Assert.
Τετάρτη 11/11, DEV309 The Windows API Code Pack: How Managed Code Developers Can Easily Access Exciting New Windows Vista and Windows 7 Features, Kate Gregory
Αν και όχι πολύ ενδιαφέρον θέμα, ήταν χρήσιμο για να μάθουμε κάποια καινούργια χαρακτηριστικά των Windows 7. Άρχισε κατ’ αρχήν μιλώντας για τα jumplists, δηλαδή τα μενού που εμφανίζονται όταν κάνετε δεξί-κλικ π.χ. στον Internet Explorer στο taskbar. Είναι κάτι σαν ένα mini-start για την εφαρμογή. Επικεντρώθηκε στην διαχείριση του jumplist μέσω του Windows API Code Pack. Παρουσίασε ένα sample για την διαχείριση των 4 μερών του jumplist: pinned, recent & frequent, custom categories, και το τέταρτο είναι ίδιο για όλους.
Μετά πέρασε στα taskbar icons, στο hot-tracking, και στα overlays πάνω στα icons ώστε να ενημερώνει ένα πρόγραμμα τον χρήστη. Επίσης πως μπορούμε να εμφανίζουμε ένα progressbar στο taskbar. Προχώρησε εξηγώντας τα thumbnails όπως π.χ. όταν κάνουμε mouse-over πάνω από το εικονίδιο του Windows Media Player, πως να ορίσουμε το δικό μας thumbnail και τα δικά μας κουμπιά.
Περαιτέρω, εξήγησε το restart (δηλαδή αυτό που κάνει restart τον υπολογιστή μετά το Windows Update) & recovery (τα Windows καλούν το πρόγραμμα σας όταν κάνει crash, όπως π.χ. όταν το Visual Studio επανεκκινεί) σύστημα των Windows. Δίνεται σε αυτές τις φάσεις η δυνατότητα στο πρόγραμμα να σώσει τη δουλειά του ώστε μετά την επανεκκίνηση, ο χρήστης να ξαναβρεί το πρόγραμμα ανοιχτό όπως το άφησε.
Τέλος εξήγησε πως να τροποποιήσουμε το πρόγραμμα μας ώστε να διαχειρίζεται σωστά το power management που επιλέγει ο χρήστης.
Πέμπτη 12/11, WIA401 Enhancing the Design-Time Experience for Microsoft Silverlight 3, Oliver Scheer
Αρκετά τεχνικό session το οποίο επικεντρώθηκε στο πως ο developer μπορεί να βοηθήσει τον designer, επεκτείνωντας τον κώδικα του με design-time metadata και κομμάτια. Μίλησε για data templates, design-time visibility (μπορεί το control να κάνει render στο design-time?), τη χρησιμοποίηση Attributes (π.χ. για να ορίσεις Category, Description κ.α. για τις ιδιότητες ενός control), τον καλό χειρισμό του structure των projects. Διάφορα χρήσιμα attributes: PropertyOrderAttribute, NumberRangesAttribute, EditorBrowsableAttribute, TypeConverterAttribute.
Μίλησε επίσης για τα behaviours του Expression Blend και γιατί οι designers μπορούν να τα χρησιμοποιήσουμε πολύ εύκολα και χωρίς καθόλου κώδικα. Για παράδειγμα, φτιάχνοντας ένα behaviour “drag” μπορεί ο designer να ορίσει ότι ένας κύβος στο Silverlight μπορεί να μετακινηθεί από τον χρήστη.
Πέμπτη 12/11, WIA303 Microsoft ASP.NET AJAX: Taking AJAX to the Next Level, Stephen Walther
Ένα καλό session για να μάθουμε τα καινούργια features της AJAX library της Microsoft και το interoperability με asp.net. Κατ’ αρχήν παρουσίασε το εργαλείο Microsoft Ajax Minifier και το hypercrunching mode του, και το πως μπορούμε να το κάνουμε integrate στο MSBuild του Visual Studio. Πέρασε μετά στην Microsoft Ajax Library και επικεντρώθηκε στα εξής χαρακτηριστικά:
- Powerful client data access library, η οποία γίνεται exposed στο jQuery μέσω jQuery plugins. Μίλησε πως με ajax μπορούμε να έχουμε πρόσβαση σε δεδομένα μέσω ASMX, WCF, ADO.NET, JSON end-points. Μίλησε πως να παρουσιάσουμε τα δεδομένα μέσω client templates όπως repeater και με 2-way binding.
- Client script loader: Δυναμική και on-demand φόρτωση ενός script. Μπορούν να φορτωθούν και παράλληλα.
- Seamless jQuery integration. Είπε πως η Microsoft ξέρει τη χρησιμότητα του jQuery για πολλούς developers. Έδειξε πως το ajax library της microsoft, μπορεί να προσπελαστεί πολύ εύκολα μέσω του jQuery, ενώ υποστηρίζει και το chaining του jQuery.
- Intellisense for Javascript.
Συνολική Εντύπωση
Απίστευτη εμπειρία η TechEd! Πρέπει να ευχαριστήσω την Microsoft που έδωσε στους Microsoft Student Partners την ευκαρία να παρακολουθήσουν την TechEd. Είχε πάμπολλα sessions για να παρακολουθήσουμε, το Messe του Βερολίνου ήταν τεράστιο και άνετο για να γίνει το event, η περιποίηση ήταν πολύ οργανωμένη, τα δωράκια και τα freebies έπαιρναν και έδιναν, η έκθεση ήταν τεράστια με πάρα πολλές εταιρίες όπως Intel, Dell, HP, ComponentOne κ.α., η διασκέδαση υπήρχει στο έπακρον αφού κάναμε connecting με διάφορους ανθρώπους και real persons της Microsoft, παίξαμε πολλές ώρες Guitar Hero :P, πήραμε άπειρες φωτογραφίες, ενώ το Βερολίνο ήταν μια πολύ όμορφη πόλη για να επισκεφτείς!
Leave a comment