apr 25 / Igor Damiani

Parse.com : piattaforma cloud per desktop e mobile

La settimana scorsa ho tenuto un corso su Windows Presentation Foundation e MVVM e come spesso mi capita, nei tempi morti (a pranzo, oppure davanti alla macchinetta del caffè) si continua a chiaccherare di tecnologia con i partecipanti del corso stesso. E’ in una di queste chiaccherate che sono venuto a conoscenza di Parse.com, una piattaforma cloud che in pochi passaggi vi permette di avere un database documentale a vostra completa disposizione. E non solo questo, dal momento che potete usufruire di una serie di servizi come le push notification in ambito mobile, data analytics e così via. Data la scarsità del tempo che ho a disposizione in questi giorni, ho avuto poco tempo per studiare la piattaforma, ma secondo me è interessante, perchè vi toglie le preoccupazioni della gestione di un vostro server, o di altre tematiche come performance o scalabilità: parliamo di cloud puro, insomma. I punti di forza di Parse.com secondo me sono la gratuità del servizio (almeno fino a quando non avete bisogno di salire di qualità o di quantità di dati – visitate questa pagina per avere il pricing), ed il fatto che è multi-piattaforma (ci sono SDK e sample code per .NET, iOS, Android, Javascript, PHP e via dicendo).

Dal punto di vista tecnico – che sto un po’ studiando questa mattina – le cose sono molto semplici. Una volta registrati, si ottengono i soliti parametri Application ID e Client Key, da inserire nel codice della vostra applicazione.

ParseClient.Initialize("appKey", "secretKey");

Ovviamente trovate tranquillamente la libreria su NuGet:

nuget

 

Tutta la logica di caricamento & salvataggio delle vostre entity passa attraverso l’utilizzo della classe ParseObject. Quindi quello che dovete fare è trasformare le vostre entity di dominio (aggregate in ottica DDD, per capirci) in oggetti ParseObject, che dietro le quinte non sono nient’altro che Dictionary<string, object>. Ad esempio:

public async Task<string> SalvaAutomobileAsync(Automobile automobile)
{
    string className = automobile.GetType().Name;
    ParseObject obj = new ParseObject(className);
    obj["Marca"] = automobile.Marca;
    obj["Modello"] = automobile.Modello;
    obj["Cilindrata"] = automobile.Cilindrata;
    await obj.SaveAsync();

    return obj.ObjectId;
}

E’ solo codice di esempio, chiaramente, giusto per capire come funzionano le cose.

Parse.com vi mette a disposizione una dashboard online per visualizzare le entity salvate (che vengono salvate in formato serializzato usando JSON) e per compiere tutta una serie di operazioni, che per ora ho trascurato e che prenderò in considerazione solo se finiranno per servirmi (mi riferisco a Cloud Code per schedulare dei job, oppure a App Configuration per salvare sul cloud le impostazioni della vostra applicazione, e via dicendo).

Insomma, Parse.com è un’alternativa come tante, uno strumento a disposizione di noi dev, per cui vale sempre la pena di darci un’occhiata per capire pro & contro.

Send to Kindle
apr 18 / Igor Damiani

Faculty Training: Microsoft e Scuola

Faculty Training è un’iniziativa di Microsoft che mette in comunicazione due mondi solitamente un po’ distanti fra loro: quello dell’insegnamento con quello della tecnologia. Al primo mondo appartengono professori, insegnanti e presidi delle nostre scuole italiane, mentre al secondo mondo appartiene Microsoft. Faculty Training prevede una serie di incontri formativi in diverse date nelle città di Milano e Roma, incentrati sulle tecnologie hardware & software che Microsoft mette a disposizione per il mondo della scuola. Si parla di Office 365, di OneDrive, di Sharepoint e di molto altro ancora.

