Technology Experience
Software

Videogame e ricompense

Mi è abbastanza piaciuto questo post di @87arya, alias Erika, che parla di videogame e “trucchi” che ci spingono a videogiocare. Io non li chiamerei trucchi, a dir la verità: la parola “trucco” io la associo a una mossa che viene messa in atto per prenderci in giro, per fregarci, per illuderci di una cosa quando in realtà quella cosa è tutt’altro. Un trucco è quello di un illusionista, è quello delle star televisive per migliorare il loro aspetto. Ma ho capito cosa intendesse dire lei, per cui non c’è problema. Trucco è solo una parola, l’importante è capirne il significato. Io avrei metto tecniche, o metodi, per esempio. Ma lasciamo perdere questo dettaglio.

Mi è piaciuto il paragrafo dedicato alla Ricompensa programmata. Cioè, in due parole: vogliamo continuare a giocare un videogioco perchè vogliamo migliorare il nostro personaggio, vogliamo vedere il livello successivo, vogliamo vedere cosa c’è dopo, quali sono le avventure che aspettano il nostro personaggio. Fino alla fine. Fino a sconfiggere il cattivone finale, fino a vincere l’ultima delle gare, fino a salvare la bella principessa uccidendo il drago, etc. etc.

Per quello che mi riguarda, la ricompensa che più apprezzo è la “sequenza cinematografica”. Ed ultimamente sono piuttosto carenti. Mi spiego meglio. Possiamo assimilare un videogioco ad un film interattivo. C’è un protagonista, c’è una storia che evolve, c’è un compito da portare a termine. In entrambi i casi è lo sceneggiatore/game designer che decide il tutto, ma nel caso del videogioco la storia non va da nessuna parte se non prendiamo noi in mano le redini del gioco. Se falliamo noi, fallisce il personaggio, la storia si pianta. Eppure. Eppure c’è un momento (o almeno, io la penso così) in cui io – videogiocatore – voglio fermarmi un attimo, incrociare le dita dietro la testa e godermi una scena di X secondi/minuti che mi aiuti ad entrare meglio nella storia. E questa scena deve essere cinematografica: una colonna sonora, inquadrature ben studiate, dialoghi efficaci ed emozionanti. Il campione in questo senso secondo me è Mafia. Gioco d’azione vasto, molto vario come gameplay, con una storia impressionante, e con sequenze cinematografiche da brividi (che ricordano Il Padrino). Sequenze di sparatorie, di riunioni, e di scene d’amore. Il gioco ad oggi è vecchiotto, quindi la grafica è quella che è, ma questo è quello che intendo. Se l’avete giocato, e finito, capite cosa intendo.

Ultimamente invece rimango piuttosto deluso. Finisco Skyrim, e non c’è una straccio di ricompensa, da questo punto di vista. Forse lo capisco: Skyrim è quasi un simulatore di una vita parallela. E nella vita vera non c’è colonna sonora, non ci sono scene particolari. Finisco DiRT3, completando decine, decine e decine di gara, con ogni tipo di veicolo in giro per il mondo, e non c’è un minimo di festeggiamento (ci sono fuochi d’artificio alla fine di ogni gara, sarebbe stato bello fare qualcosa di speciale per il finale totale globale). Domenica ho finito Dishonored: finale così così.

L’unico forse che si differenzia un attimo è Deus Ex Human Revolution: sia durante il gioco, sia alla fine dello stesso, ci sono sequenze molto molto belle (tra l’altro la voce maschile italiana mi piace tantissimo, altro che Luca Ward). Un altro gioco che ho apprezzato in questo caso è il recente XCOM: Enemy Unknown. Anche i Call Of Duty eccellono, ma francamente gli ultimi (due?) li ho evitati perchè mi hanno un po’ stancato: però è innegabile che le sequenze cinematografiche siano paurosamente belle, inserite spesso anche nel gioco (anzi, per come lo vedo io a volte sono troppo scriptate, diciamo). Promosso anche Dead Space (tutti e tre gli episodi), anche se qui i finali non li gradisco perchè solitamente sono negativi, come nei film horror.

Insomma, per chiudere. Io la penso così. Ci deve essere un momento in cui ti senti gratificato dal tuo personaggio, da ciò che hai fatto, e godertela un attimo, lasciando per un attimo i tasti WASD. Sono uno di quelli che pensa che il pugno finale al cattivo non devi farlo davvero tu, ma te lo devi solo godere. Il giocatore deve fare il 99,999999% del lavoro sporco, ma alla fine te lo devi godere. Punto e basta. Ah: sono anche uno di quelli a cui piacciono i titoli di coda, leggo tutti i nomi (quelli che riesco), ascolto le musiche. E così ho scoperto che Mavi Felli ha doppiato non-ricordo-che-personaggio in Dishonored (non credo sia un caso di omonimia).

Send to Kindle
Software

Windows Search e la cartella Documenti

Potrei partire da molto lontano, con questo post, parlando dei Documenti in ambito Windows (la mia personale definizione era, e tutto sommato è: tutte le cartelle e tutti i files che mi riguardano, lavorativamente parlando ma non solo). Cercherò di farla breve e di come è evoluto dentro di me il significato di Documenti, e spero di dare un po’ di consigli utili a tutti, considerando diversi punti di vista: cosa e come salvare, come fare in modo che Windows funzioni al meglio, come ottimizzare i backup, come evitare che i backup diventino giganteschi. E soprattutto come evitare che il servizio Windows Search (correlato con il discorso Documenti, ma non solo) vi frulli continuamente il disco, SSD oppure no. Cominciamo, mettetevi comodi.

Cosa sono per voi i vostri Documenti?
La prima cosa da fare è pensare ai vostri Documenti. Cosa sono? Quali cartelle contengono? Io vi parlerò dei miei. Sul mio PC Desktop, il mio PC principale, i documenti contengono un po’ di tutto. O almeno, contenevano, continuate a leggere!

  • Cartelle di lavoro (sorgenti di codice, documentazione, etc.)
  • Salvataggi dei giochi (molto comodo, questo, anni fa invece era un delirio: adesso se formatto e reimposto la cartella Documenti al solito percorso, tutti i giochi riprendono i salvataggi delle partite in corso senza troppi problemi – prima bisognava backupparli manualmente)
  • Posta elettronica: in pratica una cartella con i files .pst di Microsoft Outlook
  • Macchine virtuali Virtual Box
  • Download
  • Cartella root di Team Foundation Server
  • Cartella SkyDrive
  • Tantissime altre e cartelle e tantissimi altri files, di cui non si può avere il controllo (ovvero: il programma a cui fanno riferimento non permette di modificare il path, e va benissimo così)

