Collegamento gambe <-> cervello

Oggi mi esplode il cervello, ovvero, mi stanca proprio riuscire a capire il codice che sto modificando, non riesco ad entrare nella testa di chi l’ha concepito, sono troppe informazioni da accumulare, così decido continuamente di prendermi delle pause. In realtà sono 2 giorni che non ne vengo a capo.

Quindi piuttosto che pause, la mia idea è questa: prendo degli appunti e mi do delle risposte, eventualmente lacunose, forse sbagliate, ma fisso dei punti semifermi.

Prendo a prestito questa metodologia da GTD, Get Things Done, il metodo per organizzare il lavoro e i vari task, da qualche parte in quel libro si dice che nelle prime fasi, nell’ideazione di un progetto, è meglio scrivere quello che si vuole fare, le fantasticherie spesso zoppicano e non è evidente.

Epperò mi viene in mente un altro collegamento. Mi capita di leggere osservatori ignoranti che criticano i cliclisti che vanno in frequenza, tipo “cosa pedali veloce se sei sempre lì”. Basta conoscere un po’ di fisica e di biologia per capire che maggiore è il numero di pedalate, minore è la potenza necessaria ad ogni pedalata. Oppure, detto in altra maniera, a parita di potenza della gamba con l’aumento della frequenza c’è un aumento della potenza espressa per il movimento.

L’analogia quindi è che la mente, grazie agli appunti scritti, riesce ad esprimere più potenziale, a parità di potenza computazionale. Calcolo + memoria = ragionamento (penso sia qualcosa affermato da Ada Lovelance durante una delle presentazioni della macchina analitica, circa un secolo fa’). E aumentare la velocità con la quale si fanno aggiornamenti della memoria aumenta la capacità di ragionamento.

Ma c’è di più, a livello macroscopico, la cultura umana stessa è una specie di memoria sulla quale l’umanità, come se fosse un immenso sistema di calcolo, scrive continuamente, ed amplia, e migliora.

Ecco, mi andava di spaziare, di appuntarmi questa cosa, per me, a futura memoria, di quando mi troverò in difficoltà ad affrontare qualcosa: trovare appoggi, anche non veri ma verosimili e credibili, e andare a piccoli passi.

E comunque è una scusa per cuocere 2 uova per la pausa di mezza mattinata.

(Nel titolo andava analogia, ma è bella l’idea di collegare le gambe al cervello.)

Le cose cambiano … davvero?

Mi stavo chiedendo, ora, perché è così negativa la percezione che ho di Microsoft, e come sarebbe la percezione che ne hanno gli altri.

Una cosa alla volta. Prima di tutto io sono cresciuto tecnicamente, e parallelamente, con la MS che stava sviluppando, in modo piuttosto goffo, il suo sistema operativo di punta. MS è cresciuta facendo scelte molto discutibili, appoggiandosi per lo più a conoscenze, a contatti/contratti, ottenuti presso vari stati, si potrebbe dire che è cresciuta “all’italiana”: una mano lava l’altra, e tutt’e due lavano la faccia.

http://windowsitpro.com/windows-client/windows-nt-and-vms-rest-story
Io ho sempre snobbato la Microsoft per via delle scelte tecniche assolutamente insensate. MS assunto molti progettisti provenienti da VMS, Window NT era pressoché pronto nel ’94, ma invece decide che deve mantenere la compatibilità ed uscire con un sistema operativo basato su MS-DOS, e lo fa nel ’95, dopo aver fatto attendere tutti il suo arrivo per un anno (doveva uscire nel ’94, ricordate?).

Nel ’92 partecipai ad un evento formativo/divulgativo di Microsoft (tenutosi all’università di Ancona, io ero ancora alle superiori) che lodava windows NT come il prossimo passo, professionale e compatibile con i vecchi sistemi. Mi ricordo gli interventi dei partecipanti che chiedevano se fosse possibile compilare il kernel per un PDP a 11 bit, oppure ho confuso qualcosa, io ed un mio amico parlando della domanda ci siamo guardati come per dire “che c@zz’ ha chiesto sul PDP?!?”.

E invece se ne esce IBM con OS/2 Warp nel ’94, gira solo su 386 in su, è leggero, veloce e sicuro. Ha una buona interfaccia grafica a finestre, icone sul desktop, e tutto.