Perchè parlare di Faculty Training qui sul mio blog? Ve ne parlo perchè sono molto orgoglioso di far parte di questa iniziativa e del team che organizza e tiene questi incontri. Il tutto è nato sotto la collaborazione tra Brain-Sys, OverNet ed ovviamente Microsoft, collaborazione molto stimolante sotto tantissimi punti di vista, sia dal punto di vista personale che professionale. Io, ovviamente insieme a Gabriele, abbiamo già partecipato alle prime due date (tenutesi il 31 Marzo a Milano e lo scorso 13 Aprile a Roma – in ambedue i casi nelle corrispondenti sedi Microsoft). Ci siamo impegnati molto per preparare le nostre sessioni nel migliore dei modi, ed i risultati sono stati sorprendenti e positivi. Dal mio punto di vista è stato un grosso passo avanti, perchè ero pienamente consapevole del fatto che la mia timidezza in molte occasioni mi aveva tarpato le ali: posso tranquillamente affermare che Faculty Training è stato il punto di svolta, e sono molto felice. Per la prima volta ho tenuto una sessione davanti a circa 40 persone, tra l’altro nelle stesse salette dove giusto una settimana prima si erano svolti i Community Days, e questo onestamente per me è stato motivo di forte emozione ed un certo senso di riverenza. Tutto è andato per il meglio, mi sono pure divertito e tutto questo ha contribuito a rendermi più forte e sicuro di me.

Mi è molto piaciuta anche l’idea di tenere una sessione in tandem, con Gabriele appunto, la prima volta, e poi addirittura in tre, con la professoressa Simona De Pascalis di Impara Digitale, molto più preparata ad affrontare le tematiche più inerenti la scuola, dal momento che lei in prima persona insegna matematica e fisica. Mentre lo staff Brain-Sys è decisamente più orientato a raccontare e spiegare le questioni più squisitamente tecnologiche su cosa Microsoft offre alle scuole (gratuitamente e non), la prof De Pascalis adotta un linguaggio decisamente più vicino a quello scolastico, e quindi spesso e volentieri i partecipanti non vedono l’ora di ascoltarla e di avere suggerimenti più pratici per dare il via alla rivoluzione informatica all’interno delle proprie scuole ed istituti.

Termino il post comunicandovi le prossime date del Faculty Training, che sono le seguenti:

  • Il 28 Aprile presso Microsoft Italia a Peschiera Borromeo (Milano)
  • Il 15 Maggio presso Microsoft Italia a Roma

Trovate maggiori informazioni su Faculty Traning a questo indirizzo.

Che dite, prof, non sarebbe bello venirci ad ascoltare un pochino?

Send to Kindle
apr 14 / Igor Damiani

Bye Bye Twitter

E’ qualche mese che ci ragionavo su, ma nelle scorse settimana ho deciso di abbandonare Twitter. Ma lo faccio con calma, lo faccio come un fumatore che pian piano diminuisce ogni giorno la velenosa dose di nicotina che assume, per avvicinarsi lentamente allo zero, senza fretta e dando tempo al proprio organismo di abituarsi. Per questo motivo l’account è fisicamente ancora attivo, ma l’utilizzo che ne faccio è davvero molto diminuito nel tempo, ed è comunque strettamente legato ad un ambito lavorativo (molti RT, pochissimi tweet scritti di mio pugno).

E’ molto difficile per me cercare di spiegarvi il motivo con poche frasi.

Prima di tutto, mi sono reso conto di una cosa. 140 caratteri non fanno proprio per me. Cercare di esprimersi in questo modo è alla lunga frustrante; siccome bisogna essere concisi, si cerca sempre la battuta d’effetto, la frase sarcastica, il tutto secondo me usando un umorismo davvero malsano. Mi ero sempre detto: se hai la sensazione che Twitter sia un posto “sbagliato”, devi dare la colpa alle persone che segui, che evidentemente non fanno per te. Questo in una prima fase. Poi ho cominciato a dirmi: se hai la sensazione che Twitter sia un posto “sbagliato”, defollowa, ritagliati un Twitter su misura. Fai in modo – mi dicevo – che quando apri la timeline ti venga voglia di sorridere. Questa fase è durata per un po’, poi ho cominciato a stancarmi anche di questa. La verità è che Twitter non è più davvero il posto che fa per me, punto, senza scuse. Mi annoia, e trovo molto limitanti le interazioni che si possono avere su questo social network. Ma non è tutto qui, c’è molto altro da dire.

