Aggregator

“Open Standards”, il giorno dopo

Ricapitolando:

  • Lo stream era effettivamente h264, ma VLC (1.1.14 per Windows) non be ha proprio voluto sapere di visualizzarlo; in compenso sull’iPhone si vedeva benissimo quindi ho seguito così l’evento
  • Ho fatto benissimo ad attendere la presentazione della nuova versione di Apple TV, così ora sarò ancora più sicuro nell’acquistare il WD Live HD <g> Peccato, se a quel prezzo e con quel fattore di forma avesse supportato almeno DLNA ci avrei potuto fare un pensierino. La mancanza del supporto FullHD, dato il prodotto, IMHO non è una penalizzazione eccessiva: in fondo, Apple TV è un “aggeggio” per fare streaming via Internet, e temo che nemmeno negli USA la banda sia sufficiente per fare streaming real time di contenuti 1080p.
  • iTunes 10 visualizza a sx la thumb della copertina dell’album, e a dx l’elenco delle canzoni. Ottima idea: se non fosse che Windows Media Player e lo Zune player lo fanno da anni, oltre che “ottima” sarebbe stata anche “originale”
  • Anche il “social network della musica” è una idea interessante; *2 anni addietro*, quando acquistai lo Zune, fu uno dei primi servizi che attivai: guardavo la mia pagina del profilo beandomi che i miei “top ascolti” fossero: Afterhours, Depeche Mode, Joy Division, Cure, … E nel sapere che i 4 gatti che lo bazzicavano lo avrebbero saputo. Al pari del punto precedente, sono contento che anche in questo caso le fotocopiatrici di Cupertino abbiano funzionato bene <g>

 

P.S.: Tra parentesi, l’idea del social network era talmente interessante che Microsoft l’ha ormai praticamente ridotta ai minimi termini, mentre Apple la cavalcherà e tutti crederanno che sia una sua idea. Un po’ come inventare XMLHTTP (e quindi AJAX) per poter implementare OWA e poi dimenticarselo lì per *anni*, e poi tutti a credere che ad innovare sia stata Google quando pubblicò Google Maps. Cose che succedono, se il marketing te lo fa Topo Gigio <g>

 

02/09/2010 15.01.37 Andrea Saltarello StrangeLog - Il blog di Andrea Saltarello

Battleship AI coding-competition: date e regole del gioco



La coding-competition comincerá il 20 settembre con la pubblicazione del codice del framework che contiene l'interfaccia che ogni algoritmo di Battleship iscritto alla competizione dovrá implementare.

La competizione sará in 2 tornate:
1^ tornata, consegna del codice entro il 10 Ottobre
2^ tornata, consegna del codice entro il 31 Ottobre








Regole del gioco Battleship:
  1. Si gioca su una griglia 10x10.
  2. Ogni giocatore dispone sulla griglia 5 navi di lunghezza: 2, 3, 3, 4 e 5.
  3. La navi possono essere adiacenti ma non sovrapporsi.
  4. Ogni giocatore a turno spara un singolo colpo sulla griglia del suo avversario.
  5. L'avversario notifica se il colpo é andato a vuoto, se ha colpito una nave o se ha colpito e affondato una nave
    In questo ultimo caso dirá anche quale nave ha affondato e dove era posizionata.
  6. Il gioco si conclude quando tutte le navi di un giocatore vengono affondate, il giocatore avversario é dichiarato vincitore.


Regole della competizione:
  1. Lo spirito della competizione é quello di produrre il miglior algoritmo (di attacco e di difesa) per il gioco Battleship.
  2. Ogni azione che va contro lo spirito della competizione verrá valutata e potrá portare alla eliminazione.
  3. Imparare e implementare idee altrui é ok, copiare codice altrui va contro lo spirito della competizione.
  4. Giocare slealmente e interferire sul gioco del avversario va contro lo spirito della competizione.
  5. Un tempo compessivo di 4 secondi é a disposizione ad ogni giocatore per ogni singola partita.
  6. L'uso di multi-threading non é concesso.
  7. Lo sfondamento dei 4 secondi determinerá la sconfitta nella partita corrente.
  8. Qualsiasi eccezzione sollevata e non gestita determinerá la sconfitta nella partita corrente.
  9. Il codice insieme alla descrizione delle idee e strategie implementate dovrá essere inviato entro e non oltre le date indicate contattandomi attraverso i contacts di questo blog e inviandomi poi per e-mail il codice o il link da dove scaricarlo.
  10. La dimensione massima per il codice é di 1MB.
  11. Il solo requisito tecnico é l'uso del framework .Net 2.0 / 3.5.
  12. L'algoritmo (di attacco e di difesa) proposto dovrá implementare l'interfaccia IBattleshipOpponent definita nel codice fornito.


Punteggio:

  1. Ogni partecipante si scontrerá con ogni altro partecipante al meglio di 501 partite su 1000
  2. La prima metá dei partecipanti con i risultati migliori parteciperá alla prima o alla seconda tornata parteciperá a un torneo a eliminazione diretta per determinare il vincitore
  3. I risultati insieme all codice e le idee e strategie implementate saranno postati su questo blog.


Tags :   |

02/09/2010 14.56.44 Luca Minudel (luKa)

“Open Standards”

Ricapitolando: Apple trasmetterà in streaming il proprio evento di oggi e, parole sue, lo farà utilizzando degli “open standards” che però, “casualmente”, sono fruibili solo da client Mac OS X 10.6 e iOS 3.x (o superiori). Quindi:

  • Non posso vederlo con il mio Mac Mini, perché essendo un PPC ha installato Mac OS 10.5 (è una macchina del 2005, vorrete mica che Apple la supporti ancora?)
  • Giacché sono così attenti agli “open standard”, attendo trepidamente che Apple butti via il “proprietarissimo” stack XCode/ObjectiveC buttandosi a capofitto su MonoTouch o Silverlight, che sono basati su ISO 23271 e H264 <g>

‘nzomma, mi sa che l’evento mi tocca vederlo sul “francobollo”, cioè sullo schermo dell’iPhone (suppongo che a quell’ora il MacBook mi servirà ancora per lavorare). Bei tempi quando “Grande Fratello Microsoft” trasmise l’evento di lancio di Visual Studio 2010 ed io me lo guardai usando Moonlight sul netbook Ubuntu

 

Technorati Tag: ,,
01/09/2010 9.54.51 Andrea Saltarello StrangeLog - Il blog di Andrea Saltarello

Prima di voler cambiare gli altri...


Il coach Agile e lo Scrum Master nell'azienda hanno il compito di promuovere e guidare il cambiamento organizzativo e culturale e condividono questo compito con ogni membro di un team Agile che é un agente del cambiamento.


Quello che nel tempo ho imparato in questo ruolo, é che prima di chiedere agli altri di cambiare é importante essere capaci di cambiare se stessi. E' il classico lead-by-example ed é anche un reality-check personale per verificare se si conosce realmente quello che si desidera insegnare agli altri!