Usate un disco esterno, o comunque separato rispetto al disco di avvio
Sappiamo tutti che Windows parte solitamente da un disco C: La cosa importante da fare è definire un altro disco come disco dei documenti. Può essere un disco SATA interno, oppure un disco esterno USB, 2.0 o 3.0, poco conta, solo la velocità. Un disco esterno è utile (direi essenziale) perchè: lo potete staccare ed attaccare ad un altro PC, aumenta la sicurezza, quando formattate e state per selezionare la partizione di destinazione lo potete riconoscere più facilmente (e quindi ignorarlo per evitare di installare Windows spazzandovi via i Documenti), perchè è un’altro disco fisico, con il suo nome/modello, con la sua label, e via dicendo.

Come organizzare questo disco dei documenti? Io solitamente gli do una lettera ben precisa: la Z. In questo disco Z ho creato un path Z:Data, all’interno del quale ho creato quattro folder, uno per ciascuna delle Raccolte (Libraries) di default di Windows. Ecco quindi una struttura come questa:

  • Z:DataDocumenti
  • Z:DataMusica
  • Z:DataImmagini
  • Z:DataVideo

Lasciamo stare Musica, Immagini e Video. Parliamo dei Documenti. Io qui dentro mettevo TUTTO DI TUTTO: robe vecchie e nuove, macchine virtuali, download, backup dei giochi via Steam (per evitare ogni volta di scaricare un gioco da zero), la cartella SkyDrive, la cartella root di Team Foundation Server, e via dicendo.

Per un totale di ben 129GB (in realtà, in periodi passati, ancora di più).

Ragioniamo sulla voce “robe vecchie e nuove”. Con “robe vecchie” intendo tutto ciò che è rimasto invariato da mesi, se non anni: vecchi progetti con Visual Studio 2005/2008/2010, backup assurdamente vecchi, documenti Word, immagini, file di testo, powerpoint, un sacco di roba risalente a dieci anni fa. Robe vecchie, insomma. Robe che andrebbero backuppate, ma che non ha senso mantenere nei Documenti “attivi”, quelli su cui lavoro tutti i giorni (quelli che contengono i software su cui lavoro tutti i giorni, per capirci, o qualsiasi documento Word/Excel che mi serve quotidianamente).

Qui mi collego ad un altro discorso che compare nel titolo del post: Windows Search.

Questo è un servizio di Windows che indicizza i contenuti del vostro hard-disk: Documenti, posta elettronica, SkyDrive, etc.). Potete configurarlo usando il pannello di controllo di Windows, chiaramente, e potete decidere cosa aggiungere e cosa togliere, se disattivarlo o se lasciarlo attivo. Questo servizio indicizza i vostri files, e gli indici vengono salvati di default nel path C:ProgramDataMicrosoftSearch. Ora, fate attenzione. Vi ricordate i 129GB citati prima? Per indicizzare 129GB di Documenti, Windows Search mi occupava 64GB nel path qui sopra: è in C, e se questo C è un SSD – magari piccolo – può essere un problema. Oltre a questo, Windows Search vi fa dannatamente frullare il disco, la memoria e la CPU. Basta tenere aperto il Task Manager di Windows per rendervene conto: se avete un PC moderno (i7, 16GB di RAM ed un SSD) magari non ve ne accorgete, ma se il PC è un vetusto quad-core, 4GB di RAM ed un disco SATA, ecco che le cose si fanno problematiche. Talmente problematiche che alla fine ho deciso di disabilitare il servizio, con tutte le conseguenza del caso (non molte, per la verità: per quello che mi riguarda, solo la ricerca in Outlook non era indicizzata, e quindi qualsiasi ricerca era più lunga – poco male).

Salvare capra e cavoli
L’upgrade del PC mi ha fatto nascere la voglia di risolvere questa situazione. Parlando con amici, reali e virtuali, parlandone con mio fratello, etc. etc., sono giunto ad una conclusione: avevo una cartella Documenti decisamente troppo corpulenta. Nno gestisco i files del caso Ruby, non ho nulla a che fare con l’assassinio di Kennedy, non lavoro alla Nasa per cui di missioni su Marte non se ne parla, non lavoro nella fotografia ad alta qualità. Per cui era assurdo avere 129GB di Documenti.

Riflettendoci, quindi, ho riorganizzato le cose. Ho creato altri folder:

  • Z:DataBackup Giochi (contiene gli installer dei giochi acquistati e scaricati da Steam, per evitare ogni volta il download: prima erano sotto Documenti ed occupavano 238GB)
  • Z:DataDownload (download di tutto ciò che arriva da Internet: prima erano sotto Documenti, il che non era proprio il massimo: non sono miei Documenti, ma sono semplici files scaricati)
  • Z:DataSkyDrive (cartella SkyDrive locale, che è sul cloud)
  • Z:DataTFS (cartella principale di TFS, non lavorativa, con tutti i miei sorgenti: è comunque tutto hostato sul TFS server)
  • Z:DataVM (macchine virtuali VirtualBox, parecchi GB, che prima occupavano spazio dentro Documenti)
  • Z:DataTools (software ed utility che funzionano anche in modalità portable, quindi non hanno bisogno di essere installati; software ed utility vecchi e nuovi, accumulati negli anni)
  • Z:DataArchivio

L’ultima cartella merita un discorso a parte. In Z:DataArchivio ho praticamente backuppato tutti i files vecchi, che non mi servono più, ma che non posso nè voglio comunque cancellare. Sono andato praticamente a replicare la stessa struttura di folder della cartella Documenti, solo che qui c’è roba vecchia, che magari chissà quando mi servirà (mai?).