Twitter è una grande piazza, mentre la vita reale non è fatta in questo modo. La vita è fatta da un contesto ben preciso alla volta, mai contemporaneamente. Ci sono momenti in cui ti trovi con i tuoi genitori, altri in cui sei solo con la tua ragazza, altri in cui stai lavorando con i tuoi colleghi, altri ancora in cui sei con uno o più clienti, oppure con perfetti sconosciuti su una metropolitana, e via dicendo. In tutti questi contesti siamo sempre noi stessi, assumiamo probabilmente comportamenti diversi, perchè ciascuno degli esempi che ho elencato prima rappresenta una sfera più o meno intima/personale o pubblica (giusto Lorenzo?) in base alle persone con cui ci si sta rapportando. Twitter è completamente l’opposto ed è totalmente fuori assetto, e così vale per ogni social network. E’ una grande piazza in cui tutte le persone che hanno preso parte alla tua vita (ed a volte neppure quello, visto che ci sono anche perfetti sconosciuti) ti stanno ascoltando contemporaneamente, e questo genera davvero una serie molto spiacevole di accadimenti. Su Twitter mi hanno dato del razzista o del poco coerente ed ho litigato diverse volte su ogni argomento possibile ed immaginabile. Apri bocca contro qualcosa che non ti piace di Apple, e saltano fuori persone a cui non piacciono le mie affermazioni. Amen. Faccio una battuta su cinesi o giapponesi, e subito vengo bollato come razzista. Non fai RT, e qualcun’altro si offende. Amen. Credi di collaborare attivamente ed in modo proficuo con un’associazione no-profit, instaurando buoni rapporti, ed invece ti tagliano fuori da determinate iniziative. Parli con la ragazza che ami, e ti legge la ex di cinque anni prima. E’ come aprire la finestra e mettersi a gridare qualcosa al (tuo) pubblico intero. Se scrivi una cosa in forma anonima, giustamente non si capisce chi è il vero destinatario, con il risultato che mezzo pianeta pensa che il messaggio è rivolto a lui. Per me Twitter era prevalentemente un gioco. Ogni singolo tweet era per scrivere un mio pensiero in quel preciso momento ed in quel contesto, mentre troppe persone trattano Twitter come una “cosa seria”.
Ma io non sono i miei tweet.

Tutto è dettato dal fatto che la parola scritta ha più peso rispetto alla parola parlata.

E per fortuna che è così, dico io. Il problema è che su Twitter l’unico modo che si ha per esprimersi – come dicevo prima – è la battuta, il sarcasmo, l’essere pungenti. E non sempre è divertente. Troppo spesso si viene etichettati per un tweet, come se quel tweet rappresentasse il tuo pensiero dalla nascita fino alla morte. Nessuno pensa che quel tweet ha valore per quell’istante T, e non per tutta la tua vita. E così…ecco che ci si permette di dare del fanboy, oppure dell’incoerente, oppure del razzista, e via dicendo. Definizioni – ne sono certo – che nessuno si permetterebbe di dirmi in faccia, perchè fondamentalmente chi mi conosce sa che non nessuna di quelle cose (ok, un pochino fanboy lo sono). Invece su Twitter è così. Amen. Nessuno pensa che dall’altra parte ci può essere uno che si offende, uno a cui si alza la pressione, che si arrabbia, che ci rimane male, e che poi non ci dorme la notte.

La cosa interessante è che anche i mass-media ragionano in questo modo: oramai non c’è trasmissione TV che non abbia associato un account Twitter, oppure semplicemente un hashtag. Tutte, davvero tutte. Ancora una volta, anche loro credono alla parola scritta su Twitter, senza prendere in considerazione che l’assunto iniziale di Twitter è che la forma di comunicazione è in qualche modo “sporcata” dalla pochezza dei 140 caratteri. Presto se ne renderanno conto anche loro, spero. C’è tutto un mondo là fuori contaminato dai social network: quando parte un servizio al TG, c’è sempre riportato l’account del giornalista, parte un nuovo reality-show ed ecco spuntare l’hashtag per finire nei trend. Ne ho piene le scatole di tutto questo.

E, badate bene, anche io stesso sono caduto in questo giro eh. Spesso mi è capitato di leggere tweet e di reagire in malomodo, cadendo esattamente nelle vostre stesse colpe. Mi è capitato volutamente di scrivere un tweet sarcastico, giusto per guadagnare qualche RT o semplicemente per sentirmi figo. Mi è capitato di offendere o di riprendere qualcuno. Quindi non è sola colpa vostra. Quindi siamo tutti pari. Quindi meglio così.