Fatto questo, ho imparato che non basta ancora. Prima di chiedere agli altri di cambiare é conveniente assicurarsi di andare con le persone giuste, essere in team con i propri simili. Si perché l'obiettivo é scrivere software di successo, non "evangelizzare" il mondo sui metodi Agili. Ecco dei suggerimenti interessanti:


Tags :   |  |  |  |  |  |  |
31/08/2010 17.35.04 Luca Minudel (luKa)

Un salutare bagno di umiltá



Ho collegato 2 post che ho letto recentemente e...

Il primo riporta il risultato di una ricerca secondo cui una coppia in pair "batte" 2 individui se la coppia discute liberamente dei loro disaccordi in particolare di quanto sono confidenti della loro decisione. Mentre la coppia "perde" quando una persona é incompetente su un argomento senza esserne consapevole o senza riconoscerlo.


Il secondo riporta il risultato di una indagine secondo cui ogni anno un inglese in media spreca 2000 sterline di carburante perché sbaglia strada e non chiede informazioni. E il 41% dei maschi dopo aver sbagliato strada e dopo  essersi perso é ancora convintissimo di sapere dove sta andando.





Cioé essere ignari delle proprie incompetenze e sopravvalutare le proprie competenze ha conseguenze tangibili e negative sulla prestazione del team. E non é affatto un evento raro.




Infatti é conosciuto come l'effetto Dunning–Kruge quando una persona non skillata prende decisioni sbagliate e giunge a conclusioni errate ma la sua incompetenza gli impedisce di riconoscere l'errore. Cosi persone non skillate sopravvalutano i propri skill e persone molto skillate invece tendono a sottovalutarli.



Per i team e i developer Agili ecco 3 semplici e veloci reality check-point:




Tags :   |  |  |  |  |  |
31/08/2010 13.09.57 Luca Minudel (luKa)

“Finestre”?!?!?!?

Ma ce lo vogliamo mettere un bel “ROFTL” per quel “Finestre” nella documentazione di Bootcamp? <g>

FinestreBootcamp

Technorati Tag: ,
30/08/2010 7.20.00 Andrea Saltarello StrangeLog - Il blog di Andrea Saltarello

Twitter settimana del 2010-08-29

Addio birra, è tempo di spritz Aperitivo veneto per l'Europa – Corriere della Sera http://ff.im/-pyotv # in @seesmic desktop 2, is there an option to set number of tweets to show? # Google Mobile App for iPhone gets pushy – Official Google Mobile Blog http://ff.im/-pAuUV # Attualità | Videosorveglianza: 29 “occhi elettronici” sulla città | [...]
29/08/2010 22.00.00 admin .mark.net - Marco Trova

Simplify packaging to speed up software developments


Once the team wrote the source code of an application, why should split that app into many modules (assembly, jar, dll, exe, binaries in general) ?

Sometime there are no choices: i.e.
  • when different part of the applications are developed with different technologies that require different compilers or even different operative systems.

Some other time when a group of classes are used by 2 or more applications, instead of duplicating the classes they must go in a module and be reused. Here is when the REP come in use:

REP The Release Reuse Equivalency Principle The granule of reuse is the granule of release.



In all the other cases, splitting classes in modules up-front without an concrete actual needs just
  • increase the complexity: when classes are grouped in different projects they are harder to find and it become easier to duplicate existing functionality by mistake, plus the dependency graph grow more and more complex

  • increase the build time: merging 70 small projects in 5 big projects with Visual Studio reduced build times by 40%

  • does not bring any advantage: when classes that are changed and released together and are coupled together, splitting them in many modules will not reduce coupling and will decrease cohesion (fyi: namespaces should be used to logically group classes instead of projects).
Here is where CCP and CRP come:
CCP The Common Closure Principle Classes that change together are packaged together.
CRP The Common Reuse Principle Classes that are used together are packaged together.





27/08/2010 13.15.01 Luca Minudel (luKa)

Prova sul campo di NDepend v3 (2/2)



Ho proseguito la prova sul campo la nuova versione di NDepend v3  con le metriche del codice, con CQL e il suo editor.

Con la SuperSolution, cioé la soluzione che include centinaia di migliaia di righe di codice e tutti i progetti della azienda per cui lavoro.








Metriche

  • Pratica e concreta la possibilitá di avere facilmente a disposizione lo stato della coverage dei test e la complessitá ciclomatica del ccodice: due indicatori importanti dello stato generale di salute della code-base.

  • Molto interessante la presenza di metriche calcolate a livello di namespace e non solo di assembly: indispensabile per i team che hanno compreso l'uso di namespace per organizzare logicamente il codice e applicano correttamente i principi di coesione e accoppiamento dei package
  • In generale ampia scelta di metriche calcolabili sul codice.

Code Query Language (CQL):
  • Migliorato in questa versione con nuove condizioni di WHERE evolute che permettono facilmente di individuare ad esempio codice non utilizzato che puo essere cancellato in sicurezza

  • Nuovo il supporto per confrontare il trend delle metriche con le versioni precedentio del codice. Cosi é possibile vedere l'andamento della code-base e ad esempio capire se la coverage o la CC sta calando o crescendo nel tempo

CQL Editor:
  • L'integrazione con l'IDE é pratica e intuitiva
  • La velocitá di risposta del Intellisense é migliorata cosi come la visualizzazione in real-time dei risultati mentre si edita la query.

  • L'intellisense pecca ancora specialmente quando si editano nel mezzo query preesistenti. Trovo piu comodo copiare e editare i molti esempi disponibili di query piuttosto che fare affidamento e lasciarmi guidare dal intellisente


NDepend: http://www.ndepend.com/Features.aspx



27/08/2010 12.42.49 Luca Minudel (luKa)

Embed resources the right way in Windows Phone 7

Anche se sviluppare un applicazione su Windows Phone 7 è, direi al 80%, del tutto simile allo sviluppo di un applicazione Silverlight 3.0, non dobbiamo dimenticarci di quel 20% che è sicuramente quello destinato a farci penare prima del rilascio, in quel 20% oltre al Tombstoning aggungerei sicuramente l’aspetto performances perchè, non dimentichiamolo, abbiamo comunque a che fare con un dispositivo e non con un personal computer.
Un esempio dove un dettaglio può far la differenza è la modalità di embedding di eventuali risorse all'interno di un progetto WP7.
Da questo punto di vista gli strumenti di sviluppo (Blend 4 e Visual Studio 2010) non sono dalla nostra parte in quanto quando aggiungiamo una qualsiasi risorsa al progetto questi impostano la relativa Build Action a Resource.
A prima vista nulla di strano, se non fosse che, come sapete, le applicazioni WP7 per essere scaricate devono passare dal MarketPlace e questo processo ha come conseguenza il fatto che le assemblies presenti nello xap vengono firmate e la firma viene verificata al primo startup del programma nel telefono (nella beta la verifica avviene ad ogni startup)
Se conoscete come avviene il processo di verifica della firma saprete che questo è tanto più lungo quanto maggiore è la dimensione dell’assembly  percui se all’interno di un assembly abbiamo embeddato un immagine da 5 MB questa influirà negativamente sul primo startup.
La soluzione? Impostare la Build Action delle risorse a Content anzichè Resource, in questo modo, dal punto di vista dell’utilizzo sia a livello di codice che a livello XAML non cambia nulla, ma l’avvio dell’applicazione è stato sicuramente migliorato.

