Welcome

This is the generic homepage (aka Aggregate Blog) for a Subtext community website. It aggregates posts from every blog installed in this server. To modify this page, edit the default.aspx page in your Subtext installation.

To learn more about the application, check out the Subtext Project Website.

Powered By:

Blog Stats

  • Blogs - 715
  • Posts - 31082
  • Articles - 310
  • Comments - 106777
  • Trackbacks - 591064

Bloggers (posts, last update)

Latest Posts

[AngularJs] ng-repeat : $index

Nei template quando si utilizza l'attributo "ng-repeat" è possibile far riferimento all'indice del ciclo con la variabile
$index.

Esempio

<a ng-repeat="i in items">
                    <span class="name">{{$index}}. {{i.name}}</span>
</a>

posted @ 15/04/2015 15.58 by Alessandro Gervasoni

GoJS : Interactive Diagrams for the Web

http://gojs.net

posted @ 14/04/2015 19.41 by Alessandro Gervasoni

URI.js

http://medialize.github.io/URI.js

URI.js offers simple, yet powerful ways of working with query string, has a number of URI-normalization functions and converts relative/absolute paths.

posted @ 14/04/2015 8.59 by Alessandro Gervasoni

Definition of Done nella Kanban Board di VSO

Negli ultimi aggiornamenti di VSO abbiamo potuto notare alcune importanti migliorie nella Kanban Board, che onestamente era stata un po’ trascurata negli ultimi tempi.

Kanban Split Column

Novità di VSO Sprint 79

Nel secondo post avevo promesso di approfondire il concetto di Definition Of Done in Kanban, perché è di fondamentale importanza per gestire al meglio il processo. Per prima cosa, fin dagli albori del template SCRUM, in TFS/VSO si può trovare il campo Acceptance Criteria per i Product Backlog Item e le Feature.

image

Dal punto di vista prettamente agile, l’acceptance criteria rappresenta l’insieme dei criteri da soddisfare affinché la singola Card/PBI sia considerata completa a tutti gli effetti quindi, essa rappresenta la Definition of Done della singola card/PBI. Il problema è come declinare questa informazione dal punto di vista di una Kanban Board.

Sicuramente tutti i criteri che si trovano nella card/PBI debbono essere necessariamente soddisfatti prima che la card finisca nell’ultima colonna. Questa condizione è sicuramente intuitiva, ma visto che non vorremmo lasciare nulla al caso, possiamo utilizzare la nuova funzionalità di supporto alla Definition Of Done nella Kanban Board di VSO per rendere questa politica esplicita.

SNAGHTML12b0967

Come si può vedere, ogni colonna, tranne la prima e l’ultima, hanno la possibilità di editare la Definition Of Done. In realtà la posizione logica migliore per questa informazione sarebbe tra due colonne, in modo da rappresentare la barriera che determina le condizioni affinché una card possa essere mossa alla colonna successiva. In questo caso invece, essendo la DoD sulla singola colonna, essa rappresenta le condizioni da soddisfare affinché una card in quella colonna possa essere considerata come Done e quindi promuovibile alla colonna successiva.

Andando ad editare la Definition of Done della colonna Testing, possiamo esplicitare la condizione precedente, ovvero che per essere considerata DONE una card deve avere tutti gli Acceptance Criteria soddisfatti.

image

Ora sulla colonna si può una nuova icona con un piccolo punto esclamativo. Cliccandoci sopra si può vedere le DoD di quella specifica colonna.

image

Di base quindi l’acceptance criteria rappresenta la DoD della singola card, ma in Kanban esiste una DoD per ogni colonna, che vale comunque per tutte le card indipendentemente dalla acceptance criteria.

Questa funzionalità è molto utile per esplicitare in maniera chiara il livello di qualità che ci si attende prima di considerare completa una card. Nulla infatti rallenta il flusso come il dover riportare una card allo stato precedente perché si è dimenticati qualcosa. Un esempio tipico potrebbe essere quello di avere il codice pronto per andare in produzione, ma accorgerci che lo schema del nostro DB SQL è cambiato e gli sviluppatori hanno dimenticato di creare gli script di migrazione. In questo caso è evidente che è necessario aggiungere una condizione nella DoD della colonna Developing.