Per finire…
Con tutti questi accorgimenti, adesso dentro Z:DataDocumenti ho solamente i files che mi servono davvero, escludendo tutti quegli elementi che prima sporcavano la situazione. Nel momento in cui vi scrivo, la cartella Documenti occupa 8,43GB. Con questi ordini di grandezza, Windows Search non dà più problemi, gli indici occupano il giusto (1,01GB), e lo posso tenere avviato senza più problemi. I backup (gestiti per la cronaca con True Image 2013) sono molto più rapidi e leggeri.

Il sunto di tutto questo è: predisponetevi un disco Documenti (spero che lo abbiate già fatto da anni, questo lavoro), e createvi tanti folder per “suddividere” i vostri contenuti, seguendo le raccolte di Windows (come ho inizialmente fatto io) ma non solo. Mantenete i Documenti piccoli e leggeri, ma fate comunque in modo di avere sempre tutto con voi: l’ultima cosa che vi auguro è di essere in un luogo senza connessione e di dover aprire il file XYZ. Il disco Documenti deve contenere tutto quanta la vostra vita digitale. Ma dentro la cartella Documenti devono esserci solo i contenuti più attivi.

Polemica finale
Non è proprio una polemica, è solo una precisazione. Sono abbastanza sicuro del fatto che – presi 100 utenti Windows a caso – ognuno ha le proprie abitudini, usanze, credenze, modalità d’uso, sensibilità differenti. Quindi può essere benissimo che tutto ciò di cui vi ho parlato in realtà pensate sia un’idiozia; o magari altri lo troveranno utile. C’è chi userà un disco esterno su USB, chi direttamente un NAS da usare via rete perchè magari ha una rete Gigabit ultra veloce, etc. etc. Insomma, ogni ha la sua testa, soprattutto se siete dev o utenti esperti. Altrimenti spero di esservi stato un po’ di aiuto.

Send to Kindle
Hardware

Se hai Windows Phone, comprerai un altro Windows Phone

Il 21 Ottobre 2010 – se ricordo bene, era il day zero – ho acquistato il primo Windows Phone della mia vita. Era un LG Optimus 7. Davvero un bel prodotto, pagato all’epoca ben 400 euro. Quell’LG poi è passato di mano: prima a mio fratello (io son passato ad un HTC HD7), poi a mio padre (quando mio fratello è passato a sua volta ad un Nokia Lumia 800).

Mio papà, classe ‘46, fa un utilizzo molto semplice del suo smartphone. Telefona, messaggia, utilizza poche app (in primis Endomondo, per tracciare i suoi allenamenti in bicicletta), scatta foto. Qualche volta apre Internet Explorer, dà un’occhiata a Facebook, e poco altro.

Questa mattina l’Optimus 7 ha smesso purtroppo di funzionare. Lo si accende, e rimane freezato sul logo LG. Sotto carica diventa bollente, e poi non fa più una piega. Senza battere ciglio, ho subito comprato un altro Windows Phone, più evoluto, un Nokia Lumia 520, che monta Windows Phone 8.

Voglio essere ferreo su un punto. Non comprerei mai per mio padre un iCoso, e nemmeno un robottino Android. Per un semplice fatto: per tranquillità. Se mio padre mi fa una qualsiasi domanda riguardante lo smartphone (come si toglie il volume, come si installa un’app, come si cambia lo sfondo, come si mandare un MMS, qualsiasi altra cosa vi venga in mente) un conto è rispondere parlando di un telefono che conosci bene, un altro conto è parlare di un telefono di cui invece non si conosce nulla, e quindi devi perderci su un po’ di tempo. Quindi per evitare di diventare pazzi ed imparare una nuova piattaforma, per rispondere ai suoi dubbi, ho preferito ancora Windows Phone.

Oltre a questo, ci sono altre cose da dire. Una volta che entri a far parte di una “ecosistema”, è difficile lasciarlo. Questo vale per Windows Phone e per iOS, Android non so ma non credo. Domani, quando a casa arriverà il Lumia 520, sarà estremamente semplice essere ancora produttivi. Basterà fare login con il Microsoft Account, ed automaticamente il tutto si sincronizzerà: rubrica, foto, SkyDrive. Tutti i contenuti appariranno come per magia sul nuovo telefono. Ve li ricordate i tempi in cui – cambiando telefono da una marca all’altra – bisognava impazzire per trasferire contatti e contenuti dal vecchio al nuovo? Spariti, grazie a due paroline magiche: cloud e Windows Phone.

Queste considerazioni qui sopra valgono anche per iOS, chiaramente. Il concetto è sempre quello: se fai parte di una piattaforma X, molto probabilmente ci resterai a lungo, perchè è molto più semplice muoversi all’interno della stessa, piuttosto che cambiare. E quindi perchè non iOS? Per un mucchio di ragioni. Mio padre utilizza Windows 8, e quindi tutti i contenuti sono sincronizzati. Windows Phone è molto più semplice e leggero, rispetto all’OS della mela: mio padre trova tutto il necessario, con la giusta semplicità e senza troppi sbattimenti.

Windows Phone è vincente, da questo punto di vista, ed inoltre non mi fa spendere come un iPhone, c’è più varietà di telefoni tra cui scegliere, etc. etc.

Chiudo il post con un piccolo aneddoto.

Mio padre, durante le sue ferie, ha utilizzato l’LG per scattare foto, della spiaggia, del campeggio, del cielo. Le solite cose, insomma. E’ tornato a casa da un paio di giorni, e questa mattina l’LG smette di funzionare. Era convintissimo di aver perso tutte le foto delle ultime settimane, se non tutte quelle della sua vita digitale. Aveva scattato alcune foto per poter vendere la sua roulotte, quindi una sorta di “album dedicato”, diciamo. Era un pochino disperato. Gli ho fatto fare un tentativo: “Papà, ” – gli ho detto – “vai a farti un giro su SkyDrive, non si sa mai. Se sei stato bravo, tutte le tue foto sono già finite online, sul tuo cloud, backuppate appena il tuo LG si è connesso alla WiFi di casa”. Era scettico, chiaramente, ma oggi pomeriggio quel tentativo l’ha fatto. Ha acceso il notebook che usava in vacanza, che è lo stesso che adesso è a casa, che monta Windows 8. Ha lanciato l’app SkyDrive, naviga un po’ nei folder, raggiunge il Rullino ed ecco per magia comparire tutte le sue foto. Tutte, non solo quelle delle ultime vacanze o della roulotte. Tutte tutte, tutte quante. Un enorme sorrisone è comparso sul suo volto. Nonostante l’LG abbia raggiunto la sua fine, così non è stato per le sue foto. Lui è felice e contento. Questo è il vero valore aggiunto del vivere all’interno di un ecosistema: un piccolo gruppo di sistemi operativi, di tool, di programmi, che collaborano per rendere la tua vita più semplice.

