Intentional leave

Venerdì scorso ho lasciato la mia azienda precedente: sono stati due anni (poco meno) veloci e intensi in cui ho imparato tanto e lavorato fianco a fianco ad una leggenda.

Il caso ha voluto che una nuova offerta di lavoro venisse a me nella forma di numeri che davvero non si potevano rifiutare: il mio nuovo datore di lavoro è lui stesso un’altra leggenda (Magnet) e porta in sé una caterva di cambiamenti incredibili. Per la prima volta dico addio all’ecosistema Microsoft per lavoro; scriviamo codice in Java e per Android/iOS e per questo mi hanno fornito di MacBook Pro super carrozzato che userò con MacOS (qualcuno preferisce Windows ma per me l’idea di imparare a scrivere codice iOS e allo stesso tempo dare un taglio più deciso è più appealing). Resta il fatto che non ho cambiato idea su alcune questioni fondamentali.

La cosa più bella? Sono l’employee numero due nello stato di Washington.

Auguratemi in bocca al lupo.

-quack

Pubblicato domenica 19 gennaio 2014 alle 8:08 PM - 53 commenti so far
Archiviato in: Codice

L’inevitabile decadenza del software

Mi piace Google Chrome perché semplice, pulito, pochi fronzoli e ha un Sync decente. Vero fino all’altro giorno, quando i bookmark del PC dell’ufficio non si sincronizzavano più. Non ci ho fatto caso più di tanto poi oggi, incuriosito, guardo i settings:

“Sync has been stopped via the Google Dashboard.”

Probabilmente da quel momento nel passato, quando la batteria del telefono era molto scarica e mi serviva tenerlo in vita, in cui ho disabilitato temporaneamente la sincronizzazione.

Clicco il pulsante advanced settings e mi porta su una pagina in cui devo fare il login con le credenziali Google. Fatto il login la pagina si chiude nel nulla.

Riclicclo il pulsante advanced settings e non accade nulla.

Da buon software engineer, “esco ed entro” dal programma. Niente tranne una voce che dice “manage sync via the Google Dashboard” che non porta a nulla. Noto un’altra voce “riavvia il browser in modalità Windows 8”. Fatidica curiosità: clicco e Chrome si chiude. Non riappare niente. Clicco l’icona sulla taskbar (che nell’ultima versione si è aggiunta da sola violando le policy di Windows) e niente. Riclicco e rieccolo.

La sincronizzazione riparte, ma al contrario. Ovvero i nuovi bookmark spariscono.

Domanda: a che serve rilasciare la versione 26 con tutti i fronzoli quando la versione 5 funzionava benissimo? Persino Chrome, che ha il vantaggio di avere una legacy praticamente nulla, decade molto in fretta.

C’est la vie.

-quack

Pubblicato mercoledì 8 maggio 2013 alle 7:22 PM - 5 commenti so far
Archiviato in: Google, Codice

Tribal Knowledge

Qui in Intentional il modello di sviluppo è abbastanza flessibile. Però ogni mattina c’è un meeting in cui ognuno racconta quello che ha fatto il giorno precedente e quello che farà nelle successive ore lavorative. Nei miei primi meeting mi sembrava di essere sbarcato su un altro pianeta: oltre allo slang tipico aziendale, c’era da assorbire uno strato abbastanza spesso di notazione ungherese.

Durante uno di questi meeting ho ascoltato per la prima volta le parole tribal knowledge per descrivere un insieme di conoscenze tramandato per via di esperienza lavorativa di gruppo, magari tramite striminzita documentazione scritta.

Era un concetto che nel tempo ho inconsciamente assimilato e già conoscevo e a cui veniva per la prima volta associata una definizione pseudo-formale. La tribal knowledge esiste ovunque ma è estremamente preponderante nei progetti software, secondo una visione estremamente personale della cosa.

Personalmente è il motivo per cui, il rilascio di software tramite codice sorgente, è irrilevante rispetto alle metriche di qualità. Chi ha a disposizione codice sorgente può chiaramente modificarlo, ma molto difficilmente migliorarlo senza assorbire la tribal knowledge necessaria laddove le modifiche da apportare non siano estremamente semplici. TK fatta di “se cambi questo parametro vai ad incidere su questo fattore che non è assolutamente ovvio, in quanto abbiamo fatto delle prove e scoperto che”.

Bottomline: avere il codice sorgente è senz’altro un valore in più, ma non si dovrebbe barattare per nessun’altra qualità del software che si va ad usare.

-quack

Pubblicato lunedì 22 aprile 2013 alle 10:20 PM - 0 commenti so far
Archiviato in: Codice

Cercare numeri reali

einstein[1]Soluzione pratica ad un problema comune. È la seconda volta che si manifesta in meno di due anni e avrei pensato che la soluzione a mio dire più pratica di tutte fosse anche la più intuibile. A guardare le facce ogni volta che la propongo direi di no.

Il problema: cercare e visualizzare tutte le righe (di una tabella, lista, contenitore, ecc.) contenenti valori in virgola mobile. Ovvero: se l’utente cerca “2.5” il valore 2.4998 dovrebbe essere “accettato”?

Soluzione: usare i principi della notazione scientifica. Ovvero convertire:
(X == 2.5) in (2.45 < X <= 2.55); similmente (X == 2.50) in (2.4995 < X <= 2.505) e
(X <= 2.5) in ( X <= 2.55). Lasciare ( X < 2.5) così come è e agire simmetricamente per il verso opposto.

Ora spero nel premio Nobel per il parsing.

-quack

Pubblicato martedì 6 novembre 2012 alle 1:09 AM - 2 commenti so far
Archiviato in: Codice

Congruenze

Piccole grandi formule interessanti. Da giovane ero in grado di calcolare la prima grazie ad un aiuto mnemonico per la parte più difficile relativa al mese e semplificando il calcolo limitandolo al secolo allora in corso e già passato. Raccolte qui per un piacere puramente estetico.

La congruenza di Zeller:

h = \left(q + \left\lfloor\frac{13(m+1)}{5}\right\rfloor + K + \left\lfloor\frac{K}{4}\right\rfloor + \left\lfloor\frac{J}{4}\right\rfloor - 2J\right) \mod 7,

(Analisi)

La luna nuova:

d = 5.597661 + 29.5305888610 \times N + (102.026 \times 10^{-12})\times N^2

(Spiegazione)

Formula di Oudin:

image

(spiegazione)

-quack

Pubblicato lunedì 4 giugno 2012 alle 5:46 AM - 0 commenti so far
Archiviato in: Codice