Mettere in bolla col cellulare

Se anni fa qualcuno avesse detto che col cellulare avremmo fotografato, ascoltato musica, trovato la strada giusta e visto filmati, già saremmo stati increduli. Ma penso che nessuno avesse mai immaginato che tramite i sempre più diffusi tilt sensor sarebbe potuto diventare una livella a bolla !! :-)

 

Posted 17 luglio 2008 06.28 by Sandro | no comments
Filed under: ,
L'importanza degli standards

Se compraste una macchina e vi accorgeste che hanno scambiato la posizione del freno con quella della frizione, oppure che hanno messo la leva del tergicristallo vicino al freno a mano, non vi incazzereste ?? E non tirereste una maledizione ai progettisti ogni volta che sbagliate un'operazione a causa di quegli spostamenti ?

E' quello che succede a me quotidianamente con una nuova tastiera wireless (una Microsoft 700) in cui i 6 tasti Home/End, PgUp/PgDn e Ins/Canc sono posizionati con un layout 2x3 (2 colonne, 3 righe) invece che il classico 3x2.

Usando molto il tasto End per andare a fine riga durante la digitazione di codice in Visual Studio, la mano dopo anni di abitudine cade sempre in posti sbagliati. Capisco la volontà di risparmiare qualche centimetro di spazio, ma i progettisti dovrebbero veramente pensarci su 2000 volte prima di cambiare un layout che ormai fa appunto parte di uno "standard" e per questo dovrebbe essere mantenuto.

Microsoft comunque è in buona compagnia: le tastiere Logitech dei miei colleghi hanno lo stesso problema (evidenziato maggiormente dal fatto che il tasto Canc ha una dimensione doppia ed è molto vicino al Return), e ancor peggio ha fatto Lenovo con i suoi portatili scambiando il Control con il Fn (come ha fatto notare un ex MVP che ha risolto in modo drastico...)

Microsoft Wireless Keyboard 700

Posted 23 giugno 2008 11.07 by Sandro | no comments
Filed under: ,
Database naming conventions: addio a tab, vw, sp

