Alla scoperta di AngularJS

A lavoro sono passato su un nuovo progetto, sempre settore sanitario, ma la cosa stimolante non è il progetto in sè quanto la tecnologia utilizzata per il frontend: AngularJS.

Appena entrato in azienda, i miei colleghi dibattevano su quale potesse essere la tecnologia migliore per lo sviluppo del prossimo progettone in cantiere:

GWT è stato subito scartato da quando il plugin di sviluppo (l’estensione per Chrome e Firefox) non funziona con i browser più recenti. Nelle intenzioni della comunità GWT l’intento era quello di far passare gli sviluppatori al nuovo metodo (che non era pronto), chiamato “superDev” o giù di lì, e invece hanno ottenuto il risultato opposto, con migliaia di sviluppatori corsi ad installare la vecchia versione di Firefox funzionante, credo la 26.
GWT permette di scrivere le webapp in java, e poi di compilare il codice in javascript. Con i dovuti accorgimenti si riescono a sviluppare grandi cose, ma è facile trovare programmatori mediocri che usano GWT “the bad way”.

– un’altra tecnologia vagliata dalla super commissione è stata Vaadin, e anche qui abbiamo un framework che compila Java in Javascript. La vera differenza con GWT è che “tutto avviene sul server”, ossia se uno clicca un tasto per aprire un menù sarà il server a decidere come creare il menù, inviandogli l’html bello e confezionato. Per webapp medio-grandi è perfetto, il vero problema è che non va bene quando ci sono centinaia di migliaia di utenti (richiederebbe risorse lato server decisamente importanti). Però non richiede nessun plugin.
Secondo me sarebbe stata la scelta perfetta per l’azienda, visto che aveva molti programmatori java che dovevano imparare solo un framework, e invece è stato scartato perchè si voleva provare un approccio più radicale:

AngularJS !

Innanzitutto, AngularJS è la tecnologia del momento. Per un’azienda che sviluppa un software che dovrà durare più di 10-15 anni, è importante scegliere una tecnologia in cui sai di trovare sviluppatori capaci di manutenerlo.
Angular è un framework scritto in Javascript, e Javascript nel mondo aziendale è qualcosa di cattivo, obsoleto, vecchio. Spesso mi sono sentito chiedere “fammi un’esempio di un’app javascript di grandi dimensioni”, e quando ho citato GMail o Facebook, mi hanno risposto “ma che c’entra, loro sono Google|Facebook|etc”. Insomma, come dire che solo loro possono fare certe cose, non noi comuni mortali italiani (anzi, napoletani).

Alla fine Angular semplifica quasi tutto quello che c’è da semplificare, è difficile incappare nei problemi di javascript noti a tutto il mondo, soprattutto perchè ti permette di strutturare il codice in modo da non impazzire.

Vediamo quale sarà la mia opinione tra un anno!

Uscire da Java

No, non sto pianificando di scappare da un’isola indonesiana ma da un linguaggio di programmazione. Java è facile da imparare, almeno così è stato per me rispetto al C, e su Java ho fondato il 99% di quel che so ora, compreso una buona carriera universitaria.

Ma quando parte un nuovo progetto, una startup, un qualcosa di innovativo, quasi mai si sceglie Java come linguaggio / piattaforma. Ci sono centinaia di concorrenti, tra i blasonati Python e Php lato server, passando per gli innovativi Scala, Ruby on Rails, Groovy, e poi per le tecnolgie lato client potremmo scrivere un’elenco sterminato tra html, css, javascript, jquery, e i vari framework a contorno. E poi ci sono i dispositivi mobile. Quante vite servono per imparare tutte queste cose?!

Qualcuno sarà tentato di dire “ma in base a quello che ti serve usi il linguaggio adeguato”, si però se uno conosce bene solo Java, userà Java. Quello che vorrei fare io invece è approcciare qualcos’altro, perchè mi sono un po’ stufato. Sto valutando l’idea di realizzare qualche altro progetto in qualche altra cosa. Ma quando lo trovo il tempo?

Se il futuro del Paese fosse legato ad Internet