La MS è ancora indietro col fiato corto, e non ce la fa per quell’anno ad uscire col suo nuovo windows. Ma bombarda il mondo con promesse. Il mondo, le aziende, i negozi, gli stati, qualsiasi cosa. Microsoft è solo marketing, e molti appassionati informatici, me compreso, pensano che è tutto un bluff, e poi c’è Linux che sta diventando stabile in quegli anni, hanno portato il server grafico.

Così, che dire? niente Microsoft, perché è un bluff (e principalmente perché non ha ancora rilasciato il sistema!), non con IBM che ha una storia da bluffer, molto simile a quello che ora Microsoft vuol essere (o lo è già), quindi niente OS/2. Linux è un sistema poco innovativo tecnicamente parlando, ma la terminologia e le astrazioni *NIX sono ben conosciute e stabili, la gestione della memoria è comunque non del tutto banale, è efficiente quanto basta, e decisamente È STABILE. Ci si può lavorare, ci si possono fare esperimenti, si collega ad internet e tutto.

Nel ’95 Windows si presenta come un sistema istabile e colorato, dove ogni volta è una fortuna riuscire a terminare il boot prima di vedere la schermata blue della morte. Il gestore della memoria è pessimo, la protezione è inesistente, capitano sovrascritture di aree di memoria assegnate ad altri processi, non servono nemmeno i virus per corrompere di tutto. I pacchetti software di punta della Microsoft riguardano l’Office automation, MSWord, MSExcel, MSAccess, MSPowerPoint. A causa del gestore VM si finisce per pensare che MS Word faccia schifo, che va sempre in crash, che bisogna recuperare da un file temporaneo, che bisogna salvare ogni 13 secondi.

Oggi. Ho bisogno di alcuni servizi, diciamo hosting, ma anche di software. Sono per l’opensource, il software libero, ma a volte pago per il software, e pago sicuramente per i servizi. Capisco che anche lo sviluppo di un software è un servizio. Io stesso sviluppo software, e fornisco un servizio. Cosa faccio? Penso a cosa può volere il cliente (o più spesso l’utente nel mio caso), e così questo è l’obiettivo, e questo è lo stimolo che mi porta a crescere e migliorare, servire l’utente al meglio, fornire un software più stabile, meno confuso, più immediato, e cercare di farlo felice, così sarà soddisfatto di aver speso bene i suoi soldi.

Io noto una differenza sostanziale tra questo mio atteggiamento e quello avuto da Microsoft in questi anni. L’atteggiamento di Microsoft è stato quello di cercare di essere riconosciuta come l’azienda leader, di ottenere i contratti, di aprire centri di sviluppo nel mondo, di rendere incompatibili i software altrui, di massimizzare i profitti.

E dov’è l’utente? L’utente è marginale. Conta poco, contano i soldi sì, e sono i suoi, ma non deve neanche scomodarsi di tirarli fuori direttamente, sarà il negoziante che allegherà copia OEM del sistema operativo MS al momento dell’acquisto. E non deve neanche pensare: esiste solo questo.

In linea di massima questa è una delle cose che vuole il cliente: non pensare. E su questo la Microsoft ha avuto ragione alla grande. Ma non è più vero se si tratta di un professionista che i servizi vuole usarli.

Ora MS vende servizi su cloud, SaaS, PaaS, eccetera, è per quello che oggi mi chiedo qual è l’atteggiamento che ho io nei confronti della Microsoft, la percezione che ho di quella azienda.

Nadella è il nuovo CEO di MS da più di un anno. La direzione è stata quella di rilasciare diverso software opensource, di aprire agli sviluppatori, cioè a professionisti che non solo non trovano sconveniente l’uso del cervello, ma lo ritengono persino opportuno. E comunque opportuno prima di spendere dei soldi.

Dovrebbe cambiare il mio atteggiamento? Davvero oggi Microsoft è cambiata?

Penso sia giusto che io mi ponga questa domanda, non ho ancora la risposta, ma passerei all’altro aspetto ora.

Che percezione hanno gli altri riguardo a Microsoft?

Dovrei provare a mettermi nei loro panni? Cioè di chi non ha capito il gioco sporco di una azienda marcia guidata solo dal desiderio di potere? Dovrei mettermi nell’ottica di chi pensa che fornire un servizio sia l’obiettivo della Microsoft.

(All’uscita di windows 95: “non vi costringiamo ad aggiornare il vostro software precedente”, sostanzialmente programmi di contabilità, che per natura stessa della problematica andavano aggiornati di anno in anno per via del cambio delle leggi e dei parametri.)