Technorati Tags: ,
23/08/2010 19.03.42 Corrado Cavalli Corrado's BLogs

Twitter settimana del 2010-08-22

MotoGP – VALENTINO ROSSI E DUCATI INSIEME DAL 2011 http://ff.im/-pjdPE # SQLAuthority News – Why SQL Server is better than any other RDBMS Applications? « Journey to SQL Authority with… http://ff.im/-pjo08 # Blog | jQuery Mobile http://ff.im/-pjosG # YouTube – How much can you really make developing mobile apps? http://ff.im/-pkNdi # YouTube – Chrome-To-Phone Demo [...]
22/08/2010 22.00.00 admin .mark.net - Marco Trova

La poca chiarezza delle licenze

Ho sempre sostenuto che le licenze dei software purtroppo sono poco chiare se non incomprensibili per la maggior parte degli utenti e spesso anche per gli operatori del settore.

Diciamocelo chiaramente, in mezzo alla solita tiritera sopra il pulsante "accetto" è facile cambiare un paio di preposizioni e stravolgere il significato di un testo che, sulle prime, all'utente sembra il solito.

È per questo motivo che credo che BSA abbia fallito nel ruolo di difensore delle licenze in quanto non fornisce agli utenti gli strumenti per capire i reali confini scavati dalle licenze. Se non c'è chiarezza non ci può neanche essere il dovuto rispetto tantomeno contrastare quella autolegittimazione che molti utenti si attribuiscono nell'utilizzare in modo improprio il software.

L'autoleggitimazione è un sentimento, non un cavillo giudiziario che però fa un'immensa differenza in termini di pirateria. L'utente si può sentire giustificato ad utilizzare il software fuori dai confini della licenza se i termini non sono chiari fin dall'acquisto e purtroppo questo è oggettivamente vero per molte licenze.

Il panorama Open Source non è messo meglio. La GPL è probabilmente la licenza più violata dagli utenti e dagli operatori. Per dirla in modo (troppo) semplicistico la GPL è una licenza per software di cui sono disponibili tutti i sorgenti. Un lato meno conosciuto di questa licenza è che chiunque usi in una propria applicazione un software licenziato sotto GPL è obbligato a rilasciare la propria applicazione anch'essa sotto GPL e quindi rendere disponibili tutti i sorgenti pubblicamente. Conosco diversi casi di palese violazione. Ecco una delle tante pagine della vergogna: http://ffmpeg.org/shame.html

Per esempio il famoso database mySQL viene fornito con licenza GPL oppure con una licenza a pagamento. Sul loro forum un utente ha candidamente chiesto se usare mySQL in una applicazione implica rilasciare l'applicazione stessa sotto GPL. La risposta degli intervenuti (di mySQL) è sempre stata ambigua e alla fine non è riuscito ad avere i chiarimenti necessari.
Non stiamo parlando di domande complesse ma solo chiarezza su come utilizzare la licenza. Lo trovo totalmente assurdo.

Se passiamo alle licenze commerciali il caos regna ovunque: licenze per device, per processore, per utente, per gruppo di lavoro, per sviluppatore, per produzione, … ovviamente condite da una lunga serie di "ma", "se", "tranne", "nel caso in cui", e via così.
Se è questa la "educazione" che le software house vogliono fare verso gli utenti, si sbagliano di grosso.

Ora mi chiedo: perché un ente (per esempio BSA che si erge paladino dei produttori) non redige un numero (finito, come dicono i matematici) di licenze standard chiamandole con un nome o numero e obbliga le aziende che fanno parte di BSA ad utilizzare quelle tipologie?

Ovviamente in breve la cosa si potrebbe estendere a tutti i produttori software perché i vantaggi sarebbero evidenti:

  • Le controversie giudiziarie sarebbero più semplici da controllare in presenza di una licenza 'standard' e le interpretazioni dei giudici sarebbero meno interpretabili.
  • L'utente avrebbe davanti subito chiaro se è disposto ad usare una licenza "A1" invece di una "B2".
  • Le aziende potrebbero redigere policy per permettere l'acquisto e l'uso di licenze purchè non siano di tipo "C" e "D" (mesi di meno per prendere una decisione sull'acquisto di un software).
  • e via così …

Se qualcuno non ci vuole mettere mano allora comincio ad essere malizioso e pensare che tutto sommato la pirateria faccia comodo perché il prodotto si diffonde (ricordate Autocad negli anni 80?) e poi dopo che tutti sanno usare quel software e non ne possono fare a meno arriva "qualcuno" che ne obbliga l'acquisto. Bleah, che schifo.

E pensare che il mio mestiere è di produrre software e che siamo in azienda siamo ISV … no, non siamo masochisti, se il cliente è contento lo siamo anche noi.

19/08/2010 11.09.27 Raffaele Rialdi Web Log di Raffaele Rialdi

Query Linq apparentemente errate in OOXML

Le query con Linq to XML sono tra le meraviglie di un developer managed. Infinitamente più semplici di DOM/SAX/XmlReader e con prestazioni da urlo.

Il team di Office ha disegnato un Object Model che mappa 1:1 il formato XML del nuovo formato ISO "Office Open XML". Da una parte questo approccio è poco conveniente perché è possibile generare documenti non well-formed, dall'altra offre vantaggi indiscutibili come quello di "Document Reflector" il tool dell'sdk che genera codice C# a partire da un documento docx/xlsx/pptx o ancora la possibilità di fare query Linq su questo object model come fosse quello di XDocument/XElement.

Ed è proprio da una query su questo object model che è nato un problema di una query apparentemente errata.

La query:

var fldchars = from e in doc.Descendants<FieldChar>() select e;

è equivalente a:

var fldchars = from e in doc.Descendants() where e is FieldChar select e;

ed ha lo scopo di trovare tutti i FieldChar (i field di un documento Word) nel documento a prescindere dal livello della gerarchia xml.

Eseguendo questa query su uno specifico documento usando Linq2XML ottenevo un risultato mentre sul sdk 2.0 di OOXML ritornava un elemento di meno.

Non ci sono bug. Se partiamo a credere subito nei bug prima di fare indagini, è meglio cambiare mestiere, punto.
L'indagine per capire cosa succede deve andare (come sempre) per passi. Quindi la prima cosa che ho fatto è di eseguire la query su tutto il documento:

var fldchars = from e in doc.Descendants() select e;

Query che restituisce tutti gli elementi del documento in modo 'flat' cioè senza più gerarchia xml.

Poi si sbircia nel debugger di Visual Studio per vedere la lista degli elementi e scopriamo che ….

image
L'elemento che mi aspettavo di trovare come FieldChar è stato 'mappato' da XML a OpenXmlUnknownElement che non è di tipo FieldChar e di conseguenza la query non forniva i risultati voluti.

Il file infatti l'ho modificato a mano per creare un test ad-hoc su una situazione molto particolare e perciò il test era sbagliato mentre il codice era giusto (chi testa i test? … va bene questa è un'altra storia).

