Tocca vedere Node.js

Dopo aver registrato il podcast¬†con Ugo Lattanzi su Node.js, ho cominciato a cconsiderare l’idea di approfondire di pi√Ļ le mie conoscenze su¬†questo framework, veramente molto diffuso nel mondo dello sviluppo web.

Devo dire, usando le parole di Ugo, che si tratta di “tanta roba”, ma probabilmente ne vale la pena, se vogliamo “allargare” gli orizzonti delle nostre competenze in ambito “cross-platform”, in attesa che .NET Core 1.0 venga completato e supporti completamente questo scenario.

Nei prossimi giorni quindi prover√≤ a capirci qualcosa in pi√Ļ e condivider√≤ quello che avr√≤ capito, nel frattempo ascoltatevi la puntata del podcast che Ugo che √® veramente molto istruttiva.

Tocca vedere Node.js

Le community tecniche Microsoft in Italia

Innanzitutto capiamoci: quando si parla di community tecniche si parla di matti, sia che si tratti di community Microsoft, sia che si tratti di altre tecnologie.

Non è una guerra di religione, ma un esercizio di misericordia avere a che fare con le persone delle community.
Bisogna essere tolleranti per chi, senza motivo alcuno, a discapito di famiglia, riposo e tempo libero dedica le sue forze ad altri per condividere le proprie competenze.

Si tratta di gente malata, va compatita. Purtroppo anche io sono da molto tempo ammalato di questa strana malattia, di cui la cura pare ancora sconosciuta.

Cosa fanno le community?

Una community, detta in maniera semplice, è un insieme di persone che ha lo scopo comune di:

  • diffondere e condividere il proprio know-how tecnologico (al di l√† della “religione”)
  • farlo anche attraverso incontri¬†organizzati (eventi community)
  • formare nuove amicizie e rafforzare quelle gi√† esistenti (cosiddetto networking)
  • organizzare (e questo √® il punto preferito da tutti)¬†delle belle¬†mangiate tutti insieme cos√¨ da¬†festeggiare l’avvenimento¬†per il quale¬†ci si incontra

Come funzionano le community?

Il concetto di community √® abbastanza ampio.¬†Almeno per quelle “Microsoft”, di cui conosco qualcosa, posso dire che le attivit√† di condivisione possono essere articolate in vario modo.

Ci possono essere community la cui principale attività è la condivisione online di articoli, trucchi e metodologie per aiutare chi per lavoro deve inventarsi soluzioni per problematiche e necessità ICT dei propri clienti.

Altre¬†community (devo dire la stragrande maggioranza) organizzano eventi dal vivo, dove vengono tenute sessioni tecniche su svariati argomenti, e questi eventi vengono organizzati¬†durante l’arco di tutto l’anno.

Altre finalizzano le sessioni direttamente in eventi online, con relativi webcast.

Esistono anche community che producono podcast… una a caso, ma ve la dico dopo…

Quante community ci sono in Italia?

Purtroppo non esiste una “directory ufficiale” delle community.

Tuttavia¬†in Italia ci sono tantissime community, prover√≤ a fare un elenco (sicuramente non esaustivo) delle community e delle zone di “copertura” delle attivit√†.
Se ho dimenticato qualcuno basta un commento e aggiungo in lista¬†ūüôā

Conoscere le community

Sui vari siti troverete tutte le informazioni utili per contattare e/o collaborare con le community di vostro interesse.

Esistono anche dei podcast su dotNET{podcast} per presentare le community, cos√¨ come esistono dei webcast¬†community sul canale #TecHeroes, che potete seguire per saperne qualcosa in pi√Ļ.

Come creare una nuova community

Vi piace l’idea di condividere? Siete sicuri che dalle vostre parti non ci siano community in cui potete dare il vostro contributo?

E allora che aspettate? Una nuova community è come un figlio, una benedizione del cielo.