E’ per questo che nel mio cuore Twitter è morto. Come ho sempre detto in altri frangenti, non vi impedisco di usarlo, perciò continuate pure a frequentarlo. Tolgo il disturbo io. Per me, per ora, Twitter rimarrà esclusivamente uno strumento lavorativo. Il defollow di massa è già partito da qualche settimana. E continua.

Send to Kindle
apr 7 / Igor Damiani

Un nuovo blog su Unity! Mi fa solo piacere!

L’amico Marcello Marchetti ha aperto in questi giorni un nuovo blog dedicato interamente a Unity 3D, l’ambiente di sviluppo che permette di creare giochi multipiattaforma in 2D e 3D, per PC e per tutte le piattaforme mobile iOS / Windows Phone / Android. E molto altro ancora.

unity_platform

Chi di voi segue la community, molto probabilmente conosce già Marcello, dal momento che è già qualche anno che tiene sessioni su Unity 3D nei vari eventi che si succedono con il passare del tempo. Il suo blog è un’occasione per essere informati e per leggere contenuti – ne sono certo – anche di un certo spessore, visto che l’autore non è certo un novellino su Unity 3D.

In un mondo dominato dai social, sono davvero felice dell’apertura di questo nuovo blog.

Buona lettura! Grazie Marcello!

Send to Kindle
apr 6 / Igor Damiani

Microsoft Azure for student developers

Se siete studenti, Microsoft ha buone notizie per voi.

Grazie al programma Microsoft Azure for student developers, attivo dallo scorso 24 Marzo, potete attivare un abbonamento Azure con tutta una serie di vantaggi. Ad esempio, potete utilizzare il vostro normale Microsoft Account (associato al programma Dreamspark) e non c’è più il vincolo di dover inserire a tutti i costi il numero di carta di credito (cosa che spesso gli studenti non posseggono).

Azure è una grande opportunità per tutti noi developer e nella visione di Microsoft mira a diventare la casa di tutti, dal momento che permette di hostare un elevatissimo numero di software e servizi non solo di proprietà Microsoft. Permette di avere macchine virtuali Linux, o database server come Oracle, piuttosto che mettere online siti in pochi minuti implementati con linguaggi come Java, PHP o Python. Il programma Microsoft Azure for student developers è attivo in 140 Paesi del mondo, tra cui ovviamente l’Italia, altrimenti non sarei più a parlarvene.

Maggiori informazioni qui.

Send to Kindle
apr 4 / Igor Damiani

Community Days 2015

E così, anche per quest’anno i Community Days sono acqua passata. Il più grande evento community italiano si è svolto tra il 24 ed il 26 Marzo scorsi presso la sede di Microsoft Italia; i Community Days hanno lasciato in me tantissimi ricordi, rispetto a quelli degli anni precedenti.

WP_20150403_14_06_31_Pro

Sono stati tre giorni ricchi di un sacco di cose particolari: sessioni tecniche sulle tecnologie Microsoft (e non solo), fotografie scattate con chiunque mi capitasse sotto tiro, due cene spettacolari (la prima presso l’ormai stranoto ristorante piacentino in quel di Peschiera Borromeo, la seconda presso il RoadHouse di Novegro – luogo in cui difficilmente rimetterò piede), tante risate, tanti scambi di idee e di opinioni. Ho persino rivisto il volto di Christian, persona che probabilmente si può tranquillamente definire il primo collega della mia vita: è stato bello rivivere quegli anni in cui sia io che lui muovevamo i nostri primi passi nel mondo del lavoro. E’ stato bello assistere alle keynote (un consiglio agli speaker cher governavano l’apertura della giornata: la prossima volta, la scena del film “300”…fatela arrivare fino in fondo!).

WP_20150326_17_46_08_Pro

