Jul 06, 2012
Il mio Europython 2012
Prima volta a Europython: la bella Firenze, facce nuove e conosciute, guru del settore mai visti prima. Racconto e impressioni di una giornata molto interessante
Una giornata a Europython è un salto in una dimensione parallela. Qui non cambia il contesto di quello che si fa quotidianamente (sviluppare e studiare python e 'derivati'), ma cambia totalmente modo di vedere e affrontare le cose.

Ma torniamo alle presentazioni. Nell'ordine, ho seguito:
- Sviluppare una RESTful web API con python, Flask e MongoDB
- Becoming a better programmer
- Diving into Flask (head on)
- python white magic
- programming mobile apps with python
Vi racconto un po' quello che hanno esposto i relatori.
Flask, MongoDB e le RESTful API
Il talk di Nicola Iarocci (@nicolaiarocci) mi ha lasciato delle ottime impressioni. Come combinazione Flask, Mongo e python danno la possibilità in modo estremamente veloce di creare delle API per scrivere / leggere / modificare dati da un database.
Con questa combo, Iarocci ci ha fatto vedere come si può giocare col codice per fare inserimento, piuttosto che modifiche e caching delle informazioni reperite dal database. Ha anche mostrato uno strumento di sviluppo e debug per le api interessante: Advanced REST client per Chrome.
Il talk è stato registrato e gli organizzatori mi hanno detto che presto sarà sul web; mi riguarderò volentieri l'intervento, ma intanto ci si può accontentare delle slide.
Becoming a better programmer