Ogni volta che accendo la televisione sentiamo sempre di fabbriche che chiudono, posti di lavoro che si perdono, proteste, scioperi e manifestazioni. “Il lavoro, il lavoro!” Gridano i manifestanti, GIUSTAMENTE, ma ciò che chiedono ormai appartiene a un’altra epoca.

Il futuro dell’Italia non è nelle automobili. Un settore che richiede continui aiuti statali, in un momento storico in cui una auto costa decisamente troppo, disfarsi della vecchia costa altrettanto e soprattutto chiunque ha già un’auto, non capisco come si possa continuare a riporre tanta fiducia in questo settore. Andava bene 30-40 anni fa, in una Italia post bellica che produceva il bene del futuro. E ora?

La maggiore economia del mondo basa tutto il suo successo sull’altissima tecnologia. Le 4 maggiori compagnie americane, conosciute in tutto il mondo, sono Apple, IBM, Google e Microsoft. Senza i loro servizi probabilmente ora staremmo ancora vivendo di zappe e cavolfiori.

Le aziende americane nascono da subito come multinazionali, e se anche prima offrivano servizi legati all’hardware, oggi sono tutte orientate verso il Web. Internet (frase fatta) ti permette di vendere i tuoi servizi a tutto il mondo, già dal Giorno Zero della messa online… questo l’hanno capito bene tutti quelli che si sono inventati le “nuove professioni”, e paradossalmente non l’hanno capito i nostri padri (sfortuna vuole che ci governino loro).

Ora, noi abbiamo questo enorme gap tecnico con gli Stati Uniti e anzi da soli non potremmo mai competere con loro. Le tasse e la burocrazia schiaccerebbero ogni idea brillante, e poi vuoi metterti contro il vero limite dell’Italia? Ma voi lo sapete qual è il vero limite ? Internet mobile fa schifo! Se io dovessi fare un’app che basa tutto il suo business sull’idea che l’utente è sempre connesso, mi ritroverei a combattere col fatto che in alcune zone d’Italia non c’è manco la rete GSM! Con un segnale che casca non appena entriamo in un edificio. Che soldi voglio ricavarci da una linea così?

Dunque se vogliamo provare a seguire la strada tracciata dai grandi player del mercato, dobbiamo un pò scrollarci di dosso l’idea che lo stato deve aiutare le aziende perchè l’unico aiuto utile è di migliorare le infrastrutture, abbassare le tasse e metterci in condizione di essere competitivi COL MONDO INTERO. You can’t think local anymore.

E ora via per una nuova settimana di lavoro!

3 mesi di MacBook AIR

Ho ricevuto per email questa domanda:

Ciao,

sono capitato per caso sul tuo blog ed ho visto che parlavi del Mac Air. Se ti posso disturbare un secondo, da programmatore e linuxaro quale mi pare di capire sei, ti volevo chiedere se il Mac Air vale la spesa o no. Mi serve un pc leggero da portare in giro e che possa usare per fare tutto. Tu sei contento della spesa sostenuta o secondo te è meglio rivolgersi ad altri ultrabook ?

ciao
Fabio

A questa domanda ho risposto in maniera assolutamente personale, ma siccome potrebbe essere utile anche per qualcun altro, eccola qui. Per la cronaca, ecco l’articolo in cui parlavo di quando ho comprato l’Air.

Ciao!

Sono un programmatore e nell’animo sono ancora linuxiano, e allora perché ho comprato un mac ? e soprattutto un macbook air?

A febbraio di quest’anno mi sono laureato e a aprile ho trovato lavoro. Il mio vecchio Dell, dopo 5 anni di onorato servizio, non riusciva neanche più a caricare youtube (…) senza bloccarsi. Contemporaneamente ho trovato un lavoro dignitoso che mi avrebbe potuto permettere di pagare il primo computer di tasca mia.

