Marco Arment:
It’s interesting how often our allegedly “decentralized” technologies keep resulting in immense concentration of power among a few controlling parties. Once that happens, the worst sides of those few people usually control the entire system: dogmatic disagreements, power struggles, and greed.
E io, pensandoci, non è che abbia molto da aggiungere.
Il buon Andrea mi ha consigliato “di striscio” (ossia linkandola altrove, e ci sono arrivato per caso) questo interessantissimo scritto di Aaron Swartz.
When you’re upset with someone, all you want to do is change the way they’re acting. But you can’t control what’s inside a person’s head. Yelling at them isn’t going to make them come around, it’s just going to make them more defiant[…].
No, you can’t force other people to change. You can, however, change just about everything else. And usually, that’s enough.
Memo per me: aggiustando la macchina prima delle persone, si cambia il comportamento di queste. Modificando tutto questo, togliendo le storture, in genere si aggiustano anche problemi interiori - e si trova un maggior gusto nel vivere, nel lavorare, e così via.
14 Jan 2016
Ora, parliamo un po’ dell’applicazione di Facebook per Android e traiamo qualche conlusione sparando a casaccio nel mucchio di codice. Innanzi tutto, c’è da dire che stamattina ho guardato per sbaglio e ormai la taglia dell’applicativo è XXL; come sono finito a notare questa cosa per sbaglio? Perché ieri sera l’applicazione ha iniziato a chiudersi da sola.
Esattamente: la apro, e va in chiusura forzata da sé. Ho dovuto cancellare i dati dell’app e riconfigurarla. Visto questo precedente, che si è anche ripetuto nel tempo e su più dispositivi, io mi domando le seguenti due cose:
- Come diamine è possibile che ReactJS sia così tanto popolare come framework, quando è lampante che l’applicazione di Facebook funziona abbastanza male? Come è possibile che la pubblicità fatta da Facebook abbia sortito un effetto così positivo?
- Come diamine fa un’applicazione a pesare 200 e rotti mega per fare due cose? Ok, ok: non sono esattamente due cose, ma sono comunque un po’ di cose. Tumblr non è molto diversa come approccio, eppure ne pesa solo 60, ossia meno di un terzo.
Meh. Torno al mio Ruby.
07 Jan 2016
In questi giorni al lavoro mi sono trovato davanti a una cosetta allo stesso tempo interessante e allucinante: un applicativo Rails deployato sotto JRuby (astenersi commenti tipo “OMG JRuby ma che state a fà”) che per precompilare gli asset impiegava un tempo tra i 40 e i 50 minuti, quando non si piantava tutto il job di continuous integration.
E olé, verso nuove avventure: addentrandomi un po’ dentro questa roba ho capito che rake usa l’ambiente Javascript che si trova sotto il sedere per precompilare/minificare/offuscare/quellochevepare, quindi ho sostituito il runtime a livello applicativo con tre righe semplici ma efficaci nella configurazione:
if defined?(ExecJS) && system('which node')
ExecJS.runtime = ExecJS::Runtimes::Node
end
Questo fa si che, una volta trovato l’eseguibile di NodeJS sul filesystem, e appurato che si stia usando ExecJS per eseguire il Javascript all’interno dell’applicazione, venga utilizzato NodeJS come runtime Javascript, e non quello built-in di JRuby che causa un rallentamento notevole.
Nel nostro caso, il tempo impiegato dalla build è stato ridotto da 45 minuti medi a circa 5 minuti medi. Chiaramente questa soluzione necessita di NodeJS installato sulla macchina.
Gianluca ha avuto l’ottima idea di stilare una comodissima checklist di cosa dovremmo includere in prima battuta quando mettiamo su un pacchetto per npm da zero. Giusto qualche osservazione:
- Il .gitignore mi sembra un po’ scarno, ma effettivamente per un tiny package (e quindi un pacchetto che segue la filosofia Unix, ossia quella di fare una cosa e farla bene) c’è poca roba da considerare, quindi poca da ignorare
- Di solito genero il package.json tramite npm init, ma anche avere un modello come quello che c’è nel post non è male; detto questo, sto iniziando a pensare di scrivere un piccolo eseguibile per generare un package.json al volo :-)
- Basta co’ ‘sto feross standard style! A me piacciono i puntevvirgola. :-P