Lug 23

Ilaria, la nostra grafica di riferimento in ambito web, è in dolce attesa e dobbiamo quindi sostituirla per il suo periodo di maternità obbligatoria.

Stiamo cercando giovani grafici web (il termine web designer è un po’ fuorviante ma può anche starci), anche freschi di diploma (in questo caso talentuosi e desiderosi di fare esperienza) da inserire per un periodo di 6 mesi nel nostro organico in sostituzione ad Ilaria.

Il contratto è a tempo determinato: non è uno stage ne una collaborazione a progetto.

Disponibilità richiesta da inizio ottobre circa.

La sede di lavoro è Vercelli, ottimamente servita sia da autostrada (TO-MI e AL-Gravellona Toce) che da ferrovia (TO-MI).

Blue Studio è una piccola web agency composta da un team di 7 persone (e un cane). L’atmosfera è piacevole, l’ambiente stimolante e non mancano le occasioni per fare esperienza anche su progetti di rilievo.

Se sei interessato/a o conosci qualcuno che può esserlo, batti un colpo nei commenti.

Set 6

Marco é stato uno dei miei primissimi clienti: si parla del 1999, quando Blue Studio era “due persone in un quasi-garage”. Un anno e mezzo fa mi ha chiesto di mettere offline il sito della sua attività , che stava traslocando. Poi tantissimi problemi.

Ieri Marco ha telefonato, poi é venuto a trovarci in azienda: sito da pubblicare nuovamente alcuni aggiornamenti da fare.

Marco e la sua Modelleria Artistica sono di nuovo in attività … di nuovo online. Ed é stato come ritrovare un vecchio amico che ti ha accompagnato nell’arco di una vita professionale.

Il sito, nel suo impianto generale, é sempre lo stesso concepito nel lontanissimo ‘99: sono passate intere internet-ere, ma a Marco piace ancora.

Giu 19

Stavo smanettando con Matteo sulla configurazione di OpenADS per un cliente: alcuni dettagli che non ci tornano sulla pubblicazione dei banner.

OpenADS é un ottimo prodotto, con una vastissima base di utenza e milioni di banner gestiti e veicolati dalla webapp.

Pieno di fiducia, parto alla ricerca di documentazione e scopro che Google investirà  5.000.000 di dollari nel progetto per l’ulteriore miglioramento della piattaforma: complimenti!

Giu 19

Grazie a Ludo scopro SLOCCount, software per calcolare i costi dei software a partire dalla stima delle linee di codice.

A questo punto mi viene il prurito e la curiosità  di macinare i sorgenti di t.nes, il nostro framework di sviluppo web realizzato in Java, per valutarne il costo. Ecco i risultati.

  • Linee di codice totale (SLOC) = 33.367
  • Stima tempi di sviluppo, anno-uomo (mese-uomo) = 7,95 (95,43)
  • (Basic COCOMO model, mese-uomo = 2,4 * (KSLOC**1,05))
  • Stima del riascio, anni (mesi) = 1,18 (14,13)
  • (Basic COCOMO model, mesi = 2,5 * (mese-uomo*0,38))
  • Numero stimato di sviluppatori medi (tempi di sviluppo/rilascio) = 6,75
  • Costo totale stimato di sviluppo = € 610.765
  • (stipendio medio lordo = € 32.000/anno, overhead = 2.40).
Apr 14

Da circa 5 anni utilizzo Linux come sistema operativo preferenziale: sul mio portatile Windows é stato prima relegato ad una piccola partizione, poi del tutto eliminato.

Personalmente utilizzo il computer in due modi profondamente diversi.

  • Fede “utente standard” é tutto mail, office, skype, etc.
  • Fede “power user” vuole aver una shell di tutto rispetto per lavorare a basso livello, poter compilare velocemente libreirie e programmi all’occorrenza, non disdegna di utilizzare Photoshop & co, etc.

Quando ho deciso di abbandonare progressivamente Windows come piattaforma personale per approdare a Linux, ho fatto una scelta precisa basata sulle funzionalità .

  • Windows mi consentiva molto facilmente di essere un utente standard, molte meno un power user.
  • Linux mi rendeva la vita leggermente difficile su tutti i fronti, ma potevo avere il controllo completo della macchina da una parte e disinteressarmi completamente dei problemi di sicurezza e virus legati a Windows che ritengo essere solo inutili perdite di tempo.
  • In quel periodo non potevo considerare Mac come alternativa valida: il vecchio System 9 era per me troppo fuori dagli standard, Mac OS X si affacciava come promettente ma m’intimoriva la piattaforma hardware PowerPC.

