Libeeerooooo…

Ebbene si, dopo anni di sacrifici, amarezze e rinunce, finalmente ho terminato il mio dottorato di ricerca. Purtroppo adesso all’orizzonte delle mie conoscenze appaiono le cose in modo diverso, nuovi fatti da conoscere, nuovi problemi da risolvere. Il primo e più gravoso è sicuramente: cosa dovrò scrivere sul campanello di casa?

  • Ing.?
  • Dott. Ing.?
  • Dott. Ric. Dott. Ing?
  • PhD Dott. Ing.?
  • Dott.^2 Ing. SQRT(RIC)?

Chiedo a tutto il blog di condividere con me uno dei nuovi irrisolti problemi di questo millennio. 😀

Auguri a me (grazie), ma GRAZIE a tutti coloro che mi hanno incoraggiato e sostenuto in questi lunghi anni.

Zac

P.S.: per la pronuncia del titolo andate qui.

Riflessioni a mente libera su Window sVista

Oggi riflettevo sulle dichiarazioni che da più parti fanno gli uomini Microsoft per convincere il mondo a preferire la loro azienda ai concorrenti oppure al mondo del software libero. Con aria di sufficienza, come se per loro fosse stata una passeggiata spendere 10 Milioni di $ per la realizzazione di sVista, dicono che Aero non è il pezzo più importante del loro nuovo sistema operativo ma che la sicurezza è il punto focale: sVista è stato pensato per essere più sicuro….mmmhhh…

Queste parole mi hanno ronzato un pò nella testa fino a che non si sono ricongiunte ad una notizia letta molti anni fa e cioè che le maggiori aziende di software (tra cui Microsoft, e molte produttrici di videogames) avevano intrapreso l’idea di produrre software in breve tempo, commercializzarlo per rientrare dei soldi e poi rilasciare le patch per riparare a qualche bug. Se per i videogiochi la storia regge, per il sistema operativo e per i suoi applicativi la storia è un pò differente. Quello che voglio dire è che prima la Microsoft ha cercato di mollare su di noi le sue responsabilità di sviluppatrice di sistemi operativi, producendo codice frettoloso, pieno di bug e offrendo prodotti di scarsa qualità. Nel frattempo il mondo del software libero ha mostrato come network di appassionati riescono a scrivere codice più sicuro e prodotti di migliore qualità.

Adesso ci propinano la storia della sicurezza quando, secondo me, hanno appena iniziato a fare il loro dovere. Cioè tutte le aziende si preoccupano di scrivere software sicuro e questi, a 30 anni dalla loro fondazione se ne escono co ste sparate!!! E infatti sulla qualità di sVista i dubbi rimangono tutti; d’altronde negli ultimi anni abbiamo visto:

Windows tendere a Mac OS X (senza riuscire a eguagliarne il motore PDF che muove il tutto)

Internet Explorer tendere a Firefox

XAML tendere a XUL (che ladrocinio)

C# tendere a Java (che parte da basi più solide e meno fumose, ma complimenti per il LINQ)

J# tendere a Java (chi è costui)

Windows Workflow foundation tendere a Bea Aqualogic (senza tra l’altro capirne le peculiarità e producendo qualcosa di amorfo)

ASP tendere a JSP (qui hanno solo la fortuna che la gente si trova l’IIS bello pronto, ma con ASP siamo su livelli infimi)

Le uniche armi per ora saldamente in mano a M$ sono i pacchetti di Office e di progettazione (quali Visio e Project); ma anche qui c’è qualcosa da ridire: dunque…sono circa 15 anni che la Microsoft sviluppa Office per Windows; in questi 15 anni manca ancora il supporto per includere alcuni formati grafici all’interno di un documento Word; se incollo un’immagine Dio sa dove essa verrà posizionata nel codice (e soprattutto se ci rimarrà); il rendering delle equazioni è anni luce indietro a quello fornito da Latex ed OpenOffice; non si riesce a definire uno stile per le tabelle; non si riesce ad ancorare un connettore dove cacchio mi pare a me!!! (e questi sono solo i problemi che posso aver riscontrato dopo la scrittura di un articolo di 10 pagine).

Per contro negli ultimi 6 anni il Mac OS X ha fatto passi da gigante in avanti (ma bastava anche il primo a mettere in difficoltà Windows); le applicazione iWork, benchè pesanti forniscono dei risultati eccezionali (ma sono ancora un pò acerbe; hanno solo 3 anni però).

Linux negli ultimi 15 anni ha fatto balzi in avanti da lasciare sgomenti: qualsiasi cosa che la Microsoft aveva progettati per sVista sotto Linux esiste già da tempo: supporto a qualsiasi file system, anche a quelli “con memoria”, ricerca avanzata dei file (altro che msn search) con progetti come Beagle prima Tracker poi, un pacchetto come OpenOffice che ha da dire la sua nei confronti di Office, un sistema che sfrutta a pieno le schede video senza la necessità di dover comprarsi un computer nuovo o addirittura dotarsi di 2GB di RAM; un sistema di installazione di software dalla rete come APT. Ragazzi, non c’è storia.

Io penso che questa azienda stavolta meriti una lezione: non può pensare di mettere semplicemente una maschera ad un sistema operativo o ad office e continuare a propinarci sempre la solita fuffa. Stavolta non facciamogliela passare liscia.

Complimenti ai produttori di OpenCola, la prima bevanda con ricetta GPL!!!

Zac

UPDATE: troppo bella:

Introduzione ai Patterns