Ieri ho preso una drastica decisione: ho deciso di cambiare la naming convention che da tempo usavo per i database sql, eliminando tutti i prefissi che usavo per le tabelle, viste, e stored procedure (che dall'avvento di Linq comunque uso molto piú raramente).

I motivi che mi hanno fatto cambiare idea sono stati due. Il primo è che comunque si tratta di una sorta di notazione "ungherese" che ormai in un mondo tutto typed e pieno di intellisense (per Sql2005 uso SqlPrompt, Sql2008 lo avrà di suo) non ha piú senso.

Inoltre, rinunciando ai prefissi, non devo più rinominare le N classi che ottengo dal designer di Linq to Sql di Vs2008, e soprattutto non mi espongo a strani "comportamenti" come questo:

Supponiamo di avere una tabella tabEmployees di impiegati (con chiave primaria idEmployee) che ha una Foreign Key idManager su se stessa. Se faccio drag 'n drop della tabella e rinomino dal designer la classe chiamandola Employee (ovvero togliendo il "tab") lui NON rinomina l'EntityRef attraverso la quale accedo ai dati del manager (resta "tabEmployees1" anche se comunque posso modificarla dalle properties dell'association). Più subdolo il caso in cui abbia un'altra tabella (es. una tabella Richiesta Ferie) che ha due Foreign Key sulla prima: idEmployeeRequester e idEmployeeApproval (il richiedente e l'approvatore).

In questo caso sempre se ho rinominato la classe tabEmployee in Employee, nella classe VacationRequest mi trovo l'EntityRef "Employee" che si riferisce alle seconda FK che trova (in questo caso l'approvatore), mentre la prima entityref restava nominata "tabEmployees".

Non so se ci avete capito qualcosa... io ci ho perso un po' per trovare un baco in una mia applicazione, scoperto il quale ho preso Visio e ho rasato via tutti i "tab" di qualche decina di tabelle. Occhio solo che oltre al rename delle tabelle, dovete aggiornare anche i riferimenti dentro viste, stored e trigger. 

Posted 12 giugno 2008 08.55 by Sandro | 1 comment(s)
Filed under:
Left outer Join in LINQ con due condizioni

Non ho trovato molti esempi su come impostare una query Linq2Sql che abbia una Left Outer join con due (o più) condizioni all'interno della join; mi segno quindi qui come penso sia corretto fare:

Supponiamo di avere una tabella Employees (impiegati), una Groups (gruppi) e una JoinEmployeesGroups che mi tenga la relazione molti a molti. Voglio tirare fuori tutti i gruppi, ovvero idGroup e GroupName e una terza colonna che mi indichi se un determinato impiegato è associato a quel gruppo (il classico caso di binding ad una checkboxlist ad esempio).

In Sql, per ottenere ad esempio i gruppi a cui è associato l'impiegato 12, farei:
SELECT  g.idGroup,
        g.GroupName,
        ( CASE
          WHEN j.idEmployee IS NOT NULL THEN 1
          ELSE 0
          END ) AS Selected
FROM    Groups AS g
LEFT OUTER JOIN JoinEmployeesGroups AS j ON ( g.idGroup = j.idGroup ) AND ( j.idEmployee = 12 )
ORDER BY GroupName

ottenendo

idGroup    GroupName       Selected
---------- --------------- -----------
MAG        Magazzino       0
MGMT       Management      1
MANUF      Manufacturing   0
PROC       Procurement     0
HWDEV      Progettisti HW  0
SWDEV      Progettisti SW  1

Come tradurla in Linq to Sql ?

var qgroup =   from g in db.Groups
               join j in db.JoinEmployeesGroups.Where( p => p.idEmployee == 12) on g.idGroup equals j.idGroup  into jg
               from x in jg.DefaultIfEmpty()
               orderby g.GroupName
               select new { g.idGroup, g.GroupName, Selected = (x.idEmployee != null) };

La parte blu è quella "tricky" (parola grossa, era ovvio che si facesse così)... Ma dove metterla ? Alla fine non cambia praticamente niente se la mettiamo nella parte della join o nella seconda from (verificato con la query sql che genera)

var qgroup =   from g in db.Groups
               join j in db.JoinEmployeesGroups on g.idGroup equals j.idGroup  into jg
               from x in jg.Where( p => p.idEmployee == 12).DefaultIfEmpty()
               orderby g.GroupName
               select new { g.idGroup, g.GroupName, Selected = (x.idEmployee != null) };

Come bindare alla checkboxlist e selezionare gli item giusti è poi banale 

cblGroups.DataSource = qgroup;
cblGroups.DataTextField = "GroupName";
cblGroups.DataValueField = "idGroup";
cblGroups.DataBind();
foreach (var gr in qgroup)
{
    ListItem li = cblGroups.Items.FindByValue(gr.idGroup);
    li.Selected = gr.Selected;
}

Ogni giorno mi innamoro sempre di più di LINQ... :-)

Posted 11 giugno 2008 05.11 by Sandro | 1 comment(s)
Filed under:
Camicie azzurre e geek

L'altro giorno ho visto questo divertentissimo video (Another Bubble) dove al minuto 1.40 si prende in giro il "nostro" (geek, IT manager, smanettoni, web_2.0_men, ecc) modo di vestire dicendo che portiamo sempre camicie azzurre (e pantaloni khaki)... Boh, mi sono detto, non ci ho fatto mai caso...

Oggi guardando l'intervista (high res - low res) che Paolo e Marco hanno fatto al Tech Ed di Orlando mi sono ricreduto :-)

Posted 08 giugno 2008 11.59 by Sandro | 1 comment(s)
Filed under: ,
HTC Touch Pro: il mio prossimo telefono

E' qualche settimana che sto rimuginando su quale telefono comprarmi, visto che la "cabina telefonica" JasJar/Qtek9000 è rimasta nel vecchio posto di lavoro: aspettare l'Iphone italiano ?? nooo... "troppo da fighetti" come dice Silvano :-); andare sul sicuro con un classico Nokia ?? sarebbe l'n-esimo e con Symbian e Java non ho un buon rapporto...