E’ stato bellissimo vedere la keynote di Giorgio Sardo su Windows 10, e di come questo sistema operativo potrà girare effettivamente su qualsiasi mainboard ed hardware possibile ed immaginabile. E’ stato bello salutare e chiaccherare con i soliti tantissimi amici proveniente da tutte le parti d’Italia…dalla vicina Emilia Romagna, passando dal Veneto, fino ad arrivare alla Campania ed alla Sicilia. Grazie al banchetto OverNet con Federico, Ambra, Barbara, Laura e Claudia, che sono passato a trovare nell’arco dei tre giorni. E’ stato incredibile incontrare gli amici di dotNET{podcast}, amici che con le loro puntate mi tengono compagnia in auto quando sono in trasferta.

WP_20150325_19_47_31_Pro

I Community Days, come si può dedurre da queste poche righe, sono sempre una cosa emozionante. Hanno avuto un valore particolare per me, per due ragioni:

  1. ho rischiato di non poterci venire per un disguido che non voglio nemmeno citare
  2. sapevo che entro pochi giorni (circa sette) sarei dovuto tornare in Microsoft Italia per tenere la mia prima sessione in pubblico, con Gabriele, per questioni lavorative. E tutto questo non ha fatto nient’altro che aumentare la mia emozione o ansia…chiamatela come volete!

WP_20150325_16_24_33_Pro

Desidero ringraziare tutti gli organizzatori a qualsiasi livello (molti dei quali conosco di persona), tutti gli speaker per le loro sessioni (anche quelle che non ho potuto seguire), tutti quelli che mi hanno salutato, le signorine che ci hanno riempito di caffè e di dolcetti. Ho avuto l’ennesima conferma (se ce n’era bisogno…) che le persone fortunatamente sono molto migliori dal vivo, piuttosto che come appaiono da una semplice interazione on-line.

Al prossimo anno, quindi!!!!!

Send to Kindle
mar 23 / Igor Damiani

Sul blog di MSDN Italia si parla di Cordova!

E chi lo fa?

Nientemeno che Gabriele Gaggi, ovvero il titolare di Brain-Sys, nonchè un mio caro amico e mio capo!

Che cos’è Cordova? Beh, innanzitutto, sappiate che si parla di un framework per lo sviluppo di app mobile multipiattaforma. Morale: scrivete il codice una volta sola, e Cordova crea per voi i vari pacchetti pronti per essere pubblicati sugli store di Windows Phone, Android ed iOS. Ok, detta così può sembrare la cosa più semplice del mondo, ma credo di poter intuire che non sia come bere un bicchiere d’acqua e quindi occorre padroneggiare una tecnologia prima di poterla sfruttare al meglio.

Ed è importante cominciare dall’inizio, dai primi passi, giusto per capire cosa fa e non fa.

Quindi, interrompete immediatemente la lettura di questo mio post e puntate direttamente all’articolo pubblicato sul blog di MSDN Italia.

cordova

Complimenti a Gabriele, sul serio! Sperando che magari sia il primo di una lunga serie!

Send to Kindle
dic 17 / Igor Damiani

Honda, Windows Phone, Bluetooth e amici di Dotnet Podcast

Quando a gennaio ho cambiato auto, l’ho fatto per diversi motivi. Primi fra tutti, la sicurezza, che la mia vecchia Opel Astra non mi garantiva più: pessimi fari, tergicristalli che non tergevano più, telecomando della chiave fuori uso da moltissimo tempo, molti guasti meccanici, etc. etc. Quando ho scelto quella nuova, non avevo un’idea precisa: avrei potuto acquistare un SUV, un’auto sportiva, una berlina, una station-wagon, e via dicendo. Alla fine la scelta è caduta su una Honda Civic, 5 porte, bianca, benzina, nell’edizione limitata YouTech (ovvero: particolarmente spinta sul fronte tecnologico, quindi: navigatore satellitare, bluetooth, e via dicendo).

A parecchi mesi di distanza, sono molto felice della scelta. E’ un po’ meno potente della mia Astra, ma vince su praticamente tutto il resto. L’aspetto tecnologico (d’altronde, il mio blog parla di tecnologia) mi è piaciuto fin da subito. Viaggiare sulla mia Civic è davvero molto divertente. Rispondere alle chiamate in vivavoce con il mio Windows Phone, avviare chiamate (pescando dalle chiamate recenti oppure dalla rubrica), inviare SMS senza usare le mani (grazie Cortana, come farei senza te!!!), il kit vivavoce che legge in automatico gli SMS in arrivo, utilizzare il navigatore satellitare, e via dicendo, rendono l’esperienza di viaggio davvero molto più rilassante rispetto ad una volta. Quando rimango bloccato in coda, una volta era un dramma, adesso molto meno (ma forse dipende anche dal fatto che non prendo l’auto tutti i giorni, quindi mi sono un po’ “disintossicato”).

