PDI^2

Quale less is more ?

personale, fun May 29, 2006 10:02 pm (Save post)

Approfitto della riflessione su blackbirdblog sull’idea che meno è più per infilarci un pippone delirante .

Il post di cui sopra è molto XP in alcuni punti. YAGNI è la prima cosa che salta in testa, ed il secondo paragrafo fa venire istintivamente alla mente il grafico del costo del cambiamento
cost change curve

peccato la parte finale sul design a priori :)

Ad ogni modo, quello che viene da chiedermi è: qual’è l’assenza che risulta un vantaggio?

Per prima cosa, il codice duplicato. Aver letto Object Oriented Software Construction mi ha segnato sostanzialmente per due motivi: primo mi ha probabilmente abbassato la vista, secondo mi ha fatto riflettere sul fatto che molti assunti da programmatore si basano su presupposti sbagliati.
In particolare, l’idea che la programmazione difensiva, del tipo “lo so che questa funzione riceverà sempre in input numeri tra 1 e 9, ma fammici mettere un controllo che non si sa mai” sia basato sul concetto fondamentalmente assurdo del non potersi fidare del resto del codice (cosa che ovviamente è risolta dal design by contract, per meyer, come ogni problema del mondo).

Allora ogni ridondanza è male, ed un design corretto non ne presenta nessuna? Mi pare che il DRY principle sia quasi sempre valido e che il codice migliore sia sempre quello non scritto. E però, non sono in grado di capire chiaramente quand’è che riesco davvero ad applicarlo.

Siccome sto trafficando con Nitro e Rails di recente, ci infilo un confronto.

Rails segue massicciamente l’idea che le convenzioni siano preferibili alle configurazioni esplicite. Nitro, d’altro canto, impone pochissime restrizioni, così da permettere uno sviluppo molto più spontaneo.
Quindi, ad esempio, mentre il primo vuole una gerarchia complessa di directory e sottodirectory, il secondo se ne frega e chiede solo di mettere un require.

Qual’è l’approccio davvero less?
È vero, rails non vuole che tu metta una riga di codice in più, ma pretende molto di più in fatto di gestione del progetto.
Quando si segue una convenzione si ha un vantaggio evidente, ma ad un certo punto diventa impossibile tornare indietro senza uno sforzo notevole.
Penso ad esempio a tante tradizioni in Unix, come gli script di init; il sistema tipico di linux è subottimale, ma come fai a cambiarlo oggi se tutti i programmi del cosmo ci si appoggiano sopra e tutti o quasi lo seguono?

D’altronde, Nitro permette di creare un progetto anarchicamente. Non ti va di mettere le viste in una cartella precisa? Vai sereno.
Vuoi mettere tutti i modelli in un unico file tanto sono 5 righe ognuno? Perfetto.
Solo che tutte le volte che uno va a mettere mano nel codice di qualcun’altro non sa che pesci pigliare, in quanto tutto è stato organizzato in un modo ad hoc.

Non mi pare ci sia un meno chiaramente… beh.. minoritario.

Per le interfacce grafiche sembra più semplice, è ormai assodato che le convenzioni sono buone ed utili se sono ben note e largamente condivise, basta dare un’occhiata a cose come questa. Ma in questo caso che fine ha fatto il less, ho una marea di regole!

Altro esempio: gestione della memoria implicita o esplicita.
Un appassionato sviluppatore C++ cercherà subdolamente di convincermi che la garbage collection è chiaramente un più da evitare. Uno sviluppatore python insisterà nel sostenere che il dover gestire la memoria è chiaramente un più da evitare.

E persino la sintassi! Buona parte dei Lisper e degli Smalltalker saranno perfettamente in grado di dirvi quanto sia meglio avere meno sintassi, e dalla loro hanno linguaggi immutati da decenni. Ma buona parte dei rubyisti e dei pythonisti saranno dell’opinione , che è meglio avere meno estremismo, e dalla loro hanno decisamente più mindhsare. I perlisti plausibilmente sostengono che less può essere meno o più a seconda della versione di perl.

E poi i servizi web. del.icio.us non fa praticamente nulla, è chiaramente less. Ed è combinabile con un fottio di altre cose, il che lo rende more, e l’assunto sembra funzionare. Ma poi, cavolo devo considerare che è c’è molta più roba da usare insieme a del.icio.us per avere funzionalità più ricche, come dimostrano i milioni di mashup, ed allora mi diventa di nuovo more.

Insomma ho serie difficoltà a capire cos’è meno o più, il che al primo anno di specialistica in ingegneria è preoccupante. Di una cosa sono però sicuro, che è meglio dormire more e quindi vado a nanna. Sempre che non mi convinca a provare il sonno polifasico .

Recuperare ruby-talk dopo la triste mort del gateway.

ruby, personale May 28, 2006 12:23 am (Save post)

Il sottoscritto disapprova le email come mezzo di comunicazione di massa.
La sua personale convinzione è che usenet sia la Via, la Verità ed il resto. Usenet ha una cultura della comunità, ed un senso del gruppo che non è replicabile via email.
D’altronde in molti casi è preferibile una mailing list, ad esempio quando l’alternativa è un forum fatto con phpbb. PhpBB è il forum che userebbero Hitler, Vlad l’Impalatore ed i Vogon se ne avessero la possibilità, non sono aperto ad altre interpretazioni.

