Perché l’Apple TV è una sola (nel senso di fregatura)

Sono ormai 3 mesi che ho comprato la Apple TV 4K, e mi sono reso conto che sono soldi buttati. In primo luogo l’Italia è mal servita in quanto ad app e funzionalità. Gran parte di quanto pubblicizzato, da noi non funziona, neppure Siri è abilitato.


Poi se guardiamo le applicazioni disponibili nel bel paese, scopriamo che molte di quelle presenti nelle Smart tv non ci sono, e che i broadcaster nostrani, tipo Sky, ben si guardano da fornire un app compatible, nonostante ci sia per iPad, mentre all’estero le troviamo tutte.
Poi la competizione porta a delle limitazioni davvero ridicole, come i video di YouTube non sono a 4K perché Apple non implementa i formati pensati da Google.
Insomma, se confrontata con una Smart TV Samsung o LG, che conosco bene, non da nulla in più da punto di vista squisitamente televisivo.

Se invece guardiamo al mondo dei giochi, allora le cose cambiano. Ci sono parecchie app videoludiche, che però costano carissime rispetto alla versione iPad e spesso sono di qualità inferiore.

Resta solo la condivisione dello schermo nativa per i dispositivi Apple, ma detta tutta per un uso domestico, non vale poi molto.

Tirate le somme, per gli stessi soldi si può acquistare una console che di certo ci darà maggiori soddisfazioni.

CRM 2018 – cosa aspettarsi dal mercato

Il trend per l’anno alle porte è già ben delineato: si chiama AI.

Vuoi perché è il principale driver del mercato informatico, vuoi perché è la chimera di tutti i commerciali, ovvero poter lavorare meno e meglio, con un software che fa da solo le operazioni più tediose.

L’intelligenza artificiale è una realtà, la vediamo in azione quotidianamente quando utilizziamo il navigatore di Google, e chiediamo delle informazioni a Siri. Ora è arrivato il momento di portarla anche nel CRM.

E’ una sfida molto importante, e non sarà affatto semplice comprendere e analizzare gli schermi comportamentali utilizzati dagli utenti, distinguendo le azioni che portano al successo di una vendita da quelle che invece non concludono.

Un aspetto fondamentale per raggiungere questi obiettivi è un utilizzo continuo e coerente dello strumento, ed evitare che parte del processo avvenga al di fuori di esso, impedendo così al software di avere una copertura completa del ciclo di vendita.

Perciò non ci sarà solo un’evoluzione della piattaforma di CRM, ma dovrà anche evolversi il modo in cui viene utilizzata dagli utenti, che spesso si limitano a rendicontare, in modo rapido e superficiale, piuttosto che pianificare le attività di vendita.

Il primo passo è già stato fatto da sistemi esperti che analizzano l’evoluzione dei trend all’interno dei CRM e suggeriscono all’operatore le azioni da svolgere per migliorare le sue performance, sulla base dell’analisi del pregresso.

Ma sarà lo step successivo a dare una svolta radicale al modo di lavorare con un CRM, ovvero quando i workflow relativi a processi di vendita o di assistenza, si adatteranno automaticamente in funzione delle esperienze precedenti analizzate dal sistema di AI.

Come per tutte le innovazioni, all’inizio ci sarà molto “rumore per nulla” e molte false partenze, ma sono convinto che beneficeremo tutti dei sistemi intelligenti che stanno rapidamente permeando il nostro modo di lavorare, permettendoci di essere più efficienti e meno ripetitivi.

SqlServer e parallelismo, la chiave per incrementare le performance in pochi secondi

Nelle configurazioni di SQLServer c’è una sezione denominata Parallelismo.