Ciao ragazzi, come promesso ecco qui una piccola introduzione sui pattern: che cosa sono? ed in che modo possono aiutarci a scrivere codice migliore? I pattern sono sostanzialmente delle soluzioni standard a delle problematiche frequenti in campo software. Queste soluzioni sono inserite all’interno di un contesto nel quale viene spiegata la problematica, viene spiegata la soluzione al problema e come ci si è arrivati, e viene fornito un esempio pratico di applicazione della soluzione. L’insieme di questi elementi costituisce quindi un “percorso” che il programmatore può seguire per giungere a una soluzione che sia garanzia di affidabilità, in quanto applicata e testata più volte in altri ambiti.
I pattern della Gang of Four si basano pesantemente sulla programmazione orientata agli oggetti e mirano a migliorare la qualità del codice agendo su caratteristiche legate ad essa. Ad esempio mirano ad aumentare la riusabilità del codice, ad aumentare il livello di incapsulamento delle informazioni di un oggetto e a diminuire il livello di coesione tra oggetti di classi differenti. Questo modo di operare porta alla costituzione di una serie di “mattoncini” di codici riutilizzabili nelle situazioni più diverse, operando solamente un minimo riadattamento.
Bene ragazzi, l’introduzione può bastare…ora sotto a chi tocca, e spero che tutti parteciperete a questa sezione, anche con esempi concreti.
Ciao Renato

Design Patterns

Ciao ragazzi, inauguro oggi una sezione che credo interesserà a tutti quanti: Design Patterns. Fino ad un anno e mezzo fa, non sapevo neanche cosa fossero, ed invece oggi sono uno degli argomenti di mio grande interesse e che vorrei tanto approfondire, naturalmente con il vostro contributo. E’ una idea che era venuta insieme ai miei due colleghi Luca e Salvatore, solo che non avevo mai avuto il tempo di realizzarla: inizio oggi. Il primo articolo sarà una breve introduzione ai patterns, ed al loro utilizzo, seguiranno poi uno dopo l’altro i 23 patterns presenti oggi sul libro della “Gang of Four”: “DESIGN PATTERNS: ELEMENTS OF REUSABLE OBJECT-ORIENTED SOFTWARE”. Ciao a tutti, e spero che tutti parteciperete a questa nuova sezione tecnologica.
Ciao Renato

Extension Methods in C# 3.0

Visto che la maggior parte di voi parla sempre di Java, colgo l’occasione per parlare anche del suo fratellino minore C#. Mi piacerebbe anche sapere da qualcuno di voi se le feature in questione esistono in Java. Quando ho letto di questa caratteristica, appena introdotta nell’ultima fork di Mono, mi sono chiesto che fine avesse fatto l’ereditarietà per questi signori, ma soprattutto se ciò non avrebbe portato a codice difficilmente manutenibile.

Gli Extension Methods sono dei metodi, definiti in una classe A che estendono le funzionalità di una classe B. Per loro natura devono essere metodi statici e possono essere invocati a partire da qualsiasi istanza della classe B.

Un esempio aiuta a capire più di 1000 tesi di laurea:

static class MyExtension
{
  public static string Prefix (this string s, string prefix)
  {
    return prefix + s;
  }
}

class M
{
  public static void Main ()
  {
    string s = "abc".Prefix ("1");
  }
}

Un extension method ha come primo parametro un’istanza della classe da estendere preceduta da “this” (oh mein gott). Il senso del codice adesso appare chiaro. Possiamo estendere le classi a nostro piacimento, oltre che a nostro rischio e pericolo, senza doverne ereditare interfacce e scrivere classi ereditate. Il problema nasce nel momento in cui ci sono più extension per la stessa classe, con lo stesso nome. In questo caso si mette in moto un gestore dei nomi che utilizza l’albero dei namespace per trovare l’extension più vicina. Un pò ingarbugliato ma potrebbe rivelare scenari interessanti.

La cosa divertente è che gli sviluppatori consigliano di usarli solo se strettamente necessario…mi sa che quelli di Mono si stanno avvicinando un pò troppo alla mentalità di M$. 😀

Zac

Chicche Open Source

Ho ricevuto oggi un e-mail da SourceForge.net con la segnalazione dei più attivi progetti open source. Non è che io abbia questo rapporto privilegiato con SF, è giusto un servizio di aggiornamenti informativi per chiunque abbia un account.
Vi propongo tre progetti che hanno solleticato il mio interesse:

  • FreeNAS, progetto del mese di gennaio 2007, è un sistema operativo minimale basato su FreeBSD e sul firewall m0n0wall che consente di trasformare un vecchio PC in un server di storage affidabile e prestante. Ovviamente, se funziona bene su un vecchio PC, figuratevi su un moderno PC con processore multicore.
  • Rosegarden, progetto del mese di dicembre 2006, è un sequencer midi per Linux con annesso un ambiente per comporre musica e stampare gli spartiti. Per i musicofili Linuxiani è senz’altro un “must-have”.
  • ZK, sesto progetto tra i più attivi, è l’ennesimo framework AJAX che consente di creare ricche semoventi luccicanti interfacce web, ma con un particolare: non occorre scrivere una riga di Javascript. Non ci credete? Guardate questa demo.

Alla prossima 😉

Portlet riposizionabili alla Google: dom-drag.js

E poi non dite che non vi penso …

eccovi un altro post per il Web 2.0 su come realizzare delle web application alla google, ossia con portlet che possono essere spostati/aperti/chiusi sul “desktop” (pagina web), il tutto con l’ausilio di DOM e della libreira JavaScript dom-drag.js.

  • Se volete vedere il risultato finale questo è il link
  • Per due articoli interessanti sul tema eccovi i link1 e link2
  • Per la libreria dom-drag.js eccovi il link

Io ancora non ho avuto tempo di provare la libreria ma l’ho vista in funzione … veramente interessante !