Send to Kindle
Hardware

Una missione lunga mesi: il mio nuovo PC desktop

E’ stata un’annata piuttosto intensa, per quanto riguarda il mio hardware. A Novembre ho preso un ultrabook di nuova generazione (Dell XPS 12), in casa mia girano nuovi smartphone, un nuovo tablet.

E due settimane fa è stata la volta di un nuovo PC desktop – che è decisamente l’hardware a cui tengo di più, per tutta una serie di motivi:

  • scelgo i componenti accuratamente
  • è il PC che utilizzo di più: per il lavoro (la società per cui lavoro, Brain-Sys, mi permette di lavorare da casa, quasi tutti i giorni), per il divertimento, per la simulazione di volo, etc. etc. E’ il PC che non deve mai smettere di funzionare!
  • l’assemblaggio: come si è capito, non sono il tipo che entra da Mediaworld o da altre catene ed escono con un PC nuovo (questa tattica va bene con un portatile, un mouse o un nuovo modem/router): a me il piace piace assemblarmelo da solo

L’ultimo upgrade risale all’estate 2009, quindi 4 anni fa. Direi un buon tempo, tutto sommato.

Perchè nel titolo parlo di una “missione lunga mesi”? Beh, perchè è circa da Natale che sono entrato nel mood dell’acquisto di un nuovo hardware: quindi accurate selezioni della mainboard, della CPU, della RAM (principalmente), ma anche un po’ di altre periferiche secondarie (SSD, per esempio, che è comunque una cosa acquistabile anche in un secondo momento). Ho cominciato a selezionare l’hardware, ed a tenere sott’occhio recensioni, siti e prezzi.

La missione si è conclusa con successo nella notte tra l’11 ed il 12 Luglio scorso.

E dal momento che viviamo in un’era molto social, vi riporto qui sotto anche i miei tweet, scritti durante il ritiro dei pezzi e durante l’assemblaggio. E’ stato divertente, tutto quanto: pianificare, ordinare, attendere, assemblare e vedere che poi tutto funziona! Sono sensazioni uniche, parlo sul serio, che solo chi ha questa passione può davvero capire fino in fondo.

Tweet 1 – Ritiro della Merce

Tweet 2 – Arrivo a casa, pronti all’assemblaggio

Tweet 3 – CPU e relativa ventola nuove installate

Tweet 4 – Installazione memoria RAM

Tweet 5 – La vecchia mainboard

Tweet 6 – Case pulito pulito, senza un filo di polvere

Tweet 7 – Nuova mainboard installata

Tweet 8 – ATI Radeon HD6870 (che già avevo)

Tweet 9 – Addio, cara vecchia Sound Blaster, e grazie

Tweet 10 – Il nuovo BIOS, o meglio UEFI

Tweet 11 – Installazione nuovo SSD

Tweet 12 – Ok, comincio a sentirmi a casa

E basta, direi che la carrellata dei tweet può chiudersi qua.

Aggiungo qualche nota di colore. Nonostante oggi io stesso preferisca affidarsi a negozi on-line (in primis Amazon, per capirci), ho preferito ancora una volta ordinare il tutto da Next, che ha diversi punti vendita a Milano ed hinterland. Sono bravi, cortesi, i prezzi non sono poi così malaccio; ed inoltre in caso di problemi so che c’è un negozio fisico in cui andare e riportare il pezzo difettoso. Oltre a questo, anche i tempi di consegna sono stati più che buoni: ho ordinato tutto l’8 Luglio, e nel tardo pomeriggio dell’11 era già arrivato tutto. C’è da dire che ho volutamente ordinato pezzi disponibili, o direttamente in Porta Romana, oppure negli altri punti vendita. Volendo risparmiare sulle spese di spedizione, ho deciso di farmi arrivare tutto nel loro negozio di Porta Romana a Milano. Quando mi è arrivata la mail di notifica dei pezzi arrivati, ho mollato tutto quanto e sono corso a ritirare i pezzi. Voglio ringraziare il buon Gabriele Gaggi (alias il mio capo), che non solo mi ha permesso questa fuga, ma mi ha concesso una giornata di ferie il giorno dopo per permettermi di assemblare tutto quanto senza fretta.

Passiamo alle cose più tecniche. Cosa ho comprato? Qual’è il mio nuovo desktop? Curiosoni! Cercherò di soddisfare la vostra curiosità, mi sembra giusto.

Mainboard
Gigabyte GA-Z77-D3H Z77 CrossFireX LucidVirtu Gen 3.0 4*DDR3 sk1155 Dvi/Vga/Hdmi ATX

CPU
Intel Core i7 3770 3.40GHz Cache 8MB Ivy Bridge LGA1155 BOX

Memoria RAM
Corsair 16GB Kit 2*8GB DDR3-1600 CMZ16GX3M2A1600C9 XMP serie Vengeance CAS9

SSD
Samsung SSD 250GB Serie 840 Sata III 540/250Mb/s 96K IOPS OEM