Tuttavia, per evitare fraintendimenti e false partenze, vi consiglio comunque di venire prima a qualche evento, anche se magari vi costa uno spostamento considerevole, per poter prima verificare se avete¬†la predisposizione alla condivisione e, in quella sede, contattare uno qualunque dei membri di una community¬†o una persona di Microsoft, e avrete tutte le indicazioni e l’appoggio necessario per avviare la vostra (e nostra) nuova community.

L’unica cosa certa che dovete avere √® quel pizzico di¬†follia che dicevo all’inizio di questo post. Senza quello, forse √® meglio non partire.

Le community tecniche Microsoft in Italia

Dubbi matematici semiseri

A volte può capitare quando si parla di matematica elementare di non essere sicuro di cose apparentemente banali, come successe a Massimo Troisi in un famoso film:


E sar√† stato anche il legittimo dubbio anche di Dino Esposito, quando ha sentito che 24×7 faceva si 168, ma non sempre a tutte le ore…

Non vi √® chiaro, lo so… facciamo cos√¨, ascoltate la nuova puntata della serie “Variazioni sul tema” e capirete… ūüôā

Dubbi matematici semiseri

L’offerta formativa gratuita di Microsoft

Pi√Ļ vado avanti ad imparare cose nuove, pi√Ļ ho voglia di aumentare le mie conoscenze.

E’ una spirale morbosa da¬†cui non riesco proprio ad uscire e, onestamente, non mi dispiace affatto!
Questa mia “verve” negli¬†ultimi anni √® aumentata ed aumenta sempre di pi√Ļ ogni giorno (a discapito del riposo e del tempo libero ma quello √® un altro discorso).

E visto che anche¬†Microsoft sempre pi√Ļ aumenta e rende disponibile una serie di contenuti e documentazioni per poter far felici dei matti come me, ho deciso di condividere con voi quelle che sono alcune¬†delle¬†possibili “risorse” da utilizzare.

Si tratta di una serie di siti e portali multimediali dove possiamo attingere ad una serie di informazioni, per lo pi√Ļ¬†webcast (quindi video) che ci guidano e ci insegnano tante cose molto interessanti.
La maggior parte dei webcast sono ovviamente in inglese, ma per i pi√Ļ pigri¬†non mancano¬†le risorse in italiano, per lo pi√Ļ registrate da personale Microsoft Italia o MVP con una smisurata passione e preparazione sugli argomenti spiegati.
In elenco ci sono anche libri gratuiti offerti da Microsoft stessa.

Magari questa lista non sarà esaustiva, probabilmente esiste altro che non conosco, per cui in quel caso, commentate pure questo post, a beneficio di chi segue questo blog (e a beneficio mio ovviamente! ).

Attenzione: questo post si riferisce esclusivamente alle risorse direttamente offerte da Microsoft (che io uso e conosco), per risorse offerte da altre aziende e/o produttori software ecc., ci sarà un altro post al riguardo, per cui aspettate quello per vedere se ho dimenticato qualcuno, grazie.


 

Channel 9

https://channel9.msdn.com/

CH9.png

Channel 9 √® lo “storico” canale online di Microsoft, esistente gi√† dal 2004 e che inizialmente era stato fatto (anche) per conoscere Microsoft dall’interno, ricordo ancora i video in giro per i building di Redmond¬†e le interviste con¬†gli sviluppatori del framework .NET dediti a sviluppare singole classi che poi ho usato.
Oggi è un canale mostruoso, ricco di webcast su TUTTO quello che avviene in Microsoft e con una serie di show dedicati e tutorial online.
I video sono maggiormente in inglese, ma da qualche anno esistono anche risorse “localizzate” in diverse lingue ed anche in italiano c’√® tanta roba.
Secondo me un punto di partenza obbligatorio per imparare tante cose.

#TecHeroes

https://channel9.msdn.com/Shows/TecHeroes

Ch9TecHeroes