ruby-talk, la storica mailing list dedicata a ruby è stata specchiata per anni nel newsgroup comp.lang.ruby, ed il mondo è sempre stato un posto felice. Tra l’altro, a ben vedere, il codice del gateway è probabilmente anche stato uno dei primi software scritti in ruby a gestire moli di dati rilevanti.

Senonché, per problemi di.. mmh.. diciamo hosting… il mirror/gateway è andato giù da qualche tempo, splittando la comunità in parti decisamente ineguali, 30 messaggi al giorno su c.l.r e 350 su ruby-talk. Diciamoci la verità, questo ha portato ad un incremento notevole del mio tempo libero, ma ovviamente se ci tenessi a fare buon uso del mio tempo libero non avrei un blog (anzi due) per cui alla fine ho trovato un modo semplice per utilizzare ruby-talk dal mio client nntp.

Il trucco è come al solito usare gmane.org, che offre la possibilità di seguire un’infinità di mailing list come newsgroup, feed, blog etc etc.

Per usare gmane.comp.lang.ruby.general dovete ovviamente aggiungere il server nntp di gmane e sottoscrivere il gruppo, ma a quel punto avrete accesso solo in lettura.
Per poter inviare messaggi, è necessario iscriversi a ruby-talk, come vi verrà fatto notare da una mail quando proverete ad inviare un messaggio.
Il problema è che poi ruby-talk vi intaserà la casella di posta con 300 messaggi al giorno…

Ma anche qui la soluzione è semplice: inviate a ruby-talk-ctl@ruby-lang.org un messaggio contenent nel corpo del messaggio (non l’oggetto) la stringa # off che bloccherà l’invio delle mail verso di voi.

Ed ora, fine delle trasmissioni, me ne vado in montagna per due giorni con l’altra metà del mio cielo, buona domenica a tutti!

Fiori href

web, fun May 27, 2006 3:05 pm (Save post)

Via hyle ho scoperto quest’applicazione bellissima per visualizzare le connessioni interne di un sito web.
Cliccate sull’immaginetta qua sotto il grafo per questo sito:
Free Image Hosting at www.ImageShack.us

Oddio, in teoria è una cosa elementare da fare con graphviz, ma questo è molto più carino no?

My SOC Blog

personale, blogosfera May 26, 2006 12:56 pm (Save post)

Per compatibilità col mentor ho pensato che sarebbe stata una cosa utile aprire un blog in inglese che parli del lavoro fatto per la Summer Of Code, quindi in caso interessi a qualcuno, andate a sottoscrivere un ennesimo feed su riffraff.info .

Se succedono cose strane col blog è perché è ancora in fase di stabilizzazione… e si devo ammettere che non è nitro powered ma typo è troppo carino c’è poco da fare :)

Summer of Code

personale May 24, 2006 8:02 am (Save post)

i risultati della google summer of code sono usciti (controllate verificando la vostra student home page).

Io e lawrence siamo stati accettati, lui per python ed io per ruby.

La mia intenzione è di lavorare su nitro , il framework è in grado di generare una semplicissima UI amministrativa per manipolare gli oggetti di un’applicazione, in modo simile a django.
Ho intenzione di riscrivere ex novo questa parte, con un sacco di ideucce.. fra poco si comincia :)

Ruby @ JUGPadova & il mondo

ruby, java, personale, blogosfera, fun, rubyonrails May 23, 2006 9:04 am (Save post)

Insomma l’hanno fatto. Il meting del java user group padovano su ruby & rails intendo.
E pare sia andato alla grande, viva l’ interimpollinazione informatica.
Il mio sogno di organizzare una conferenza a linguaggi unificati sembra ogni giorno meno assurdo, peccato che fino a dicembre/gennaio non se ne parla..

Ma quello che volevo dire in questo post è che seguo pensieri sparsi perché l’autrice usa scrive.it ed i suoi commenti sui film erano in linea con i miei e della mia dolce metà.
E poi è un blog simpatico :) .

(Notiamo che scrive.it è fatto con rails. )

Poi oggi, guardando il suddetto blog ho trovato nel fotostream di monja le foto dell ruby@jugp.

Il mondo è decisamente troppo piccolo.

Che dite, è il caso di dire che è una figata ?

Apple store 5th avenue con amore

personale, fun May 21, 2006 2:55 pm (Save post)

La apple ha aperto un apple store cubico e trasparente sulla quinta strada a new york.
Qua potete vedere un video delle prime 24 ore di apertura.

Ma sapete cosa è bello? Che se guardate il video relativo alla 5 del mattino passa un tizio con tre cartelli: Ushii Lang, I love you, Will you marry me?

In altre notizie, ho ordinato un macbook, pure io sono caduto nel campo di distorsione della realtà si Steve.

Buone letture per la domenica pomeriggio

lettura 9:53 am (Save post)

