altre destinazioni

ultimi post

ultimi commenti

tag principali

categorie

archivi

powered by

  • WPFrontman + WP

friends

copyright

  • © 2004-2011
    Ludovico Magnocavallo
    tutti i diritti riservati

Voi come leggete il codice?

21 febbraio 2013

1 commento

Sto facendo un lavoro per una società abbastanza nota (vi dico solo che è un plugin per WP), e alcuni dei commenti fatti al mio codice dal mio referente mi hanno un po’ spiazzato: per capire cosa intendesse ho dovuto fare lo sforzo di uscire dalle mie consuetudini di sviluppo.

Dopo qualche meditazione, sono giunto alla conclusione che i nostri rispettivi approcci alla lettura del codice sono radicalmente diversi. Il mio approccio, quando prendo in mano una classe che non ho mai visto, è prima di tutto di farmi un’idea generale di cosa faccia guardando i nomi dei metodi nel class browser. Fatto questo, scendo se è il caso nel dettaglio dei metodi che mi interessano o mi sembrano cruciali per il suo funzionamento. Per me, quindi, un metodo usato una volta sola non solo ha poco senso — e ne privilegio quindi il riuso rispetto ad altre considerazioni –, ma è addirittura dannoso in quanto inquina la comprensione a colpo d’occhio del codice.

Il mio interlocutore invece segue un approccio diverso: quando prende in mano una classe guarda subito al costruttore, e parte da lì per seguire un eventuale flusso di codice. Per lui un metodo usato una sola volta ha un senso, in quanto incapsula determinate operazioni e — se il nome è scelto con criterio — nasconde parte del codice rendendo più semplice e veloce seguire un eventuale flusso di esecuzione.

Nel caso specifico (un plugin per WP) è probabile che il suo approccio abbia senso, dato che il codice viene eseguito più o meno in sequenza, anche se la sequenza è pilotata dai vari hook di WP, cui sono agganciati i metodi pubblici della classe. Certo è che lavorando di solito in Python/Django, un approccio di questo tipo mi sembra un po’ stravagante.

Sarei curioso di sapere come altri leggono il codice, e se la differenza è dovuta più al framework (WP) che porta a pensare in maniera sequenziale, al linguaggio usato, o se è soprattutto un approccio personale. BTW, questo post è scritto usando il plugin di cui sopra, secondo il principio dell’eat your own dogfood.

Lightpress, reboot

23 giugno 2011

4 commenti

Qualcuno degli ormai rari lettori di questo blog forse ricorderà Lightpress, il frontend per WordPress che avevo sviluppato in Blogo, e accasato in seguito da Textdrive che lo aveva adottato tra le applicazioni sponsorizzate. Dopo parecchio lavoro e un po’ di (virtuali) soddisfazioni, circa cinque anni fa aveo deciso di interromperne lo sviluppo: in parte perchè pur essendo un progetto interessante quasi solo per blog commerciali, la licenza GPL faceva sì che in pratica lavorassi come consulente non remunerato (i nanopublisher non sono famosi in genere per avere un senso di equità sociale particolarmente sviluppato); e in parte perchè i miei interessi si erano nel frattempo spostati verso altre direzioni, tra cui Blogbabel.

Nel retrocranio però l’esperienza di Lightpress ha continuato a fermentare, e ogni volta che pensavo a mettere su un blog o mettevo le mani su quello di qualche parente o amico, mi rendevo conto che l’esigenza di tanti anni fa esiste ancora: WordPress ha una architettura vecchia, che non era particolarmente brillante neppure alle origini ma con il tempo e le stratificazioni successive è diventata davvero pessima, generando un sistema ipercomplesso, pieno di ridondanza, in cui è complicato mettere le mani (mai provato a tracciare l’origine di un dato attraverso decine di funzioni e include?) e che non usa nessuna delle tecniche di sviluppo di applicazioni web che sono ormai di uso comune come un sistema di template, codice a oggetti o perlomeno la separazione tra dati e viste logiche, un ORM (non tiratemi fuori l’aborto che è wpdb, tra l’altro utilizzato solo per alcune cose), ecc. ecc.

Così qualche tempo fa fa ho iniziato un po’ per gioco a buttare giù un frontend per WordPress in Django, riprendendo alcune delle idee di Lightpress e aggiungendone molte altre, e soprattutto cercando il più possibile di seguire la filosofia di progettazione e sviluppo delle applicazioni Python e Django. Ci è voluto molto più di quanto pensassi, un po’ per gli inevitabili mismatch tra il disegno della base dati di WordPress multiblog (agghiacciante come quasi tutto il resto) e il layer ORM di Django, un po’ per la quantità di funzionalità di cui tenere conto (commenti threaded o meno, categorie e pagine mono o multilivello, interazione diversa con utenti WP o anonimi, ecc.), ma dopo quasi sei mesi il primo prototipo è pronto, e sta servendo i blog che sono sul mio server, tra cui questo che state leggendo.