Nei due mesi in cui ero in cerca di lavoro, ho letto tantissime offerte per programmatori iOS. C’erano anche offerte Android, ma molte meno (perché essendo android libero, il mercato offre molti più programmatori android, e quindi poche offerte di lavoro libere). Invece il mondo dei programmatori iOS ha ancora margini di assunzione perché sono pochi quelli che possono imparare a programmare per questa piattaforma.

Alla fine ho dunque pensato che il mio prossimo computer  sarebbe dovuto essere un mac, per non pormi limiti casomai un giorno volessi imparare iOS, ma siccome potevo permettermi anche di pagarlo a rate, ho preso un AIR. Ho passato i tempi dell’università portandomi questo computer avanti e indietro, e un computer di 3 kg pesa molto. Mio padre invece già usava l’air per lavoro e diceva che quasi non lo sentiva.

Siccome viaggio molto per andare a lavoro, circa 45 minuti per arrivare a Napoli, pensavo di poterlo usare magari per studiare nell’autobus, per portare avanti alcuni progetti, etc. La verità è che dopo 8 ore di lavoro non hai nessuna voglia di tirarlo fuori, né di fare alcunché.  Insomma, avrei potuto prendere un macbook normale dato che comunque lo tengo sempre a casa. In effetti quelle 600 € di differenza ora mi avrebbero fatto comodo. Pazienza!

Dal punto di vista dello sviluppo software, la prima cosa che ho fatto sul macbook air è stata d installare Virtualbox con Ubuntu e Windows. Nella mia brevissima vita di programmatore ho imparato che su linux si devono fare delle cose, su windows altre, e su mac altre ancora. Quindi occorre averli tutt’e tre anche solo per fare dei test. Rimpiango delle cose di linux, ad esempio l’incredibile personalizzazione che avevo, gli automatismi raggiunti con la shell, etc. Ma siccome mac accetta quasi tutti i comandi unix, mi sto riscrivendo poco a poco tutte le utility che mi servivano (una su tutte, uno script per il backup).

Che dire, si impara tanto cambiando. Se puoi, fallo anche tu. Prova a compilare un programma e a farlo girare sui tre sistemi… un programma di media grandezza (che ha bisogno di variabili di sistema, di scrivere su disco, di creare un installer…) si declina in modo diverso. Saperli tutt’e tre è solo un vantaggio.

Che dire più? Aspettiamo windows 8 (sono curioso di provarlo), ma viva l’open source, viva la conoscenza.

Fammi sapere che farai!

Ciao!

 

Social Week #1

Con questa serie di Post voglio condividere, ogni settimana, le notizie più fiche della rete. In genere sono cose che ricondivido a mia volta sui social network. 

  • Quanti alieni ci sono nell’universo? – un po’ di calcoli matematici per capire se davvero potremmo trovarci davanti a una popolazione aliena che è capace di inventare la radio e di trasmetterci un segnale di vita… Molta fantascienza e qualche fanta-mah
  • Think twice before accepting a job counteroffer (in inglese) – se un datore di lavoro vi fa una contro proposta, è perché pensa a quanto può essere costoso sostituirvi. E ricorderà per sempre che avete provato a cambiare lavoro. Insomma, non risolverà i problemi per cui volevate andare via, né migliorerà il vostro rapporto.
  • Tutti i numeri del “concorsone” mondo della scuola in subbuglio – Un po’ credo che il mondo dell’insegnamento sia perfetto per me, un po’ credo che tutte queste lungaggini burocratiche sono solo una grande rottura di scatole. Ma se fanno un concorso e io posso parteciparvi, perchè non provarci?

E con questo mi fermo al 27/08/2012… peccato, c’erano articoli interessanti proprio il 26/08 ! Alla prossima settimana ;)

il social gaming targato Mangatar

Ci siamo! Ancora qualche ora e sul web non si parlerà che di Mangatar, il primo social game italiano basato su avatar virtuali in html5 (uff… è stata dura trovare una categoria in cui si era primi, senza andare su Wikipedia)!