Visto che probabilmente dovrò ancora scrivere un po' di codice col .Net Compact Framework un telefono con Windows Mobile sarà d'obbligo e la scelta stava per cadere sul nuovo HTC Touch Diamond anche se io sono molto legato alla tastiera Qwerty e so già che ne avrei sentito la mancanza (non per niente tutt'oggi uso ancora il mio vecchio Nokia 6800).

E invece è stato da poco annunciato l'HTC Touch Pro, in pratica un Diamond che con 7 mm di spessore e 50 gr in più aggiunge una vera tastiera Qwerty...l'attesa (fine estate ?) sarà lunga !

Posted 06 giugno 2008 10.18 by Sandro | 1 comment(s)
Filed under:
Devcon 2008

Anche quest'anno ho avuto il piacere di partecipare a DevCon, evento tenuto dagli amici di Devleap. L'anno scorso avevo plaudito la scelta di trattare argomenti "presenti" e in RTM e quest'anno il trend è stato molto simile. All'inizio (la prima giornata di tutorial e le prime sessioni di Linq) ho avuto quasi il timore che avessero esagerato ad affrontare argomenti che a me parevano "ovvi e facili", ma forse sono io che sto "maturando" e il tempo che passo a leggere blog e a guardare webcast di oltreoceano non è vano e a qualcosa serve.

Già comunque da metà della seconda giornata le cose sono cambiate e molte sessioni sono state di ottimo livello. Ottime la Wcf Webcentric e la Linq &N-Tier Architecture. Le due Bonus Session inoltre hanno stuzzicato non pochi interrogativi; avete mai pensato che un algoritmo che oggi ci mette 10 secondi, tra 2 o 3 anni ci metterà sempre lo stesso tempo (visto che il clock difficilmente aumenterà) ? e che se non iniziamo seriamente a pensare alla programmazione parallela che sfrutta i nostri dual/quad core non andiamo molto avanti ?

Sulla scommessa di Rob e Luka sul futuro del web sono molto curioso: loro consigliano di buttarsi su Silverlight, di usare Ajax ragionevolmente e in piccola misura, e anche "meno browser, più Wpf Client che sfruttano il Web" (per esempio per una intranet). In questi 10 anni che li conosco difficilmente hanno sbagliato, andremo a rileggere questo post tra un paio di anni...

Qui l'agenda che ho seguito e che quest'anno ha un incomparabile plus: tutte le sessioni sono state registrate e tra poco saranno disponibili agli iscritti. Basta rammarichi o dubbi atroci su quale sessione scegliere tra due contemporanee. A rivederci alla Sql e/o Sharepoint Conference di Ottobre.

Posted 31 maggio 2008 09.12 by Sandro | no comments
Filed under:
I campioni siamo ANCORA noi !

L'anno scorso avevo commentato dicendo che senza Juve e col Milan penalizzato, la soddisfazione non poteva essere totale. Quest'anno però non ci sono scuse: se le loro campagne acquisti non sono state all'altezza non è colpa nostra e non è certo a causa di mancanza di fondi.

Pur con una sofferenza esagerata (e razionalmente ingiustificata... ma si può soffrire così per un gioco ??!) possiamo gridare e cantare "SIAMO NOI, SIAMO NOI, I CAMPIONI DELL'ITALIA SIAMO NOI !"

Onore alla Roma che ha espresso un bellissimo calcio e soprattutto non ha mai mollato.

Posted 18 maggio 2008 05.10 by Sandro | 1 comment(s)
Filed under:
Disponibile Worldwide Telescope

Come avevo preannunciato, Microsoft Research ha sviluppato un favoloso programma per gli astrofili per avere "il cielo nel desktop". Ora è finalmente disponibile (qui il download e i requisiti per farlo girare).

Settimana prossima sarò per lavoro a Garching presso la sede dell'ESO (European Organisation for Astronomical Research in the Southern Hemisphere); magari trovo qualcuno che mi dia qualche dritta su dove puntare il mio telescopio mouse, per vedere qualcosa di interessante :-)

Posted 16 maggio 2008 11.47 by Sandro | no comments
Filed under: ,
Donazioni Unicef pro Birmania: falso phishing

Oggi mi è arrivata una email dall'Unicef (attraverso TicketOne) che mi invitava a compiere una donazione a favore dei bambini birmani colpiti dal tifone Nargis. Già ero preallarmato da una news che avevo letto ieri, e poi il mega alert di Outlook che mi diceva trattarsi di un phishing unito ad un po' di esperienza mi aveva subito convinto che al mondo esistono dei bastardi che lucrano su disgrazie altrui. Dopo aver cestinato la mail, ho però voluto controllare meglio e andando sul sito dell'Unicef ho scoperto che per questa volta non si tratta di frode, ma solo di "ignoranza" informatica di chi ha preparato la newsletter:

Ovvio che anche il più banale dei controlli automatici lo segnali come pericoloso... Peccato perché rischiano di perdere occasioni per tirare su dei fondi che in questo momento servono come il pane. Essendo stato in Birmania l'anno scorso, non posso che dispiacermi per l'immane tragedia che quel meraviglioso popolo sta passando: già stremato dalla dittatura e dalla povertà, ora anche la natura si accanisce... mah, veramente ancora una volta di più viene da pensare che siamo fortunati...

PS alla fine la donazione l'ho fatta... sapere che con il costo di una cena al ristorante (70 euro) compri 1000 (MILLE) kit di sali reidratanti per curare dissenteria e altre patologie, ti fa un po' vergognare. Se con questo post sono riuscito a convincere qualcuno a fare altrettanto, ne sarò molto felice.

Posted 13 maggio 2008 09.07 by Sandro | no comments
Filed under:
Capita anche ai migliori :-)