Scegliendo Linux mi sono detto: nel tempo migliorerà , interverranno anche le grandi aziende affiancando le comunità  di sviluppatori e il gap di facilità  e funzionalità  sulle “cose scontate” verrà  colmato.

Questo é capitato solo in parte. Linux, per facilità  d’uso e installazione, é migliorato moltissimo rispetto a cinque anni fa. Ma resta sempre indietro:

  • il supporto dell’hardware é migliorato moltissimo, ma resta ancora moltissimo da fare sui drivers terze parti;
  • utilizzare device particolari é sempre un problema, come ad esempio connettersi via cellulare o palmare, sincronizzare i dati;
  • banalità  come installare Skype, a volte ti prendono mezza giornata solo per far funzionare l’audio e le chiamate vocali e in ogni caso ti becchi un client di 2 generazioni più vecchio rispetto quello Win.

Mi fermo qui perché non voglio assolutamente scrivere un articolo a sfavore di Linux e a favore di qualcun’altro. Adoro Linux, ammiro e sottoscrivo in pieno i concetti di base del software libero, stimo tutti gli sviluppatori che si prestano a un così grande, impegnativo progetto comune.

Quello che é mancato a Linux nel corso degli ultimi anni é una visione comune, che potesse concentrare gli sforzi e le immense quantità  di lavoro spese su obiettivi comuni di eccellenza nei tempi necessari a mettersi in pari a Mac OS X e magari, dati i continui rinvii di Vista, a superare Windows.

Non penso che Mac OS X sia il sistema operativo perfetto, ma Apple ha agito (e sta agendo), in modo decisamente più furbo. Hanno scelto di utilizzare le fondazioni BSD, solidissime da 20 anni di sviluppo, e sviluppare in innovazione nell’interazione uomo-macchina.

Linux e tutti i suoi progetti correlati hanno una fortissima caratteristica di dispersività :

  • a differenza di Win e Mac, la comunità  di sviluppo open source mantene non una interfaccia grafica, ma una pletora (Gnome, KDE, XFCE, etc);
  • i subsistem audio di Linux sono almeno due (ALSA e il più vecchio OSS, che comunque fatica a scomparire), non parliamo dei sistemi di gestione audio che sono molti, molti di più;
  • ogni distribuzione ha praticamente il suo package manager, o la customizzazione del package manager di qualcun’altro, il suo installer, etc.;
  • se ti sbagli ad aggiornare il kernel, c’é il rischio di dover ricompilare una pila di driver (ma possibile che nonstante la natura monolitica del kernel Linux aiuti pochino non si sia ancora trovata una soluzione decente?).

Il vantaggio é la liberta di sceltà . Non ti piace Gnome, usi KDE per esempio. Intanto diventi scemo e passi le notti a fare tuning.

Forse ho meno tempo, forse ho meno energie, forse ho meno voglia di passare le notti a capire perché far girare bene VMWare sia sempre un terno al lotto.

Ho bisogno che le cose nella maggioranza dei casi funzionino e basta. E voglio per aprire una bash per farmi i fatti miei quando ne ho bisogno. E non voglio tornare alle crociate contro possibili intrusioni e virus.

Per cui passo a Mac.

Mar 16

www.alpinelogistics.net In questi giorni il lavoro é alle stelle: veramente tantissimo da fare.

Ma sono decisamente soddisfatto, anche perché abbiamo pubblicato un sito a cui tengo molto: Alpine Logistics.

Julia e Manuel sono i due fondatori di questa piccola azienda poco convenzionale. L’idea di business é interessante: costruire un’agenzia di viaggi attorno alla loro passione, la montagna. Il loro mercato preferenziale é l’estero, portare appassionati di alpinismo come loro in Italia a scoprire le meraviglie delle Alpi piemontesi e valdostane.

Quando Matteo ed io abbiamo incontrato per la prima volta Julia e Manuel, abbiamo intravisto la possibilità  di farne un progetto particolare: la passione per la montagna, il tipo di contenuti e il loro impatto ci hanno portato a pensare al blog come strumento preferenziale.

Per le foto Flickr era lo spazio più adeguato per condividere le foto, testimonianze delle loro esperienze e altro punto di accesso per conoscere Julia e Manuel nel loro ambiente naturale.