Lesson learned, e spero che serva anche a qualcun'altro …

16/08/2010 21.30.58 Raffaele Rialdi Web Log di Raffaele Rialdi

AddRange sulle collection

Purtroppo non c'è nessuna interfaccia che definisca AddRange sulle collection, quindi non c'è ICollection o IList che tenga.

A rimediare elegantemente ci pensano gli extension method che ci permettono di aggiungere AddRange in questo modo:

public static class CollectionExtension
{
    public static void AddRange<T>(this ICollection<T> list, IEnumerable<T> elements)
    {
        foreach (var e in elements)
            list.Add(e);
    }
}

Fatto questo, supponendo di avere una:  IList<qualcosa> collection = new ….;
basterà scrivere:  collection.AddRange(…);

IList infatti deriva da ICollection e quindi l'estensione di ICollection è la più appropriata.

Apparentemente si salva solo una riga di codice ma quando cominciate ad avere parecchio codice che usa Linq la pulizia di codice guadagnata fa una bella differenza.

16/08/2010 11.40.25 Raffaele Rialdi Web Log di Raffaele Rialdi

Twitter settimana del 2010-08-15

I'm now listed on @listorious! Check it out at http://listorious.com/marcot #software #development #surveillance #tasting #gappa # PC vs. Mac — Microsoft continues the war with a new website that compares Windows 7 to Mac OS X http://bit.ly/97LnP2 # Android is Now Mobile Developers' Favorite Platform http://ff.im/-p0Z87 # Science + Geek + Beer = Awesomely Geeky [...]
15/08/2010 22.00.00 admin .mark.net - Marco Trova

Dropbox feat. roaming profiles

Il mio notebook è un MacBook, ma sul netbook ho Ubuntu. La mia dev machine è una Windows Box (in realtà + di una: VS6+VS2003 su XP, VS2005/2008 in una VM Win7, e VS2010 su una macchina Win7), e il telefono un iPhone. La rottura di palle scocciatura più grande è ritrovarsi a dover lavorare su un documento che *casalmente* (mica tanto casualmente, si chiama “Legge di Murphy”) è su una macchina differente da quella che hai con te. O meglio… *era* dover lavorare sul tal documento: oggi ho rotto gli indugi ed ho creato nel mio folder Dropbox le directory: “Documents”, “Photos”, “Videos” e “Music”, e le ho incluse nelle library di Windows 7 di tutte le mie Windows box. Risultato: ho sempre con me tutti i miei “preziosissimi” file, nonché un primo livello di backup offline “in the cloud”. Mi piace vincere facile, po-popo-popopopo!

Technorati Tag: ,
09/08/2010 13.59.05 Andrea Saltarello StrangeLog - Il blog di Andrea Saltarello

Twitter settimana del 2010-08-08

Telecamere con l'ok dei sindacati – Il Sole 24 ORE http://24o.it/114w19 # From @engadget: http://www.engadget.com/2010/08/01/official-iphone-4-jailbreak-hits-from-iphone-dev-team/ # Aggiornamento di sicurezza straordinario per Windows, please update! http://ff.im/-oFjGS # Operazioni CRUD con il Client Object Model di SharePoint 2010 http://ff.im/-oFmrs # oggi #tre mi ha sorpreso: email all'assistenza nella notte, telefonata nella mattina # Writing Multilingual Websites http://bit.ly/940bnw [...]
08/08/2010 22.00.00 admin .mark.net - Marco Trova

WPF Ribbon

Finalmente la tanto attesa nuova versione del controllo ribbon per WPF è disponibile: l’interfaccia applicativa è stata completamente rivista e, yes!, l’oggetto RibbonButton supporta ICommand.
In questo post di Pete Brown trovate un tutorial sul suo utilizzo: http://10rem.net/blog/2010/08/02/announcing-microsoft-ribbon-for-wpf-rtw

Download page: http://www.microsoft.com/downloads/details.aspx?FamilyID=2BFC3187-74AA-4154-A670-76EF8BC2A0B4&displaylang=en
Documentazione: http://msdn.microsoft.com/en-us/library/ff799534.aspx

Technorati Tags:
03/08/2010 4.48.26 Corrado Cavalli Corrado's BLogs

Twitter settimana del 2010-08-01

Birre in corso… http://ff.im/-okiAJ # Android Stencil Kit: Il normografo per applicazioni su carta… http://ff.im/-okwnV # Study: High demand for HTML5, PHP, mobile app projects http://blogs.techrepublic.com.com/programming-and-development/?p=2874 # Server installation options for ASP.NET MVC 2 http://ff.im/-othMp # CodePlex now supports ClickOnce http://ff.im/-othNt # 15 Best Free Open Source Ecommerce Platforms http://ff.im/-otRO7 # 2 profili Skype attivi [...]
01/08/2010 22.00.00 admin .mark.net - Marco Trova

WP7: Launchers and Choosers