Per chi usa la Kanban Board su VSO, non dimenticate quindi di esplicitare tutte le condizioni di transizione, ricordate infatti che uno dei principi di Kanban è: Make Process Policies Explicit e la Definition Of Done è sicuramente una delle Policy più importanti dei processi agili.

Gian Maria.

posted @ 10/04/2015 19.49 by Gian Maria Ricci

Introduzione a Kanban su MVA ora online

Per chi fosse interessato è oggi online il corso su Microsoft Virtual Academy sul metodo Kanban, fatto da me dal caro amico Felice.

Trovate tutto qui.

http://www.microsoftvirtualacademy.com/training-courses/introduzione-a-kanban

Buona visione Smile.

posted @ 11/04/2015 11.05 by Gian Maria Ricci

Dove finisce la Kanban Board ed inizia il Feedback

Nel precedente post ho continuato la dissertazione sul massimizzare il flusso, ed ho spiegato come sia fondamentale estendere la Kanban Board a più stadi del processo possibili. Lo scopo finale è visualizzare tutti i passi che portano *dall’idea ai guadagno*. In un sistema software quindi dovremmo avere come ultima colonna un qualche cosa simile a: Usabile in produzione dal cliente finale. 

La domanda principale è: Usabile dal cliente finale significa guadagno?

In parole povere, il fatto che una determinata feature/card sia in produzione, è condizione spesso necessaria, ma non assolutamente sufficiente affinché inizi a generare guadagno. In questo caso quindi, anche se abbiamo massimizzato il flusso grazie alla nostra Kanban Board, non ci stiamo necessariamente avvicinando al Goal. Quello che viene spesso trascurato nell’implementazione del metodo Kanban è il considerare la metrica probabilmente più importante dei processi agili: IL FEEDBACK!!!!

L’aspetto interessante è che, si è tentato per anni di mutuare tecniche di progettazione da altre branche dell’ingegneria all’informatica (vedi il waterfall) ed il successivo fallimento di molti di questi tentativi ha generato un assioma di questo tipo:

Essendo il sistema waterfall mutuato da un altra branca dell’ingegneria, è possibile che mal si adatti all’informatica. Ergo è piuttosto inutile cercare di adattare metodologie di progetto da altre branche dell’ingegneria, perché l’informatica è troppo differente.

Questa affermazione è sempre vera? Venendo da studi di Elettronica, per me è naturale che un sistema di controllo per essere stabile debba necessariamente usare il principio del feedback.

Ora consideriamo che: il metodo Kanban è un sistema di controllo, il cui scopo è monitorare l’avanzamento dall’idea al prodotto finito grazie alla Board. A questo punto io sono fermamente convinto che:

Uno degli errori maggiori in Kanban applicato ad un progetto software è credere che il flusso finisca una volta raggiunta l’ultima colonna, ignorando per questo il feedback!!!!

Se grazie a Kanban abbiamo aumentato di molto il flusso di produzione (software o manifatturiero, …), ma nel contempo abbiamo una qualità scadente, siamo ben lontani dal Goal, a meno che il Goal non sia avere orde di clienti insoddisfatti (o di vendere contratti di assistenza).

In questo particolare caso l’ingegneria dei controlli e dell’automazione ci viene in aiuto, perché il modo migliore per capire se il prodotto del nostro processo è valido e di qualità, è acquisire FEEDBACK!.

Nei prossimi post vedremo quindi che tipologia di feedback utilizzare e come integrare questo processo in Kanban.

Gian Maria.

posted @ 10/04/2015 19.21 by Gian Maria Ricci

AngularJS Side Includes

With AngularJS, you can include HTML content, using the ng-include directive:

Example

<body>

<div class="container">
  <div ng-include="'myUsers_List.htm'"></div>
  <div ng-include="'myUsers_Form.htm'"></div>
</div>

</body>

posted @ 09/04/2015 16.38 by Alessandro Gervasoni

Baobab

Baobab is a JavaScript data tree supporting cursors and enabling developers to easily navigate and monitor nested data. https://github.com/Yomguithereal/baobab

posted @ 03/04/2015 9.29 by Alessandro Gervasoni

CQRS: “C” come “Conversation Id”

La serie di post su CQRS si arricchisce sempre più, ne mancano un paio per chiudere il cerchio e avere una overview abbastanza completa su “cosa”, “come” e “quando”.

 