A legare tutto, i contenuti all’interno del sito/blog e le foto caricate su Flickr un lavorone sulla tassonomia. Attraverso i tag:

  • integriamo da Flickr le foto contestuali ad un articolo o ad una pagina,
  • relazioniamo post e pagine tra loro,
  • colleghiamo le foto delle gallery agli articoli.

L’integrazione con Google Maps completa il quadro dei luoghi in cui Julia e Manuel organizzano le loro escursioni.

Chiaramente lo strumento che abbiamo scelto é Wordpress, supportato da una buona dose di plugin e personalizzazioni: FAlbum, Ultimate Tag Warrior, Google Sitemaps, Inline Google Maps, Image Manager, etc.

Infine, un lavorone di SEO nel cercare la massima urlabilty raffinando al meglio le strutture di permalink e lavorando al meglio sugli slug di Wordpress.

Julia e Manuel hanno avuto fiducia nell’idea: grazie.

Mar 4

Mi sono messo in testa di sistemare un po’ le infrastrutture dell’azienda, così la settimana scorsa ho messo mano alla connettività .

Per connetterci ad internet, proteggerci e elargire alcuni servizi anni fa avevamo assemblato una Linux box dotata di una rarissisma scheda ADSL PCI: chipset Itex che miracolosamente eravamo riusciti a far funzionare… chiaramente ricompilando kernel e moduli.

La macchinetta ormai era vetusta, la scheda ADSL PCI non più supportata (a Itex é fallita) e in azienda si sentiva la voglia di un passaggio a banda ancora più larga: una bella ADSL 2+ da 10 o 20 Mbps a costi decisamente abbordabili.

Parto con il progetto sperimentando, e impazzendo, su varie soluzioni… ma questa é l’anima dello smanettone!
Prima di tutto le distro firewall oriented. Nel mondo dell’OS si trova molto, le maggiori che ho provato sono:

Durante una lunga serata di confronto l’amico Leonardo Buffa, presidente del Bilug e specialista di reti, mi aveva consigliato una soluzione ancora più tosta: OpenBSD e hardware dedicato Soekris. I vantaggi di questo approccio era lampante:

  • un hardware semplice e stabile, a basso consumo e senza parti mobili soggette a rottura (sistema operativa installato su Compact Fash o Disk on Module);
  • OpenBSD é famoso perla sua stabiltà  e mancanza di exploit;
  • pf, Packet Filter il firewall comune a molti BSD e anni luce più semplice da configurare di IPTable.

Alla fine rinuncio e scelgo Endian, di gran lunga la distro più facile completa e più facile da utilizzare via l’ottima interfaccia web. Un po’ di campanilismo: Endian é italiana!!

Passiamo all’hardware:

  • riciclo un obsoleto ma ancora ottimo, un Athlon XP da 1,5Ghz che prudenzialmente abbatto a 1Ghz;
  • modem/router ADSL 2/2+ che mi permetta di essere utilizzato in PPPoE da Linux, uno dei modi più facili e sicuri per utilizzare ADSL con il Pinguino.

Tolto il lavoro di prova e sperimentazione iniziale, la messa in opera del nuovo firewall ha significato:

  • un paio d’ore di assemblaggio e test dell’hardware,
  • circa 15 minuti per l’installazione di Endian,
  • un’altro paio d’ore per la configurazione completa del firewall e dei servizi di rete di contorno,
  • nessun costo.

Ne approfitto e sistemo anche la rete Wifi: un ottimo LinkSys WRT54GL a cui sostituisco il firmware con OpenWrt.

Gen 25

Avevamo bisogno di applicare i tag anche alle pagine? Ultimate Tag Warrior per quanto sia un plugin eccellente assegnava i tag solo ai post.

Christine deve aver sentito il nostro urlo disperato fino in Nuova Zelanda, perché la nuova versione di UTW implementa i tag nelle pages di Wordpress!

Gen 24

A proposito dell’integrazione con le social web application.
Stiamo lavorando sull’integrazione dinamica di post+tags+Flickr in Wordpress: l’obiettivo é fare in modo che post e page possano avere una propria gallery dinamica sulla base dei tag inseriti. Il motivo é sfruttare al meglio il modello blog marketing + social.
I plugins di base sono:

Ho fatto notare a Matteo che, da esperimenti precedenti, non mi risultava fosse possibile estrarre una ricerca utilizzando più di un tag: solo uno, limitazione delle API di Flickr. Un modo per aggirare la limitazione é utilizzare il plugin flickrRSS, che in realtà  non si appoggia alle API ma richiede un feed.