Non ci riesco molto. Mi domando che tipo di testa deve avere uno sviluppatore che lavora per la Microsoft, suppongo che un programmatore ha più o meno la solita testa, sono le macchine che te la inquadrano, non può mentire o fare sotterfugi, devi prima o poi scontrarti con te stesso e finire coll’essere onesto. Ma come puoi lavorare lì allora?

Forse chi ama Microsoft pensa che le cose debbano andare così, che chi vende racconta balle. Ma non vedono i servizi forniti da Google? e da Amazon? e dagli altri? Non se ne percepisce la differenza?

Il mio astio per Microsoft è anche dovuto a quello. Ma possibile che pensate che le cose debbano andare così? Che chi produce software non lo faccia con amore e desiderio di soddisfare il bisogno dell’utente? Piuttosto che (e “piuttosto che” è un avversativo!) fare soldi il più possibile?

Non so. Mi sono fatto solo domande e non ho risposte.

Ma facciamogli un po’ di pubblicità:

Windows 10 Enterprise E3 now available as a partner delivered cloud service

 

pensieri a caso

In fondo le caratteristiche di un sito dinamico consistono nel

  1. servire una pagina associata ad una url
  2. mostrare dei contenuti contenenti anche link (cioè url), interni
  3. permettere di aggiungere nuove pagine (e quindi nuovi url)
  4. organizzare le pagine secondo una struttura

Così se ti capita un codice che non hai mai visto hai la lista di cose che devi capire:

  1. mappatura url<->pagina
  2. mappatura pagina<->baseDati
  3. amministrazione e organizzazione si deduce poi

Ma perché un problema così standard non viene ancora affrontato in modo standard???? ancora no?

E guardo il tempo. Che tempo fa?

Devo uscire per correre e non so quanto faccia freddo, o quanto si scalderà l’aria, così cotnrollo ilmeteo.it, è l’applicazione de ilmeteo.it per cellulare.

La apro, essa controlla la mia posizione, poi mi appare il tempo di Francoforte, ok, sono a Tolentino, la domanda potrebbe essere “cosa avresti controllato?”.

Poi appare la pubblicità. Ecco, la chiudo. Cambio località. I dati sono aggiornati a 3 giorni fa. Scorro col dito per darmi i dati attuali. Ok. Ho i dati attuali, e riappare la pubblicità.

Ilmeteo.it è gratis grazie alla pubblicità.

Ma quanto costa la pubblicità? e centinaia di stazioni meteo che forniscono i dati gratuitamente alla rete meteo?

E quante volte l’applicazione mobile va aggiornata? e a quale prezzo?

Si sovraccarica il costo per poi dire che per pagare il costo del sovraccarico c’è bisogno di pubblicità?

E poi cosa sono gli alert meteo? abbiamo uragani? non mi risulta. Abbiamo eccesso di produzione.

Tu te l’immagini?

Te l’immagini di attraversare un tratto di autostrada, per il quale paghi, lungo il quale ogni tanto devi fermarti perché c’è una buca, e non semplicemente aspettare che le cose si aggiustino, ma fornire assistenza ed indicazioni affinché venga messa a posto, ed ascoltare persino insulti perché tu non stai utilizzando la terminologia giusta, e quindi gli operatori, ingegneri, operaii, e supporto clienti, non riesce a capire cosa tu stia dicendo, e chiami, ad esempio “buca” qualcosa che è un cedimento strutturale della massicciata sottostante all’asfalto stradale… te lo immagini?

 

Non ti verrebbe di incazzarti?

 

Ecco, se ti colleghi ad internet ti succede tutti i giorni.

 

Sì, ok, si fa per scherzare, il sparare minchiate, ma siamo tutti colpevoli, incompetenti,
o entrambi.

 

Ecco tutto.

Niente Amore. Un po’ di amore. Più amore

Sono qui in ufficio, a più di 3000 km da casa a scrivere software nel modo più diligente possibile. Poi guardo le foto dell’ultima gara di triathlon, qualcosa non va e la mia faccia è deformata.

Viene da chiedermi che umore avessi appena uscito dall’acqua del lago Maggiore, ad Arona, l’ultimo 26 Luglio.

E poi mi chiedo cosa si è perso del mio rapporto idilliaco con il mio lavoro, con lo scrivere software. E quando? forse già dall’inizio, dal mio primo lavoro, nel 2001. Ero piuttosto diffidente che quella passione da ragazzino mi avrebbe dato qualche soddisfazione vera. E invece sembrava che andasse in un primo momento. Ma arriva la delusione. Non tutto è perfetto, e questo basta a rompere un equilibrio delicato.

