Windows CE è morto? Lunga vita a Linux e Wine

(lo stile di scrittura di questo post è volutamente leggero, ma l’argomento è dannatamente serio!)

Ormai sono 18 anni che lavoro come firmwarista in ambito industriale e mi è capitato di vedere di tutto sugli schermi delle povere HMI: sistemi operativi proprietari, Windows 95, 98, XP e anche lo SCOMODISSIMO Windows CE!

Purtroppo, ma che dico, PER FORTUNA, Windows CE è stato finalmente decretato morto dalla Microsoft.

Questo decesso programmato ha portato molte aziende sull’orlo di crisi tecniche.

E ora come sostituiamo Windows CE?

La scelta banale potrebbe essere quella di portare tutto il software sulle moderne versioni di Windows. Peccato però che ci si dimentica spesso di una parolina, o forse di due: REAL-TIME.

Infatti, Windows CE, aveva tanti difetti ma una cosa su tutte faceva abbastanza bene: eseguire codice in tempo reale!

Purtroppo Windows 10 & Co. non gradiscono molto la parte realtime. Si, so quello che state per dire: ma ci sono le estensioni realtime per windows!

Ok, ma le avete provate? Queste estensioni sono dannatamente pesanti e si portano dietro un ulteriore zavorra: UN COSTO DI LICENZA SUPERIORE A QUELLO DI WINDOWS STESSO!

Quindi, vi starete chiedendo, che cosa suggerisce il fenomenale Roberto Viola?

Semplice: LINUX!

O meglio, Linux + Wine + Xenomai!

Nel dettaglio, Xenomai si occuperà della gestione realtime, mentre Wine si occuperà della parte grafica della HMI che sicuramente non vorrete riscrivere!

Signori, in pochi giorni, se non ore, avrete migrato il vostro applicativo da Windows CE a Linux senza più costi di licenza e sopratutto su un kernel al passo con i tempi!

Avete avuto anche voi situazioni simili?

Dai che forse il 2020 sarà l’anno di linux…almeno per quello che riguarda l’ambito industriale!

Corsette domenicali: proviamo a non buttare plastica

Oggi ce l’ho un po’con il mondo intero per un non ben precisato motivo. Capita, capita a tutti. È in questi giorni però che cerco di tramutare un po’ di negatività in qualcosa di utile.

Me ne stavo li, in mezzo alla strada alle 8 di sera a correre, con la pioggia in testa e mi chiedevo, ma è mai possibile che alle garette di paese si consumi così tanta plastica per i bicchieri nei ristori?

Quindi ho partorito questa semplice idea: chi partecipa alle garette, se vuole bere, si porta il bicchiere da casa.

Esempio, 2 euro su Amazon e passa la paura

Ora dopo gli insulti che mi state tirando, veniamo a rispondere alle vostre domande:

1) Ma se vengo alla garetta e non lo sapevo di sta regola che faccio? Semplice, al tavolo delle iscrizioni, al costo di 2 euro in più, ti vendono IL TUO BICCHIERE PERSONALE PIEGHEVOLE ™

2) Ma come!? Devo fermarmi 3 secondi a farmi riempire il bicchiere e così facendo non riuscirò a battere il mio PR su strava della mezza maratona!?!?#&$¥ Svegliati, stai correndo un cacchio di garetta di paese, che cacchio te ne frega del tuo tempino del menga?

3) Ma non voglio portarmi in giro un bicchiere per tutta la corsa, e’ scomodissimo!!?!?€&*#!! Signori vedo gente con tutto e di più addosso nelle garette: portare un cacchio di bicchiere legato al polso, o addirittura nel taschino del gilet non credo vi faccia sprecare molte energie.

Se siete arrivati fin qua, significa che o siete messi peggio di me, oppure che la mia idea non è così malsana. Quindi quello che propongo è che ognuno, nel proprio piccolo, cerchi di propagandare questa piccola idea all’interno del proprio gruppo di corsa, sperando,un giorno, di partecipare ad una garetta #bicchierinofree

SYCL: diamo un boost ai nostri algoritmi con la GPU

Da qualche giorno (in realtà fine settembre 2019) Intel ha rilasciato LLVM 9.0.0 che porta con se una grandissima novità: un supporto a SYCL perfettamente funzionante.

Per chi non conoscesse SYCL, riporto qui la descrizione di wikipedia:

SYCL (pronuncia “sickle”) è un layer di astrazione gratuito e multipiattaforma progettato sui concetti di portabilità e di efficienza di OpenCL, che permette al codice di piattaforme eterogenee di essere scritto in uno stile “a sorgente singola”, utilizzando completamente lo standard C++. SYCL consente lo sviluppo di una sola sorgente in cui le funzioni di modello C ++ possono contenere sia il codice host (cpu) che quello per il dispositivo (gpu/fpga/arm) al fine di costruire algoritmi complessi che utilizzano l’accelerazione OpenCL e quindi poter riutilizzare tutto il loro codice sorgente su diversi tipi di hardware e di dati. La possibilità, per gli sviluppatori, di non essere costretti a tener conto del dispositivo su cui il programma girerà (necessario in OpenCL), rende molto più semplice e lineare la programmazione.

In breve: potete accelerare i vostri algoritmi usando la GPU!
Quante volte avete raggiunto il limite di un sistema e siete stati costretti a dover upgradare la CPU o addirittura rivoluzionare un algoritmo perfettamente funzionante per cercare di limitare qualche millisecondo ad ogni iterazione?

Beh LLVM + SYCL potrebbero essere una manna dal cielo in queste situazioni.
In particolare ho provato per voi alcuni esempi (trovate tutto qui https://github.com/cagnulein/sycl-benchmarks):
Un semplice FOR da 500.000.000 di iterazioni, comprensivo di una moltiplicazione di una tan per un atan richiede circa 107 secondi per essere eseguito su una CPU intel di settima generazione. Bene, se questo stesso algoritmo lo fate girare su GPU (la stessa GPU integrata della stessa CPU presa in considerazione prima) passerete da 107 secondi a soli 4.8 secondi! Si avete letto bene, 4.8 secondi!

Non vi resta che sporcarvi le mani voi stessi seguendo questo bell’articolo http://pramodkumbhar.com/2019/07/intels-one-api-what-we-know-and-how-to-get-ready/

Se avete dubbi chiedete pure.

Modenacorre e reggiocorre come trovare le VOSTRE foto

Se siete runner “fashion” emiliani (ma non solo) e siete stanchi di cercare le vostre foto nel sito modenacorre.it e reggiocorre.it, beh ragazzi oggi ho la soluzione che fa per voi!

Ho creato questo simpatico script in python ( https://github.com/cagnulein/runcolor ) che, una volta indirizzato sull’album da scansionare ( esempio http://www.reggiocorre.it/showg.aspx?aid=10659 ), vi troverà all’interno delle foto! O meglio, in realtà troverà immagini con un sacco di pixel del colore selezionato.

Non vi siete mai chiesti perchè i runner portano abbigliamenti sgargianti? Beh ora avete la risposta: per favorire la ricerca di se stessi con script in python!

Stavo pensando se generalizzare la cosa creando una pagina web con nodejs, se pensate vi possa essere comodo, donatemi una birra e farò in modo che il vostro sogno diventi realtà!

Sotto un piccolo esempio di runner “fashion” 😀

Aggiungere un file GPX ad un video

Nei giorni scorsi ho acquistato una classica Action Cam da Amazon per fare da dashcam sulla mia ebike CMS F16.

Dato che salvo sempre i miei tracciati con il mio fido Polar M430 mi sono chiesto: come faccio ad unire un GPX salvato dal mio orologio con un video e sincronizzarlo?

Cercando un po’ in rete ho trovato la soluzione free e semplice: Garmin Virb Edit! ( lo potete scaricare qui )

Contrariamente a quanto farebbe pensare il nome, il software funziona con tutti i dispositivi che generano GPX (in caso comunque per arrivare al formato GPX esistono milioni di converter free su internet). Il programma è disponibile sia per Windows che per MAC.

L’utilizzo è molto semplice: si importa il video, si importa il GPX e poi con un comodissimo pulsante si sincronizzano le due traccie. Consiglio di scegliere una svolta ben delineata sia nella traccia GPS che nella traccia video per eseguire la sincronizzazione in modo corretto.

Questo è un esempio del risultato ottenuto:

Buon divertimento!

Raspberry: modificare la luminosità di uno schermo via HDMI (e non solo!)

Per lavoro stavo cercando come poter modificare la luminosità e più in generale tutti i parametri di uno schermo collegato via HDMI al raspberry.

Ho trovato il tool ddcutil ( https://www.ddcutil.com/raspberry/ ) che funziona da dio.

Prima di tutto bisogna modificare il file /boot/config.txt aggiungendo questa linea

dtparam=i2c2_iknowwhatimdoing

riavviate

e provate ad avviare il comando ddcutil getvcp
Dovreste trovare la lista di tutti i parametri supportati dal vostro schermo.

Nel mio caso, per esempio, per modificare la luminosità mi è bastato inviare il comando

sudo ddcutil setvcp 10 100

dove 100 è il valore in percentuale della luminosità del display.

Qui trovate anche il pacchetto ddcutil compilato per ARM64.

Intel Movidius vs altre CPU Intel

In questi giorni ho avuto modo di sperimentare con Intel Movidius e mi è sembrato carino condividere i risultati ottenuti.

L’idea era quello di capire se e quando l’utilizzo di una VPU Movidius avesse senso.

Da quello che potete vedere, la VPU Movidus ha senso su sistemi datati come il vecchio N4200 ma non hanno nessun senso su architetture come un i7 di ottava generazione (era abbastanza ovvio, ma almeno ci sono dei dati a supporto, dato che su internet non si trova nulla).

Qui il report completo ottenuto con l’applicazione presente all’interno del toolkit Intel Openvino “demo_benchmark” (qui i dettagli per l’installazione):

Full deviceIntel(R) Core(TM) i7-8850H CPU @ 2.60GHz
  
Count:1000 iterations
Duration:1761.70 ms
Latency:7.31 ms
Throughput:567,63 FPS
  
Full deviceIntel® UHD 630
  
Count:1000 iterations
Duration:2729.50 ms
Latency:10.72 ms
Throughput:366,37 FPS
  
Full deviceIntel Vision Accelerator Design with Intel Movidius VPUs
  
Count:1000 iterations
Duration:5025.83 ms
Latency:19.79 ms
Throughput:198,97 FPS
Full deviceIntel® Pentium ® CPU N4200 @ 1.10GHz
  
Count:1000 iterations
Duration:24897.62 ms
Latency:104.2 ms
Throughput:41,67 FPS
  
Full deviceIntel® HD 505
  
Count:1000 iterations
Duration:12399.70 ms
Latency:38.30 ms
Throughput:80,65 FPS

DBPower N6 e Camking Pro: crash all’avvio

Ho acquistato la settimana scorsa una DBPOWER N6 e devo dire che per 20€ (era in offerta a tempo) funziona alla grande.

Avendo la WiFi ho provato ad usarla: la prima volta ha funzionato correttamente, dopodiché la app Camking Pro su Android non ha più voluto aprirsi.

L’unica soluzione è disinstallare l’app e reinstallarla (certificata anche da un sacco di utenti nelle recensioni di Google play). Ovviamente da nerd non potevo sottostare a tale affronto e mi sono messo alla ricerca di una soluzione.

Scaricando questa versione (una vecchia versione della app che però sembra essere esente da bug e uguale a livello di funzioni) si può smettere di disinstallare ogni volta l’applicazione!

Hyper-V BSOD (schermata blu) con aggiornamento Windows 10 Ottobre 2019

Stamane arrivo in ufficio e Windows 10 x64 mi propone di eseguire l’aggiornamento 19H2 ovvero il Windows 10 October 2019 Update.
Eseguo e dopo circa 1h:30m ho di nuovo il sistema in mano ma con una sorpresa.

All’apertura di una qualsiasi macchina virtuale con Virtualbox mi appare questo errore.

Errore di Virtualbox

Indagando scopro con orrore che l’update mi ha abilitato Hyper-V di default.

In modo molto bovino lo rimuovo e riavvio. Al riavvio però ho una brutta sorpresa: un bel bootloop con tanto di BSOD!

Cercando sulla rete non trovo molto: cercando però trovo questo kb4512577: ovvero un aggiornamento del Servicing Stack che Windows non mi aveva installato.

Installo il KB, riavvio, disinstallo Hyper-V e ora tutto magicamente funziona! Porca M$!

Amazon cosa mi combini!

Sono cliente Amazon PRIME da un paio d’anni e sinceramente non mi ero mai trovato davanti ad una situazione del genere.
Effettuo acquisti quotidianamente e, ingolosito da una promozione che permetteva di avere qualche euro di buono in cambio dell’inserimento dei dati SEPA della propria banca per poter pagare senza usare la carta di credito, ho inserito i dati del mio C/C Fineco e via.

Come al solito, nei giorni seguenti, faccio qualche acquisto e mi dimentico persino del nuovo metodo di pagamento impostato (che viene inserito automaticamente di default).

Passa qualche giorno, ricevo la merce, ma contemporaneamente iniziano ad arrivare anche email dalla mia banca, la quale mi informa che pagamenti verso Amazon sono stati respinti perchè si stava utilizzando il BIC di Unicredit invece che quello di Fineco. (io sono sicurissimo di aver inserito il BIC proposto nella sezione “Coordinate” di Fineco, ovviamente non inserisco BIC sbagliati per passarmi il tempo)
Dopo qualche ora dalla ricezione di queste mail, mi iniziano ad arrivare mail da Amazon che mi intimano di pagare gli oggetti spediti più un sovrapprezzo di 3 euro per ciascun ordine. Considerate che avevo fatto piccoli ordini da 7-8 euro, quindi mi si chiedeva di pagare 15 euro di commissione a fronte di un totale di spesa di circa 40 euro!

Prima di effettuare il pagamento decido di mandare mail al sito indicato dalle mail di Amazon. Attendo qualche giorno e non ottengo nessuna risposta. Stranito (di solito Amazon è celere in questo tipo di assistenze), chiamo il numero verde (disponibile dalle 8 alle 19 dei giorni feriali) e mi viene detto che, non solo non era possibile cumulare la “sovrattassa”, ma mi dovevo anche sbrigare ad effettuare il pagamento, pena l’avvio di azioni legali nei miei confronti. Ho risposto dicendo che potevano tranquillamente prelevare l’ammontare dalla carta di credito come sono soliti fare per gli altri acquisti, ma in questo caso non è possibile.
Infervorato da questo trattamento, faccio raffreddare la situazione, lascio passare qualche giorno e, prima della scadenza del termine, effettuo i vari bonifici.

Nel frattempo faccio altri ordini pagando con carta di credito come al solito.

I giorni passano, e vedo che mi ordini Prime non arrivano: data la mole di ordini che effettuo sono solito dimenticarmi delle date di arrivo della merce. Verifico sul mio account e vedo che i miei ordini non compaiono! O meglio, cercando negli ordini cancellati, vedo che sono stati cancellati senza nessuna notifica nei miei confronti!

Chiamo subito l’assistenza Amazon che mi comunica, prima ancora di farmi spiegare completamente la situazione, che loro non si occupano di questo genere di problematiche e devo per forza chiamare il numero verde (erano le 21 di sera, per questo motivo avevo fatto un tentativo).

Da ieri sto provando a chiamare il numero verde ma risulta sempre occupato (musichetta d’attesa infinita).

Arrivata la mail di Amazon:

Gentile Roberto,

Con la presente siamo a comunicarle che abbiamo individuato il pagamento relativo al suo ordine xxxxx

Il Suo account cliente verrà riattivato immediatamente non appena avremo contabilizzato il bonifico per l’ importo dovuto. Verrà informato della riattivazione dell’account con un messaggio Email automatico. Segua i passaggi riportati nell’ Email per attivare l’ accesso. Al termine della procedura potrà di nuovo accedere ai suoi dati ed effettuare nuovi ordini.

La ringraziamo per aver scelto Amazon.it.
Se avesse bisogno di ulteriori informazioni, saremo lieti di fornirle assistenza.

Aggiornamento del 27/09/2019

Oggi mi arriva una mail da amazon.de (ma perché da amazon.de?):

Guten Tag,

wir haben Ihr Kundenkonto wieder freigeschaltet.

Bitte überprüfen Sie den Status Ihrer Bestellungen online über “Mein Konto”. Noch nicht abgeschlossene Bestellungen wurden gegebenenfalls storniert.

Sollten Sie in diesem Fall noch Interesse an der Ware haben, bitten wir Sie, diese erneut über unsere Website (http://www.amazon.de) zu bestellen.

Für weitere Fragen stehen wir Ihnen gerne zur Verfügung.

Freundliche Grüße

Amazon.de

Traducendo velocemente mi hanno detto che il mio account è stato riattivato. Ovviamente ho perso i miei ordini eseguiti in queste 2 settimane.