image_2_thumb61

L’ultima volta che ne abbiamo parlato abbiamo introdotto il concetto di de-normalizzazione asincrona, elencando più o meno una lista di possibili passi simile a quella che segue:

  1. Invio del comando in POST;
  2. Ricezione del comando e dispatch dello stesso su una coda;
  3. Invio della risposta HTTP-202;
  4. Ricezione del comando e gestione dello stesso da parte del back-end;
  5. Broadcast dell’evento;
  6. De-normalizzazione;

Facciamo un passo indietro e semplifichiamo il processo riducendolo all’essenziale:

  1. Un processo (A) invia un messaggio ad un processo (B);
  2. Il processo (B) riceve la richiesta, fa quello che deve fare e pubblica un evento che notifica il suo nuovo stato;
  3. Il processo (A) deve reagire alla notifica/evento;

Ho volutamente utilizzato i termini processo e messaggio per sottolineare che la comunicazione è asincrona.

Ora, il processo (B) riceve svariate richieste e ovviamente pubblica svariate notifiche, eventi, (A) ha quindi bisogno di un modo per capire, tra tutti gli eventi che riceve, quali sono di suo interesse e quali no, quindi quali sono quelli relative a richieste che ha fatto lui e quali sono di altri.

Questo processo si chiama correlazione o gestione della conversazione, gli aspetti fondamentali sono:

  • colui che origina il primo messaggio deve avere la possibilità di generare un “Conversation ID” a suo piacimento, ovviamente responsabilità sua che sia unique oppure affidarsi a una parte dell’infrastruttura perché lo faccia per lui;
  • l’infrastruttura deve offrire un sistema per trasportare il “Conversation ID” da un endpoint all’altro;
  • l’infrastruttura deve garantire che il “Conversation ID” sia propagato a qualsiasi messaggio venga generato da un endpoint in maniera trasparente;

Date queste 3 semplici regole la complessità e/o ramificazione del processo diventa del tutto irrilevante.

Se volete approfondire questi temi venite a trovarci, ne discuteremo intensamente per una giornata intera, con tanto di esempi dal mondo reale.

.m

posted @ 02/04/2015 11.05 by Mauro Servienti

Solution Architect @ Particular Software

Sono felicissimo di annunciare che da oggi sono Solution Architect in Particular Software, un fantastico gruppo di persone notevoli. Come Solution Architect supporterò i clienti nel processo di adozione di NServiceBus e della Particular Platform.

Questo viaggio è cominciato 15 anni fa ed è decisamente lontano dalla fine, questa è una di quelle tappe che ti cambiano la vita, almeno la mia.

C’è una lunghissima lista di persone che devo ringraziare, senza le quali non sarei qui, troppo facile perdersi per strada qualcuno e fare un torto. Ci sono però 3 amici che sono stati fondamentali, quindi grazie Raffaele, Lorenzo e Andrea. (in ordine di apparizione).

posted @ 01/04/2015 10.30 by Mauro Servienti

mobileangularui.com

Build HTML5 Mobile Apps with Bootstrap and Angular JS
http://mobileangularui.com

posted @ 31/03/2015 17.14 by Alessandro Gervasoni

Kanban Board–Massimizzare il flusso

Come accennato nel post precedente sulle Split Columns della Kanban Board in VSO, Eliyahu Goldratt nel suo libro “The Goal” ci dice che uno degli scopi di una organizzazione è:

Maximize Throughput while Minimizing Inventory and Operating Expense.

In questo post vorrei fare una precisazione sul concetto di Flusso e Throughput, di centrale importanza per il metodo Kanban. Se avete letto The Goal sapete benissimo che uno degli scopi principali di una azienda è fare soldi, punto! Sembra cinico, ma senza un flusso di cassa costante, potete avere delle idee bellissime, essere innovativi, brillanti, ma sicuramente avrete difficoltà nel realizzare le vostre idee.

Nel software, quando andiamo a declinare il metodo Kanban, che ricordo essere nato in un contesto manifatturiero (Toyota), bisogna capire cosa intendiamo con il termine throughput. Facciamo però prima un semplice ragionamento in ambito manifatturiero, pensando ad una azienda che produce elettrodomestici. Supponiamo che la azienda usi Kanban, il flusso sia ottimale e le linee di produzione lavorino in maniera efficiente, i colli di bottiglia sono stati individuati, etc etc.