Ne abbiamo gi√† parlato, #TecHeroes √® il canale “italiano” portato avanti da Roberto Andreoli e dal¬†team DX che si prodiga per parlare degli “eroi della tecnologia”, gente appassionata¬†che fa tanto per poter migliorare il proprio lavoro e quello degli altri ogni giorno.¬†I video in questo show¬†sono ovviamente tutti in italiano.

Microsoft Virtual Academy

https://mva.microsoft.com/

MVA.png

Microsoft Virtual Academy offre percorsi formativi “completi” in forma di webcast, organizzati in corsi e capitoli strutturati, una vera “miniera” per imparare tantissime cose.
Anche in questo caso, ci sono video in inglese e anche in altre lingue tra cui l’italiano, con corsi creati da MVP e personale Microsoft.
Ottimo e ben strutturato.

Free E-Books

https://mva.microsoft.com/ebooks

MVABooks.png

Qui abbiamo tanti libri (in inglese) offerti gratuitamente da Microsoft Press. Si tratta di libri completi che potevano tranquillamente essere venduti a 50-60$ (o ‚ā¨) per il valore del lavoro svolto dai vari autori.
Ottimo da leggere quando avete un argomento specifico da approfondire e non vi spaventa (perchè mai dovrebbe poi?) leggere in inglese.

Microsoft Mechanics

https://www.youtube.com/channel/UCJ9905MRHxwLZ2jeNQGIWxA

MsMechanics.png

Su questo canale ci sono finito per caso e ultimamente (per poi scoprire che gli stessi video sono anche su un canale di Channel 9).
Da quello che vedo ci sono tanti webcast relativi ad Office, Azure, Exchange, insomma risorse potenzialmente per ITPro (o DevOps).
Per ora ho visto solo un paio di video, ma mi sembra molto interessante e ho pensato di segnalarvelo.

Born to Learn

https://borntolearn.mslearn.net/

BTL.png

“Born to Learn” √® il portale dedicato alla formazione e certificazione per competenze Microsoft. Qui trovate un blog sempre aggiornato sulle ultime novit√† dei percorsi di certificazione,¬†con anche opportunit√† di fare esami di certificazione¬†“in beta”, ovvero non pagandoli e ricevendo la certificazione concreta se passate l’esame¬†(come recentemente √® avvenuto a me), ma anche Forum e tante altre risorse per studiare e certificare le proprie competenze.
Da tenere sicuramente sott’occhio e aggiungere al proprio feed reader.


 

Insomma un mare di formazione disponibile, sempre, ovunque, gratuitamente!

Ora non avete pi√Ļ scuse per imparare qualcosa di nuovo, e migliorare voi stessi e il vostro lavoro.

E ricordate sempre che “Scientia potentia est”¬†(ovvero “sapere √® potere”).

L’offerta formativa gratuita di Microsoft

#TecHeroes loves #GameDev

Per chi non lo conoscesse (e sarebbe abbastanza grave!) #TecHeroes è uno show online gestito da Roberto Andreoli con il team DX di Microsoft Italia e pubblicato su Channel 9, il canale multimediale tecnico di Microsoft.

Nelle varie puntate¬†vengono ospitati gli “eroi della tecnologia”¬†ovvero le persone che, secondo gli organizzatori dello show, si impegnano in maniera particolarmente attiva¬†a¬†condividere il proprio tempo e le proprie¬†conoscenza tecnologiche¬†con gli altri.

