mercoledì 28 giugno 2017

Godo come un porco!! Stazioncina per il trenino!!

Domani si gioca tutto il giorno!!

E per dispetto a Trenitalia faccio transitare tutti i treni in orario!!





Area totale: 66x162 stud (53x130cm circa), cioè poco più delle 5x2 baseplate.

Pezzi: poco più di tremila (solo la stazione), ma gli interni ancora non sono arredati e mancano ancora diversi ammennicoli.

Avevo dimenticato di dire che lato strada c'è anche il bar, come si vede in questa vecchia foto un po' sgarrupata:


sabato 24 giugno 2017

Blubbels

Blubbels è un giochino puzzle per Nokia N900. Quando si tocca un gruppo di palline adiacenti dello stesso colore, si guadagna un punteggio pari al quadrato del numero delle palline.

La massimizzazione del punteggio è perciò un problema NP-completo (complessità almeno fattoriale, irriducibile a polinomiale) per come ogni mossa cambia lo stato per tutte le successive.

Dato che a²+b² è sempre minore di (a+b)², il sottoscritto si diverte a calibrare le primissime mosse in modo massimizzare il primo "colpaccio" e a dichiarare conclusa la partita.






venerdì 23 giugno 2017

Epic Fail di Microsoft !!

"Bau Bau Baudweiser"
Artemio> aò hai sentito
Artemio> i sorgenti de window 10
Artemio> leaked a tutta forza!
You> dove?
Artemio> sono 32t
Artemio> li sto pigliando adesso
You> che significa T
Artemio> tera baite
You> ...
Poi, è vero - notizia di questi giorni: 32 terabyte di sorgenti di Windows (compressi in appena 8 tera, cioè 8000 giga), comprendenti diverse build sia rilasciate che non rilasciate, incluse edizioni ARM64T e Windows 10 Server la cui esistenza non era stata ancora neppure annunciata.

La conseguenza principale è che i cosiddetti hacker (principalmente gli autori di truffe e malware, più ovviamente i servizi segreti di certi stati) potranno trovare vulnerabilità con molta meno fatica (comodo lavorare sui sorgenti anziché sui disassemblati e sugli eseguibili offuscati).

La conseguenza secondaria - che l'articolo non nomina - è che chiunque potrà vedere il codice sorgente originale Microsoft, scritto da programmatori Microsoft, e osservare con quanta fretta e approssimazione hanno lavorato.

Immaginatevi i piemme dei team di sviluppo Microsoft: «vedémo, mettémo, levàmo, checcevò

p.s.: la prossima volta toccherà ad Apple... 

mercoledì 21 giugno 2017

Zappando si impara l'ingegneria

Perso un bullone, per un caso di vibrazioni trasversali:


Spiegazione tecnica:


Riferimenti tecnici:

venerdì 16 giugno 2017

Meridionalità

"Lurido coniglio, lasci i rifiuti dove cresce tuo figlio" - notare il font da ultrà dello stadio:

"Carciofi fragole 3 € x cassa": il simbolo dell'euro pare più truce di quello di Quake 3 Arena. Notare anche la fuméta dello scappamento del ciclomotore: ci sono tracce di benzina in quell'olio bruciato:


"Ogni mattina ci svegliamo pensando a te": ma non hanno pensato che per avviare il DVD occorre premere il tastino...


Emporio ambulante: forbici, tappeti, detersivi, imbuti, scopini per il wc... eccellente la soluzione ingegneristica del corridoio centrale e quella del telone ripiegabile.


Notare lo pneumatico che grida "pietà, aiuto!":

martedì 13 giugno 2017

Il mito del Programmatore

* Il mito del Programmatore

Il popolo bue crede che il software e i siti web siano realizzati dal Programmatore (alias Developer, alias Software Engineer, alias Sviluppatore, alias Coder, alias...) figura leggendaria mitologica che picchietta sulla tastiera come un pazzo e cinque minuti dopo magicamente compare tutto perfetto e funzionante, anche le cose che il committente non aveva ancora immaginato. Questo equivoco è talmente diffuso che perfino nelle aziende vige spesso la stessa creduloneria.

In realtà nella realizzazione del software ci sono diversi ruoli - con annessi problemi quando una singola persona ne riveste più di uno.

Commerciale: quello ingiaccato e incravattato che va dal cliente a fare mercato delle vacche poiché non capisce niente di software, programmazione, ecc., ma è bravissimo a dire paroloni elegantoni (buzzwords).