questo post continua, leggi il resto

Spigolature / 26

19 febbraio 2009

4 commenti

Il mio setup audio da ufficio

Piccola pausa dalla stesura delle slide per i corsi di Python che devo tenere in ufficio nelle prossime settimane, per rompere un po’ il silenzio con qualche pensiero sparso.

Audio, audio, audio. Quello che vedete sopra è il mio piccolo setup audio da ufficio, ghetto style: un vecchio iPod Mini recuperato su ebay a una ventina di euro e diymoddato, un dock con due ottimi (ed economici) condensatori AmpOhm, un Millett Starving Student Hybrid (uscirà a breve un kit con PCB se vi interessa, io dovrei ricevere un prototipo nei prossimi giorni). Ottimo suono per pochi soldi, e soprattutto senza interferenze malefiche dalle pessime porte USB del portatile HP, come avevo prima con il DAC USB.

Django in Italiano. Con un po’ di ritardo faccio gli auguri a Marco (aka The Vice-President aka The Boss) per la pubblicazione di “Sviluppare applicazioni web con Django” per i tipi di Apogeo. Marco ci sa fare, se vi interessa Django fate un salto in libreria.

Redis. Antirez ha annunciato recentemente Redis, un progetto davvero interessante che potrebbe colmare un vuoto che si fa sempre più sentire: “Avete presente memcached? Immaginatelo persistente, e con funzioni piu’ avanzate secondo me irrinunciabili per non avere solo una semplice cache ma una alternativa ai database relazionali.” E ai queue manager, almeno per quello che serve a chi sviluppa applicazioni Internet moderne. Appena ricevo il codice vi racconterò qualcosa in più, se l’autore non ha nulla in contrario.

Letture. Alla fine mi sono stufato, e dopo averci pensato per mesi (anni?) ho preso la strada più semplice: nella sidebar (solo sulla home per ora) vedete una lista dei libri che ho letto e sto leggendo, realizzata senza le API di Amazon o sofisticherie varie, ma come semplice app Django. Man mano vedrò di inserire alcune letture passate, e di utilizzare il campo per  commentare brevemente i libri.

Intervista. Non bisognerebbe citare i concorrenti, quindi fate finta di niente ma andatevi a leggere l’intervista.

Pybirra, 5 dicembre 2007

3 dicembre 2007

4 commenti

Mercoledì prossimo, dopo la presentazione di Community Management di Emanuele Scotti e Rosario Sica, Pybirra/Pydinner al solito Football English Club di via Valpetrosa. Se siete in loco siete cordialmente invitati ad unirvi alla banda. Rubyisti inclusi

Visual Basic per il Web

5 settembre 2007

7 commenti

So che la definizione farà storcere il naso a parecchia gente, ma sono sempre più convinto che uno dei maggiori punti di forza di Django sia di essere una sorta di Visual Basic per le applicazioni web. Un effetto forse non previsto della eccellente interfaccia di amministrazione preconfezionata, che rende di fatto Django un eccezionale toolbox per generare rapidissimamente interfacce di qualità per basi dati.

Per intenderci, quel tipo di applicazioni che in ambiente Enterprise vengono tradizionalmente realizzate (in ordine di schifezza crescente) con Visual Basic, Domino, Microsoft Access o quegli agghiaccianti fogli Excel salvati su una cartella condivisa che vi sarà capitato di vedere più di una volta (non c’è limite alle aberrazioni: giuro di aver visto un progetto in cui Excel veniva utilizzato per i diagrammi di flusso e di rete). Applicazioni che in Django sono semplicissime da sviluppare, con l’enorme vantaggio di avere una vera base dati relazionale alle spalle, e un’interfaccia web flessibile, intrinsecamente multiutente e scalabile.

Già che siamo in tema, per dopodomani mattina devo presentare una scaletta per un tutorial in italiano su Django, da comporre in tre-quattro articoli che verranno pubblicati su una nota rivista. Sto pensando di fare il tutorial sulla creazione di un blog, se avete consigli più originali o interessanti fatevi sotto.

Ciao ciao, Treo...

12 luglio 2007

10 commenti

Dopo la quinta (o sesta) rottura hardware in un anno e mezzo, un po’ a malincuore ho deciso di abbandonare il fido vecchio Treo 650, e passare a un Nokia e61i. I perchè di questa scelta sono presto detti: l’E61i è l’unico cellulare non Windows Mobile con una tastiera simile a quella del Treo, e con le funzionalità che Palm si ostina a non mettere sui suoi cellulari: una fotocamera con una risoluzione decente (2Mp contro quella VGA del Treo), e una connessione WiFI (c’è anche il supporto UMTS, anche se a me interessa meno). E come ciliegina sulla torta, sull’E61i gira Python per S60, quello ufficiale supportato dalla Nokia.

