martedì 15 luglio 2008
Chiamato in causa da Andrea mi accodo alla catena. Volevo rispondere già ieri, ma due post in un giorno sarebbero stati troppi per i miei ritmi:D
How old were you when you started programming?
A quale età hai cominciato a programmare?
Abbastanza tardi. Intorno ai 16/17 anni. Ho passato la mia giovinezza più in piscina a nuotare prima e a giocare a pallanuoto poi, piuttosto che davanti ad un monitor (poi però mi sono rifatto alla grande!). Quando ero a casa, nonostante i pc (Aquarius, C64, 8086, Amiga) non fossero mai mancati, riuscii a resistere ad ogni tentazione. Vedevo i computer solo come strumento di gioco; non riuscivo a capire quel ragazzotto occhialuto (si un nerd:P) che divertimento provasse nel giocare con delle parole invece che con delle immagini e dei suoni. Quel ragazzotto ci provò in tutti i modi, fino a che, ormai a speranze esaurite, arrivò quel giorno....
How did you get started in programming?
Come hai cominciato a programmare?
... quel giorno inizai a giocare al fantacalcio con i compagni di classe (ebbene si, il mio vero sogno era quello di fare da grande il direttore sportivo). Gestire risultati, calcoli, classifiche, statistiche a mano era una noia mortale: poichè sono pigro per natura, dovetti trovare un modo per "automatizzare il processo". Scelsi un foglio excel (avevo già ben chiaro il principio KISS); con il passare del tempo diventava sempre più automatizzato ma sempre più complesso. Fu in quel momento che capii che "avrei fatto molta meno fatica" se avessi trovato uno strumento più adeguato per i miei scopi. Nonostanze il ragazzotto occhialuto mi etichettò per anni come scrippettaro (lui era cool perchè programmava in C++), scelsi ASP 3.0
What was your first language?
Qual’è stato il tuo primo linguaggio di programmazione?
La mia prima procedura la scrissi in Rexx su amiga.
What was the first real program you wrote?
Qual’è stato il primo programma vero che hai scritto?
Il primo vero programma lo scrissi, insieme ad un compagno, in laboratorio di informatica alle superiori. Il professore ci negò di installare giochini in laboratorio così decidemmo di scrivercelo: naque Pistaaaa! un giochino di F1 scritto in C. Sullo schermo disegnavamo un circuito con 2 puntini corrispondenti alle vetture. Premendo in maniera forsennata i tasti corrispondenti alle freccie direzionali, si potevano far avanzare le macchinine sulla pista. Missione compiuta, avevamo il gioco per i nostri tornei in laboratorio!
What languages have you used since you started programming?
Quali linguaggi hai usato da quando hai cominciato a programmare?
In ordine temporale:
Rexx, Visual Basic 4, C, C++, Assembly 8088, Delphi 6, C#, Java
What was your first professional programming gig?
Quando è stato il tuo primo vero lavoro da programmatore?
Fu assunto in una azienda di Torino per partecipare allo sviluppo di una suite di videoconferenze. Questo progetto divenne la mia tesi di laurea e mi permise di arrivare al grande obbiettivo dei miei primi 25 anni: la festa di laurea.
If you knew then what you know now, would you have started programming?
Con il senno di poi, rifaresti lo stesso il programmatore? Ricominceresti a programmare?
Se non fossi riuscito a fare il pallanuotista, il direttore sportivo o il pornostar (si può dire sul blog:P), sicuramente non sarebbe esistita scelta migliore di programmare!
If there is one thing you learned along the way that you would tell new developers, what would it be?
Se ci fosse una cosa che hai imparato nella tua carriera e che vorresti dire ai giovani programmatori, cosa diresti?
Quando lavorate, programmate per soddisfare le necessità del cliente, non per soddisfare il vostro ego: per quello c'è il tempo libero:)
Ci giochiamo un altro consiglio? Ma si... Seguite le community, sono il miglior modo per imparare questo lavoro; inoltre vi fare un sacco di nuovi amici.
What's the most fun you've ever had ... programming?
Qual’è la cosa più divertente che hai programmato?
Se nella definizione di "divertente" possiamo considerare la faccia del prof. che ci vide aggirare il suo divieto giocando con un giochino sviluppato da noi, allora la scelta ricade sicuramente su Pistaaaa!: quella faccia fu veramente divertente:)
Now, let’s tag someone else...
Adesso è l’ora di taggare qualcun’altro...
lunedì 14 luglio 2008
Il discorso introduttivo sull'OOD, fatto da Andrea nella sua sessione ai Community Days, mi ha riportato alla mente l'ultima pagina del Regolamento del Golf. Cito testualmente:
Gioca la palla come si trova
Gioca il campo come lo trovi
E se non puoi fare l'una o l'altra cosa,
fai ciò che è giusto
Ma per fare ciò che è giusto,
hai bisogno di conoscere le
Regole del Golf
Trovo in queste poche righe molte similitudini su come credo sia necessario approcciare lo sviluppo software. La difficoltà del nostro lavoro sta tutta nel fare "ciò che è giusto".
martedì 24 giugno 2008
Venerdi scorso (20 giugno 2008) si è svolto il TechGarage a Roma. Questa manifestazione, organizzata da dpixel e ospitata dalla LUISS, segue il MiniBar svoltosi il 15 feebraio 2008 alla Triennale di Milano. La manifestazione ha dedicato una giornata di incotri e dibattiti riguardanti le start-up che operano nel campo Web.
L'obbiettivo del TechGarage e di dpixel in particolare, è creare un punto d'incontro tra investitori (venture capital e business angels), giornalisti, blogger e soprattutto nuovi imprenditori che propongono progetti innovativi nel ambito Web.
Il TechGarage ha proposto due tipologie di presentazione delle start-up:
- L'Elevetor pitch ha messo in mostra 8 start-up che hanno già ottenuto degli investimenti iniziali di tipo “seed” oppure che hanno già avviato un’impresa internet capace di autosostenersi, che si sono presentate per cercare un secondo round di finanziamento: quello del salto dimensionale e dello sviluppo.
- Il Seed Match ha offerto a 12 start up e aspiranti imprenditori uno “spazio espositivo” in cui presentare la propria idea di business a tutti gli interlocutori interessati a interagire con investitori, blogger, sviluppatori e giornalisti, e soprattutto cercare capitali seed da business angel e investitori.
Noi siamo stati invitati, in quest'ultima categoria, a presentare il nostro portale del turismo CarpoViam, progetto che da ormai sei mesi ha catturato la nostre forze e la nostra passione.
Purtroppo per l'Italia il modello "Silicon Valley" è ancora lontano; per varie ragioni - di cui è stato argomento parte del dibattio durante l'evento - gli investitori in Italia sono pochi e soprattutto poco propensi al rischio. E' quindi da apprezzare lo sforzo di dpixel nel sensibilizzare la realtà italiana nel credere nelle start-up e in chi ha idee innovative e prova a proporle. Se rientrate in questa categoria, provateci: le cose pian piano cambieranno...
In conclusione riprendo il messaggio inviato da Emanuele Tha (Business Analyst di dipixel) durante l'evento che sintetizza - a mio parere - perfettamente il senso dell'iniziativa: fino ad ora start-up, imprenditori, e chiunque avesse idee innovative, hanno avuto la speranza di emergere. Il TechGarage (e dpixel) hanno offerto (e offrono) loro una concreta possibilità.
venerdì 16 maggio 2008
Clicca il titolo per assaporare...
giovedì 27 marzo 2008
L'Entity Framework e Linq To Sql avranno i suoi (grossi) limiti, ma vedere che da:
IEnumerable<CategoryView> views = from d in categories select new CategoryView() { Id = d.Id, Name = d.Name, ImageUrl = d.ImageUrl, ImageIconUrl = d.ImageIconUrl }; con un semplice CNTRL-R-R il risultato è questo:
IEnumerable<CategoryView> views = from e in categories select new CategoryView() { Id = e.Id, Name = e.Name, ImageUrl = e.ImageUrl, ImageIconUrl = e.ImageIconUrl }; rende un uomo influenzato felice!
venerdì 14 marzo 2008
Il solito Scott segnala un post che contiene la lista aggiornata al 28 febbraio, dei providers Linq ufficiali e non.
Lo stesso Charlie pubblicherà qui i futuri aggiornamenti.
Technorati Tag:
Linq,
Providers
venerdì 25 gennaio 2008
Partiamo dal problema. Il controllo MediaElement (così come il controllo MediaPlayer e DrawingVideo) ha il grosso limite di utilizzare come sorgente video solo una sorgente conosciuta proveniente da un Uri. Per conosciuta si intende una sorgente, il cui protocol handler è registrato nel sistema (client).
Come faccio a riprodurre un flusso video proveniente da una sorgente custom (scheda di acquisizione video, piuttosto che un protocollo di streaming custom) e/o codificato con un codec proprietario?
Cristian, in questo articolo, spiega chiaramente il problema e propone un paio di soluzioni basate su l'interoperabilità tra Win32/WinForm e WPF la prima e la registrazione nel sistema di un custom protocol handler la seconda.
La prima soluzione ha il vantaggio di non richiedere la registrazione di nulla sul sistema client; ha però il grosso svantaggio di non supportare trasformazioni sulla finestra video. I vantaggi e gli svantaggi si ribaltano nella seconda opzione.
Questo post mostra una soluzione brillante che promette di sorpassare entrambi i vincoli.
Per farla breve: questa soluzione utilizza le API WIC per accedere direttamente al buffer unmanaged utilizzato dall'oggetto BitmapSource. Sarebbe già abbastanza per fare buone cose con un po' di Interop e la libreria DirectShowLib.
Per gli intrepidi - coloro che non rabbrividiscono davanti alla necessità di scrivere codice C++ e usare COM - è possibile scrivere un filtro di render in DirectShow, che accetta un riferimento al buffer utilizzato dalla BitmapSource. E' quindi possibile costruire un grafo DirectShow la cui destinazione video è proprio il buffer della BitmapSource esposto a COM dal nostro render. Siamo riusciti a combinare la versatilità di DirectShow con la potenza di WPF. Ma tutto questo - forse - è un'altra storia.
martedì 30 ottobre 2007
il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei namespace dichiarati a inizio file.
Oppure se...
il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine delle classi/delegati/enumerazioni all'interno di un file.
O ancora peggio se...
il compilatore restituisse un errore nel caso in cui non gli piaccia l'ordine dei file da compilare.
Ma anche se...
con tanta fatica (e fortuna) riusciamo a trovare la giusta combinazione, ma un piccolo flag - fondamentale per la buona riuscita della compilazione - all'interno della configurazione del nostro progetto, provoca un errore di linking.
Per fortuna non sono problemi che si riscontrano in C#, ma aimè sono situazioni frequenti in progetti C++; ancor più frequenti quando si cerca di compilare un software Open Source. Ci fosse una volta che si scarica un progetto C++, si lancia la compilazione e questa funziona 'al primo colpo': certo, spesso il problema è dovuto ad una cattiva organizzazione del codice (e delle librerie), ma il linguaggio certo non aiuta.
Sia chiaro, non odio C++, mi piace e per certi versi lo amo (diciamo che lo stimo moltissimo); come potrei odiare un linguaggio che procaccia il cibo al mio caro fratellino ed evita che sia io a doverlo mantenere?
Quello che però proprio non riesco a mandare giù è dover perdere del tempo (in alcuni casi ore o giorni), a risolvere dei problemi completamente estranei al reale scopo della soluzione che sto sviluppando. Se c'è un pregio di C# - e .NET in generale - è proprio questo: lo sviluppo è concentrato per lo più verso l'aspetto funzionale, invece di quello tecnologico e infrastrutturale.
Se avete la necessità di dover compilare con MSVC++ 2005 l'ultima versione della libreria xvid è il vostro giorno fortunato: questa sera impiegherete 4 ore a decidere come vestirvi per andare sui navigli o al Karement piuttosto che perderle per capire come risolvere questo errore (ovviamente, lo stesso identico progetto compila correttamente usando MSVC++ 2003):
error C2632: 'int' followed by 'int' is illegal
Il problema è causato dal punto del codice in cui è incluso windows.h nel file portab.h. Spostando l'inclusione del file all'inizio del sorgente tutto funzionerà magicamente.
Per essere un po' più puliti sostituiamo la dichiarazione di inclusione (nel punto originale) con il seguente codice:
#if defined(_MSC_VER) && _MSC_VER < 1400
#include <windows.h>
#endif
ed aggiungiamo all'inizio del file il codice:
#if defined(_MSC_VER) && _MSC_VER == 1400
#include <windows.h>
#endif
In questo modo se il compilatore Visual C++ 2005, l'inclusione del file sarà spostata all'inizio del sorgente, altrimenti sarà lasciata dov'è.
venerdì 3 agosto 2007
Sudhir Hasbe (Program Manager di Team Foundation Server) spiega in un post come migrare un ambiente con installato TFS 2005 e WSS 2.0 a TFS 2008 e WSS 3.0.
Many customers have WSS3.0 farms in house and they want to use these farms with TFS. In TFS 2005 you had to use WSS2.0 on TFS machine and you could not leverage the existing farms in the company. With TFS 2008 or Orcas you can use existing WSS3.0 farm. This is well known fact now but I have received many questions about upgrading the TFS 2005 with WSS2.0 environment to TFS 2008 with existing Share Point Farm.
Trovo molto meglio provare la nuova versione di TFS partendo da un ambiente (clonato) più veritiero come quello in produzione piuttosto che da uno completamente vuoto.... Ovviamente a settembre dopo le ferie!
Technorati Tags: TFS, Links
giovedì 19 aprile 2007
Lo ammetto, appena visto le prime demo di SilverLight ne sono rimasto subito affascinato. La cosa che più di tutte mi ha stupito, è che le demo live funzionavano anche senza aver installato sulla macchina il framework 3.0(e da quanto ho letto, ma non ho provato, non è nenache richiesto il fw 1.0, 2.0 etc etc). Fantastico! Abbiamo per web WPF, cross platform (e browser) e senza dover installare il fw 3.0!
Dopo un primo momento di esaltazione inizia ad assalirmi un dubbio: ma senza installare il framework, come faccio ad eseguire del codice lato client in Silverlight? Appunto: non faccio.... Infatti non è possibile, come in WPF, definire una partial class che "estende" il comportamento descritto nel markup xalm. Non è altresì possibile referenziare nello xalm componenti custom.
Quindi in SilverLight niente user control, niente controlli custom e niente codice script (non lo voglio dire!) definibile tanto per citare un nome a caso in Flash (ops l'ho detto:P). Riepilogando: una tecnologia web, lato client, nata da una tecnologia (WPF) basata interamente su .NET non supporta... componenti dotNET. E' un paradosso.
La buona notizia è che siamo alla CTP, niente è ancora definito, e a quanto si può leggere dai forum il team ha in piano di supportare componenti lato client per Silverlight.
Conclusione: giocando un po' con l'sdk e le demo, le potenzialità di questa tecnologia sono enormi e l'inizio è molto incoraggiante. Attendo fiducioso...
Technorati Tags: Silverlight, WPF, Flash