Il talk deve aver suscitato curiosità a molti dal momento che la sala era strapiena al mio arrivo, ha continuato a riempirsi e ha costretto lo staff a chiedere ad alcune persone di uscire per motivi di sicurezza. Io ho visto il talk in piedi, dietro un muro, ma comunque in grado di vedere la presentazione di Harald Armin Massa (@mcltm).
Mi aspettavo qualcosa di più tecnico. Ciò nonostante, mi ha fornito interessanti spunti di riflessione per cercare di migliorare il lavoro.
Massa ha parlato di:
- Fast reading
- Mind Map
- Read about brain & hypnosis
- Meditation
Ora siete spiazzati anche voi, eh?
Sulla velocità di lettura, ci ha mostrato come sia dimostrato che velocità di lettura e comprensione di ciò che si legge non siano direttamente proporzionali (troppo lento, probabilmente hai distrazioni; troppo veloce, non sei concentrato a sufficienza sulle cose che studi).
Per quello che riguarda le mappe mentali, il messaggio che si è cercato di far passare è quello di organizzare le informazioni all'interno della propria testa. Cercare di avere sempre chiari obiettivi e uno schema su come raggiungerli, piuttosto che avere ben chiaro come è organizzato il software che stiamo scrivendo.
Per quello che riguarda cervello, ipnosi e meditazione... non scenderò nel dettaglio, ma c'è a quanto pare molta letteratura che permette di capire come sfruttare al meglio le potenzialità del proprio cervello e imparare tramite la meditazione a gestire al meglio le situazioni di stress che si possono presentare.
Diving into Flask (head on)
Flask è un micro-framework scritto in python; si tratta di un framework molto leggero, molto piccolo e, rispetto alle prime versioni, abbastanza robusto per poter scrivere applicazioni. Come gli stessi autori dicono, con micro, non si intende un framework con funzionalità mancanti o limitate. E' un framework molto semplice, facile da estendere, basato sull'uso di SQLAlchemy.
L'impressione che mi ha dato è che, se si conosce e usa già un'altro framework come Pyramid, questo non offra grandi opportunità in più.
Python white magic
Perché si parla di magia bianca in questo talk di Antonio Cuni (@antocuni)? Sostanzialmente perché si vogliono riscattare quelle pratiche pericolose che, se ben utilizzate, secondo lo speaker possono prendere le distanze dalla cosiddetta magia nera.
Cuni è senza dubbio un ottimo sviluppatore, partecipa al progetto pypy ed è autore di pdb++; grazie alla sua esperienza, ci ha potuto mostrare una serie di hack per scrivere codice migliore e più mantenibile. Ha utilizzato l'esempio di pdb++ per mostrarci come poter estendere un modulo (in questo caso, estendere pdb) facendo il rebind di metodi e variabili globali a quelli del nuovo modulo. Ha poi indicato una serie di hack che mostrano come estendere le classi per rendere il codice più ordinato e organizzato in più file, attraverso l'uso di metaclassi.
Sono sicuramente hack interessanti. Non bisogna mai avere paura di conoscere abbastanza un linguaggio per utilizzarne appieno le funzionalità; in questo caso però mi sembra che ci si spinga un po' troppo oltre. Uno dei punti sottolineati dallo speaker è "Mi raccomando commentare bene e molto il codice, oppure si rischia che altri sviluppatori non capiscano quello che hanno davanti". Un mio professore dell'università andava spesso recitando il seguente adagio: "Il codice non dovrebbe avere commenti: un buon codice è autoesplicativo".
Ecco secondo me la giusta misura sta nel mezzo. Non riesco ad immaginare come possa essere facilmente leggibile del codice in cui le funzionalità di una classe sono sparse in più moduli; usando plone mi viene da pensare a oggetti snelli e adattatori che li potenziano, e questa oltre a essere una mia deviazione di plonista, mi sembra una soluzione più ordinata. Quantomeno, le funzionalità aggiuntive sono in file separati dentro una classe ben precisa con indicazioni altrettanto precise sugli oggetti a cui si possono abbinare queste funzionalità.
Applicazioni mobile con python
La partenza di Andreas Schreiber è dalle basi: cos'è un'app, cos'è un tablet. Quali sono i sistemi operativi mobile più popolari. Qualche statistica sui sistemi più usati: android e iOS! E infatti il talk diventa una veloce carrellata di cosa sia disponibile per lo sviluppo su:
- Symbian OS:
- programmazione in java, C++ e web widget;
- poca roba con flash lite e python: c'è pys60, che puo sfruttare le API dei Nokia phone
- Windows Mobile/CE:
- sistema basato su windows ce kernel
- qualcosa si riesce a fare con pythonCE ma, sembra, niente di ché
Finalmente si arriva su qualcosa di più sostanzioso; si passa ad android e vengono mostrati nell'ordine:
- SL4A: scripting layer for android porta lo scripting su android permettendo di editare ed eseguire script su un interprete;
- PY4A: python for android è un interprete per android;
- Kivy: una libreria open source e multipiattaforma per lo sviluppo di applicazioni dalla potente user interface;
- PySide: basato su PY4A è un binding delle Qt di python;
- PyGame: un insieme di moduli python per la scrittura di giochi;
Per iOS non viene detto molto: esiste python for iOS, ma non viene detto nulla più del fatto che siamo di fronte a un IDE python per iOS; ovviamente però anche con iOS possiamo usare il multipiattaforma kivy.
Altre poche parole spese per Windows phone, per sistemi MS, successore di Windows Mobile, ma di questo non si sa nulla di preciso. Così come non si sa molto dello sviluppo in python su altri device come kindle (o meglio, non c'è supporto python); magari si riesce a fare qualcosa con jython...
Riassumendo, possiamo dire di avere supporto python per symbian, supporto con restrizioni per android, supporto per iOS tramite kivy e un bel 'not now' (testuale) per Windows phone.
Le somme possono sembrare non entusiasmanti. Il giudizio dello speaker è un laconico "Not ready for production development of applications", ma le cose interessanti non mancano e io non troverei così azzardata una scommessa sulla possibilità che presto python arrivi alla pari con Java e Objective C per lo sviluppo di applicazioni. Le basi sono buone e la comunità alla base di python è fantastica.
Ad ogni modo online si possono vedere le slide della presentazione.
Ora vediamo, cosa mi rimane arrivato a sera? Una bella giornata passata con gente entusiasta del proprio lavoro: una cosa che colpisce sempre. Tanti spunti tecnici (e non solo!) interessanti.
Iarocci e le sue RESTful API, con poche righe di codice ha scritto metodi di lettura/scrittura da database, riuscendo a gestire concorrenza negli accessi e caching. Come ha detto "Flask e Mongo ci consentono di scrivere codice banale".
Il talk di Massa su mappe mentali, metodi di concentrazione e lettura veloce: tecniche utili che lo sviluppatore può usare per costruire il suo equilibrio, ed essere più focalizzato e produttivo.
Da ultimo, mi ha colpito molto il talk sullo sviluppo di applicazioni mobile. Argomento estremamente interessante e che ci ha dato modo di verificare che, nonostante non si sia del tutto pronti ancora, python offre diverse possibilità per lo sviluppo mobile.