Che cosa ? di cadere sugli sci purtroppo. Come spesso accade concludo la stagione sciistica a Solda all'Ortles intorno al primo maggio. Ieri giornata fantastica, con ancora un sacco di neve, sole e cielo azzurro e temperature adeguate (pochi gradi sopra lo zero).

Purtroppo una buca di una porta in cui sono entrato un po' troppo veloce, mi ha fatto aprire l'attacco e dopo qualche virtuosismo su uno sci solo, sono volato per qualche centinaio di metri. Fortuna (o coscienza) vuole che da anni metta sempre il casco e che da quest'anno abbia iniziato anche ad usare il paraschiena "a tartaruga" tipico degli snowboarder e derivato dal motociclismo: mai scelta fu più saggia. Lo sci è uno sport che è cambiato, si viaggia a velocità molto più elevate di un tempo e spesso la neve ha la consistenza dell'asfalto. Così come i motociclisti in calzoni corti e sandali sono ormai una rarità, anche per lo sci è finito il tempo di capelli al vento e occhiali rayban; o almeno chi scia in quel modo deve essere conscio che sta rischiando. A me è andata bene (microfrattura dello scafoide, distorsione del legamento del pollice e qualche giorno di gesso) ma senza protezioni poteva andare peggio !

Un plauso al Pronto Soccorso dell'Ospedale di Bolzano: accettazione, prima visita, radiografie, seconda visita dell'ortopedico, ingessatura, dimissioni, tutto in 55 minuti. E' vero, da noi si pagano 15 euro di ticket, ma se questo riduce l'affollamento di chi prendeva il P.S. per il medico di famiglia, sono contento di pagarli.

Anche se l'incidente è capitato la mattina presto, ho continuato a sciare lo stesso tutto il giorno facendo qualche ripresa (la videocamera in tasca si era salvata dalla botta) e facendomi riprendere dall'amico Giampaolo; se notate che uso male il bastoncino sinistro sapete il motivo :-)


L'ultima sciata del 2008 a Solda - Ortles

Posted 03 maggio 2008 05.18 by Sandro | 4 comment(s)
Filed under:
Moleskine: Ritorno alla carta

Penso lo sappiate: sono un "homo technologicus", amo tutti i gadget elettronici di questo mondo, quando i miei o Silvia mi chiedevano che cosa volevo come regalo io rispondevo sempre "qualsiasi cosa che abbia un libretto di istruzioni" (che poi ovviamente non leggevo: RTFM!).