Le applicazioni Windows Phone 7 vengono eseguite nella propria sandbox e non hanno accesso diretto alle funzionalità del telefono come ad esempio: l’elenco dei contatti, l’invio degli SMS oppure l’invio di una semplice telefonata.
Per far questo bisogna utilizzare delle opportune API definite nella documentazione col nome di Launchers e Choosers, già dal nome dovreste intuire che queste sono a tutti gli effetti delle applicazioni built-in (non a caso le relative classi stanno in Microsoft.Phone.Task) le quali si differenziano dal fatto che i Choosers, a differenza dei Launchers, possono ritornare delle informazioni all’applicazione chiamante.
Nella documentazione MSDN trovate l’elenco dei Launchers e Choosers disponibili, quello che però bisogna tenere in considerazione quando si utilizzando queste funzionalità  sono due aspetti fondamentali:

  • Essendo Launchers e Choosers delle applicazioni, quando lanciate, queste “spengono” (o meglio mandano in Tombstoning") l’applicazione chiamante, ovvero la nostra.
    Se volete saperne di più andate qui
  • In caso di Choosers se volete, come presumo, gestire le informazioni ritornate all’applicazione il codice va scritto in un determinato modo.

Vediamo un caso banale di utilizzo di un Launcher: per capire cosa succede ho inserito il seguente codice in App.xaml.cs:

private void Application_Activated(object sender, ActivatedEventArgs e)
{
Debug.WriteLine("Activated");
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
Debug.WriteLine("Deactivated");
}

e all’interno dell’evento Click di un pulsante ho scritto:

private void button1_Click(object sender, RoutedEventArgs e)
{
SearchTask searchTask = new SearchTask { SearchQuery = "Windows Phone 7" };
searchTask.Show();
Debug.WriteLine("Completed");
}

Lanciando il progetto e premendo il pulsante ecco quello che appare nell’emulatore:

image

Ma sopratutto, questo è quello che viene tracciato nella Output window:

image 

Questo dovrebbe già farvi capire che eseguire del codice dopo che un Launcher è stato completato non è poi così banale, tenendo presente che, come già ciatato nei posts precedenti, la nostra applicazione potrebbe anche non essere più ripristinata.

Vediamo ora un semplice caso di Chooser: La documentazione indica che, se vogliamo che il meccanismo di ripristino post-tombstoning sia in grado di invocare correttamente l’evento Completed di un Chooser è necessario che:

  • L’istanza del Chooser sia definita a livello di ApplicationPage.
  • La sottoscrizione dell’evento avvenga nel costruttore della pagina stessa.

in pratica qualcosa tipo:

public partial class MainPage : PhoneApplicationPage
{
PhoneNumberChooserTask task = new PhoneNumberChooserTask();

public MainPage()
{
InitializeComponent();
task.Completed += new EventHandler<PhoneNumberResult>(task_Completed);
}

private void button2_Click(object sender, RoutedEventArgs e)
{
task.Show();
}

private void task_Completed(object sender, PhoneNumberResult e)
{
if (e.Error == null) MessageBox.Show(e.PhoneNumber);
}
}
Così facendo, se avete dei numeri memorizzati nel device/emulatore (se non li avete potete aggiungerli usando il SavePhoneNumberTask) avrete la possibilità di selezionarne uno e, premuto F5 quando dopo la selezione lo schermo dell’emulatore diventa nero, vedrete eseguire il codice all’interno del gestore task_Completed.
 
Nulla di spaventosamente complicato, anzi, ma sicuramente l’intervento del Tombstoning implica,anche in questo caso, una certa attenzione in caso di utilizzo di queste API nei nostri programmi Windows Phone.
 
01/08/2010 17.21.08 Corrado Cavalli Corrado's BLogs

Post-Windows 7, prossima fermata Service Pack 1 (ora in beta pubblica)

Ogni secondo vengono vendute 10 copie di Windows 7:
http://microsoftfeed.com/2010/10-copies-of-windows-7-sold-every-second-175-million-licenses-sold/

Lo stop subito da Vista non è stato solo dettato da un numero oggettivo di problemi, ma anche all'introduzione di un vastissimo numero di cambi all'interno del kernel che hanno messo in difficoltà utenti e developer.
La mia opinione è che gli utenti ci abbiano guadagnato in modo incommensurabile, mentre i developer sono arrivati "lunghi" per una serie di clamorose violazioni delle best practice già nelle versioni precedenti dei sistemi operativi.
Inutile lagnarsi dei cambiamenti, non cambiare significa fare la fine di Windows Mobile, ormai finito nella voce "altri" delle percentuali di mercato.
Inutile lagnarsi dei cambiamenti, le best practice erano lì da un bel pezzo, i white paper delle novità di Vista erano lì fin dalla prima beta pubblica ma in pochi le hanno lette. Il risultato è che molte illustri applicazioni sono finte nella "shame box" (xp mode).

Fatto sta che Windows 7, oltre ad una serie di novità importanti, ha curato molto di più tanti aspetti che invece con Vista erano stati decisamente trascurati, dalle performance alla memoria, dalla grafica alla stabilità.
La conclusione è che chi lavora bene ottiene risultati, Windows 7 sta andando a botte di record e i complimenti sono dovuti.

Perciò Windows 7 non è un traguardo ma è solo un altro paletto. La prossima fermata è la service pack 1 che porta buone cose. Ecco la mia lista dei perché installarla:

  1. Il motivo numero 1 in assoluto è di provare le applicazioni prima che sia disponibile la versione RTM. Non facciamo l'errore di attendere la nuova versione del sistema operativo o del service pack prima di testare la nostra applicazione.
    I test devono essere fatti sulla beta della service pack per tempo per due motivi:
    • Il vostro cliente deve scegliere quando installare la service pack senza dipendere dai vostri test. La sua sicurezza può dipendere da questa installazione e non siete voi a doverlo bloccare.
    • Eventuali problemi sulla service pack possono influire le beta/rtm successive. Inutile lamentarsi se i test vengono fatti sulla rtm e si scopre un bug della service pack. Ormai è troppo tardi.

      Qui non si parla di aiutare gratis Microsoft, ma è un modo per la software house di risparmiare dei soldi se l'applicazione non dovesse girare più su un parco potenziale di 175 milioni di macchine.
  2. Security. Questo è il motivo per cui non possiamo e non dobbiamo dire al cliente di attendere il nostro benestare prima di installare la service pack 1 sui suoi Windows 7.
    Perché le patch di sicurezza vanno installate sempre e subito?
    Perché la maggior parte degli attacchi nasce dalla disponibilità delle patch. Quando MS si accorge di un bug crea una patch e la rende disponibile agli utenti. L'hacker la scarica, magari è di poche decine di kb e fa presto a capire qual'è il pezzo di codice modificato.
    Così va a vedere il vecchio codice buggato, trova il problema in un istante e crea l'attacco. Alla diffusione ci pensano le reti di BOT sparse per tutta internet e mentre l'hacker è al mare in vacanza, il suo server raccoglie informazioni, password, e quant'altro sia possibile raccogliere grazie al bug.
    Certo non è sempre così semplice e Win7 fa girare i servizi con privilegi ridotti all'osso per diminuire la superficie di attacco, ma perché rischiare? Installare le patch è l'unica soluzione possibile.
  3. RemoteFX. Sono un utente in perenne roaming per l'ufficio e i terminal services (amministrativi) sono diventati un must. Anche ora che sto scrivendo sono in una finestra di TS. Con RemoteFX (disponibile tra 2008R2 SP1 e Win7 (>=enterprise) SP1) la user experience dei terminal services cambia radicalmente: USB, USB/PDA e supporto alla grafica spinta (Silverlight e Flash compresi).
  4. Restore previous folders at logon. Di default è disabilitato ma è una delle mie opzioni preferite. Dalla service pack vengono ricordate anche le posizioni delle finestre nella shell.
  5. Supporto al set AVX di istruzioni a 256bit presenti nelle nuove CPU. Io ho i7 sia sul desktop che sul portatile e questo può fare una bella differenza sui calcoli floating point.
    Purtroppo sono macchine che uso "per produzione" e quindi non posso installare una beta della SP. Quindi per testare questa feature dovrò aspettare un po'.

C'è molto di più per gli ITPro (per esempio per HyperV)…

La documentazione della beta della Service Pack 1 è qui:
http://www.microsoft.com/downloads/details.aspx?FamilyID=61924cea-83fe-46e9-96d8-027ae59ddc11&displaylang=en

Per i download link rimando al post ufficiale:
http://technet.microsoft.com/en-us/evalcenter/ff183870.aspx?ITPID=wtcfeed

e al sito di WinSuperSite:
http://community.winsupersite.com/blogs/paul/archive/2010/07/13/service-pack-beta-1-for-windows-7-and-server-2008-r2-direct-download-links.aspx

30/07/2010 20.37.45 Raffaele Rialdi Web Log di Raffaele Rialdi

Hosting Silverlight Cross Domain Applications

Pur non essendo un caso frequente, può capitare di dover ospitare un applicazione Silverlight proveniente da un dominio diverso dalla pagina host.
Un esempio può essere: Pagina html ospitata nel domino foo.com la quale ha al suo interno qualcosa del genere:

<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="http://www.anothersite.com/myapp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="4.0.41108.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.41108.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object>
<iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>

Il fatto che l’applicazione provenga da un dominio diverso (anothersite.com nello snippet precedente) genera una situazione di cross-domain hosting la quale può creare qualche problema di funzionamento (o non permettere nemmeno lo start dell’applicazione in alcuni casi)

La soluzione è in realtà abbastanza semplice e consiste nell’impostare a true il parametro enableHTMLAccess del plug-in in questo modo:

 

<param name="enableHtmlAccess" value="true" />
 
il quale viene automaticamente impostato a true quando l’applicazione proviene dallo stesso dominio della pagina host.
Dalla documentazione sembrerebbe che questo parametro abiliti esclusivamente l’interazione tra l’applicazione e il DOM della pagina host, in realtà dalle prove effettuate oggi questa controlla anche l’interazione con tutto il browser stack, percui, se come nel mio caso utilizzate la classe WebClient per interagire col server la chiamata viene immediatamente interrotta con le relative conseguenze per l’intera applicazione.
 
Non capita spesso, ma se capita, ricordatevi questo post…
 
29/07/2010 17.19.16 Corrado Cavalli Corrado's BLogs

WP7: Page Navigation

In Windows Phone 7 ogni singola PhoneApplicationPage è automaticamente ospitata all’interno di un PhoneApplicationFrame che viene impostato come RootVisual allo startup dell’applicazione all’interno del metodo CompleteInitializePhoneApplication presente in App.xaml.cs (l’evento RootFrame.Navigated scatta dopo che lo SplashScreen è stato sostituito con la pagina iniziale dell’applicazione)
Visto che PhoneApplicationFrame estende la classe Frame introdotta in Silverlight 3.0 la navigazione da una pagina all’altra avviene esattamente secondo la stessa modalità, quindi per  navigare da MainPage a AnotherPage è sufficiente usare la classe NavigationService.

private void OnClick(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/AnotherPage.xaml", UriKind.Relative));
}

Anche in Windows Phone è presente la classe UriMapper da utilizzare nel caso non vogliate legare il codice direttamente al nome della pagina (personalmente vedo meglio il suo utilizzo in un applicazione Silverlight vista la mancanza del deep linking in Windows Phone).
In Blend4 for Windows Phone Beta la navigazione è ancora più semplice grazie alla presenza di una NavigateToPageAction accessible direttamente dall’apposito menu contestuale NavigateTo

image

In breve, nulla di nuovo per chi è già un “Silverlighter”…

Technorati Tags: ,

 

   
29/07/2010 8.44.51 Corrado Cavalli Corrado's BLogs

ALM: Rilasciato il tempalte Microsoft Visual Studio Scrum 1.0

Il template Microsoft Visual Studio Scrum 1.0 è ora disponibile per il download nella sua versione RTM. Rispetto alla beta le modifiche sono minime come ottimamente descritto nel post di Aaron Bjork. Ora che è definito e allineato alla terminologia usata in SCRUM, non vi resta che scaricarlo e usarlo se pensate di usare questa metodologia per il ciclo di vita dei vostri prodotti/progetti.

20/07/2010 6.56.11 davide Blog di Davide Vernole

Tutto il mondo è paese, ma se lo avesse fatto Microsoft…

Premessa: il mio desktop è un MacMini dal 2005, il mio notebook è un MacBook ed il telefono un iPhone 3GS; se non fossi mediamente soddisfatto, non sarei più cliente Apple da un bel pezzo (considerando che il primo Mac sul quale misi le mani fu un Mac LC II e son passati tanti anni). Però… Però settimana scorsa ho acquistato un MacBook Pro per un “nuovo acquisto” di Managed Designs e… “Out of the box”, lo attacco alla rete per fare il primo “giro” di “Aggiornamento Software” (l’equivalente di Windows Update, per intenderci) e scarica *1,02* Gb di aggiornamenti. Eh già, in meno di un anno di vita Snow Leopard ha “goduto” dell’equivalente di 4 Service Pack (da v 10.6.0 a 10.6.4).

E poi: 2 settimane addietro ho aggiornato il mio iPhone ad iOS 4; beh, da allora la batteria dura *molto* meno e sono comparsi una serie di bug fastidiosissimi. Beh, probabilmente non sono stato l’unico ad avere problemi, ed infatti Apple ha già rilasciato il firmware v 4.0.1: ed eccomi qui quindi ad effettuare un bel download di 378 Mb per (sperare di) fixare un sistema operativo rilasciato da nemmeno un mese.

Nulla da dire: se ci sono problemi, è giusto ed apprezzabile che Apple li risolva. Ma pensate cosa si sarebbe detto di Microsoft se avesse rilasciato 4 SP nel primo anno di vita di Windows 7. O cosa si sarebbe detto se avesse dovuto rilasciare in fretta e furia una versione aggiornata di Windows Mobile a meno di un mese dal rilascio di quella precedente.

16/07/2010 7.24.00 Andrea Saltarello StrangeLog - Il blog di Andrea Saltarello

Update: Visual Studio 2010 and .NET Framework 4 Training Kit

Una decina di giorni fa è stato rilasciato l’aggiornamento del Visual Studio 2010 e .NET Framework 4 Training Kit che finalmente aggiorna alla versione RTM anche la parte dedicata all’ALM. Il training kit è pensato per aiutarvi nell’uso delle funzionalità di Visual Studio 2010 e in diverse tecnologie tra cui:

  • C# 4
  • Visual Basic 10
  • F#
  • Parallel Extensions
  • Windows Communication Foundation
  • Windows Workflow
  • Windows Presentation Foundation
  • ASP.NET 4
  • Windows 7
  • Entity Framework
  • ADO.NET Data Services
  • Managed Extensibility Framework
  • Visual Studio Team System

Potete scaricarlo da qui.

29/06/2010 18.39.00 davide Blog di Davide Vernole

Visual Studio 2010 RTM: Virtual Machine con dati di esempio e labs ora disponibile

Finalmente è disponibile la macchina virtuale di Visual Studio 2010 RTM con dati di esempio e laboratori. Il contenuto della macchina è il seguente:

  • Visual Studio 2010 Ultimate
  • Visual Studio Team Foundation Server 2010
  • Una applicazione di esempio con dati dimostrativi sulla quale si basano 9 laboratori

Grazie a questa VM avrete la possibilità di studiare e tenere dimostrazioni sulle funzionalità e le potenzialità degli strumenti rilasciati con l’ultima versione di Visual Studio.

Ecco i link:

29/06/2010 18.31.01 davide Blog di Davide Vernole

Il campo minato di VirtualBox

Io come tanti sono "costretto" ad usare VirtualBox per i noti problemi di Virtual PC sui portatili (il problema del timer e la scelta ristretta dell'hardware). A proposito propongo un "santo subito" per Russinovich e la sua utility Disk2VHD.

Le performance di VirtualBox sono notevoli, le macchine virtuali vanno a bomba, supporta i VHD e le USB (cosa che uso quasi mai ma è di "effetto").

Occhio però che:

  • Il bus USB dopo che ci giochi un po' si inchioda e devi fare reboot della macchina host
  • Se attacchi una iso ad una VM e poi fai un save state, la iso non la puoi più staccare. Se poi muovi fisicamente il file altrove, l'entry con il "!" sulla iso non puoi mai più toglierla. (Ma dico io, se metto in standby il pc, il CD posso sempre toglierlo dal cassettino eh)
  • Se poi faccio uno snapshot con un CD attaccato alla VM, quella ISO non potrò mai più toglierla fino a che non cancello lo snapshot. (Il developer di questa cosa è proprio un "genio" grrrr)

Ma i problemi "seri" vengono adesso …

  • Ho fatto export da un pc, dopo mezzo secolo ho finalmente un file OVF con tutto quanto dentro, poi vado sull'altro PC faccio un import …. e non funziona nulla. Un bell'errore generico (0x80004005) che puzza di security sul file system ma che invece non c'entra nulla. E mezza giornata cacciata al vento.
  • Non c'è modo di *spostare* i dischi e gli snaphsot da un HDD ad un altro dello stesso PC.
  • Il "delete snapshot" in realtà è "merge snapshot" (quanti geni nello stesso gruppo) e se non fai lo snapshot prima di fare la prima delete, perdi la situazione dall'ultimo snapshot allo stato attuale (altro genio, eh).

Per spostare i dischi virtuali l'unica soluzione è stata quella di fare merge (addio agli snapshot) e ricreare la macchina virtuale. Ogni tentativo di tweak dei file xml è stato vano. Chi ha questo problema faccia riferimento a questo articolo perché la documentazione è del tutto insufficiente.

Con VirtualPC editi un paio di file e fai quello che vuoi ma Linux ci gira una volta su 10 e purtroppo tanti altri problemi (come la dimensione del VHD tanto per dirne un'altra).

Virtualizzare è bello … quando funziona.

11/06/2010 12.31.49 Raffaele Rialdi Web Log di Raffaele Rialdi

ALM: guide per Visual Studio 2010 ALM

Brian Harry ha pubblicato oggi un post in cui riporta alcuni link utili per chi utilizza Visual Studio 2010 e Team Foundation Server per la gestione dei propri progetti. Per maggiori informazioni ecco il link al suo post: A Plethora of VS 2010 ALM Guidance.

17/05/2010 23.28.37 davide Blog di Davide Vernole

TDD: abilitare l’intellisense in Consume-First mode

Visual Studio 2010 introduce molte nuove funzionalità per agevolare l’adozione della technica di sviluppo Test Driven Development. Tra queste vi è la possibilità di utilizzare l’intellisense in modalità Consume-First che permette di sfruttare le potenzialità dell’intellisense dell’ambiente di sviluppo anche per oggetti non ancora esistenti. Normalmente i suggerimenti offerti dalla finestra dell’intellisense si limitano a classi, strutture, metodi, proprietà, ecc esistenti quindi non compatibili con tecniche test-first approach. L’abilitazione del Consume-First Mode istruisce l’IDE in modo che possa suggerirci l’auto-completamento anche per classi, metodi, proprietà, ecc ancora non definite.

Consume-First Mode: abilitare/disabilitare utilizzando la sequenza di tasti CTRL + ALT + SPACE

07/05/2010 16.57.43 davide Blog di Davide Vernole

Attenzione: il sito è in trasferimento verso altro provider

Vi prego di notare che sto attualmente lavorando per trasferire il sito presso un altro provider. Questo potrà essere causa di temporanei black-out del servizio. Non appena questo messaggio non sarà più visibile il passaggio si potrà considerare concluso.

Grazie per la pazienza.

27/03/2010 20.56.53 Andrea Boschin Radicalmente

Vuoi saperne di più sul mix 2010? Chatta con Microsoft

Un vrebe post per segnalare che il prossimo 23 marzo dalle 15 alle 16 si terrà una interessante chat con gli evangelist di Microsoft sui temi del MIX 2010. Chi non ha potuto recarsi (o anche solo seguire) questa importante conferenza, troverà sicuramente utile investire un'oretta in questo appuntamento

http://blogs.msdn.com/italy/archive/2010/03/17/chat-live-il-23-marzo-per-parlare-delle-novit-del-mix-2010.aspx

18/03/2010 8.24.01 Andrea Boschin Radicalmente

Un MVP molto enigmatico

DSC02190

Grazie a Valter per la foto da Barnes & Noble.

25/02/2010 15.47.12 Andrea Boschin Radicalmente

Quella città chiamata Microsoft

Vi propongo un po' di foto scattate durante una passeggiata con Davide Zordan tra due sessioni. Credo che la visione di questa realtà sia quantomai istruttiva.

DSC_9367 Una delle molte targhe Microsoft

DSC_9366 Il building 122 di Silverlight

DSC_9369 Un building in mezzo al verde

DSC_9371 Il viale che porta al centro

DSC_9377 L'interno del Building 92
(Company Store e Biblioteca)

DSC_9378 Il Visitors Center con uno strano
mappamondo animato e sospeso

20/02/2010 9.03.16 Andrea Boschin Radicalmente

La dove nasce il futuro

Le giornate passate al campus Microsoft sono state dense e interessanti, passate per la gran parte al building 122 - il mitico luogo ove nasce Silverlight - ad apprendere e discutere di questa fantastica tecnologia. Devo dire che l'impressione che ho avuto in questi giorni, incontrando persone e sentendo le loro reazioni, è che Silverlight sia realmente il futuro. Divertente è vedere come le persone che vengono a conoscenza della mia expertise siano subito sorprese e desiderino avere maggiori dettagli.

DSC_9361 

Il culmine di questa sensazione è stata quando a colazione un MVP statunitense mi ha apostrofato dicendo: Ehi, you Silverlight guys are grabbing the world... (letteralmente "voi di Silverlight vi state prendendo il mondo"). Quindi direi che ho buoni motivi per dire che la foto di questo post mi ritrae "la dove nasce il futuro".

20/02/2010 3.49.15 Andrea Boschin Radicalmente

Che fine ha fatto Lorenzo?

Quando il server UGIdotNET è andato giù, temporaneamente mi sono trasferito su uno spazio che avevo su WebHost4Life.

Per ora sto continuando a bloggare di la, ovvero www.geniodelmale.info oppure http://feeds.geniodelmale.info/lbarbieri per vedere l’RSS (che dovrebbe però essere trasparente).

Non so ancora se ritornerò su UGI, se resterò di la, se andrò avanti a bloggare (Facebook impera… smile_regular), ma nel frattempo, se volete continuare a seguirmi dovete usare www.geniodelmale.info al posto di http://blogs.ugidotnet.org/lbarbieri. Comunque, se decidessi di tornare su UGI (per ora è solo pigrizia…) aggiornerei i puntamenti del DNS per far funzionare tutto come prima…

Vi aspetto.

27/10/2008 6.54.04 Lorenzo Barbieri Lorenzo Barbieri @ UGIblogs!

Relax domenicale…

Oggi una domenica tranquilla… ieri in giro a fare shopping, oggi invece a casa… ci sono un sacco di lavori e cose da sistemare… alternate a momenti di svago assoluto.

Ieri sera ho visto in DVD “Una notte al museo”, film non nuovissimo ma molto divertente.

Mi hanno fatto un po’ pensare le parole del presidente Roosevelt, (o meglio… del suo alterego di cera interpretato da Robin Williams), e sono andato a cercare altre citazioni, trovandone alcune molto interessanti qui.

Quella che mi piace di più è questa:

“The most important single ingredient in the formula of success is knowing how to get along with people.”

E’ una cosa che sto cercando continuamente di migliorare, a partire dal rapporto con gli amici più cari.

In altri casi invece, ho avuto bisogno di un bel calcione… ma spero di uscirne bene.

Leggendo ho anche trovato una frase che rappresenta bene una strategia che ho deciso di adottare tanto tempo fa:

“When you are asked if you can do a job, tell 'em, 'Certainly I can!' Then get busy and find out how to do it.”

Se ci penso è proprio vero che rilassarsi non significa necessariamente non fare nulla. Ci si può rilassare anche dando un senso ad una serie di frasi o di pensieri, per poi usarli nella vita quotidiana.

Adesso quasi quasi torno a giocare con… eh no… mi spiace… è un segreto… smile_devil

05/10/2008 14.53.12 Lorenzo Barbieri Lorenzo Barbieri @ UGIblogs!

La libreria per il G-sensor del Diamond ora va anche con l’Omnia

04/10/2008 13.01.48 Lorenzo Barbieri Lorenzo Barbieri @ UGIblogs!

Dietro le quinte…

Ieri ho pubblicato sul Blog di team la video intervista a Francesca in cui parlavamo della nuova combo tra Developer e Database Edition di Visual Studio Team System…

Ma… non tutte le ciambelle riescono col buco al primo tentativo… e quindi ho pensato di pubblicare il “dietro le quinte”…

<a href="http://video.msn.com/video.aspx?vid=85170bcf-fdac-438b-9b75-03b5292909bd" target="_new" title="Non tutte le ciambelle...">Video: Non tutte le ciambelle...</a>

Non ridete troppo… smile_regular

02/10/2008 15.22.50 Lorenzo Barbieri Lorenzo Barbieri @ UGIblogs!

La “mappa stradale” per PDC è sempre più europea…

Dopo Oslo… ecco Dublin… ma ne arriveranno altre… smile_regular

Buon viaggio!!!

01/10/2008 18.38.31 Lorenzo Barbieri Lorenzo Barbieri @ UGIblogs!

Passaggio a BlogEngine. Addio WordPress

Era da tempo che avevo iniziato la cosa, ma per un motivo o per un’altro avevo sempre posticipato. Ecco che ora il mio blog gira su BlogEngine e non più su WordPress. Perchè questo? Semplice perchè BlogEngine è sviluppato in .NET e questo mi permette di personalizzarlo e aggiungergli funzionalità a mio piacimento, senza dipendere [...]
30/05/2008 9.25.10 Andrea Dottor Andrea Dottor - il silenzio di un urlo

ASP.NET Dynamic Data - Custom Page

Come abbiamo vsito nel precedente post (Dynamic Data - Per iniziare), le pagine renderizzate sono basate su dei template che sono contenuti all’interno della cartella /DynamicData/PageTemplate/.I template che abbiamo a disposizione sono: Details.aspx Edit.aspx Insert.aspx List.aspx ListDetails.aspx queste pagine utilizzano i classici controlli di ASP.NET (e ulterioli controlli contenuti nei Dynamic Data) che [...]
22/05/2008 12.33.28 Andrea Dottor Andrea Dottor - il silenzio di un urlo

RockScroll - scrollbar sostitutiva per Visual Studio

Vi avevo promesso che lo avrei postato, ed eccomi qui.  All’ultimo meeting alcuni mi voi mi hanno chiesto cosa fosse la scrollbar che utilizzavo in Visual Studio. Altro non è che un tool che va a rimpiazzare la normare scroolbar e al suo posto ci mette una miniatura del testo presente nel file, evidenziando la [...]
20/05/2008 10.39.51 Andrea Dottor Andrea Dottor - il silenzio di un urlo

ASP.NET Dynamic Data - Per iniziare

Il miglior modo per capire cosa siano i Dynamic Data è quello di provare a realizzare una semplice applicazione che ne faccia uso. 1- Creazione Dynamic Data WebSite Creiamo da Visual Studio 2008 un nuovo WebSite, e tra i template disponibili selezioniamo Dynamic Data WebSite. Ricordo che questo template è disponibile solo installando il SP1 del [...]
19/05/2008 12.57.54 Andrea Dottor Andrea Dottor - il silenzio di un urlo

ASP.NET Dynamic Data… cosa sono?

Lo devo proprio ammettere, questi Dynamic Data sono proprio stupendi!In questo periodo ho avuto modo di approfondirli per bene, e rilascio dopo rilascio si può dire che Microsoft stà facendo proprio un bel lavoro, e i progressi si vedono. Cosa sono i Dynamic Data?I Dynamic Data permettono di creare una Web Application per l’accesso e la [...]
17/05/2008 12.35.40 Andrea Dottor Andrea Dottor - il silenzio di un urlo