Non l’avessi mai detto, “Non é possibile!”: Matteo si é vestito del sacro furore dello sviluppatore e si é messo a dar craniate alla rete, alle API di Flickr, ai feed, a Wordpress… a tutto quello di PHPoso gli passasse sottomano.

Gen 24

Per poter accedere alla API di YouTube é necessario ottenere un Developer ID e la documentazione é abbastanza completa, anche se mi aspettavo qualche metodo in più. Le metodologie di accesso sono due: REST e XML-RPC.

Obiettivo del post é fare una panoramica di come implementare una classe Java che, dati DEV_ID e una lista di VIDEO_ID, acceda alle API di YouTube, ne scarichi i dettagli, provveda a costruire una cache su filesystem. Non entrerò in dettagli che uno sviluppatore Java conosce sicuramente meglio di me.

Metologie di caching:

  • la più semplice in Java é serializzare l’oggetto ottenuto dall’XML su filesystem;
  • per palati più raffinati, si possono utilizzare ottime librerie open source come

REST Interface

Interfaccia estremamente semplice si basa su una chiamata http che come risultato restituisce un file xml. Un esempio.

http://www.youtube.com/api2_rest?
method=youtube.videos.get_details&dev_id=YOUR_DEV_ID
&video_id=YOUR_VIDEO_ID

dove:

  • method é il parametro in cui si indica il metodo delle API YouTube a cui si vuole accedere;
  • dev_id il proprio id di sviluppo;
  • video_id é l’id univoco del filmato su YouTube.

La nostra classe:

  1. scorre la lista di VIDEO_ID;
  2. verifica se esiste già  una cache per quel video (o verificando su filesystem se esiste l’oggetto serializzato o interroganto EHCache/OScache);
  3. se non esiste una cache:
    • farà  la chiamata http alle API di YouTube
    • riceverà  l’xml di dettaglio del video per quel determinato VIDEO_ID
    • elaborerà  l’xml trasformandolo in un oggetto strutturato nel modo che ci viene più comodo e utile
    • creerà  la cache per quell’oggetto
  4. se esiste l’oggetto cachato, la classe si preoccuperà  soltanto di recuperarlo;
  5. viene restituita una lista di oggetti contenenti i dettagli dei nostri video.

Per effettuare una chiamata http é necessaria una libreria che implementi un client http, va benissimo l’HttpClient del progetto Jakarta Commons. La chiamata può essere fatta in GET o in POST: in questo senso la documentazione di YouTube non dice nulla (l’esempio sopra simula una GET) ma penso che l’API accetti entrambi i metodi (preferibile il POST).

Il codice (plausibilmente un metodo privato della classe) dovrà  essere strutturato più o meno così:

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(”http://www.youtube.com/api2_rest”);
method.addParameter(”method”, “youtube.videos.get_details”);
method.addParameter(”dev_id”, YOUR_DEV_ID);
method.addParameter(”video_id”, YOUR_VIDEO_ID);
try {
// eseguo la chiamata
int statusCode = client.executeMethod(method);
if (statusCode != HttpStatus.SC_OK) {
System.err.println(”Method failed: ” + method.getStatusLine());
}
// leggo la risposta
byte[] responseBody = method.getResponseBody();
// utilizzo la response.
// Attenzione: assicurarsi che l’encoding sia corretto ne non siano dati binari
String myXML = new String(responseBody));
} catch (HttpException e) {
… // gestione dell’eccezione
} catch (IOException e) {
… // gestione dell’eccezione
} finally {
// chiudo la connessione.
method.releaseConnection();
}

Le possibilità  di ottimizzazione sono svariate, come per esempio creare un unico client e sfruttare un’unica connessione per evitare overhead inutili: a voi la scelta. La response che si otterrà  sarà  simile a questa.

Per elaborare l’xml e trasformarlo in un più comodo oggetto, possiamo utilizzare uno dei moltissimi parser a disposizione della piattaforma Java. La scelta in questo caso é più orientata su considerazioni di gusto (riguardo l’API del parser), di leggerezza del parser e della sua velocità  di elaboarzione.

Per un utilizzo leggero e snello consiglio di utilizzare un pull-parser anche senza feature di validazione (che in questo caso servono a poco e non avremmo comunque il DTD su cui lavorare). Un elenco veloce di alcuni:

Alla prossima puntata farò una panoramica su come può funzionare l’approccio via interfaccia XML-RPC.

« Previous Entries