La domanda interessante che ci si deve porre è questa: se si vuole massimizzare il flusso dell’azienda, bisogna definire in maniera inequivocabile quale sia lo stato finale della nostra Kanban board, altrimenti rischiamo di non trovare colli di bottiglia. Facciamo un esempio in cui consideriamo come ultima colonna della Kanban lo stato “imballato”, che identifica quando il nostro elettrodomestico è stato imballato e pronto per la vendita.

Possiamo da subito capire che probabilmente questo non è corretto, se per qualche ragione il nostro magazzino non è efficiente, rischiamo di accumulare prodotti in magazzino senza essere in grado di farli pervenire ai distributori. In questo modo, se il magazzino è il collo di bottiglia, esso non verrà individuato, e ci accorgeremo dei problemi quando gli elettrodomestici “imballati” non hanno più posto dove essere stoccati.

Ok! Per risolvere consideriamo come ultima colonna Kanban una nuova colonna chiamata immagazzinamento, in questo modo se il magazzino diventa saturo, essendo Kanban un metodo pull, le linee di produzione dovranno fermarsi, dato che il magazzino non è più in grado di accettare pezzi. Anche in questo caso, se in alcuni periodi dell’anno quel tipo di elettrodomestici si vede di meno (frigoriferi in inverno), rischiamo di riempire il magazzino perché i grossisti non hanno bisogno di nuova merce.

Piano piano ci si rende conto che idealmente, l’ultima colonna Kanban per la nostra azienda fittizia, dovrebbe essere “venduto al cliente”. Ora è chiaro che ragionare in questi termini è decisamente difficile, ma se nel nostro monitoraggio del processo non consideriamo che il nostro elettrodomestico deve essere venduto ad un cliente finale, si rischia di non vendere, non fare soldi, e fallire.

Tornando quindi al concetto iniziale: Throughput!! Se seguiamo le indicazioni di Goldratt, dobbiamo accertarci che quando parliamo di flusso, stiamo includendo tutti gli stadi fino a quello che ci permette di fare soldi per far vivere l’azienda!

Cosa implica questo in Kanban applicato ai processi software? Che nella nostra Kanban Board, l’ultima colonna deve essere, per lo meno, Usabile in Produzione, ovvero il software deve essere rilasciato e disponibile al cliente finale. Se ci dimentichiamo di questo, rischiamo di accumulare una grande quantità di lavoro “finito” ma che non è usabile dal cliente/utente finale, e che quindi non può generare soldi.

Ricordate quindi che in Kanban la massimizzazione del flusso è fondamentale ed è altrettanto fondamentale che nel flusso si considerino tutti gli stadi, dall’idea alla produzione!

In realtà nemmeno questo alla fine è realmente sufficiente e capiremo perché nel prossimo post.

Gian Maria.

posted @ 21/03/2015 12.11 by Gian Maria Ricci

How to assess, communicate and manage uncertainty and risk with Agility?



The thought that disaster is impossible often leads to an unthinkable disaster.

Gerald M. Weinberg

Doubt is not a pleasant condition, but certainty is absurd.
Voltaire



Every time there’s a good business opportunity to develop a new product or evolve an existing one, executives want to know required investment amount, expected ROI and probability, and risk involved.

Therefore product and development teams are asked to figure out if the new product or product evolution is technically feasible, how long it will take to implement, how much it will cost, when will be finished, and how much risk and uncertainty is involved.
Then Project/Release/Iteration manager will present a release plan where time, effort and costs estimation are expressed with ranges. The degree of uncertainty and the level of risk determines amplitude of the estimations range.

As result, the degree of uncertainty and the level of risk will impact the investment decision, budgeting, governance of products portfolio, release plan, and external customer where one is involved.

 



How to assess and communicate risk and uncertainty

Visualising and communicating risk and uncertainty with agility it means to do that in a lightweight form that’s quick and simple to understand, easy to constantly and frequently update, and straightforward to iteratively enact.
This is very different from heavyweight approaches for documenting risks with long documents that quickly become outdated, often remain unread and very seldom if ever lead to timely action.