Ebbene sì, nonostante la mia grande riluttanza nei confronti degli SSD, alla fine no ho preso uno, aprofittando un’offerta di pochi giorni, proprio da Next. Oggi è il 23 Luglio, l’SSD funziona, ma rimango davvero molto scettico, sempre, faccio resistenza. Tutti mi dicono che anche i tradizionali HDD si rompono: ovviamente è così. Ciò nonostante, io ho HDD che funzionano da 4-5 anni, da 1TB, da 2TB, ed anche più piccoli. E funzionano perfettamente. Evidentemente ho fornitori migliori dei vostri, oppure – più realisticamente – ho alimentatori migliori, componentistica migliore della vostra, soprattutto in virtù del fatto che io parlo di PC desktop, e non di portatili, dove spesso e volentieri l’hardware è più integrato, e quindi più suscettibile a guasti. Non so, io parlo per la mia esperienza: voi continuate a fare e a credere come dite, io farò altrettanto.

Mainboard Gigabyte: un brand di cui mi fido, che ho già acquistato in passato, e che non cambierei con null’altro. Bios spettacolare, in 3D (ma non solo: c’è anche una modalità più classica). Scheda audio integrata (che uso – dopo anni ho abbandato Sound Blaster), scheda video integrata (che non uso – chiaramente – avendo una Radeon 6870).

Memoria RAM Corsair, molto performante, dedicata al gaming. 16GB totali, upgradibili a 32.

Il tutto è stato assemblato nella sera/notte tra l’11 ed il 12 Luglio. E’ stato divertente. Una cena a base di Fetta al Latte e di qualche bicchiere d’acqua, tanta tensione, molta attenzione. E tanta tanta soddisfazione dopo aver finito.

Caro PC desktop, per un altro upgrade ci rivediamo tra 4 anni circa!

Send to Kindle
Hardware

Il mio penultimo acquisto: Tastiera Gaming Logitech G510

Verso la fine di Giugno mi casca l’occhio su questa spendida tastiera Logitech, la G510, dedicata al gaming. Già da prima possedevo un’altra tastiera Logitech, la G11, un po’ vecchiotta, e che cominciava a far sentire la sua età (driver un po’ vecchiotti, tasto Shift destro che rimaneva incastrato, etc. etc.). Quando poi ho visto che la G510 è retroilluminata, potendo scegliere fino a 16 milioni di diverse tonalità di colore, ho capito di essermene innamorato e di volerla a tutti i costi. Vado su Amazon, un clic qua ed un clic là, l’ho ordinata al volo senza battere ciglio. Ricevuta in perfette condizioni il giorno dopo.

Dunque, cos’ha di speciale questa tastiera? Cosa è migliorato rispetto alla mia vecchia G11?
Cercherò di farvi un piccolo riassunto.

Innanzitutto, la G11 aveva una gran bella comodità: integrate nella tastiera c’erano due porte USB aggiuntive, comodissime per chiavette USB, un joystick, periferiche da collegare saltuariamente. La G510 perde questa funzionalità, ma ne aggiunge altre.

Entrambe le tastiere hanno i fantastici Tasti G, quelli che io chiamo i “Tasti del Piacere”! In pratica, son 18 tasti (da G1 a G18) completamente programmabili grazie al software Logitech che va installato. In realtà, le combinazioni gestibili sono 54 perchè è possibile switchare su 3 modalità differenti. Cosa è possibile assegnare a questi tasti G? Molte cose:

  • combinazioni di tasti (sequenze di stringhe, insomma, utili magari in qualche videogioco)
  • funzioni multimediali
  • collegamenti ad applicazioni installate (questa è la funzione che utilizzo più spesso: ad ogni tasto G ho associato le applicazioni che utilizzo più spesso, come Word, Paint.Net, Team Viewer, Outlook, Digsby, le cartelle più comuni sul PC che mi servono, Live Writer, etc. etc.). E’ davvero comodo, perchè mi basta premere il tasto G e mi si apre l’app associata, e dopo un po’ si va veramente d’istinto. Io ho associato al tasto G17 un template di una mail di Outlook: quando lo premo mi appare la finestra di una nuova mail, già precompilata con destinatario/oggetto, e che vado a scrivere di volta in volta
  • funzioni mouse
  • diverse altre cosucce

Questa funzionalità dei Tasti G, che è la mia preferita, è identica tra la G11 e la G510. Tra l’altro i profili che si programmano possono essere esportati/importati, per cui è molto rapido e semplice riprenderli in caso di formattazione. Entrambe sono retroilluminate, caratteristica che ormai reputo indispensabile per lavorare e per giocare. Ma con la G510 posso scegliere il colore che voglio, scelto tra una gamma assolutamente fantastica che comprende 16 milioni di colori. Pazzesco, fantastico!

La G510 ha due connettori separati per cuffie e microfono. Molto comodo, per me, soprattutto quando volo in rete. La G510 ha un display LCD monocromatico (non ricordo la risoluzione) su cui di default girano delle piccolo applet: orologio di sistema, prestazioni del sistema (mostra la memoria RAM occupata e la % di CPU che sta lavorando), e piccole altre cose. Sul Web si trovano poche altre applet, a dir la verità. Molto comoda per me è l’applet integrata in Team Speak 3.

Anche la G510 è completamente multimediale: ci sono tasti dedicati per fare play/stop di musica. Bella la rotellina per regolare il volume (la G11 aveva i classici tasti), mentre qui c’è proprio una rotella che dà la sensazione di aver a che fare con un aggeggio analogico.

Le dimensioni sono generose, quindi adatte ad una bella scrivania grande. E’ una full keyboard, c’è il tastierino numerico sulla destra, i Tasti G sulla sinistra, c’è lo schermo sulla parte superiore e la fascia appoggia-polsi sulla parte inferiore. Ci sono i tasti cursore, etc. etc. Ah piccola parentesi: c’è uno switch che disabilita a tasti Windows mentre si gioca, per evitare di attivare il Desktop mentre magari si è alle prese con un combattimento in Call Of Duty! La posizione dei tasti è simile alla G11: appena l’ho collegata e configurata, mi sono subito trovato a mio agio.

Insomma, totalmente promossa, la G510. L’unica pecca, lo ricordo, è l’assenza delle due porte USB, che in certe circostanze trovavo davvero utile. Diciamo che ne faccio a meno perchè ho altre porte a disposizione, però voi tenete presente questo particolare, perchè non si sa mai.

Send to Kindle
.NET World

VS2012, Web Api, Twitter e Feed RSS