Programmatore: bassa manovalanza, quello che materialmente scrive il codice del programma o del sito web. Uno o più programmatori costituiscono un "team di sviluppo". Quando uno ha esperienza quasi zero o non capisce niente, viene qualificato sprezzantemente come junior. Per venire incontro al mercato le università hanno creato le "lauree brevi" in informatica in modo da sfornare molti junior; le lauree "lunghe" sono quelle in cui il programmatore capisce che il software che scrive deve non solo essere compilabile senza errori ma dovrebbe almeno un po' funzionare.

Tester: l'incaricato di collaudare i componenti software appena sviluppati o modificati, verificare se funzionano secondo i requisiti, provare a usare casi limite per vedere se vengono gestiti o si inceppa tutto... insomma, trovare i bug e documentarli per far richiedere le correzioni necessarie. Uno o più tester costituiscono un "team di collaudo". Qualifica che, quando esiste, viene rifilata agli incapaci o alle donne (comico ma vero) perché è il lavoro più meccanico e noioso.
Il guaio è che per essere un buon tester occorre anzitutto essere un buon programmatore, per sapere subito quali errori si possono commettere nello scrivere codice e quali test strani ma non irragionevoli bisogna fare.
Barzelletta: un tester va al bar. Ordina una birra. Ordina quattro birre. Ordina zero birre. Ordina 65536 birre. Ordina -1 birre. Ordina 5*3+17 birre. Ordina “ªΩÞ³ıÆ⅝” birre. Ordina ';drop table ordini;' birre. Ordina due birre ben calde.

