2015-10-18

Programmare - Rant

Nella mia vita professionale, ho lavorato in molti progetti, ciascuno con la sua impostazione caratteristica. Alcuni progetti da solo, altri progetti in collaborazione con colleghi/soci e in altri ancora con persone sconosciute (nel senso che mettevo le zampe nel codice scritto da altri).

Quando iniziai con gli IDE c'era VS6, usavo Windows, programmazione in C/C++ (entrambi i linguaggi).
Non conoscevo ancora programmazione al di fuori di MS-DOS (Basic e Pascal, principalmente) e Windows (Basic, C e C++).

Mi ricordo che quando passai dal Borland Turbo Pascal 7, che usavo a scuola, a VS6 rimasi molto sorpreso dalle potenzialità e da ciò che era possibile fare.
Però

Già in quel periodo sentivo che c'era una nota stonata, infatti per molti lavori mi trovavo a scrivere direttamente nei file DSP e DSW per fare tutto ciò che l'IDE non riusciva a fare. La nota stonata non era tanto il fatto che accedessi a questi file quando in teoria avrebbero dovuto rimanere opachi, quanto i motivi che mi spingevano a codeste operazioni. Motivi neppure tanto esotici quali la clonazione di un progetto per avere più eseguibili con le stesse impostazioni di base.

In quel periodo la mia esperienza era ancora limitata, quindi avevo bollato la cosa come semplice sensazione.

Più avanti ho iniziato ad ampliare la mia base di esperienza lavorando sempre più con altri linguaggi (e altri sistemi al di fuori di Windows) e approfondendo metodi di sviluppo quali l'uso dei makefile che avevo visto solo marginalmente poiché Visual Studio già faceva tutto quello che serviva. O almeno così pensavo.

Se sei abituato a camminare usare la bicicletta è un salto notevole, ma se sali in sella ad una moto e impari a guidarla, ritornare alla bicicletta risulta estremamente traumatico.

La nota stonata che sentivo ha iniziato a diventare un rumore assordante di decine di strumenti che vengono suonati a caso da altrettanti musicisti che non si ascoltano tra loro.

Per questioni di lavoro sto lavorando su dei progetti sotto Windows con Visual Studio (2010 e 2008). La versione poco importa perché quello che in questo momento funge da palla al piede è il concetto alla base degli IDE, ossia che chi li ha sviluppati ha pensato ad un tipo di utilizzo e se tu hai bisogno di un metodo differente devi imprecare non poco e scontrarti con una serie di malfunzionamenti in alcuni casi oltre il livello del ridicolo.

Ad esempio la condivisione dei file sorgente tra i progetti di uno stesso lavoro, l'organizzazione in directory dei file sorgente (necessaria quando lavori con 50+ file), l'impossibilità (ancora) di poter fare un confronto delle impostazioni dei progetti se non guardando i file XML o cliccare come un ossesso tra varie finestre (almeno rispetto a prima non sei obbligato a chiudere e riaprire le finestre), l'impossibilità di lavorare con codice generato perché non sono state previste regole di dipendenza personalizzate aggiuntive, il fatto che l'IDE ha delle discrepanze logiche per cui cerca file collaterali (come i resx) nella directory dove si trova il sorgente principale, ma se lo vuole scrivere lo mette nella directory base del progetto per poi impazzire e non riuscire né a trovarlo (non è dove si aspetta) o crearlo (si trova già dove lo vuole creare, che è diverso da dove lo andrà a cercare).

Cancelli un file usando l'IDE stesso, non puoi ricrearlo perché lo vede come se ci fosse ancora.

Insomma, su un'ora di lavoro con Visual Studio più di mezz'ora se ne va per fermare, modificare a mano file, riavviare l'ambiente, click a profusione per includere un file come link a 5 progetti (saranno di più e rabbrividisco). Con tutto quello che impatta sul discorso concentrazione.

Il tutto senza considerare le cache che l'IDE si tiene in pancia.
Infatti modificando un file comune (che tutti linkano) il progetto principale vede le modifiche nell'Intellisense, gli altri no e generano una serie di falsi errori fintanto che non si procede con una compilazione completa (che non è a tempo zero).

Però il cliente richiede Visual Studio e non posso lavorare in altro modo.
Per fortuna, in tutto questo mi viene in aiuto git e una marea di backup che faccio prima di particolari operazioni (per alcune delle quali mi scrivo programmi ad-hoc usa e getta, impiegando un ottavo del tempo che impiegherei per fare la stessa operazione attraverso l'IDE).

Firmato:
Campagna per l'abolizione degli IDE

2015-05-02

Potenza del backup - Android

Tablet Android.
Da uno degli ultimi aggiornamenti avevo un messaggio noioso all'accensione relativo al codice IMEI non valido.
In effetti, il codice IMEI che saltava fuori è un codice di "sviluppo" che viene messo in automatico quando un file (nv_data.bin) viene resettato.

Dal momento che il codice IMEI permette l'attivazione/disattivazione del dispositivo nel caso di furto, e il file nv_data.bin può contenere informazioni per il vendor-locking, il suo formato non è pubblico (o almeno, non sono riuscito a trovarlo in un paio di ore di ricerca).
Principalmente, cambiare l'IMEI di un telefono permetterebbe di riutilizzare un telefono rubato e bloccato, quindi nessuno ufficialmente si esporrà mai dicendo "se usi questo programma, puoi mettere il codice che vuoi" e tutti dicono "cerca il file di backup, copialo qui, riavvia, incrocia le dita, enjoy".


E se non ce l'hai?

Avete presente Natalino Balasso? Ecco.


Ed ora arriviamo al mio caso.
Il messaggio era solo noioso. Nessun reale disservizio. Tranne quando ho comperato un navigatore satellitare per il tablet e questo si è rifiutato di girare perché il codice (non ancora inserito, tra l'altro) era stato abusato.
Pulce nell'orecchio sul fatto che il programma in questione utilizzi l'IMEI per le autorizzazioni, mi tiro su le maniche e cerco come ripristinare l'IMEI originale.
Purtroppo il backup automatico non è presente.
Cerco e tutti dicono "O hai un backup della directory efs o t'attacchi".
Alla fine cerco tra i vecchi backup (alcuni presenti anche sul dispositivo) e trovo un backup del 2010 con il file originale.

Messo su, riavviato, tutto ok.
Anche il navigatore si sta installando.

Casomai servisse ribadire che un backup da 2MB anche vecchio del 2010 conviene sempre tenerlo da parte ....