E cosa ho fatto in questi anni? Ho continuato a lavorare, prima lasciandolo indietro, poi prendendolo sempre più sul serio, man man che capivo che non c’era niente da risolvere a livello di rapporti con la mia famiglia.

Sono equilibrii, priorità. A volte si da troppo peso ad alcune cose che non dovrebbero averne. O almeno non così tanto. È sbagliato ragionare su di un singolo problema, ma effettivamente se ne affronta uno alla volta, è più facile.

Ma adesso scrivo software. Nel modo più diligente possibile, per quel che vuol dire.

Ma dove s’è perso l’amore? Andar cercando rapporti occasionali, o inventarsi sentimenti tanto per farsene una un po’ più a lungo. E non capire. Cosa c’entra con l’amore questo?

Ho perso qualcosa, ed è importante. L’amore per quel che faccio.

Sto qui a scrivere software per gente che lo usa, che è felice di vedere qualcosa di “figo” che funziona, e che è utile al suo scopo, ed è felice che di poter usare il software che sto scrivendo, e lo sto scrivendo “nel modo più diligente possibile“. Cosa cazzo vuol dire “nel modo più diligente possibile“? “Diligente”

Forse è lo stesso modo col quale affronto una maratona o mezzo iron?

Se così tanto vale non partire.

Forse è per via di troppe chiacchiere che mi girano in testa. “poi ti fregano”, “attento ti fanno lavorare per niente”, etc.

Certo, voglio essere pagato, ci mancherebbe, ma chi mi propone di lavorare gratis effettivamente? Ora?

Sono ancora nella fase “un po’ di amore”, e non è abbastanza. Del resto non c’è altro che conti nella vita, “niente amore” è come se non avesse senso, “un po’ d’amore” è come se avesse poco senso vivere, è come tirare a campare.

E ora torno al lavoro, la pausa pranzo is over.

Shortest Path to Success. Psicologia e programmazione

Questo blog ha contenuti che si alternano tra la psicopatologia e il faceto, così mi sento in diritto di parlare di psicologia del programmatore.

La programmazione è una attività dell’intelletto, ma consegnare un lavoro e decidere le priorità riguarda molto la parte emotiva. Del resto Agile, Extreme Programming, Kanban, etc, parlano più di metodo, di interazione, di rapporti sociali, piuttosto che di metodologie (i vari manifests dicono: non si esclude l’importanza degli strumenti, ma la persona viene prima …).

Shortest Path to Success. La strada più breve per il successo. È un concetto fondamentale, però si rischia sempre di lasciare questo tipo di approccio per paura di fare qualcosa di sbagliato. Il mantra era “chi prende le scorciatoglie si troverà sempre nei guai“. Non so se c’entra qualcosa di religioso, o meno, so che è una idiozia. Invece la cosa più semplice che funziona e che ha successo è la migliore scelta che si possa fare.

Succede di studiare una gran quantità di concetti, di algoritmi, di modelli e di pattern per la soluzione di diversi problemi, ed è possibile essere attratti dal decidere prima il pattern senza chiedersi se nel caso specifico sia strettamente necessario. Oppure succede di vedere librerie realizzate con un certo schema e, non potendole usare nel caso specifico, aver voglia di realizzarle con concetti simili.

E invece no. La scorciatoia è la strada giusta.

Faccio questo ragionamento prendendo spunto dai trader (quelli che giocano in borsa) e si dilungano sulla psicologia quando il loro lavoro consiste nel cercare di speculare il più possibile. Sembra strano, ma nell’attività di trader la psicologia gioca un ruolo importante. Perché no nella programmazione?

java oracle vs google

Ho qualche anno e ricordo Java (TM) come una tecnologia creata da Sun Microsystem in modo aperto e collaborativo nei confronti di altre aziende software, in particolare MS e Apple a quel tempo.

Il modo aperto era implementato appunto diffondendo l’uso di una API a cui gli implementatori dovevano aderire affinché ricevessero l’attestazione di compatibilità Java. La API definiva classi, metodi e proprietà (e regole di accessibilità di metodi e proprietà) dettagliatamente descrivendo i comportamenti di questi metodi e classi.

Ora Oracle pensa che Java sia una tecnologia proprietaria e non copiabile, che quella sia una fuga di informazioni, o almeno crede di poter farla passare per tale. La tecnologia Java si è diffusa proprio perché aveva quei termini di utilizzo.

Oracle ha torto sotto tutti gli aspetti riguardo la questione specifica. È una pratica scorretta quella di mettere i concorrenti nelle condizioni di illegalità cambiando le regole che prima erano state garantite e assicurate.