Domenica! Ozio ozzio ozzzio!
Occasione per leggere qualcosina, tra cui sicuramente infilo ComplexLab, una miniera di cose interessanti scoperta grazie a Gianluca l.

Poi devo finire di leggere un’interessante articolo su linguaggi e logica , che spiega come i linguaggi di programmazione negli anni a venire avranno un fondamento teorico sempre più forte, pur usando idee vecchie di un secolo.

Apprezzo in particolare l’articolo per il riferimento a Frege, emblematica figura di persona sfigata, che cercando di dimostrare come la matematica derivi dalla logica andò tristemente a sbattere contro i limiti delle due, nonostante il vezzo di concludenre tutti i capitoli del suo libro sull’aritmetica con un QED.
Il mio libro di filosofia del liceo faceva giustamente notare che Frege non fu un matematico ma solo uno sfortunato filosofo :)

Infine leggerò qualche altro libro di fantascienza del secolo scorso, sono a 4 nelle ultime tre settimane (come si può vedere su scrive.it)

Little (ruby) italy cresce

personale, blogosfera, ruby-it May 18, 2006 12:30 pm (Save post)

Noto con piacere la crescita costante della comunità di rubyisti italiani, dopo che Enrico ha detto che comincia a trafficare con il mio linguaggio preferito, grazie a Nicola scopro anche un interessante progetto, rog di ripley, un blog engine basato su file statici e sviluppato come un set di task per rake.
Beh rog non è solo questo, ma questa è la parte imo più interessante, oltre al fatto di aver utilizzato Rote . Dal canto mio ho subito rotto le scatole con una email di commenti sul codice, riproponendo il mio cavallo di battaglia, cioè l’uso della sintassi

def foo
 bla
rescue
 bla bla
end

Per quel che riguarda la crescita di ruby in italia, mi piace notare come ad aprile ci fosse una media di quasi mille accessi al giorno al nostro sito, mentre a maggio la media è per ora di oltre 1500, indubbiamente grazie al simpatico giochino del refactoring collettivo, che purtroppo si è fermato da quando ho contribuito io :(

i CAPTCHA sono VELENO

personale, web, fastidio May 17, 2006 11:03 am (Save post)

Io odio i cosidetti CAPTCHA basati tu immaginette, quindi se vi trovate a doverne passare uno per inviare un commento scusatemi ma non è colpa mia, quelli di blogsome hanno deciso così. In compenso ora che so che esiste posso levare la mia moderazione.

Ma torniamo a queste cavolo di immaginette: anzitutto, l’acronimo è Completely Automated Public Turing test to tell Computers and Humans Apart è sbagliato.

Il test chiaramente non è un test di turing, e non distingue umani e computer, distringue solo cose che riescono a leggere dalle cose che non ci riescono.

Ad esempio il CAPTCHA usato da blogsome al momento può chiaramente essere scavalcato da un programma con funzionalità OCR, ed al tempo stesso tiene fuori non vedenti ed ipovedenti.
La cosa pessima è che sembra che tutti si vadano convincendo che i captcha di questo tipo sono un buon modo per distinguere umani e computer (se c’è qualcuno che lavora con Yahoo! mediti..).

Mi piacerebbe che almeno quelli che usano un affare come questo mettessero un’opzione “ascolta audio se non riesci a vedere l’immagine“, che immagino lascerebbe ancora fuori i sordociechi, ma sarebbe un po’ meglio.

Quello che non capisco è perché non si sia diffusa l’usanza di fare una semplice domanda. Dot.Kde dopo l’invio di un post ha un mini form “clicca _w00t_” e 4 bottoncini con su scritto qualcosa, tra cui cercare _w00t_.
Il blog di Brian McCallister aveva “traduci da l33t in inglese la parola w0mb4t5“.
Anche nel wiki di ruby italia c’è un test del genere: “quanto fa 2 + 2 ?”, e non è mai arrivato uno spam automatizzato, perché si sommano i due fattori: domanda idiota, interfaccia non standard.

Sono sistemi assolutamente elementari, e che potrebbero essere scavalcati da una qualsiasi applicazione minimamente complessa pensata per fare spam, ma funzionano perché queste applicazioni non esistono. Fermatevi e prendete un respiro profondo: se cambiate il nome del file che gestisce i commenti nel vostro blog-software avrete tagliato il 90% dello spam.

Infine, perché diavolo la gente non si ingegna per usare domande che veramente mettano alla prova un filo di intelligenza?
Una domanda infinitamente efficace, potrebbe essere solo “di che colore era il cavallo bianco di napoleone?“.
In una mossa hai tagliato fuori spambot, cinesi che fanno spam a mano, ed idioti completi. Un risultato eccellente, direi.

Si potrebbe anche farsi un piccolo database di domande, se proprio lo si vuole, per le quali basta chiedere ad una persona con meno di 9 anni, che sono intelligenti abbastanza da conoscerne un sacco di domande così.

Chissà perché però l’idea di usare un’immagine con dentro numeri stortignaccoli sembra essere molto più affascinante e professionale. Direi quasi anche enterprise e forse scalabile.
Mah.

Get free blog up and running in minutes with Blogsome
Theme designed by Janis Joseph