Anche io ho avuto l’onore di¬†partecipare¬†qualche tempo fa (insieme a Massimo Bonanni) per parlare della nostra community¬†dotNET{podcast.

techeroes50.png

Oltre agli innumerevoli video che presentano prodotti e tecnologie Microsoft (e non solo), e ultimamente anche le community tecniche, da qualche settimana √® stata avviata¬†una nuova “serie nella serie”, ovvero un filone¬†di puntate dedicate allo sviluppo gaming, identificata dal nome #TecHeroes loves #GameDev¬†e di cui abbiamo visto finora¬†un paio di puntate ma gi√† molto interessanti e promettenti:

Lo show vede come “conduttore” Marcello Marchetti, da poco diventato Microsoft Evangelist, e¬†che possiede¬†grandi¬†competenze di programmazione gaming.

Techeroes.png

Non vi resta che sottoscrivere il feed RSS di #TecHeroes per non perdere nessuna puntata della serie e quindi anche di questo nuovo e interessantissimo filone educativo!

#TecHeroes loves #GameDev

La parola “Startup” vi dice qualcosa?

Ne abbiamo parlato in questo podcast con Daniele Pagani, StartUp Audience Director in Microsoft.

Il perch√© ne abbiamo voluto parlare penso sia¬†chiaro: la parola “Startup” √® diventata negli ultimi anni una “buzzword” abusata, spesso confusa e poco chiara ai pi√Ļ.

Alzi la mano chi di voi non ha mai¬†pensato almeno una volta negli ultimi due o tre anni di “avviare una startup”, senza di fatto sapere da dove partire, per poi abbandonare l’idea dopo un po’ e tornare al proprio lavoro in maniera sommessa.

Eppure tanti di voi, tanti di noi, ha e avr√† ottime idee, magari rivoluzionarie, chi lo sa…

Allora cosa manca? Il coraggio? La spregiudicatezza? Un filo di pazzia?

Beh, pu√≤ darsi, ma intanto facciamo un po’ di chiarezza con un “esperto” startupper passato poi¬†dall’altra parte della barricata per aiutare gli altri che sono come lui era qualche anno fa.

Anche in questo ci vuole esperienza, anzi in questo caso è necessaria, perché fallire quando si parla di startup può essere una battuta dura da recuperare.

Ascoltate quindi la puntata e se avete dei commenti utili da condividere, fatelo sulla scheda della puntata stessa.

E in bocca al lupo per la vostra idea di successo!

La parola “Startup” vi dice qualcosa?

La classe TelemetryClient di Application Insights

Abbiamo gi√† detto¬†come per Application Insights siano disponibili diversi SDK, in particolare √® interessante vedere come sia facile implementare sul fronte ASP.NET del codice che preveda l’interazione con questo servizio di telemetria.

Una volta che abbiamo il nostro progetto con Application Insights integrato¬†(cos√¨ come avevamo visto in questo post e in quest’altro post), e una volta integrato anche il codice JavaScript recuperabile dalla dashboard su¬†Azure, avremo la possibilit√† di tracciare da subito le visite alle pagine,¬†la provenienza delle request ed altre informazioni¬†di questo genere.

Ma abbiamo anche detto, in precedenza, come Application Insights sia utile per comprendere le problematiche applicative e per risolverle. Quindi questo vuol dire andare a rilevare e tracciare le eccezioni e renderle disponibili in una metrica specifica.

Per fare questo (e tanto altro) faremo la conoscenza di una classe utilissima: TelemetryClient, che gi√† nel¬†nome fa comprendere il suo scopo, che √® quello di “comunicare” alla nostra risorsa Application Insights le informazioni da monitorare.

Un esempio semplice

Nel nostro applicativo web, che per comodità sarà un progetto ASP.NET MVC, abbiamo la possibilità di utilizzare la classe MvcApplication (nel file Global.asax.cs) e in particolare il metodo Application_Error per gestire tutti gli errori che non vengono gestiti.
In questo metodo possiamo¬†effettuare un “trace” dell’errore e portarlo fino alla nostra dashboard di telemetria.

using Microsoft.ApplicationInsights;
...
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Error(Object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        TelemetryClient client = new TelemetryClient();
        client.TrackException(ex);
    }
}

Con queste poche righe abbiamo fatto in modo di rilevare l’errore intervenuto e farlo pervenire a Application Insights tramite una istanza della classe TelemetryClient, che stabilisce una connessione con la nostra risorsa su Azure, identificata dalla Instrumentation Key indicata nel file ApplicationInsights.config che troveremo nel nostro progetto.