Da qualche settimana, inoltre, ho sottoscritto nell’app Podcast di Windows Phone il feed RSS degli amici di DotNetPodcast, un podcast tutto italiano sulla programmazione, soprattutto con tecnologie Microsoft, con molti ospiti (molti dei quali miei amici di community) che spiegano ed illustrano tanti temi tecnologici, ciascuno nel suo campo di specializzazione.

E’ così che tornando da Verona ho seguito l’episodio n°14 di Alessandro Scardova, intitolato “Linee guida per realizzare UI e UX su misura”. Ed oggi pomeriggio, tornando dalla Valtellina per una trasferta di lavoro, ho seguito l’episodio n°3 di Mauro Servienti intitolato “NoSQL: non solo SQL”. E un po’ di tempo fa, questa volta da casa, mi sono fatto acchiappare dalla puntata di Andrea SaltarelloDDD e CQRS per tutti”. Davvero una gran figata!

E’ davvero molto comodo seguire questo tipo di podcast dalla propria automobile, perchè mantiene svegli, e comunque si “investe” il tempo che di solito si passa guidando passivamente imparando ed ascoltando un po’ di cose interessanti, temi che riguardano il proprio lavoro ed il tempo libero.

Grazie ad Honda, grazie a Windows Phone, grazie a Bluetooth.
E grazie agli amici di DotNetPodcast.

Nota tecnica: se volete anche voi seguire questo podcast con l’app Podcast di Windows Phone, non fate come me. Quando lanciate l’app e raggiungete la casella “Trova Podcast”, non incollate l’url del feed RSS (per la cronaca, questo: http://dotnetpodcast.com/feed/RSS), ma fate una semplice ricerca scrivendo per esempio “dotnet podcast”. Solo procedendo in questo modo potrete in un secondo momento sottoscrivere il podcast!

Send to Kindle
ott 10 / Igor Damiani

Download Show Cars 1.0

Ecco, ve l’avevo promesso, ma il tempo è tiranno, per cui sarò breve. Da qui potete scaricare la versione 1.0 del mio tool Show Cars, di cui vi ho parlato qualche giorno fa.

Per qualsiasi problema, contattatemi pure alla support (at) vivendobyte (dot) net.

Buon download a tutti!!!

Send to Kindle
ott 9 / Igor Damiani

Essere notificati dei cambiamenti di valore di una DependencyProperty

La dependency property (d’ora in poi DP) LanguageProperty è una proprietà definita nell’oggetto FrameworkElement di WPF (assembly PresentationFramework.dll, namespace System.Windows). Oggi mi è servito implementare un meccanismo per mettermi in ascolto di tutti i cambiamenti di valore di questa proprietà nel costruttore di uno UserControl, cosa che sarebbe banale nel caso di una nostra custom dependency property (quando si crea una DP ci viene praticamente gratis il meccanismo di PropertyCallback), ma un po’ meno quando si tratta di una DP di quelle predefinite di WPF.

Ho risolto così:

private void ListenForChangingLanguage()
{
    DependencyPropertyDescriptor dpd = DependencyPropertyDescriptor
        .FromProperty(LanguageProperty, typeof(UserControl));

    if (dpd != null)
    {
        dpd.AddValueChanged(this, delegate
        { // TODO });
    }
}

Questo meccanismo è piuttosto comodo, e lo si ottiene con poche linee di codice. All’interno del costruttore del mio UserControl chiamo il metodo qui sopra e tutto viene gratis. Chiaramente ciò che implementate all’interno del delegate è a carico vostro, io l’ho lasciato volutamente vuoto (a parte il commento, LOL). A me è servito per hostare un mio UserControl in una normalissima Window WPF, e giocando con la LanguageProperty posso essere notificato all’interno dello UserControl e reagire di conseguenza (nel mio caso cambio a run-time la lingua).

Send to Kindle