Ho avuto la fortuna di provarlo in anteprima, anche perché sono loro amico e poi mi azzecco facilmente ai giochi on line. Non vi dico che la prima ora l’ho passata a trovare bug che mi si presentavano manco fossero banane in un film di Bud Spencer… ma i prodi Enrico e Raffaele ce l’hanno messa tutta e hanno risolto ogni mia lamentela, compresa quella di farmi giocare gratis per un bel po’ di futuro!


Dunque, cos’è Mangatar? Fin’ora era un motore di generazione di avatar virtuali. Si potevano creare degli avatar che esprimevano la tua personalità o il tuo stato d’animo, o realizzare degli avatar fighi tipo zorro, frankenstein, etc. Bello bellissimo, ma dopo 5 minuti eri già su un altro sito perch’è t’eri stufato.

Quelli di Mangatar invece avevano già previsto tutto dall’alba dei tempi: gli avatar generati (e votati dalla comunità) diventano delle carte da giocare contro altri utenti, sulla falsa riga dei giochi di carte dei primi anni 2000 (ricordate le carte di Yughi oh?).
Il gioco per ora partirà in maniera semplice semplice, permettendoti di sfidare gli amici e i non amici in un crescendo di battaglie. Dopo ogni sfida si vincono dei coins utili per potenizare i propri mangatar, e questi coins sono proporzionali al livello epico della sfida.

Il gioco verrà poi strutturato in alleanze, in modo tale che ci si potrà sfidare in gruppi e darsele di santa ragione, finchè non vi sarà un’alleanza che riuscirà a portare dei mangatar al massimo livello (io ho suggerito 150, ma poi decidono loro). L’alleanza che vince verrà ricordata in saecula saeculorum e per loro ci potrebbero anche essere ricchi gadget (questa è una mia idea, non prendetevela con me se vincendo non vi arriva niente! Ma siccome Mangatar distribuisce gadget in tutti i luoghi e in tutti i laghi…).
Tecnicamente, vi posso dire che il gioco essendo in html5 è compatibile anche con i telefonini. Ovviamente non si riesce a giocare granchè bene dato che il telefono è piccolo ma qualcosa sono comunque riuscito a farlo, ad esempio ho fatto partire uno scontro, ma il settore mobile è un’altro settore strategico per loro che sarà presto sviluppato. In breve, sul server di prova composto da 4 giocatori sono diventato il leader indiscusso e chiunque ha osato sfidarmi le ha prese di santa ragione.


Dalla regia mi dicono che ci sono ancora piccoli dettagli tecnici da risolvere (integrazione con paypal), dunque dovremo aspettare massimo un giorno… Io sto già a rota!

Vi aspetto su mangatar per darcele di santa ragione!

p.s. Cari autori e utenti di mangatar, io mo’ esco, se ho commesso qualche errore o imprecisione nell’articolo (che esprime i miei punti di vista), scrivete nei commenti eventuali correzioni … Grazie! 

Risparmiare batteria su Android con Llama

E’ tornato il Galaxy Nexus dall’assistenza! Festeggiamo il lieto evento con una piccola mini-guida sulla configurazione di Llama, un programma che permette di eseguire azioni al verificarsi di alcune condizioni. Questa app l’ho sperimentata su Android 4 e su Android 2.3, quindi suppongo che dovrebbe andare bene ad una lunga lista di telefonini.

Cosa faremo per ottimizzare la batteria del nostro telefono, e per migliorare un po’ l’usabilità del telefono stesso:

  • quando ci troviamo a casa, attiva automaticamente wifi e bluetooth (ho un impianto stereo bluetooth e uso il telefono per ascoltare la musica). Qui l’ottimizzazione della  batteria entra in gioco perchè il wifi consuma molta meno energia del 3G/2G. Ovviamente, uscendo dalla zona Casa, disattiva queste impostazioni. 
  • Se si è fuori casa, dopo 7 minuti che il display è spento, stacca internet 3G/2G. Quando il display si accende, attiva subito internet cellulare. In questo caso stiamo dicendo al telefono che quando non guardiamo il telefono per un lungo periodo di tempo questo deve disconnettersi da internet, per poi riaccendere subito la connessione se lo attiviamo.
  • Piccola chicca finale: se il telefono è in chiamata, attiva il bluetooth, e se non lo è, staccalo se non connesso. Questa regola l’ho impostata perchè ho un vivavoce bluetooth in  macchina e se ricevo una telefonata il vivavoce si collega automaticamente. In questo modo non attivo il bluetooth a mano e non devo disabilitarlo una volta sceso (ci pensa Llama).

