1. AppHarbor arriva in Europa →

    AbbHarbor

    Per quanto mi riguarda è davvero un’ottima notizia. AppHarbor è l’unica piattaforma cloud PaaS (platform as a service) sul mercato oltre a Windows Azure. Rispetto ad Azure, AppHarbor offre un modello molto più semplice e flessibile sotto molti aspetti (posso usare SQL Server, ma anche MySQL, o il fantastico RavenDB !!), con tantissimo Add-On, tutti con un free-tier disponibile. Finora ero stato frenato da un uso sistematico di questa piattaforma soltanto per il fatto che fosse disponibile solo su datacenter di Amazon AWS esclusivamente dell’area nord-americana. Non male per una startup che conta solo 6 persone. Grazie Rune per aver esaudito le mie richieste.

  2. AWS Elastic Beanstalk Deployment per Visual Studio

  3. Twitter Bootstrap, il miglior punto di partenza possibile per una moderna web app →

    Da poco giunto alla versione 2, questo UI framework straordinario è sviluppato sotto licenza open-source dal team di Twitter. Tra gli elementi più interessanti:

    • il supporto per device mobili e tablet (con un’occhio ai vecchi IE)
    • un grid system a 12 colonne molto versatile
    • il supporto allo sviluppo responsive dove grazie alle media queries di CSS3 possiamo personalizzare il nostro layout in modo automatico per ogni tipo di schermo e risoluzione
    • un set ricco e ben fatto di plugin jQuery (finestre modali, dropdown, tab, tooltip, popover, alert, pulsanti, gallerie, ecc.)
    • è costruito usando Less e si può usare Less per customizzarlo. Questa è una scelta che mi trova particolarmente felice in quanto sono un fanatico di Less e consiglio a chiunque di iniziare ad usarlo. Per chi usa Visual Studio si può usare l’ottimo Web Workbench di Mindscape, ma anche chi usa Vim o Textmate ha i suoi bundle.
    • infine non dimentichiamo l’ottima documentazione e gli esempi riportati

    Prossimamente, se trovo tempo, provo a pubblicare su github un paio di template per ASP.NET MVC 4 e node.js basati su Bootstrap e Less.

  4. Skeleton →

    Skeleton è una raccolta (molto piccola a dir la verità) di file CSS e JavaScript che può essere usata come “base” per creare rapidamente siti e applicazioni web con un layout capace di adattarsi perfettamente con qualunque dimensione di schermo, dal 17” widescreen di un portatile ad un iPhone. L’approccio minimale rende queste semplice toolkit affiancabile a qualunque UI framework si preferisca (ad esempio jQuery UI).

  5. Single Page Applications

    Spesso quando dico che sono uno sviluppatore web, ma non faccio “siti”, le persone rimangono per un attimo disorientate. Con gli strumenti web è possibile creare non solo “siti” ma “applicazioni”, programmi che “fanno qualcosa”, che rispondono all’utente, interagiscono in modo dinamico e sviluppano delle logiche. Il tentativo di creare queste applicazioni web risale ormai da molti anni e ha spinto (sin dagli anni ‘90) allo sviluppo di tecnologie che hanno arricchito la componente “client” dell’applicazione cioé quello che viene eseguito sul browser. Per questo è nato JavaScript e in seguito le tecnologie “a plugin” come Flash o Silverlight. I browser si sono evoluti, hanno aderito agli standard e hanno ottimizzato le loro prestazioni (prima fra tutti Chrome con il engine Javascript V8, talmente performante da divenire la base di una tecnologia Javascript lato-server in grande espansione come node.js - per la quale consiglio di seguire il nuovo blog NodejsItalia). Oggi siamo, a mio avviso, in un momento in cui le tecnologie web “pure” (HTML/JavaScript/CSS) sono vincenti su tutte le tipologie di applicazioni pre-esistenti:

    • multipiattaforma (comprese i device mobili, tablet, ecc.)
    • cloud (adozione di piattaforme ad elevata scalabilità come Amazon AWS, Azure, ecc. e abbattimento dei costi di infrastruttura e IT)
    • sicurezza (operando in modalità HTTPS e con i dati al sicuro nel cloud)
    • disponibilità (ho tutto ovunque, mi basta un browser)

    Rimangono aperte 3 criticità:

    • connettività (se non posso collegarmi al cloud non posso accedere alla mia applicazione)
    • storage locale (posso avere la necessità di mantenere delle informazioni “offline”, per motivi di prestazioni o altro)
    • responsività (la mia applicazione deve essere interattiva e deve rispondere alle azioni dell’utente senza dover ricaricare schermate di pagina e finestre in un continuo ping pong server-browser “a paginate”)

    HTML5 permette di risolvere (purtroppo ancora in modo non omogeneo su tutti browser) tramite le sue nuove API le prime due problematiche. Riguardo alla terza, in questo periodo specifico stanno emergendo framework e tecniche volte a perfezionare la creazione delle cosidette: Single Page Applications (o SPA) Il paradigma di applicazione web come singola pagina che “cambia” e “risponde” in base all’interazione dell’utente senza la necessità di doversi mai “ricaricare” ha un suo (mainfesto)[http://itsnat.sourceforge.net/php/spim/spi_manifesto_en.php] ed è già nota agli utenti grazie ad applicazioni come Gmail, Google Docs, ecc. Microsoft, con l’introduzione di ASP.NET MVC 4, ha aggiunto un template specifico per le SPA. Sul sito di ASP.NET è disponibile un tutorial guidato che aiuta a prendere dimestichezza con questo paradigma. Le due componenti “nuove” che fanno la loro comparsa in questo template sono sicuramente:

    • Knockout: un framework Javascript open-source che permette di applicare il pattern Model-View-ViewModel per gestire tutta la UI). Nel template è usato in combinazione con jQuery ma in realtà non ne é dipendente e può essere usato anche da solo o con altri framework (ad es. Mootools, Dojo, ecc.)
    • ASP.NET Web API un framework per la creazione di piattaforme di servizi web RESTful, derivato da una costola di WCF e ormai completamente integrato in ASP.NET MVC4

    Completano il tutto:

    • jQuery (immancabile ormai)
    • jQuery UI, con i suo widget (autocomplete, accordion, dialogs, ecc.), gli effetti (che hanno sempre un ottimo impatto visivo e di good feel con l’utente) e temi
    • jQuery Validation, con la sua integrazione specifica con ASP.NET MVC, permette di effettuare validazioni di dati lato client in modo molto efficace specificando in classi “lato server” le regole stesse della validazione, così da ottenere una doppia validazione (client+server) del dato stesso.
    • Una serie di librerie Javascript contenute in alcuni file (native.history.js, nav.js, upshot.js) che forniscono delle ottime utility per risolvere problemi quali il bookmarking o la navigazione. Di particolare interesse è Upshot (di cui a breve dovrebbe essere pubblicato un sito web specifico), che permette lo scambio dati efficace tra il lato-client e il lato server (l’infrastruttura REST), operando le conversioni tra i dati, il mantenimento dei metadati (ad esempio gli attributi di validazione), il tracking dei cambiamenti sullo stato degli oggetti (in modo da rilevare se un oggetto debba essere o meno risincronizzato con il server) e l’associazione tra le entità (quindi le proprietà di “chiave esterna” e la loro sincronizzazione).

    Per rimanere aggiornati il più possibile sullo stato di queste tecniche è utilissimo il blog di Steve Sanderson, il tipo che sta dietro all sviluppo di Knockout (vedi repository del codice su GitHub) e di Upshot,

  6. Knockout →

    Simplify dynamic JavaScript UIs by applying the Model-View-View Model (MVVM)

  7. NodejsItalia →

    Articoli e informazioni sul mondo dello sviluppo web con Node.js, ma anche tante informazioni su Cloud Computing, Javascript, NoSQL, HTML5, Agile Methodologies e molto altro.

  8. MongoDB, un database senza SQL

    I database NoSQL stanno dimostrando una straordinaria capacità di supportare carichi di lavoro elevatissimi, potendo contare su una spiccata scalabità soprattutto in ambiente cloud. Tra i moltissimi database NoSQL emergenti ho scelto MongoDB quale nuova scelta primaria per lo sviluppo di applicazioni web/mobile in ambiente cloud computing, sostituendo in tutto MySql.

    MongoDB

    I vantaggi nell’adozione di MongoDB sono sia dal punto di vista tecnologico sia nel processo di sviluppo stesso. Lavorando con uno “schema libero” si riesce a passare direttamente dalla prototipazione degli oggetti di business e relative classi al database senza dover passare per la creazione dello schema relazionale e la conseguente gestione dell’impedence mismatch tra il mondo SQL e il mondo Object-Oriented, che tipicamente richiede l’uso di un ORM (nel mio caso da tempo Entity Framework). Riduzione dei tempi, e dei costi dunque.

    Per quanto riguarda l’infrastruttura esecutiva in produzione, il tutto passa nelle mani dell’ottimo MongoHQ, un servizio cloud computing eseguito sulla piattaforma Amazon Web Services, quindi sulla stessa dove già si trovano web server (Amazon EC2) e file storage (Amazon S3).