Ogni regola però ha una sua eccezione. Iniziando da pochi gioni un nuovo lavoro, avevo e ho la necessita di prendere parecchi appunti (molte riunioni, molta formazione, molte idee che vengono all'improvviso e che vanno subito segnate, ecc.). "Con che strumento li prendo ?" mi sono chiesto... Ho usato spesso con molta soddisfazione OneNote, ho avuto tra le mani svariati PDA (dagli Ipaq al JasJar), i moderni cellulari (iPhone in primis) lo consentirebbero senza nessun problema, ma alla fine la mia scelta è caduta su... la cara e vecchia CARTA :-)

Per puro caso parlando con il collega Fede, ho chiesto che formato di blocco appunti usasse lui (A4, A5, ad anelli, a strappo, rilegato...) e mi ha fatto scoprire la Moleskine.

Cito dal sito: La Moleskine è l'erede del leggendario taccuino degli artisti e intellettuali degli ultimi due secoli, da Vincent Van Gogh a Pablo Picasso, da Ernest Hemingway a Bruce Chatwin. E' un semplice rettangolo nero, gli angoli arrotondati, i risguardi trattenuti da un elastico, la tasca interna. Ed in effetti molto altro di più non è: un quaderno con una giusta misura, con un'ottima carta, ben rilegato e che sta "bene" in mano e nella borsa. 

Probabilmente è solo la suggestione di sapere che è stata usata da insigni pittori e scrittori a farmi essere così fiero e contento del mio nuovo "notebook", ma devo dire che non sono il solo, in quanto se cercate su google o su flickr trovate un sacco di persone che dall'organizer elettronico sono tornati a quello cartaceo (si parla adirittura di un movimento "Back to Paper").

Ed è proprio da questo post su flickr che ho adottato un nuovo modo di prendere appunti, che nel mio caso si riducono molto spesso ad essere una serie di "task" che devo compiere. Ecco quindi che un quadratino stile bullet ne indica uno da compiere, la classica spunta o X se è stato portato a termine o eliminato, un puntino dentro indica la priorità, una riga diagonale che è stato rimandato a tempi futuri ecc. Ci si abitua subito e diventa molto comodo. Se qualcuno ha altri metodi standardizzati per prendere appunti me lo faccia sapere, sono curioso.

I miei due notebooks: Moleskine e Dell Latitude D830

Posted 26 aprile 2008 07.26 by Sandro | 1 comment(s)
Filed under:
Download di MSSX difficoltoso

Chi tentasse oggi (spero che domani sarà corretto il bug) di scaricare Microsoft Search Server Express 2008, si beccherebbe un bell'errore javascript sul submit del bottone di Invio. E visto che su MSDN Downloads non l'hanno messo, l'unica è "arrangiarsi":

Salvarsi la pagina html sul proprio disco (salvare come "web page complete"), editare il file .htm e alla riga 675 corregere:

if (document.getElementById('selectCounty').options[document.getElementById('selectCountry')

in

if (document.getElementById('selectCountry').options[document.getElementById('selectCountry')

(manca la R di countRy)

Usare la propria pagina per fare postback, et voilá...

Posted 25 aprile 2008 12.52 by Sandro | no comments
Filed under:
Alcune issue con IIS 7

Alcuni problemi con IIS 7 che mi segno per il futuro (ricordo che c'ero già cascato nel passato)...

1) Setup della mia intranet con autenticazione NTML con un host header name di sviluppo ( "intranet.rizzetto.local" settato nel file hosts e rediretto su 127.0.0.1).
Il sito continua a rispondere con un bel 401.1 (Unauthorized: Logon Failed) come se la password fosse sbagliata o l'utente non avesse i diritti necessari. Dopo aver provato di tutto (stavo dando a Everyone il Full Control del mondo !!) la soluzione non era proprio prevedibile:

Su Vista, XP Sp2 e Win2003 SP1 esiste un controllo di sicurezza sul loopback per evitare attacchi di "reflection"; se quindi il FQDN non corrisponde al nome macchina non funziona un tubo. Morale: creare questa chiave di registro DWORD e fare IISReset (non serve riavviare come
suggerito qui)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck = 1

2) Applicazione Classic ASP che va in errore e non stampa a video il messaggio di errore dettagliato ma solo il messaggio standard "An error occurred on the server when processing the URL. Please contact the system administrator"
Workaround: lanciare %windir%\system32\inetsrv\appcmd set config -section:asp -scriptErrorSentToBrowser:true

Magari servirà a qualcuno che sta passando a Windows 2008...

Posted 16 aprile 2008 10.57 by Sandro | no comments
Filed under:
Finisce una bella avventura, ne inizia un'altra...

Dream JobAlcuni mesi fa, leggendo il blog di un "collega" americano che aveva appena cambiato lavoro, sono incappato nel disegno qui lato che mi ha molto colpito. Delle tre assunzioni ero sicuro solo di una (cioè che mi pagavano per lavorare), sul fatto di esserne capace, senza voler fare il falso modesto, nutro sempre dei dubbi (essendoci così tanto da sapere e da imparare nel nostro campo), ma quello che ha cominciato a rodermi dentro come un tarlo era il "terzo" superiore; avevo veramente ancora voglia di fare questo lavoro ?

Fin da giovane, appena assunto, mi ero fatto una promessa: quando succederà un paio di volte di troppo che svegliandoti la mattina ti dici "che palle, devo andare a lavorare" è ora di cambiare. Non che fare il developer o (per darsi arie) l'architect non mi piacesse più, ma dopo 11 anni di "onorato" servizio subentra per forza di cose una routine e un senso di appagamento che tendono a spegnere l'entusiasmo; e senza di quello, il lavorare diventa un peso e solo il fine ultimo per portare a casa lo stipendio. E' vero che uno dei miei motti preferiti è "lavoro per vivere e non vivo per lavorare...", ma è anche vero che più di un terzo della giornata lo si passa lavorando e quindi è giusto fare di tutto affinchè questo tempo sia vissuto nel miglior modo possibile.

L'avventura con il mondo dello sviluppo software in questi anni è stata comunque emozionante e bellissima. Siamo partiti in due (oltre alla mitica Sieglinde) nei ruggenti anni in cui Internet nasceva e penso che in totale avremmo dato lavoro a un centinaio di persone (oggi siamo una ventina e ci sono stati nel periodo delle vacche grasse punte di 50 dipendenti). Ho iniziato a fare i primi siti sul notepad di un vecchio 486 (e neanche tanto piccoli, se pensiamo che uno dei primi è stato dolomitisuperski.com che contava già un migliaio di pagine statiche !!). Erano i tempi in cui esisteva solo Netscape (IE sarebbe arrivato più tardi), il supporto a <table> e <frame> era la novità del momento, Gopher, Archie e Veronica si usavano ancora, ed erano all'ordine del giorno le bestemmie per installare nei vari hotel della zona modem analogici con il Trumpet Socket di Windows 3.1 che andava quando voleva.

Quanti ricordi: il primo server Win NT 4 con il mitico Option Pack che portava in dote IIS: alcuni esperimenti con le cgi, gli idc e poi il grande salto verso le pagine ASP accoppiate a Sql Server 6.5 (ancora oggi ogni tanto trovo dei databases che hanno settato il compatibility level a 65!!). Ho un solo rammarico: di non essere saltato subito nel 2002 sul carrozzone di .NET ma di aver preso il treno dei ritardatari (in pratica con la 2.0), ma d'altronde, come molte software house sanno, ogni tanto bisogna anche pensare a produrre, vendere e soprattutto consolidare l'esistente e non si può purtroppo essere sempre gli early adopter.

Anche se il rapporto con questa azienda continuerà in forma di consulenza (se ovviamente decideranno che valgo ancora qualcosa), il mio impegno predominante si sposterà altrove. Mi occuperò infatti di "spazio" e "tempo" ! Dopo molti anni riesco infatti a coronare un sogno che è quello di lavorare per una società in cui ho creduto fin dai suoi primi vagiti (una ventina di anni fa, ed è stata infatti la mia prima volta in cui mi impegnavo economicamente per comprarne delle quote).

Con gli amici di Microgate Engineering (che si occupa di telescopi) e di Microgate Timing (che invece si occupa di cronometri, ecco perchè spazio e tempo) inizio una collaborazione che spero mi porti altrettante soddisfazioni della precedente.

Non mi resta quindi che ringraziare (oltre chi è arrivato a leggere fino a qui questo lunghissimo sproloquio) tutti i miei ex colleghi e soci per l'ottima collaborazione avuta in questi anni e tutti i clienti, fornitori, partner che mi hanno fatto crescere sia professionalmente che umanamente. 

Posted 14 aprile 2008 06.14 by Sandro | 5 comment(s)
Filed under: ,
More Posts Next page »

Search

Go

This Blog

Add to Technorati Favorites

Syndication