Designer (o molto più spesso programmatore senior): alta manovalanza, quello che scrive le parti più delicate del programma. In genere è uno che conosce la differenza fra complessità lineare ed esponenziale, sa quando è il caso di lavorare su disco o in memoria, sa quando è meglio usare bitmap piuttosto che stringhe, sa maneggiare con dimestichezza puntatori ai puntatori, ecc. (n.b.: tutte cose normalmente ignorate da chi lo ha assunto). L'attitudine, nel mondo dell'informatica, è di dargli la stessa paga di uno junior (sai, l'azienda non può permettersi troppo, ma poi cresceremo insieme, avrai opportunità e visibilità, ecc.).

Project Manager (più in genere: PM): quello che deve continuamente ripulire il progetto da incrostazioni come requisiti ambigui o irragionevoli, far implementare le features previste dalle specifiche, far correggere i bug e le vaccate, assicurarsi che ogni parte del programma abbia i propri test (e che vengano superati tutti), faccia completare le parti incomplete, si assicuri della qualità e manutenibilità del codice, faccia l'analisi dei rischi laddove necessario, ecc. Praticamente non scrive codice e non fa i test, per cui molti programmatori aspirano a diventare PM illudendosi di poter comandare e spadroneggiare... e quelle rare volte che ci riescono si accorgono che a causa delle troppe urgenze non se li caga proprio nessuno.
Si presume che un PM sia almeno un esperto programmatore, designer e tester, capace di valutare il codice, i test, le soluzioni escogitate, e suggerire cosa fare e cosa non fare, e avere sempre ben chiari i tempi di sviluppo e collaudo. Si presume, appunto.
System Architect: figura presente solo nelle Grosse Aziende™, colui che guida i vari PM e stabilisce come vanno integrati i progetti tra loro; una sorta di super-PM.

System Analyst: quello che traduce i desiderata del cliente in componenti software/web da sviluppare e li descrive in maniera formale e chiara per i PM e per i sottoposti. Da ciò è anche in grado di stabilire tempi e costi e di suggerire modifiche/aggiunte al progetto. In teoria dovrebbe imporsi in modo furioso e brutale ai Commerciali per evitare che questi ultimi vendano al cliente soluzioni impossibili da realizzare nei tempi e modi previsti.

Nota bene: le figure dai titoli ampollosi (Lead Senior Architect Manager Chief Executive Vice President Analyst...) servono solo per dire "non ti do un aumento di stipendio ma ti potrai vantare su Linkedin di essere qualcuno importante qui dentro".


* Il tipico guaio: due o più incarichi alla stessa persona.

La figura dell'Analista Programmatore, cioè dell'esperto creativo capace di fare tutto da solo (dall'Analyst al Programmatore, appunto) tranne la parte commerciale, è una figura mitologica leggendaria inventata da certe aziende italiane che volevano risparmiare sugli stipendi. Fin da quando ero ragazzino, infatti, ho sempre trovato gente che mi dice: "Ma tu Perché Non Fai Qualche Grosso Programma e Lo Vendi?"
("Anche mio Fuiglio, ma non perché mio Fuiglio, è Muolto Bruavo con Guìndous Nuovanta Ciuinque!")

Infatti quando la stessa persona ha due o più incarichi, sono guai. Per esempio:

- il System Analyst è anche il Commerciale: dunque diventa irragionevolmente ottimista sui tempi e modi di realizzazione;

- il Programmatore è anche Tester: dunque scrive e modifica programmi senza provarli per bene, specialmente se il tempo è scarso e il cliente scalpita;

- il Project Manager è anche System Architect/Analyst: dunque tenta di ridurre i test in modo da risparmiare tempo necessario allo sviluppo...

- il PM è anche System eccetera e Commerciale: dunque applica il mercato delle vacche alla realizzazione del software ("Presto! Presto! è pronto? Presto! a che punto siamo? Presto! Presto! basta che regga in piedi, poi lunedì ricontrolliamo!").


Caso estremo: il team di sviluppo software è così composto: quattro figure Lead Architect Senior Specialist Solutions Manager, tre Commerciali, un PM, e un Programmatore che funge anche da Tester, Designer, System Architect, System Analyst. "Allora, è pronto?"




Conclusione

Domanda (fatta con voce sgomenta): ma... ma tu dove hai lavorato?

Risposta: in Italia.

mercoledì 7 giugno 2017

Aggiornamenti di oggi



Aaah! un bel caffè lungo nella mug LEGO!!

martedì 6 giugno 2017

Promemoria: sforacchiatrice LEGO

Ecco un potente video della macchina sforacchiatrice che esibirò ai prossimi LEGO-fest di Lecco e di Santa Maria del Cedro:

sabato 3 giugno 2017

Gran Turismo: sono ricco!

Dopo quasi vent'anni realizzo uno dei miei sogni: diventare SUBITO RICCO in Gran Turismo ancor prima di cominciare a correre.

Materiale occorrente:
- emulatore PlayStation 1 da command-line: Mednafen
- immagine ISO (e relativo CUE monotraccia) di Gran Turismo del 1998
- immagine ROM europea della PlayStation 1 (Mednafen preferisce scph5502.bin)

Procedimento:
- lanciare l'emulatore: mednafen -sounddriver sdl gran-turismo.cue
- comprare un'auto usata
- annotare i soldi rimasti, nel mio caso 3240$, cioè in esadecimale 0x00000ca8, alias "a8 0c 00 00" in little-endian
- restare in un menu dove si vedono $OLDI € $OLDI
- premere F5 per salvare un machine-status
- da un'altra finestra:
cd ~/.mednafen/mcs
cp gran-turismo.*.mc0 state.gz
gunzip state.gz
hd state | grep "a8 0c 00 00"
Se la quantità di soldi è un numero abbastanza bizzarro, comparirà solo una volta (non ho usato il default 10000 perché il suo aspetto esadecimale "10 27 00 00" è troppo comune), allineato a 32 bit (cioè ad un indirizzo che sia multiplo di quattro bytes). Nel mio caso era a 0x0eca2c:

000eca20 00 00 00 00 01 04 00 00 51 00 00 00 a8 0c 00 00 |........Q.......|


Lancio dunque hexedit per diventare ricco ma non troppo, e trasformo quel valore "a8 0c 00 00" in "a8 0c 05 00" (quel cinque, moltiplicato 65536, darà 327680$ in più) ai tre indirizzi trovati.

A questo punto aggiorno il file di stato:
gzip < state > gran-turismo.*.mc0

Dall'emulatore premo quindi F7 e ricarico lo stato e... sono ricco! 330mila dollari in cassa!


Compro dunque una Subaru Legacy Touring Wagon, la macchina su cui mi sono fatto le ossa vent'anni fa, un vero carro funebre: è una 4x4 di 1430 kg, quattro cilindri 2000 turbo da 276 cavalli. Nel menu STi compro tutti gli optional da competizione (goduria!), inclusi "tripla frizione", "kit per turbina IV" (c'è scritto proprio turbina), perfino i colori di gara in tinta pacchiana a striscioni di giallo! (a questo punto ho già finito i soldi, ma niente paura: faccio un'altra rapina come sopra descritto, ed eccomi di nuovo a 430mila dollari!)


Il cascettone si è ridotto a 1029 kg ed è stato portato a quasi cinquecento cavalli. Sono pronto a farmi una corsetta...