Llama nasce come un programma che cambia la suoneria quando ci troviamo a casa o al lavoro, e per capire  dove ci si trova non utilizza il GPS (che consuma tanta batteria) ma controlla a quali antenne telefoniche siamo connessi. Iniziamo proprio da qui: apriamo la scheda “Zone” e teniamo premuto su “casa“, selezionando poi “inizia addestramento zona“. Ovviamente fatelo quando siete a casa, così da poter impostare facilmente tutte le  varie antenne che il telefono contatta quando siete lì.

Adesso spostiamoci in “Eventi”. Per semplicità vi consiglio di eliminare, tenendo sempre premuto, gli eventi che sono già presenti in questa lista. Quando sarete abbastanza bravi, potrete configurarli di nuovo come vorrete voi.

Creiamo il primo evento descritto in precedenza:

  • clicchiamo sul + in basso a destra. Si aprirà la scheda “Llama – nuovo evento”. Selezionate  “Event name and group”. Dategli come  nuovo nome “Entrando a casa” e come gruppo “casa“. Premete sul tasto “Aggiungi condizione”  e selezionate “Entra/In Zona” e selezionate “Casa“. Ora premete “Aggiungi Azione” e selezionate “Wifi” e poi “Wifi attivo (per almeno 5 minuti)“. Premete ancora sul tasto “Aggiungi Azione“, selezionate “Bluetooth” e poi “Bluetooth Attivo (per almeno 5 minuti)“. Fatto :) potete  premere il pulsante indietro.
  • Adesso creiamo l’evento contrario che si attiva quando usciamo dalla zona casa. Creiamo un nuovo  evento cliccando sul + in basso a destra. Diamogli il nome “Uscendo  da casa” e come gruppo “casa“. Premiamo il tasto “Advanced” e selezioniamo “Delay Event“, impostiamo “Delay Minutes” a 10 minuti,  e poi selezioniamo “Cancel delay if false“. Queste ultime impostazioni servono perchè può capitare che il telefono veda per un istante un’antenna che non ha mai visto prima e si disconnetta da tutto, per evitarlo gli diciamo di disconnettersi dopo 10 minuti che non vede più le antenne di casa nostra. A questo punto selezionate “Aggiungi condizione” e selezionate “Esci da zona” e poi “casa“, aggiungete le azioni “Bluetooth” e poi “Bluetooth non attivo (se non collegato)“. Per la wireless, aggiungete l’azione “Wifi” e poi “Wifi non attivo (se non collegato)”.

Fatto! Bel casino eh? Una volta capita la logica di queste azioni, le personalizzerete come meglio credete. Andiamo ad impostare la vera Battery Saver:

  • Creiamo un nuovo evento selezionando il+ in basso a destra. Chiamiamolo “schermo acceso” e scriviamo nel nome del gruppo “display“. Ora Aggiungiamo la condizione “Screen on/off”  e poi “screen on“. Aggiungiamo le azioni  “Dati cellulare” e poi “dati cellulare attivo“.
  • Creiamo l’evento contrario sempre cliccando sul +, chiamiamolo “schermo spento” e scriviamo nel nome gruppo “display“. Aggiungiamo la condizione “screen on/off” e poi “screen off“. Aggiungiamo le azioni “Dati cellulare ” e poi “dati cellulare disattivo“. Ma non è finita qui: clicchiamo su Advanced e selezioniamo “Delay Event“, “Delay minutes” e impostiamolo  a 7 minuti,  e  poi “cancel delayed if false“.

Anche questa è andata! L’ultima regola ora dovreste essere abbastanza bravi da impostarla da sola, anzi vi sfido: chi di voi me la scrive nei commenti?

Saluti a tutti! God save the batteries!