The lightweight assessment is
constantly and frequently updated
as new learnings and new information emerge


The assessment of risk and uncertainty is typically done after initial high-level identification of features and user stories and after initial high-level effort estimation. The assessment is then updated periodically as new learnings and new information emerge.
A high-level way to assess and visualise the overall degree of uncertainty and the level of risk consists in categorising the implementation of the new product or the evolution of the product as an Exploration type of work or as a Production type of work.



Investing more time detailing upfront requirements,
specifications and design wont reduce risk or uncertainty



- Production type of work is characterised by known problems and known solutions. It occurs when implementation work is similar to previous implementations. As a result it has very low degree of uncertainty and very low level of risk. Estimation ranges can be narrow because of low estimation errors expected.

- Exploration type of work is characterised by high level of uncertainties and unknowns in the problem and/or in the solution, and in the product/market fit. In addition to this, there could be plenty of things outside the area of control or influence that can change anytime impacting the success of the implementation and of the product. For this type of work, investing more time detailing upfront requirements, specifications and design wont reduce risk or uncertainty.

There’s a continuum between the very low risk and uncertainty production type of work and the high risk and uncertainty exploration type of work.






Different opinions and different points of view
are invaluable sources of information,
therefore are encouraged and explored


Product and development teams’ members that will do the actual work, should collectively vote where they think the current implementation work stands, placing each one a dot between the two extremes, discussing whenever they see differences among their votes and revoting after the discussion. In case of persistent differences in opinion among team members, it’s advisable to raise the level of risk & uncertainty. This evaluation can alternatively be done by team's Product Owner together with the Tech-Lead and the Project/Release/Iteration Manager.



Actual effort or scope can be up to 4 times the initial estimate



For an implementation work estimated to be on the extreme left-end, a pure exploration type of work, the estimation error can be up to 300% of the initial estimate. In other words the actual effort or scope can be 4 times the initial estimate. For a pure production type of work the estimation error can be 5-10%. While for an implementation work that stands in the middle, the estimation error can be up to the 50%. For examples see the Cone of uncertainty, based on research in the software industry and validated by NASA's Software Engineering Lab.



How to detail and explain risk and uncertainty

When executives and managers want to know reasons behind estimated overall risk and uncertainty level, when product and development teams want to improve the assessment accuracy, when they want to verify their assessment or present it in more detail, it’s useful to drill down into these three main risk and uncertainty components:

1) people and market
2) domain and requirements
3) technology and architecture

For each component the level of risk and uncertainty can be rated Low (green), Medium (amber) or High (red) and presented, for example, like this:






The following lists break down each of the three main risk and uncertainty components into multiple elements. While discussing the elements, new elements specific to teams’ and product context and circumstances could emerge and should be added to the list.


The elements in the lists below are placeholders
to provoke discussions and provide basic guidance


Note that the elements in the lists are placeholders to provoke discussions and provide basic guidance. A team experienced in dealing with risk, uncertainty and complexity would probably start with empty lists and populate them throughout discussions.



1) People and market





2) Domain and requirements





3) Technology and Architecture





Each element of the lists should be discussed one at time by the product and development teams to rate the level of risk and uncertainty.

The rating of each element should be given for example considering historical data, or absence of historical data, listening to professional judgment of team members, and considering the weight of each element in the current context and circumstances.  Whenever there are differences among team members' estimate, there should be a discussion to learn from each other point of view, and after that a re-estimation. In case of persistent differences in opinion among team members, it’s advisable to raise the level of risk & uncertainty.


This approach should help to rate the overall level of risk and uncertainty for each of the three components and explain reasons behind each rating.


Every new information, findings and learnings
are used to verify, validate, update and enhance
results and decisions from previous stages


From those estimations and from the conversations that lead to the estimations, product and development teams should be able to re-vote where the current implementation work stands in the continuum between the production type of work and the exploration type of work, considering possible interactions among the components, and producing a more accurate assessment.

Tip: Keep it simple! Update the assessment frequently using new info and new learnings available over time.




How to manage high risk and high uncertainty

When work required to deliver a new product, or a product evolution, is expected to be mostly of Exploration type, estimation of costs, effort and time are expressed with extremely wide ranges and with estimation errors up to 300% of the initial estimate (for examples, see the Cone of uncertainty mentioned before). Therefore a linear upfront investment based on initial estimate for Exploration type of work is hazardous.