Questo post può essere considerato una “seconda parte” di quest’altro mio post, di qualche giorno fa. Ho ricevuto un solo commento, dicendomi che la cosa era per “smanettoni”. Troppo complicato, insomma. Ho quindi creato una solution Visual Studio 2012, ridotta all’essenziale, che esprime tutti i concetti base spiegati l’altra volta. Gli ingredienti sono i seguenti:

  1. Visual Studio 2012
  2. ASP.NET MVC 4, specificatamente Web Api (non ci sono view, insomma, ma le action restituiscono dati puri, via http)
  3. Json.Net
  4. qualche riga di C#

La solution è scaricabile dal mio account SkyDrive.

L’unica modifica che dovete apportare è modificare il file JsonDownloader.cs, valorizzando correttamente le variabili stringa oauth_token, oauth_token_secret, oauth_consumer_key e oauth_consumer_secret. Queste quattro stringhe servono per l’autenticazione oAuth obbligatoria per le nuove API Twitter. Per ottenere le vostre credenziali dovete registrare la vostra app sul sito https://dev.twitter.com/ (l’account per il login è lo stesso del vostro utente Twitter, chiaramente). Una volta inserite le vostre credenziali, siete a posto. Eseguendo il progetto, verrà aperto il browser all’indirizzo http://localhost:5279/api/rss/GetRssFeedTwitter?id=IgorDamiani: il codice non farà nient’altro che prelevare il JSON da Twitter e restituirvi sul browser l’XML del feed RSS. Chiaramente è sufficiente passare un utente diverso come id per ottenere altri feed.

Nota bene
In base alle vostre esigenze, vorreste modificare il codice delle classi RssParser e RssItem. Queste classi sono le responsabili della conversione tra JSON e XML. Le mie esigenze non sono troppo complesse: visualizzando i tweet su device mobili (app per Windows Phone e Windows 8), mi serve solamente il testo del tweet, la data di pubblicazione, e poco altro. Il testo contiene chiaramente il messaggio, l’eventuale link contenuto, e basta. Ma – ripeto – più che sufficiente, nel mio caso. Voi magari avete altre esigenze, più o meno complesse, quindi potrà essere necessario adattarle: ma questo dipende da voi.

Send to Kindle
Software

Recuperare spazio dal proprio SSD con Windows 8

Se avete un SSD piccolo e montate Windows 8, c’è un piccolo modo piuttosto simpatico, per recuperare qualche GB dal disco. Questa volta la faccio breve: seguite questa procedura pubblicata su Tom’s Hardware. Windows 8 alloca un certo numero di partizioni sul vostro disco fisso: una di queste è una Recovery Partition (Partizione di Ripristino), di diversi GB, che teoricamente dovrebbe venir utilizzata in caso di malfunzionamenti del sistema operativo. La cosa più furba è – imho – di spostare questa partizione su un device esterno, come una chiavetta USB. Che è esattamente la procedura illustrata sopra.

La cosa che non viene indicata dall’articolo è che al termine della creazione Windows vi propone di cancellare la partizione appena trasferita. Se rispondete di sì, Windows cancellerà la partizione ed unirà lo spazio alla partizione dedicata al disco C.

Detto questo, sul mio Asus Vivo Tab RT la partizione è da 4GB, mentre sul mio Dell XPS 12 è da 6GB. Poca roba, magari, ma può servire.

E pensare che tutto questo è nato anche da un thread sui forum Dell Community ai quali ho partecipato, chiedendo specificatamente dell’hardware Dell e dello UEFI.

Send to Kindle
My personal life

Windows 8 è come una città

Ecco uno dei miei tanti deliri.

Ieri sera ero a cena a Milano, in un ottimo locale consigliatoci dall’amico Andrea Saltarello. Ero fuori con la famiglia, per festeggiare San Giovanni con qualche giorno di ritardo (per capirci: mio padre si chiama Giovanni). Dopo esserci riempiti lo stomaco come non mai, abbiamo fatto due passi. Ok, il ristorante è un po’ in periferia, quindi non è che la skyline fosse particolarmente suggestiva, ma ci siamo divertiti comunque: mia madre ha riconosciuto dei posti dove lavorava da giovane, mio padre mi ha fatto vedere la via dove a 19 anni partecipò alla sua prima gara ciclistica, e via dicendo.

Durante questa passeggiata digestiva, ho avuto un flash, chiaro e limpido come se ci fosse il sole.

Windows 8 è come una città.

Ottieni differenti punti di vista in base al mezzo di trasporto che decidete di utilizzare. Se prendete la metropolitana ragionate per fermate. Anche se prendete un tram ragionate per fermate, ma con una precisione maggiore rispetto alla metro. Se prendete un taxi, dovete già essere più precisi, fornendo al tassista via e numero civico. Se prendete una bicicletta BikeMi, potrete esplorare la città negli angoli e nei luoghi più remoti, a patto di essere allenati e di sapervi orientare. Se invece siete a piedi, probabilmente avete le stesse potenzialità di una bicicletta, ma con una gittata forse minore. In base al mezzo che prendete, vivete la città in modi diversi: in metropolitana vi accorgete della città solo quando riaffiorate in superficie: prima è solo un tunnel lungo e buio. Se viaggiate in tram, già le cose migliorano. Se vi spostate in bici o a piedi, vi accorgerete di ogni più piccola cosa: del cestino all’angolo, delle fragranze che arrivano dal panettiere aperto, dalla buca sulla strada che dovete schivare, fino ad arrivare alle grandi piazze, nelle quali arriva anche la metro. E chiaramente potete switchare da un mezzo all’altro, in base alle necessità: si arriva a San Donato Milanese in auto (per chi come me viene da fuori città), si prende la linea gialla, si arriva per esempio in Porta Romana; poi si inforca una bici BikeMi e si raggiunge Piazza Duomo, si fanno due passi a piedi. Poi si prende un tram, si scende, si entra in un negozio. Si riprende la metro e si torna a casa.

Insomma: si utilizza il mezzo migliore in base a ciò che si deve fare, ottenendo esperienze diverse.

Windows 8 è tutto questo.