Questa sezione contiene due chiavi che di default sono impostate con dei parametri eccessivamente aggressivi, e che non danno beneficio nella maggior parte dei casi. Agendo su queste due chiavi, si può migliorare le perfomance senza operare complesse attività di tuning.

  1. Massimo grado di parallelismo (Maximum Degree of Parallelism) è impostato di default a 0, il che significa senza limiti. Fa da se che SqlServer utilizza tutte le CPU disponibili durante l’esecuzione di una query. Se eseguiamo esclusivamente query molto pesanti e su un grandissimo numero di dati, questa configurazione è corretta, ma in un uso applicativo, questo approccio limita la concorrenza, creando dei colli di bottiglia. E’ preferibile limitare il parallelismo dai un numero di socket che permetta un livello di concorrenza sostenibile.

    Ad esempio, un una configurazione con 4 core, sentiamo il valore a 2.

  2. Costo soglia per parallelismo (Cost Threshold for Parallelism) è impostato di default a 5. E’ un valore un pò troppo basso, che induce l’ottimizzatole a valutare piani alternativi di esecuzione che possano utilizzare più thread contemporaneamente.

Anche questa impostazione è ideale per applicazioni di BI o OLTP, ma totalmente inadeguato per applicazioni con IO dati generico, come CRM e gestionali.

Va assolutamente aumentato ad almeno 30, ma c’è chi consiglia di portarlo anche a 50.

Personalmente ho riscontrato un beneficio immediato da un cliente che lamentava rallentamenti, con un crollo del carico della CPU dal 70% al 30% e un immediato raddoppio delle operazioni batch eseguite al secondo. Un must per l’ottimizzazione delle performance.

Sono delle impostazioni poco note ai più, ma fidatevi che avrete un server molto più performante con un operazione di pochi secondi.

Windows 10 bloccato alla build 10240

L’altro giorno sono tornato a casa e ho trovato il PC con Windows completamente andato, dopo un Windows Update.
Non c’è stato modo di ripristinarlo, quindi ho deciso di ripartire con un installazione pulita.

Reinstallato tutto, ho ripristinato tutte le applicazioni che uso abitualmente (grazie Chocolatey), ma mi sono accorto che Docker per Windows non partiva dicendo che non avevo una build 10586 o superiore.

A quel punto ho iniziato ad indagare, perchè Windows Update mi diceva che non ci sono aggiornamenti, e così ho scoperto che ci sono altre persone bloccate a questa build.

La soluzione che mi ha permesso di superare l’empasse è la seguente:

Andate su https://www.microsoft.com/en-gb/software-download/windows10 e scaricate Windows 10 Creators Update. (Precedentemente si era installa da sola).

A quel punto basta seguire i vari passaggi per avere Windows aggiornato all’ultima build.

Tutto qui, ma come al solito le cose semplici se nessuno te le dice diventano complicate.

Scrivere un immagine ISO da MacOS-OSX su una chiavetta USB

Ormai le unità CD/DVD sono completamente scomparse dai nostri Mac, ma spesso rimane la necessità di installare qualche distro Debian o Ubuntu su un PC che a sua volta non ha il DVD.

Il problema nasce una volta scaricato il file ISO dal sito della distro: come faccio a metterlo sulla chiavetta?

Fortunatamente il Mac ha tutto quello che serve a bordo, ma dobbiamo operare da command line, quindi cominciamo con l’aprire il terminal.

La prima cosa da fare è trasformare l’immagine ISO in un formato avviabile da chiavetta USB, perchè nel suo formato base non è “Bootable”.

Il comando da esegire è:

hdiutil convert -format UDRW -o Downloads/ubuntu.img  Downloads/ubuntu-16.04.2-desktop-i386.iso

Il file che otterremo ha l’estensione .dmg, è un default del Mac, ma va bene lo stesso.

Il passo successivo è infilare la chiavetta USB nello slot, e vedere come è stata montata dal sistema.

per fare ciò, eseguiamo il seguente comando:

diskutil list

il risultato sarà:

dev/disk0 (internal, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *500.3 GB disk0
1: EFI EFI 209.7 MB disk0s1
2: Apple_CoreStorage Macintosh HD 499.4 GB disk0s2
3: Apple_Boot Recovery HD 650.0 MB disk0s3

/dev/disk1 (internal, virtual):
#: TYPE NAME SIZE IDENTIFIER
0: Macintosh HD +499.0 GB disk1
Logical Volume on disk0s2
3AE302D4-9B15-463E-911C-87EF564A95E9
Unencrypted

/dev/disk2 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *7.9 GB disk2
1: EFI 209.7 MB disk2s1

Il device che andremo ad utilizzare è quello marcato come External – Physical, nel mio caso il /dev/disk2, ma può variare a seconda delle configurazioni.

Prima di tutto andiamo a recuperare tutto lo spazio utile con:

diskutil partitionDisk /dev/disk2 1 "Free Space" "unused" "100%"

Attenzione, questa operazione cancellera tutto il conetenuto della chiavetta.

Quindi proseguiamo con linstallazione dell’immagine appena creata con il seguente comando:

sudo dd if=~/Downloads/ubuntu.img.dmg of=/dev/rdisk3 bs=1m

Ci vuole un pò di pazienza, perchè la scrittura non da evidenza della progressione, quindi attendiamo finchè il cursore non ritorna riportando la quantità di dati scritti.

Probabilmente il sistema ci restituirà anche un bell’errore, perchè il Mac non riconosce il filesystem. Se vi capita, semplicemente confermate l’espulsione, altrimenti, date il segente comando:

diskutil eject /dev/disk2

A questo punto avete la vostra chiavetta avviabile con l’installazione pronta per essere eseguita sul vostro PC.

Risolvere il proprio IP pubblico dalla shell di Linux

Quando abbiamo a disposizione un browser siamo abitati a digitare whatismyip o qualche altro sito che risolve l’indirizzo di provenienza della richiesta.

Se invece abbiamo bash aperto, il modo più rapito è

dig +short myip.opendns.com @resolver1.opendns.com

o meglio aggiungetevi un alias bashrc cosi non bisogna ricordarsi la sintassi

alias wanip='dig +short myip.opendns.com @resolver1.opendns.com'

a questo punto basterà digitare

$ wanip

per vedersi risolto il proprio indirizzo pubblico.

Il dilemma del curriculum. Memories.

L‘altro giorno, ho realizzato che da parecchi anni non aggiorno più il mio curriculum. Davvero tanti. D’altronde non mi è mai servito, e quando lo ho preparato la prima volta, il layout che andava di modaera ben diverso da quelli che vedo quotidianamente.

Devo dire che non apprezzo molto il “formato europeo”. E’ evidente che chi riceve migliaia di curriculum e deve scegliere velocemente preferisce un formato omogeneo e stringato per non può perdere tempo a leggere dei romanzi e che l’attenzione va colta con poche frasi ben strutturate.

Però se mi fermo a pensare a tutti i curriculum che ho letto, quello che mi è rimasto più impresso è uno ricevuto una decina di anni fa, dove un dipendente di HP mi ha mandato la storia della sua vita, fin troppo dettagliata, dove si poteva ben evincere le competenze al di là degli incarichi.

Non mi sembra una cosa proponibile per rivedere il mio curriculum, ma intanto ho deciso di scrivere le mie memorie professionali qui, sul mio blog per poi vedere cosa ne viene fuori.

Parlerò solo di informatica, partendo dell’inizio, e vediamo fino a dove ho voglia di arrivare e fino dove avrete voglia di leggere…

Stay Tuned…

Idetificare il “decision maker”

Indipendentemente dal settore in cui lavorate, identificare il “decision maker”, ovvero chi ha potere decisionale, è fondamentale per arrivare rapidamente ad una chiusura. Spesso la persona con cui trattate fa da frangiflutti per che veramente decide, raccogliendo informazioni su di voi e su cosa proponete, senza farli perdere tempo.Decision-Maker
Per questo è importante riuscire ad individuare chi è la persona che alla fine dirà si o no, per strutturare il discorso in modo da destare la sua attenzione anche se non è la persona con cui si sta parlando.
Fate di tutto per individuare chi decide, e trovate il modo di arrivare a lui, fissare un appuntamento e avere una reale chance di chiudere la trattativa.

Quindi, quando registrate la vostra opportunità, qualsiasi sia il suo esito, è importante annotare i ruoli delle persone con cui vi siete confrontati, così da mappare l’azienda e avere maggiori possibilità la prossima volta.

DDNS con CloudFlare

Anche questo blog, alla pari di molti siti utilizza CloudFlare come server DNS e Reverse Proxy di sicurezza.
E’ un servizio molto comodo e funzionale, però non prevede funzionalità di DDNS (Dynamic DNS), o almeno non è supportato dai principali firmware dei router, perché un pò complesso.
Comunque se come me avete il blog su un PC a casa, utilizzando le API di CloudFlare, potete impostare l’IP pubblico configurando un DDNS custom.

Vediamo come fare.

A differenza dei DDNS comuni in cui basta fare una richiesta ad un URL passando Username e Password, con Clocloudflare-1udFlare e le sue API, bisogna aggiornare a tutti gli effetti il record DNS del vostro sito web come fareste dall’interfaccia, ma in modo programmatico via API.

Per prima cosa bisogna farsi assegnare un API KEY dal pannello amministrativo di CloudFlare.

Quindi con la key aprite il seguente URL:

https://www.cloudflare.com/api_json.html?a=rec_load_all&tkn=LA_TUA_API_KEY&email=LA_TUA_EMAIL&z=IL_TUO_DOMINIO

Il rerver vi restituirà una JSON con il contenuto completo del vostro DNS. Cercate il record che volete aggiornare e segnatevi il rec_id per il nome WWW come ad esempio:

"rec_id": "111111111",
"rec_hash": "d3422c1234324e1ea1b23432a3fa12afa",
"zone_name": "straus.it",
"name": "www.straus.it",
"display_name": "www"

Individuato il rec_id avete tutto quello che serve per comporre una stringa da inserire nel router con i vostri parametri:

https://www.cloudflare.com/api_json.html?a=rec_edit&tkn=LA_TUA_API_KEY&id=IL_REC_ID_DEL_TUO_HOST&email=LA_TUA_EMAIL&z=IL_TUO_DOMINIO&type=A&name=www&[email protected]&service_mode=0&ttl=1

A seconda del router che utilizzate, l’IP da aggiornare viene espresso in modo diverso, nel caso del mio è @IP, sostituitelo con il vostro.

Ecco fatto, adesso l’HOST del vostro dominio viene aggiornato ad ogni cambio di IP, non serve più fare CNAME che puntano a servizi di DDNS come NOIP o DYNDNS.

Ridurre un disco VHD o VHDX in Hyper-V da PowerShell

Dopo aver tribolato per mezza giornata cercando di ridimensionare un disco in Hyper-V utilizzando gli strumenti della GUI, sono passato a PowerShell e da li ci sono riuscito senza incorrere in problemi di spazio disco e di permessi, e in metà del tempo stimato dall’interfaccia grafica, specie per ridimensionare la partizione.

I passaggi sono:

1. Ferma la VM

2. Monta il VHD con il comando mount-vhd dalla linea di comando:

mount-vhd path\drive.vhdx -passthru | get-disk | get-partition | get-volume
Questo comando fornisce tutte le informazioni relative alle partizioni contenute nel VHD, compreso la lettera del disco, la partizione di avvio (NON RIDIMENSIONARLA) e lo spazio recuperabile.

3. Ora puoi eseguire resize-partition, che ridurrà la partizione alla dimensione desiderata.

resize-partition –driveletter E -size 100GB
-driveletter è la lettera del disco che troviamo con il primo comando, –size è la dimensione a cui vogliamo portare la partizione.

4. Quindi smontiamo il disco con dismount-vhd:

dismount-vhd path\drive.vhdx

5. L’ultimo comando serve a ridimensionare il VHD:

resize-vhd path\drive.vhdx -ToMinimumSize

Questa operazione non è possibile se il disco è VHD, devi prima convertirlo in VHDX:

Convert-VHD path\drive.vhd path\drive.vhdx

Quest’ultima operazione la puoi fare anche da Hyper-V Manager.