Small experiments and prototypes
are designed, built, deployed and tried out

with real users, early adopters and customers
in hours, days, or few weeks



In these cases it’s more convenient an initial exploration phase with the goal to identify and reduce main risks and uncertainties by exploring the problem space, testing assumptions, validating the solution, verifying product/market fit, clarifying the scope, and learning new info.

During the exploration phase an experimental approach is adopted: shortest possible experiments are designed and executed to gather data with minimum effort, and smallest possible prototypes are built, deployed and tried out involving as much as possible real users, early adopters and customers. Each is done in the space of hours, days, or few weeks. One of these experiments is the minimum viable product or MVP.


Investment decision and estimates
are finalized only after the end of the
exploration phase



An exploration phase ends only when risk and uncertainty are reduced enough so that a good, informed investment decision become possible. For an overall effort of one year, the exploration phase could last, for example, 2 months.





After exploration phase, sometimes estimates still have a wide range and estimation errors are up to 30-50%. I.e. the development time could be estimated in the range of 6 to 12 months.


Low priority requirements can be used as a safety net
to deal with residual risk and uncertainty



When this happens it’s particularly convenient to prioritise the requirements in the backlog using the MoSCoW prioritisation method in order to use the requirements classified Should as a safety net.

Here the best case scenario forecast, that assumes the highest velocity of the team, will include in the scope requirements classified as Must together with requirements classified as Should.
The worst case scenario forecast, that assumes the lowest velocity of the team, will include in the scope only requirements classified as Must.
As a result, in this example, the initial estimation range of 6 to 12 months, that is 6 months wide, is turned into a range of 6 to 8 months, only 2 months wide.






After a short period of time
from the beginning of the implementation work,
the investment decision and estimates
are verified against real progress



After about two months of work implementing the solution, it’s worth to observe the trend of team’s velocity:
  • When the velocity is stable or converging and is inside the ballpark, a new more accurate estimation can be done and plans can be updated accordingly.
  • When the velocity is stable outside the ballpark, this is a sign that investment decision should be re-evaluated.
  • When the velocity is diverging outside the ballpark, this is a sign that there could be still risks and uncertainties that need to be explored extending the exploration phase.

Conclusions

This lightweight, gradual, iterative approach to assess, communicate and manage uncertainty and risk is a simple and effective way to monitor and react timely to a variety of circumstances that impact investment decisions, budgeting, governance of products portfolio, and release planing. It also encourages and supports conversations on risk and uncertainty between executives, managers, product and development teams, and customers.

It is based on current lean/agile literature and on personal experience.

The mechanic of this approach is simple. In addition to it, few organisation cultural traits and leadership mindset characteristics are useful to make it work: transparency, trust, teamwork, and tolerance for experimentation.

If you are interested into the topics discussed in this post, those four suggested readings are for you:
  • Book: Lean Enterprise: How High Performance Organizations Innovate at Scale. Jez Humble, Joanne Molesky, and Barry O’Reilly. 2015
  • Article: 4 Significant Ways to Improve Your Ability to Innovate. Joanne Molesky. 2015
  • Book: Agile Project Management: Creating Innovative Products (2nd Edition).  Jim Highsmith. 2009
  • Article: A Leader’s Framework for Decision Making. David J. Snowden, Mary E. Boone. 2007
  • Article: How to prioritize risks on your business model, Ash Maurya

 

Thanks to Maurizio Pedriale and Carlo Bottiglieri for their help in the review of the draft of this post.

posted @ 14/03/2015 22.23 by Luca Minudel

Continuos integration di un proggetto OpenSource su github con Travis CI

Ho conosciuto recentemente Travis CI un servizio di continuous integration integrato con github. Così ho deciso di sperimentarlo con il mio primo progetto open source...

Integrazione con Travis CI

Risultato

Adesso ogni commit al sorgente del mio repository scatena una corrispondente build e l'esecuzione dei test automatici.

I risultati dell'ultima build (del branch master) sono visibili graficamente dalla pagina principale del mio progetto github...

FxCommon - Readme - First Travis CI integration

posted @ 21/03/2015 15.44 by Marco Baldessari

Frontend life with or without Visual Studio?