Istanziare TelemetryClient con una Instrumentation Key diversa

Se abbiamo ambienti diversi, possiamo utilizzare un costruttore della TelemetryClient che consenta di utilizzare una TelemetryConfiguration contenente una Instrumentation Key specifica.

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
...
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Error(Object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        TelemetryConfiguration myConfiguration = new TelemetryConfiguration { InstrumentationKey = "myInstrumentationKey" };
        TelemetryClient client = new TelemetryClient(myConfiguration);
        client.TrackException(ex);
    }
}

Riprendendo come esempio quello che avevamo illustrato¬†in questo post, possiamo anche agire direttamente sulla Instrumentation Key della TelemetryConfiguration “attiva”, cos√¨ il costruttore di base utilizzer√† quella chiave,¬†in questo modo:

using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;
using System.Web.Configuration;
...
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
         TelemetryConfiguration.Active.InstrumentationKey = WebConfigurationManager.AppSettings["ApplicationInsightsInstrumentationKey"];
    }
    
    protected void Application_Error(Object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        TelemetryClient client = new TelemetryClient();
        client.TrackException(ex);
    }
}

Cosa possiamo tracciare oltre alle Exception

La classe TelemetryClient consente vari tipi di tracciatura:

  • TrackException => Eccezioni, vista sopra
  • TrackPageView =>¬†Pagine, schermo, form, ecc.
  • TrackEvent => Eventi utenti o applicativi
  • TrackMetric => Metriche
  • TrackRequest => Caratteristiche request
  • TrackTrace => Messaggi diagnostica
  • TrackDependency => Monitoraggio dipendenze

Capirete che le potenzialit√† ci sono per portare su Azure¬†(e rivedere poi sulla Dashboard di Application Insights) pi√Ļ informazioni possibili, anche in funzione di quello che vogliamo sapere della nostra applicazione.

Ovviamente conviene non esagerare con le tracciature inutili, mentre potrebbe essere¬†pi√Ļ utile¬†censire preliminarmente le informazioni che¬†vogliamo avere sotto osservazione della nostra applicazione e cosa pensiamo sia utile tracciare anche in funzione di debug e fix da fare.

Tracciatura lato client

Quello che abbiamo visto sopra è chiaramente possibile, allo stesso modo, lato client, cioè direttamente dalla pagina HTML.

Del resto gi√† nello script di cui abbiamo parlato in un precedente post (che riporto di seguito per comodit√†) vediamo¬†come venga “istanziato” un oggetto appInsights equivalente al TelemetryClient e di esso venga utilizzato il metodo trackPageView per tracciare appunto le visite alle pagine:

 var appInsights = window.appInsights || function (config) {
 function r(config) { t[config] = function () { var i = arguments; t.queue.push(function () { t[config].apply(t, i) }) } } var t = { config: config }, u = document, e = window, o = "script", s = u.createElement(o), i, f; for (s.src = config.url || "//az416426.vo.msecnd.net/scripts/a/ai.0.js", u.getElementsByTagName(o)[0].parentNode.appendChild(s), t.cookie = u.cookie, t.queue = [], i = ["Event", "Exception", "Metric", "PageView", "Trace"]; i.length;) r("track" + i.pop()); return r("setAuthenticatedUserContext"), r("clearAuthenticatedUserContext"), config.disableExceptionTracking || (i = "onerror", r("_" + i), f = e[i], e[i] = function (config, r, u, e, o) { var s = f && f(config, r, u, e, o); return s !== !0 && t["_" + i](config, r, u, e, o), s }), t
 }({
 instrumentationKey: "6ab464ae-42ad-4928-8250-ac102c892085"
 });
 window.appInsights = appInsights;
 appInsights.trackPageView();

Ovviamente oltre al metodo trackPageView è possibile usare anche gli altri metodi della classe TelemetryClient indicati in precedenza.

La classe TelemetryClient di Application Insights