È legalmente una svista. Il copyright sulle api dice che le specifiche non possono essere distribuite e non possono essere modificate da altri se non da Sun. Questo non vuol dire che queste specifiche non possano essere usate una volta che uno le ha ottenute, proprio da Sun o da Oracle, per implementare una sua versione. Né vuol dire che l’implementarle in modo giusto o sbagliato ponga il programmatore in uno stato di illegalità.

L’acrobazia legale è posta in questi termini:
1. Oracle rilascia le specifiche delle API Java
2. Oracle pone il divieto di diffusione (distribuzione) non autorizzato delle specifiche.
3. Google documenta il proprio sistema che implementa le API Java rilasciate da Oracle.
4. Google è colpevole di aver distribuito qualcosa senza il permesso di Oracle

È quasi convincente, no?

Ma il punto 2. è sbagliato. I termini non sono di divieto di copia come opera d’autore sulla definizione delle api, ma riguardano l’uso di Java(TM), e questa limitazione è decaduta col tempo (causa Sun-MS) definendo Java come linguaggio e non tecnologia.

 

Aggiornamento Galaxy SII a Jelly Bean, o a Cyanongenmod

Sì, ho uno smartphone, cioè di quelli sui quali si possono installare applicazioni, quindi anche scriverne.

E sì, sono un programmatore, ma sull’argomento mi trovo ad essere piuttosto ignorante.

La prima cosa che feci, 1 mese dopo averlo comprato, fu quella di installare una rom rooted, che permette cioè di eseguire operazioni riservate ad un utente privilegiato anche ad applicazioni non di sistema (quanto meno questo è quello che ho capito del concetto “rooted rom”). Da lì in poi sono rimasto con Ice Cream, preoccupato da Brick Bug. Dopo un anno mi tranquillizzo e provo ad installare Cynonmod.

Seguo questa guida: http://wiki.cyanogenmod.org/w/Install_CM_for_i9100 ma tralascio un passo che ritengo non fondamentale:

1. copia del file cm-10.1.3-i9100.zip (cyanongenmod) in una scheda sd.

2. riavvio del telefono in modalità caricamento (volUp+pwr+home) con la scheda microsd insierita

3. backup dell’installazione nella scheda sd

4. install zip from sd card, e ho selezionato quel file.

5. riavvio

da notare che ho saltato il passo del factory reset indicato nella procedura.

Il risultato è stato:

6. al boot successivo: logo cyanongenmod ruotava senza mai fermarsi

 

problema riportato anche in http://wiki.cyanogenmod.org/w/CyanogenMod_Installer#Device_won.27t_boot_up.2C_but_shows_CM_boot_animation

per risolvere ho riavviato (modalità download) e

7. restore from image ed ho scelto il backup prima salvato

8. è tornato al mio vecchio sistema.

 

Morale della favola: fai il backup anche quando pensi di non aver niente da perdere. (ok, in realtà un factory reset avrei potuto farlo anche dalla installazione fallata del cyanongenmod)

ClockWorkMod è una applicazione che ho trovato installato in seguito all’installazione della rom rooted, quindi ho pensato di trovarmi un passo avanti.

Rimango col vecchio sistema rooted, il prossimo consiglio che andrò a seguire sarà quello della guida in http://www.androidpit.it/it/android/forum/thread/553027/Samsung-Galaxy-S2-root-con-Jelly-Bean

Gamification alcune risorse

Nel 2011 Gabe Zichermann (@gzicherm) è probabilmente la star di riferimento della gamification, con il suo libro Gamification by Design spiega come il meccanismo di dipendenza tipico dei giochi si applica scientificamente a campi differenti come il commercio elettronico e la vendita di contenuti informativi.

Ora questo libro sembra non più disponibile da O’Reilly ma liberamente fruibile: http://ge.tt/6pi9TKO/v/26 o almeno sembra, visto che non c’è una versione elettronica acquistabile.

Mentre questo video è in vendita http://shop.oreilly.com/product/0636920017622.do

e questa è un recente seminario: http://oreillynet.com/pub/e/1798

altro seminario: http://oreillynet.com/pub/e/2004

Il suo profilo su TED: http://www.ted.com/speakers/gabe_zichermann.html

e la sua presentazione TED: http://www.ted.com/talks/gabe_zichermann_how_games_make_kids_smarter.html (giocare fa i bimbi svegli)

Una twitter list da seguire: https://twitter.com/daverage/gamification