Un anno fa scrissi sul mio blog inglese una serie di post dal titolo "the road to Visual Studio free frontend development", nei quali spiegavo - partendo da un caso reale - il perchè e il per come avessi abbandonato Visual Studio come strumento per lo sviluppo del frontend, in favore di un editor di codice e strumenti Open Source come Npm, Bower e Grunt.

A Redmond non hanno sicuramente letto i miei post, ma probabilmente hanno fatto alcune riflessioni analoghe poichè Visual Studio 2015 (in parte già Visual Studio 2013) ha cambiato rotta integrando e supportando nell'ide questi tool.

Se fino ad un anno fa la domanda del titolo - per me - sarebbe stata retorica, adesso la risposta non è più così scontata; la settimana prossima ci saranno i Community Days 2015 in cui avremo lo spazio per provare a trattare questi temi e darne una risposta.

 

posted @ 19/03/2015 14.41 by Gianluca Carucci

TFS2015 Build vNext

Nel lontano 2010, TFS2010 introduceva una nuova build, basata su Workflow Foundation, la quale andava a rimpiazzare la vecchia build di TFS 2008 basata su script MSBuild.

Personalmente debbo dire che ho sempre preferito la vecchia versione del 2008, soprattutto per la facilità di estensione. Mentre per Workflow Foundation è necessario usare Visual Studio ed addentrarsi in un designer non proprio semplice, personalizzare una build MSBuild è una operazione piuttosto semplice, alla fine si tratta solamente di file xml.

Chiaramente XML non è il linguaggio migliore per creare uno script, per cui nel corso degli anni molte persone hanno abbandonato questa strada a favore di Powershell, sicuramente più flessibile ed estendibile. Una build infatti non è altro che una sequenza, quasi sempre lineare, di operazioni da eseguire partendo dai propri sorgenti per ottenere dei risultati (build, test, deploy, etc) e quale migliore scelta dell’esecuzione di una serie di script PowerShell per definire una build?

Per questa ragione in TFS2015 la build è stata nuovamente modificata, per adattarsi a queste nuove richieste e sicuramente risolverà molti problemi emersi negli anni passati con l’attuale struttura di build. Dedicherò quindi una serie di post alle novità della build, cosi da potervi mostrare cosa ci aspetta nella prossima versione di TFS.

Build web experience

La novità più succosa e la prima che amo descrivere, è che tutta la configurazione e la gestione della build è completamente web. Niente più necessità di Visual Studio per editare una build, basta andare nella nuova voce di menu Build vNext e potrete gestire tutto dal vostro browser preferito.

image

Premendo il bottone per aggiungere una build viene subito presentata una possibile scelta tra due template già pronti, uno per una solution di Visual Studio, ed un altro per eseguire la build di Xcode.

image

Fin da subito possiamo quindi vedere che l’altra grande novità riguarda il fatto di poter avere agent di build che girano anche su macchine non Windows. La configurazione degli agent sarà appannaggio del successivo post, per cui non ci soffermeremo ora su questo aspetto.

Se scegliamo la build di Visual Studio si aprirà un editor web da cui si può configurare ogni aspetto della build.

image

Il primo tab da impostare è quello del Repository in cui basta selezionare repository git che volete utilizzare. Per questa CTP ancora è possibile solamente eseguire build vNext su team project basati su Git, nella versione finale si potrà usare anche TFVC.

image

La cosa interessante è che si può usare la build vNext per compilare qualsiasi repository git, anche su gitHub se necessario. La default Branch indica quale è la branch che verrà compilata di default per le build accodate manualmente.

Il successivo tab sarà quello dei Triggers, su cui si può indicare se si desidera la Continuous Integration (build ad ogni change), se si vuole accorpare più commit in un unica build (Batch changes) e chiaramente la possibilità di specificare tutte le branch che si vogliono monitorare, ad esempio in questo caso ho chiesto di monitorare ogni branch che comincia per feat-.

image

Una volta impostato il repository, si può direttamente fare il browsing da web per scegliere la o le solution che si vogliono compilare.

image

Nel tab dei test basta introdurre una regular expression che identifica gli assembly di test ed il gioco è fatto. Se si vogliono eseguire test differenti da MsTest, si hanno due scelte, la prima è specificare il percorso relativo dove trovare i test adapters, operazione che potete effettuare direttamente nelle opzioni del task di test.