Windows 8 è l’unico sistema operativo che offre diversi mezzi di trasporto diverse modalità di utilizzo: metro, tram e bicicletta tastiera, mouse e touch (e chissà cos’altro in futuro…Kinect? Google Glass? Lettura del pensiero?). Si utilizza l’uno e l’altro in base a ciò che si deve fare. Si switcha tra l’uno e l’altro in base a ciò che si deve fare. E tutto questo con lo stesso sistema operativo. Per questo motivo non hanno davvero alcun senso le critiche:

  • il pulsante Start NON deve esserci perchè l’interfaccia utente è orientata al touch
  • la Start Page NON deve esserci su sistemi desktop o server
  • il desktop NON deve esserci sui tablet Windows 8

Quello che dovete davvero capire è che un tablet con Windows 8 può tranquillamente diventare un portatile, un ultrabook, un netbook. Io ho un Asus Vivo Tab RT che è un tablet, ma al quale saltuariamente collego una tastiera ed un mouse, e lo utilizzo come se fosse un normale portatile. Vi farò una foto appena posso. Perciò, per favore, smettetela, smettetela, smettetela di dire cosa dovrebbe esserci o non esserci su Windows 8: ci deve essere tutto, perchè potete e dovete switchare da una modalità di utilizzo all’altra. In base a ciò che state utilizzate, vivete l’esperienza Windows 8 in modi diversi, esattamente come accade con una città ed i suoi mezzi di trasporto.

Se state usando il touch, sullo schermo ci andate solo con le dita, per cui avete una precisione di un certo tipo. Non riuscirete mai ad usare Excel con profitto, per esempio, però potete fare altre cose, sfruttare le gesture, eccetera eccetera. Se usate tastiera & mouse, siete davanti ad un normale PC: avrete la normale precisione del mouse. Windows 8 DEVE contenere tutte le modalità di utilizzo, perchè potete switchare dall’una all’altra.

Windows 8 è un software, e come tutti i software guidano il futuro. Perciò se è vero che un PC di oggi è piuttosto “stabile” come utilizzo (un portatile è un portatile, un desktop è un desktop), è anche vero che pian piano, col passare del tempo, questo scenario cambierà. Può essere che ci vogliano tre mesi, un anno, cinque anni.

Può essere che Windows 8 sarà protagonista in questo cambiamento, oppure no. Ma questa è la mia idea, semplice e pura.

Send to Kindle
Software

Bozze di Windows Live Writer su SkyDrive

Premessa: ho due PC, un desktop ed un ultrabook. Su entrambi ho installato Windows Live Writer, per scrivere – quando ne ho tempo, come adesso – sul mio blog. Stamattina mi sono posto la seguente domanda: posso cominciare a scrivere un post su un PC, salvare la bozza e riprendere la scrittura sull’altro PC, senza troppi sbattimenti? La risposta è chiaramente sì.

Ed il tutto passa attraverso SkyDrive.

Di default, Windows Live Writer salva le bozze all’interno della vostra cartella Documenti. Qui lui crea una cartella “My Weblog Posts” (vado a memoria), all’interno della quale ce ne sono altre due: Drafts e Recent Posts. E’ possibile spostare questa struttura di cartelle, magari spostandola all’interno di quelle gestite da SkyDrive? Ovvio che sì.

Seguendo questo articolo, ho scoperto che si può fare.

Basta andare nel registry, nel path HKEY_CURRENT_USERSoftwareMicrosoftWindows LiveWriter, creare una chiave chiamata PostsDirectory e valorizzarla con un folder gestito da SkyDrive.

Fatto questo, WLW salverà le bozze ed i post pubblicati in quel folder. Quando premerete il pulsantino per salvare la bozza, SkyDrive che giace attentissimo nella vostra tray-bar se ne accorgerà immediatamente, e sincronizzerà il post sul cloud (upload). L’altro PC reagirà in modo inverso, ovvero: si accorge che qualcosa è cambiato e scaricherà la nuova bozza. Ed il gioco è fatto!!

Send to Kindle
.NET World

Come ottenere un feed RSS con le Twitter API in versione 1.1

Da circa una decina di giorni, Twitter ha apportato grossi cambiamenti alle proprie API, cambiamenti che hanno afflitto me – come developer di app per Windows Phone e Windows 8 – e non solo me. Basta una googlata per venire a sapere che chiunque abbia sviluppato app (per OS mobile, quindi iOS ed Android, ma non solo) che accedono a Twitter sia rimasto pesantemente fregato.

Prima infatti era possibile effettuare una chiamata via http al seguente url:
http://api.twitter.com/1/statuses/user_timeline.rss?screen_name=IgorDamiani

Con questo url si otteneva un bel feed RSS dell’utente Twitter passato come parametro, in questo caso “IgorDamiani”, cioè me stesso. Il feed era quindi consumabile dalle app per visualizzare tutti i tweet di un certo utente. Questa cosa era valida fino a 10 giorni fa, appunto. Adesso dà un messaggio inequivocabile: “The Twitter REST API v1 is no longer active. Please migrate to API v1.1.”. Morale: bisogna usare le API 1.1, che sostanzialmente hanno introdotto due cambiamenti:

Bella fregatura, vero? Ovviamente la soluzione c’è, basta adeguarsi, e fortunatamente io sono partito con qualche mese di anticipo, facendo prima di tutto in modo di far puntare tutte le mie app ad un unico url, hostato sui miei server, in modo tale da diventare trasparente rispetto ai cambiamenti apportati da Twitter. Quindi, diciamo, se ho 60 app che utilizzano Twitter, non ho cablato in ciascuna app l’url di Twitter, ma un mio url, che sarà sempre valido, dal momento che sono io a gestirlo e farò di tutto per non cambiarlo mai! Quindi, supponiamo, io ho un url nel formato seguente:

http://mioserver/Dammi_Il_FeedRssTwitter?id=<TwitterUsername>