Dopo poco più di un giorno di utilizzo devo dire che la scelta è stata azzeccata, l’E61i è un aggeggio magnifico, e non solo dal punto di vista tecnologico: è sottile e leggero, realizzato con una combinazione di metallo e quella plastichina tra il marrone e il rossiccio utilizzata sull’N95, che non mi dispiace affatto. L’usabilità poi è la migliore tra i tanti palmari e cellulari che ho avuto tra le mani in questi anni: non è per niente lento come dicono tanti (specie se confrontato a quella ciofeca di Windows Mobile), e la scelta di abbandonare il tradizionale touchscreen è azzeccatissima, dato che ha costretto Nokia a realizzare un’interfaccia dove qualsiasi funzione è raggiungibile utilizzando un dito solo, portando agli estremi la strada che Palm aveva iniziato a percorrere con il Treo. La tastiera, dopo qualche minuto per familiarizzarsi, è davvero ottima, così come la selezione puntuale del tipo di connessione da utilizzare. E il browser web è incredibile, il primo davvero utilizzabile su un palmare.

Cosa non va? Davvero poco: lo schermo a risoluzione minore del Treo (o del T3 che ancora utilizzo ogni tanto), i font TTF su Mobipocket renderizzati con antialias (e credo con il bytecode interpreter di freetype disabilitato), l’attacco per le cuffie proprietario che obbliga ad un acquisto da qualche euro su Ebay, e i maledetti campi testo del browser web che si ostinano a mettera la prima lettera maiuscola. Forse anche il prezzo, ma in questo sono fortunato, dato che come il Treo l’E61i è un cellulare aziendale.

Tra la riconsegna del Treo e l’arrivo dell’E61i, ho avuto modo di provare un i-Mate K-Jam. Niente male, anche se dopo due minuti la tastiera estraibile diventa una scocciatura, e il pennino (o unghie appuntite da mandarino cinese) sono indispensabili come su tutti gli altri cellulari Windows Mobile. Concludo con un grazie a Carlo, di cui ricordavo un post sull’E61, che mi ha dato qualche dritta via IM appena ho acceso il telefono.

Pycon Uno

10 aprile 2007

1 commento

Con colpevole ritardo segnalo Pycon Uno, la prima conferenza italiana su Python, che si terrà a Firenze il 9 e 10 giugno 2007. Valentino, che della neonata associazione Python Italia è presidente, ha fatto circolare oggi la seconda call for papers per la conferenza. Se siete interessati, trovate tutto qui.

E anche se non avete nulla da presentare fateci un pensierino, potrebbe essere una buona occasione per conoscere persone, scambiare esperienze, e farsi qualche bella mangiata/bevuta in compagnia. In fin dei conti, le occasioni di questo tipo in Italia non sono tante…

I Pythonisti sono più belli

1 aprile 2007

8 commenti

Non ci credete? Guardate qui sotto, e a giugno andate in edicola a prendere Glamour, dove troverete immortalati due dei soci fondatori della neonata associazione Python italiana (di cui parlerò in un prossimo post). E troverete anche (forse) una menzione del Pydinner, che era oggi riunito al completo tranne Antonio, che c’aveva da fà.

Lawrence fotografato per Glamour

Ma se i Pythonisti sono i più fighi, i Rubyisti sono (forse) quelli con il senso dell’umorismo più sviluppato: in venti secondi Chiaroscuro ha sparato un paio di battute non male, visto soprattutto che eravamo al termine di una lunghissima maratona iniziata ieri mattina alle 11:30 da Yahoo!. 1

Come era prevedibile, il RItaliaCamp è stato interessante soprattutto per l’aspetto sociale, le chiacchiere, qualche bella risata, e le ottime (anche se decisamente mal disposte) vettovaglie fornite dal munifico Tombolini. Sul resto non avevo molte speranze: troppi partecipanti, obiettivi fumosi e decisamente poco concreti, e — sorpresa — la peggiore organizzazione tra tutti i BarCamp fatti fin’ora in Italia (con risvolti tra il comico e il grottesco su quella sòla di Second Life), nonostante gli sforzi sovrumani di Theo che ha passato la giornata a correre, spostare, aggiustare e soccorrere. Per fortuna lo ZenaCamp è vicino, credo che sarà tutta un’altra storia.

1 Fatte queste premesse, siamo quindi tutti con il fiato sospeso a vedere come cresce l’ibrido PyRuby, che ha appena iniziato a collaborare a BlogBabel e potrebbe quindi godere delle qualità di entrambi gli schieramenti (meno male che sta a Roma, altrimenti ci rovina la piazza a tutti).