image

Se invece usate nunit in tutti i vostri progetti e si vuole evitare di personalizzare ogni build di ogni progetto, si può andare nelle macchine dove è installato l’agent, aprire la cartella dove è localizzato il test runner di visual studio e copiare al suo interno i test adapters dopo averli scaricati dalla gallery di Visual Studio.

image

A questo punto si è creata una build minimale che esegue Build e Test run, interamente da interfaccia web con pochi semplici click. Se nell’installazione di TFS 2015 avete scelto di configurare il build agent automaticamente, potete direttamente lanciare una build e verificare che sia tutto ok.

image

Come si può vedere la build viene eseguita e potete verificarne l’output ed il progresso direttamente dall’interfaccia web.

Gian Maria.

posted @ 07/03/2015 10.46 by Gian Maria Ricci

MissMatch

Pattern matching for JavaScript inspired by one of the great features of the Haskell language.
https://github.com/pb82/MissMatch

posted @ 16/03/2015 16.41 by Alessandro Gervasoni

Libro gratuito su OWIN: OWIN Succinctly

image_thumbSono lieto di annunciarvi che é appena stato pubblicato il libro che Ugo Lattanzi ed io abbiamo scritto su OWIN.

Dal titolo OWIN Succintly, il libro parla di OWIN, le specifiche open per l’interoperabilitá tra web servers e applicazioni .NET.

OWIN é anche l’ispirazione che, tramite Katana, ha contribuito alle fondamenta di ASP.NET vNext (5), quindi questo libro é un ottimo spunto per iniziare a “pensare” vNext giá con la versione attuale del framework, o semplicemente se volete vedere come portrebbe essere il futuro.

Il libro comincia con le specifiche OWIN, per poi andare a vedere come Microsoft le ha implementate in Katana. Prosegue poi con alcuni tutorial a passi che mostrano come usare Katana da solo e coi vari framework web (WebAPI, SignalR, MVC, Nancy), esamina come usare l’autenticazione in OWIN e finisce con un capitolo piú avanzato, su come sviluppare Middleware custom.

Per leggere il libro é sufficiente andare sul sito Syncfusion, registrarsi, e scaricare il libro, sia in formato PDF che Kindle (.mobi).

Spero che il libro vi sia utile, e nel caso abbiate feedback, non esitate a contattarmi via twitter o con il form di contatto.

posted @ 16/03/2015 14.38 by Simone Chiaretta

Novità di VSO Sprint 79

Come sempre potete leggere tutte le novità sul blog di Visual Studio Online, precisamente a questo indirizzo, ma per chi si fosse perso il post, ecco le novità che sono ora disponibili. In questo sprint il team si è focalizzato nel risolvere alcuni issue di UserVoice che hanno un numero elevato di voti e che sono quindi sentiti come molto importanti da parte della community. Questo significa che, come sempre dico a tutti, il team legge i suggerimenti di User Voice, per cui se qualche cosa non vi soddisfa, quello è il posto migliore per dare i vostri suggerimenti.

Finalmente, dopo tanto tempo, ecco arrivare il parametro @currentIteration, che vi permetterà di fare delle query sui Work Item assegnati alla iterazione corrente. Purtroppo questo parametro non funziona in Excel.

Le novità più importanti riguardano però la Kanban Board, la quale supporta ora il riordinamento delle card, operazione molto importante per la prima colonna, che rappresenta il BackLog.

La modifica più importante è però l’introduzione della Definition of Done per le colonne della Kanban Board. Tornerò sull’importanza di questa funzionalità in un successivo post.

Un’altra importante aggiunta è la possibilità di visualizzare i bug come task nella Taskboard e considerarli logicamente figli dei vostri requisiti.

Come potete vedere il team di Visual Studio ALM continua, sprint dopo sprint, a migliorare il prodotto.

Happy VSO.

Gian Maria.

posted @ 12/03/2015 19.42 by Gian Maria Ricci

bignumber



A JavaScript library for arbitrary-precision decimal and non-decimal arithmetic.
https://github.com/MikeMcl/bignumber.js/

posted @ 11/03/2015 12.51 by Alessandro Gervasoni

Latest Images

From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Immagini
From Foto
From Foto