Ho rimosso il collegamento perchè comunque non sarebbe valido. Questo url è un entry-point per tutte le mie app che devono mostrare un feed Twitter. Quindi, l’app “I Love Milan” per Windows Phone chiamerà l’url usando “acmilan”, l’app “Nove Colli” chiamerà l’url con “novecolli”, mentre l’app “Piloti Virtuali Italiani” (per Windows Phone e Windows 8) chiamerà l’url usando “pvi_org”. Questo è un mio servizio, che fa da adapter tra ciò che Twitter espone con le sue API e ciò che le mie app si aspettano. Quindi: con le API 1.0 invocavo Twitter, ottenevo un RSS e lo passavo così com’era alle mie app. Cone le API 1.1 invoco Twitter con l’autenticazione, ottengo un JSON, costruisco da zero un feed RSS in formato XML e lo restituisco a chi di dovere.

Passo 1 – Come ottenere il JSON

Il primo passo è utilizzare questa classe JsonDownloader che ho scritto questa mattina (e basandomi su questo articolo su CodeProject), molto semplice, che fa la chiamata verso Twitter, in modo autenticato, che vi restituisce una string, che in pratica è il JSON da parserizzare.

Lo zip contiene un file JsonDownloader.cs, da includere nel verso progetto e modificare come necessario. L’unica accortezza – cosa che prima non era necessaria – è che dovete necessariamente registrare la vostra app su https://dev.twitter.com/, per ottenere quattro key da inserire nel codice per l’autenticazione OAuth, ovvero:

  • Consumer Key
  • Consumer Secret
  • Access Token
  • Access Token Secret

Nel .cs che scaricate gli oggetti string ci sono già, pronti all’uso, vanno solo valorizzati correttamente.

Passo 2 – Parserizzare lo JSON ed ottenere l’XML del feed RSS

Usando la libreria Json.NET, reperibile su Twitter, le cose sono semplici, ma mica tanto. Innanzitutto, immaginiamo una chiamata del genere:

string rss = RssParser.GetRss(json, id);

Da questo si evince che abbiamo una classe statica RssParser, che espone un metodo pubblicato GetRss. Il cui codice è il seguente:

public static string GetRss(string json, string screenName)
{
    try
    {
        if (!string.IsNullOrEmpty(json))
        {
            json = "{"root": " + json + "}";

            var result = JObject.Parse(json);
            var elements = (JArray)result.Children().Children().FirstOrDefault();
            var first = ((JObject)elements.FirstOrDefault()).Property("created_at").Value.ToString();
            var firstDate = RssItem.ParseDateTime(first);

            StringBuilder bld = new StringBuilder();
            string feed = GetRssHeader();
            string itemBlock = GetRssItemBlock();
            bld.AppendFormat(feed, screenName, firstDate, screenName);

            foreach (JObject elem in elements)
            {
                RssItem item = RssItem.Get(elem);

                if (item != null)
                {
                    bld.AppendFormat(itemBlock, item.Title, screenName, item.Id,
                        item.FormattedDate, item.FormattedDate,
                        screenName, item.Id);
                }
            }

            bld.Append("</feed>");

            return bld.ToString();
        }
        else
        {
            return string.Empty;
        }
    }
    catch (Exception exc)
    {
        return exc.ToString();
    }
}

Questo metodo esplora lo JSON e restituisce la string del feed RSS. Navigando sugli oggetti JObject e JArray, e nelle relative proprietà, costruisco di fatto. Ci sono due metodi GetRssHeader() e GetRssItemBlock() che non fanno altro che recuperare delle embedded resource del progetto: di fatto contegono rispettivamente lo XML di intestazione del feed XML:

<?xml version="1.0" encoding="utf-8" ?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
<title>Twitter / {0}</title>
<id>tag:twitter.com,2007:Status</id>
<link type="text/html" rel="alternate" href="http://twitter.com"/>
<updated>{1}</updated>
<subtitle>Twitter updates from {2}.</subtitle>

e del blocco da ripetere per ciascun tweet:

<item>
<title>{0}</title>
<content type="html">content</content>
<id>tag:twitter.com,2013:http://twitter.com/{1}/status/{2}</id>
<pubDate>{3}</pubDate>
<updated>{4}</updated>
<link type="text/html" rel="alternate" href="http://twitter.com/{5}/status/{6}" />
</item>

All’interno del ciclo foreach viene costruito un oggetto RssItem:

public class RssItem
{
    static CultureInfo culture = new CultureInfo("en-US");

    public string Id { get; set; }
    public string Title { get; set; }
    public DateTime Date { get; set; }
    public string FormattedDate { get; set; }

    public static RssItem Get(JObject obj)
    {
        RssItem result = new RssItem();
        result.Id = obj.Property("id").Value.ToString();
        result.Title = obj.Property("text").Value.ToString();
        result.Date = ParseDateTime(obj.Property("created_at").Value.ToString());
        result.FormattedDate = result.Date.ToString("dd/MM/yyyy HH.mm.ss");

        return result;
    }

    public static DateTime ParseDateTime(string value)
    {
        // Fri Jun 21 10:22:17 +0000 2013
        try
        {
            int index = value.IndexOf('+');

            if (index != -1)
            {
                // Devo rimuovere il "+0000 "
                string partToRemove = value.Substring(index, 6);
                value = value.Replace(partToRemove, string.Empty);
            }

            return DateTime.ParseExact(value, "ddd MMM dd H:mm:ss yyyy", culture, System.Globalization.DateTimeStyles.None);
        }
        catch (Exception)
        {
            return DateTime.Now;
        }
    }
}

Il metodo pubblico Get restituisce un’istanza di RssItem, valorizzata in base al JObject corrente. All’interno ci sono un po’ di operazioni di parsing, soprattutto sulle date, che andrebbero magari riviste per essere ottimizzate, ma per adesso funzionano!

Passo 3 – Fine!

E fine. A questo punto abbiamo una string che in pratica è il feed RSS da dare in pasto alle nostre applicazioni. Se avete qualche decina di app che improvvisamente avevano smesso di funzionare a causa di questa breaking change di Twitter, le vedrete riprendere vita di colpo! La cosa molto interessante che il tutto è gestito in modo centralizzato, e non sarete obbligati a rilasciare nuove versioni delle vostre app, inseguendo i cambiamenti di Twitter. Qualsiasi modifica che si renderà necessaria è centralizzata con questo codice, e per le app è del tutto trasparente.

Send to Kindle