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 - 31136
  • Articles - 309
  • Comments - 113390
  • Trackbacks - 590740

Bloggers (posts, last update)

Latest Posts

Live update nella Kanban Board in VSTS

Una delle ultime novità per la Kanban Board in VSTS offre la possibilità di abilitare il “live update” per la board, attivabile selezionando una semplice icona a fianco delle impostazioni.

image

Figure 1: Icon to enable live update to Kanban Board

Una volta abilitata, la board rifletterà in tempo reale ogni cambiamento dei work item che sono rappresentati nella board stessa. Questo significa che modificando o riordinando o cambiando colonna o in generale modificando qualsiasi proprietà di un Work Item da qualsiasi sorgente (web, Visual Studio, Integratione con Excel, etc), i cambiamenti si rifletteranno immediatamente nella board.

Questa possibilità è interessante in accoppiata con la visione in full screen (l’icona a destra dei settaggi), che permette di visualizzare la board a pieno schermo. Questa funzionalità, assieme al Live Update, permette di mettere un monitor o televisione che mostra sempre in tempo reale la situazione della board.

Questa funzionalità è per ora solamente disponibile per VSTS.

Gian Maria.

posted @ 27/04/2016 22.32 by Gian Maria Ricci

EDID Emulation… I love you :-)

La workstation che uso quotidianamente come macchina per lavorare è carrozzata con una scheda video più che discreta, una AMD FireGL PRo con tanta memoria e un po’ di porte DisplayPort 1.2 per pilotare un po’ di monitor 4K.

Tutto bello se non fosse che DisplayPort fa vedere a Windows i monitor come device plug&play e ogni volta che un monitor ad esempio va in stand-by, o viene spento, per Windows è come se staccassi il device e lo riattaccassi con l'effetto collaterale che tutte le finestre posizionate con maniacale cura vanno alle cozze...

Con ovvia mia somma gioia. Bene, insomma non proprio.

Ma non tutto è perso, EDID, sulle schede che lo supportano, permette di emulare il profilo del monitor facendo credere alla scheda video e a Windows che sia un altro tipo di monitor o che abbia caratteristiche diverse; la cosa interessante è che quando questo succede Windows si fida dell'emulazione e smette di rilevare il monitor ogni volta che si spegne/accende...ottimo Smile

La mia scheda video, visto quello che costa direi che dovevo aspettarmelo, permette di esportare il profilo EDID dei monitor attaccati e, dopo averlo modificato se necessario, di reimportarlo “forzandoli” così come sono.

Nel mio caso il profilo dei monitor va bene così come è, quindi reimportandolo e forzandolo il risultato è che la scheda video emula i monitor esattamente come sono e Windows è felice.

La cosa a cui stare attenti è se si cambiano le porte a cui i monitor sono attaccati, o si cambiano i monitor stessi, perché ovviamente adesso la scheda video si aspetta che al connettore 1, e via dicendo gli altri, ci sia attaccato un monitor ben specifico e se ci attaccassimo qualcosa di diverso non è detto che quel qualcosa sia felice, ergo se è necessario cambiare le impostazioni dei monitor è consigliabile prima disabilitare l'emulazione EDID e poi riabilitarla.

posted @ 20/04/2016 16.26 by Mauro Servienti

Configurare TFS 2013+ con il Team Field

In alcuni articoli passati ho spiegato come configurare TFS o VSTS per utilizzare un solo Team Project, dividendo il lavoro logico con il concetto di Team in TFS. In tutti gli articoli l’approccio utilizzato è stato quello di configurare per i vari Team L’area Path e l’iteration path assegnati, in modo che ogni Work Item appartenesse al backlog di uno o più team in base all’area path o all’iteration Path.

Se avete TFS on-premise, dove potete configurare il process template, potete adottare una soluzione che spesso porta ad una configurazione più chiara, ovvero modificare il Process Template per far aggiungere un campo esplicito che determina l’appartenenza di un Work Item ad uno o più Team. Questo approccio viene chiamato Team Field e la sua configurazione viene descritta direttamente in MSDN.

Il processo da seguire è molto semplice, si crea una GLOBALLIST con la lista dei vari team, si configurano tutti i Work Item che sono visualizzati nelle varie board aggiungendo un campo custom ed infine si configura il processo per utilizzare tale campo invece dell’Area ed Iteration path.

Una volta effettuata questa configurazione, per ogni Team del vostro Team Project si dovranno scegliere i valori di tale campo per cui un Work Item è associato al team. Questo permette quindi di creare anche un Team chiamato Admin che ha associati tutti i valori possibili per tale campo, in modo che questo Team possa vedere tutto nella board.

A questo punto per assegnare un Work Item ad un particolare team si può semplicemente cambiare il valore del Team Field, rendendo il processo di assegnazione sicuramente più esplicito.

Gian Maria.

posted @ 19/04/2016 20.04 by Gian Maria Ricci

Aggiornamento di VSTS 13 aprile

Il nuovo aggiornamento di TFS è in deploy, e contiene come sempre molte novità interessanti, come potete leggere dal post originale.

Le novità in questo caso sono molto interessanti, innanzitutto ora i Work Item hanno una icona che vi permetterà di “seguire” il Work Item, ovvero venire notificati ogni qualvolta il Work Item viene modificato.

Follow a work item

Di seguito poi viene una delle funzionalità più richieste di tutti i tempi (dopo il rename del Team Project) ovvero la possibilità di cambiare tipo ad un Work Item.

image

Le ragioni per il cambio di tipo sono molteplici, ma la prima è una riorganizzazione e promozione durante il Backlog Grooming. Supponiamo di avere una User Story che si rivela molto grande in fase di analisi, cosi grande da non poter entrare in un singolo sprint. A questo punto deve essere decomposta e la soluzione migliore è quella di, convertirla in epics (feature) e poi andare a decomporla in nuove User Stories.

Chiaramente anche il cambio di tipo è una operazione che viene tracciata.

image

Ma le novità non sono finite quì, un’altra delle funzionalità più richieste, ovvero il poter muovere un Work Item tra Team Project è stata finalmente implementata. E’ ora possibile muovere un singolo Work Item, oppure una serie di Work Items in un altro progetto.

image

Si può specificare quindi dove andare a mettere i Work Item, ma soprattutto, è possibile anche cambiare tipo.

image

Nell’esempio in questione, ho preso tre Product Backlog Items, e li ho spostati in un Team Project basato sul template Agile, per questa ragione ho deciso anche di cambiare il tipo di Work Item in User Story.

A questo punto già abbiamo un bel insieme di novità, ma non è finita qui, è ora possibile personalizzare i work item scegliendo una Pick List, ovvero aggiungendo un campo che può assumere un pre-determinato insieme di valori.

Add a field to a bug

Un’altra interessantissima funzionalità è la possibilità di cliccare su un errore di compilazione di una build ed essere portati direttamente alla riga di codice che la ha causata, direttamente dal vostro browser.

Per finire sono state introdotte anche numerose interessanti funzionalità sul Release Management che potete leggere dal blog ufficiale.

Buon fine settimana a tutti. :)

posted @ 16/04/2016 12.03 by Gian Maria Ricci

Che l’idempotenza sia con noi… :-(

Idempotenza questa sconosciuta… Il “buon” Subtext è evidente che non sa cosa sia…

image

post, duplicati, visibili da front-end ma non da back-end, dove ce ne sono altri duplicati:

image

Lasciamo perdere poi la gestione della paginazione:

image

image

Evito poi di addentrarmi nei meandri dello scheduler…è come sparare sulla Croce Rossa.

posted @ 15/04/2016 12.23 by Mauro Servienti

Slack è la nuova mail?

Ho parlato in maniera estesa di come usiamo Slack internamente, leggendo Scott Hanselman mi viene in mente che è un po’ che sento commenti del tipo “Slack è la nuova mail”.

image

Tra tutte le risposte quella del mio collega Simon è quella che meglio riassume la situazione:

image

Dunque…

Non c’è scritto da nessuna parte che Slack non diventi una bolgia ingestibile allo stesso modo di quelle simpatiche situazioni in cui la gente fa “reply all” in automatico e magari aggiunge pure qualcuno in copia.

Slack è lo strumento, se lo usate male è un vostro problema non potete di certo colpevolizzare solo lo strumento. Lo scenario d’uso peggiore è quello del singolo canale che usano tutti, è esattamente uguale alle mail con un bel “reply all” dove ogni tanto l’argomento cambia in corsa…un disastro annunciato e noto a priori.

Lo scenario migliore è quello dei tanti canali tematici con uno stretto controllo su “on topic/off topic”, in questo caso il vantaggio è palese, è molto facile se vi serve capire cosa è successo negli ultimi due giorni, cosa che se arrivate tardi nella mail probabilmente è impossibile perché qualcuno nel mentre ha deciso che in uno dei tanti “reply all” maledetti era meglio togliere tutta la parte quotata rendendo di fatto incomprensibile una cosa già molto difficile da gestire.

Tra parentesi se siete dispersed il dettaglio che Slack possa essere visto come un “meeting that never ends” io lo trovo personalmente vantaggioso, posso finire la mia giornata, uscire dal meeting, svegliarmi la mattina dopo, rientrare e con poco sforzo (se lo strumento è usato bene) capire cosa è successo nel mentre e portarmi alla pari.

Questo ovviamente vale per Slack e tutti gli altri astri nascenti che fanno più o meno cose simili, io conosco Slack.

posted @ 13/04/2016 12.34 by Mauro Servienti

Lavoro da remoto - strumenti: Google Inbox / GMail

Il primo degli strumenti di cui ho parlato è Slack che sostanzialmente si configura come il centro del nostro mondo in particolare come accentratore di, quasi, tutta la comunicazione interna.

La comunicazione però, purtroppo, non è solo quella interna e questo fa si che sia quasi impossibile, almeno per figure come la mia, eliminare completamente l’uso della mail. Ho colleghi che, dato il tipo di lavoro che fanno principalmente, guardano la posta una volta alla settimana o meno.

Inbox Zero

Tutta la posta aziendale gira su Google Apps il che comporta che il client di posta sia GMail.

Una piccola parentesi personale: il mio account di posta personale gira su Office365, alla lunga devo con rammarico ammettere che l’esperienza GMail vince a mani basse, soprattutto se siete un “inbox zero addicted” come il sottoscritto.

Torniamo a noi, cosa finisce nella casella di posta? Fondamentalmente solo 3 cose:

  1. Tutta la comunicazione che coinvolge qualcuno che non è su Slack
  2. Gli inviti per i meeting/tutto ciò che in qualche modo riguarda il calendario
  3. Le notifiche, se non altro alcune, delle issue di GitHub (questa cosa è molto in dipendenza di come state usando GitHub, ne parleremo)

Se siete un paranoico di “Inbox Zero” tipicamente l’approccio che usate è quello di sfruttare la vostra “inbox” come to-do list, quello che sta nella inbox sono le cose che devo fare, quando è fatto “archive”; ci sono poi un po’ di extension/add-on per GMail che vi permettono di affinare ulteriormente questo modo di lavorare.

Io personalmente sono definitivamente migrato a Google Inbox, che è attiva sull’account aziendale lasciando libertà ad ognuno di usarla o meno. Inbox sta diventando ogni giorno di più il mio strumento di pianificazione preferito grazie all’approccio che già avevo con GMail corredato da alcune cose che prima erano un po’ ostiche perché non supportate:

  • Reminder: la possibilità quindi di usare la inbox come una vera e propria to-do list
  • Snooze: la possibilità di fare snooze di qualsiasi cosa, sia esso una mail o un reminder impostando una scadenza o un luogo o un time frame (ad esempio “pomeriggio”)
  • Snooze + Commenti: la possibilità di aggiungere commenti/note quando si imposta lo snooze per una mail in modo da appuntarsi cose che eventualmente devono essere fatte insieme
  • Pin: nulla di trascendentale, una cosa molto simile alla possibilità in GMail di mettere una stellina su un messaggio e poi di visualizzare solo quelli con la stellina, lo uso poco se voglio dare risalto a qualcosa
  • Bundle: anche questo lo uso veramente con il contagocce per ora, non è altro che una gestione delle label di GMail con una UX più evoluta per certi versi e più blindata per certi altri, non ho ancora capito se mi piace

Una delle cose vincenti, filosofia ormai adottata da quasi tutti è ovviamente l’esperienza unificata e consistente che si ha utilizzando Inbox via web oppure grazie alle app disponibili per i vari device, io uso sia quella per Android che per iOS.

posted @ 07/04/2016 10.00 by Mauro Servienti

Win 10 IoT Remote Display

Since the advent of Windows 10 IoT Core, I've always dreamed to see the video output of my Raspberry Pi 2 on my PC screen, as we do with Remote Desktop for VMs and remote servers. Finally, we can do it!

First, you need to follow the steps illustrated on my previous post to install the latest insider preview version of Windows IoT Core for Raspberry Pi 2 (it works also for RP3).

When you have done it, connect your RP to your WiFi router by Ethernet cable and open the web browser to this URL: http://<yourdevicename>:8080 , then go to the "Remote" page and select the "Enable Windows IoT Remote Server".

Once done, go to the Store and download the "Windows IoT Remote Display" app.

Now open your Visual Studio 2015 (don't forget to apply the brand new Update 2), create or open an UWP app and run it on the remote device.

Finally, run the Remote Display, and voilà, the Raspberry Pi 2 video will appear on your PC screen:

NOTE: Actually, I can't use my PC keyboard to write in the TextBox, I can do it only with the USB keyboard physically attached to the Raspberry Pi 2.

Enjoy and have fun!

posted @ 05/04/2016 0.07 by Nicolò Carandini

Ransomware, una possibile difesa: la paranoia

Prendo spunto da questo ottimo, come al solito, post di Paperino. Non mi è, ancora, capitato ma non posso certo partire dal presupposto che non mi capiterà e non posso di certo sperare che non capiti ad altri utenti che hanno accesso alla rete domestica, leggasi la moglie. È talmente facile incapparci che difendersi con la speranza pura o con la speranza che l’antivirus/antimalware faccia il suo lavoro è pressoché inutile.

Ora…diciamo che la macchina locale:

  1. è indifendibile, i documenti a cui devo accedere mi servono, punto;
  2. un presunto backup su OneDrive/Dropbox/Google Drive/etc. non serve a nulla, proprio perché non è un backup, la speranza è di accorgersi in tempo del danno e staccare il cavo di rete prima che la sincronizzazione abbia fatto danni;

diciamo anche che un NAS se usiamo le impostazioni predefinite è indifendibile anche lui.

Proteggere il NAS

Come spiega Paperino qui la soluzione è “facile”, basta e avanza disabilitare i permessi in scrittura a chiunque Smile, fine dei giochi, questo fa si che l’eventuale ransomware accedendo con le mie credenziali al NAS possa solo leggere.

Nel mio caso avere accesso solo read-only è un non problema, il 100% delle modifiche al contenuto del NAS avvengono già oggi dall’interfaccia web dello stesso.

Backup

La vera soluzione per i dati locali, o in generale i dati a cui abbiamo bisogno anche di accesso in scrittura, è un backup degno del suo nome, dove degno del suo nome significa come minimo:

  • tenere traccia di più versioni dello stesso file
  • avere un concetto di rentention

Un bonus aggiuntivo è che:

  • il backup sia off-site, ma lo scopo in questo caso è risolvere un altro problema

Abbiamo due possibili soluzioni, facili, per avere un backup ben fatto, sicuro e che ci protegga anche decentemente da un ransomware:

  1. Un servizio di terze parti come ad esempio CrashPlan (ce ne sono svariati), che ho avuto per più di due anni con discreta soddisfazione, dismesso fondamentalmente a causa della scarsissima banda in upload che mi ritrovo
  2. su Windows usare l’efficiente ed efficace FileHistory

Se usiamo FileHistory introduciamo un interessante problema, non possiamo usare come disco per salvare i backup un disco esterno collegato ad esempio via USB altrimenti quando il disco è collegato anche il ransomware avrebbe accesso al disco e potrebbe fare danni anche sui backup, una soluzione facile è combinare FileHistory e il NAS. Lo stesso identico problema purtroppo avviene con un NAS, se configuriamo FileHistory per fare backup sul Synology usando un account ad hoc che ha i permessi in scrittura solo sulla folder per il backup ci ritroviamo con una sessione aperta verso quella share, sessione usabile anche dal nostro utente interattivo. Quindi purtroppo FileHistory nonostante sia una buona soluzione di backup, semplice ed efficace per molti utenti non è una soluzione per proteggerci da un ransomware.

Abbiamo quindi bisogno di una soluzione che ci permetta di fare backup, dove al solito quello che cerchiamo è un vero backup, usando un approccio client/server che non si basi su una share di rete per salvare i dati.

CrashPlan

CrashPlan in questo caso si rivela essere un’interessante soluzione, possiamo installare CrashPlan sul Synology (anche se è un’operazione tutto tranne che facile) e usare quindi il Synology come server per i backup. La parte rognosa è configurare il client di CrashPlan per collegarsi al server headless in esecuzione sul NAS al fine di configurarlo, almeno la prima volta, ed eventualmente monitorarne il funzionamento. Il mio consiglio è di avere una macchina dedicata (anche una VM) a fare da admin client per la parte server, ad esempio nel mio caso ho configurato il client sul portatile per fare da amministratore della parte server.

image

Dopo aver installato CrashPlan anche sulla macchina/e da backuppare è sufficiente configurare il backup per essere eseguito dal client verso il NAS.

posted @ 04/04/2016 12.54 by Mauro Servienti

Maintainers Groups

Il commento di Felice introduce un nuovo argomento: Maintainers Groups

image

 

immagino che il “tipo” di manager a cui ti riferisci sia quello che conosciamo nell’accezione tradizionale, in cui il PM si siede dietro la scrivania, crea il Gantt, se ne frega di cosa accade nel delivery e promette la “luna”.

Si esatto, il manager a cui mi riferisco è quello nell’accezione tradizionale, quella negativa per capirci :-)

Secondo me il problema non è “il manager”, poiché esisterà sempre qualcuno che dovrà “gestire” gli aspetti non tecnici legati alla realizzazione di un Prodotto (o, nella sua totalità, di una Soluzione), ma come il “manager” sia coinvolto in tale realizzazione.
Il contesto a me caro dell’Agile (e se scaliamo, di DevOps e poi Lean), enfatizza come il manager sia un “servant manager” (ok, chiamiamolo anche Product Owner ;-) al servizio del team e della “soluzione” in generale. “Mentore” è una definizione che può forviare perché fa pensare a qualcuno che “guida/insegna” quando la relazione deve essere alla pari e di apprendimento reciproco.

Ameno, condivido su tutta la linea. Abbiamo il concetto di mentore, che come dice giustamente Felice ha poco da spartire con manager e/o PO (ne parleremo)

Anche se non etichettato direttamente come “manager”, in realtà, come implicitamente evidenzi, si avrà sempre qualcuno che dovrà coprire tale attività altrimenti sarebbe il caos: basti solo pensare alle relazioni con i clienti o con le altre funzioni non tecniche dell’azienda.

In realtà non ne abbiamo proprio, diciamo che abbiamo una task force che maneggia questi aspetti, anche di questo ne parleremo.

Il PO è coinvolto attivamente nella realizzazione e il suo obiettivo è massimizzare quanto realizzato agli occhi del cliente e non massimizzare il risultato in termini assoluti, lasciando al team la libertà e responsabilità di auto-organizzarsi nel modo migliore per raggiungere il risultato, proprio come da te evidenziato
Il “servant manager” è fondamentale nella definizione degli assoluti che hai citato: “massimizzare”, “ottimo”, “perfetto” tutto questo dovrebbe essere sempre declinato in funzione del Valore creato, che, alla fine, è comunque quello percepito dal cliente finale. Ok, è importante anche quanto “impariamo e miglioriamo” ma questo non è un discorso afferente al business.

Maintainers Groups

Come dice Felice il Product Owner è una figura essenziale, per come siamo organizzati noi un PO è una figura molto difficile da creare, il problema principale è la distribuzione delle persone intorno al globo, se creassimo un PO avremmo l’inghippo che quel PO è disponibile solo 8 al giorno mentre i team lavorano h24 complicando di molto le cose.

Avremmo inoltre il problema di concentrare la conoscenza in una singola risorsa, e sappiamo molto bene che in un sistema distribuito il concetto di “single point of failure” è proprio quello che vogliamo evitare.

Stiamo quindi introducendo il concetto di Maintainers Group (MG), un MG è un gruppo di persone, minimo 3, distribuite nelle macro time zone (America, Europa, Australia) che agisce come se fosse un PO disponibile h24.

In realtà un MG ha un ruolo un po’ più ampio rispetto a quello di un PO nella sua accezione tradizione in SCRUM, un MG ha (per ora) i seguenti compiti:

  • gestione del prodotto/progetto (a seconda del contesto)
  • amministrazione del/dei repository di competenza
  • triage
  • prioritizzazione
  • sincronizzazione con gli altri MG per garantire che si vada tutti nella stessa direzione, o almeno ci si provi
  • weekly housekeeping, che comprende
    • assicurarsi che quello che è in progress sia attivamente lavorato
    • manutenzione delle release
    • manutenzione delle build
    • pianificazione nel breve periodo
    • brainstorming sul lungo periodo

I MG al momento so work in progress e stiamo costruendo questo concetto giorno dopo giorno mano a mano che scopriamo cosa realmente vogliamo ottenere e quali sono i problemi che vogliamo risolvere.

posted @ 31/03/2016 13.33 by Mauro Servienti

Notifiche e time zone

Continuo la mia carrellata su come e perché lavoriamo in certo modo in Particular Software.

Ho già accennato al problema notifiche sottolineando come il mio principale problema sia lo stress e l’incapacità altrui di rispettare certi limiti:

image

Il problema però non si limita al sottoscritto che effettivamente è già di suo un discreto spaccam*roni e più invecchia più peggiora…

Immaginate di lavorare per un’azienda in cui avete:

  • colleghi sparsi su 17 time zone
  • colleghi che vivono e lavorano in Israele dove
    • Il weekend è venerdì e sabato (quindi lavorano di domenica)
    • Le festività a cui siamo abituati noi non esistono (Natale è un giorno come un altro)
  • colleghi ortodossi per cui alcune delle festività esistono si ma in date diverse

Questo sostanzialmente significa che in qualsiasi momento delle 24 ore qualcuno sta lavorando, sempre ogni giorno dell’anno. C’è una breve pausa il sabato pomeriggio, quando per gli americani della costa ovest è venerdì sera e gli israeliani non hanno ancora finito il weekend; per il resto è veramente 24x7.

In uno scenario come quello appena descritto attivate le notifiche sul telefono, o sul tablet…e buon riposo. In quella che per voi è notte fonda succede di tutto, veramente di tutto, anche di domenica e anche il giorno di Natale.

posted @ 28/03/2016 10.33 by Mauro Servienti

Nuovo release Pasquale di Visual Studio Team Services

Il 24 Marzo è stato rilasciato il nuovo update di Visual Studio Team Service, e come sempre potete trovare tutte le novità direttamente nel sito di VSTS. Molte delle novità riguardano Git, ed una delle più interessanti è che Git For Windows, nella versione 2.7.4 e successive, installa di base il Windows Credential Helper, cosi da permettere di usare Git su VSTS senza la necessità di Personal Access Token o credenziali alternative.

Per quanto riguarda la personalizzazione dei Work Item, è ora possibile aggiungere campi di tipo Multiline, di base più che multiline questi campi sono veri e propri editor di testo con immagini, formattazione e quant’altro. Sempre sul fronte dei Work Item è ora possibile dalla Kanban Board interagire con la parte di Testing, andando ad eseguire i Test associati al Work Item, oppure iniziare una sessione di Exploratory testing.

Test options from your card

Le possibilità sono molteplici, si può aggiungere ed aprire test direttamente dalla board, ma si può anche spostare un test da una User Story ad un altra e velocemente marcare il test come fallito, bloccato, etc.

A queste modifiche se ne aggiungono altre minori, che potete leggere direttamente sul sito di Visual Studio Team Services.

Buona Pasqua.

Gian Maria.

posted @ 26/03/2016 11.42 by Gian Maria Ricci

Visual Studio Code ora si connette a VSTS

E’ da poco disponibile per Visual Studio Code una estensione che vi permette di connettervi al vostro Visual Studio Team Services Account. Trovate tutti i dettagli a questo indirizzo, dove viene spiegato come installare l’estensione cosi come i comandi che sono disponibili.

L’aspetto molto interessante è che l’estensione è disponibile anche come codice sorgente direttamente in GitHub, e costituisce quindi un interessante esempio di come realizzare estensioni per Visual Studio Code.

I comandi e le opzioni disponibili non sono tantissimi, e chiaramente per editare i Work Item viene aperta direttamente la pagina del browser, ma è comunque una estensione interessante anche perché vi permette di tenere sotto controllo le pull-request ed il risultato delle build.

Questa estensione non porta comunque il supporto al source control nativo di TFS (TFSVC), per il quale è possibile provare ad utilizzare una estensione open source che trovate a questo indirizzo.

Happy VSTS  e Buona Pasqua.

Gian Maria.

posted @ 26/03/2016 11.33 by Gian Maria Ricci

SOA service model decomposition: un tentativo

Siamo partiti da questa immagine:

image_thumb2

Partendo dall’assioma che rappresenti un requisito espresso da uno stakeholder non tecnico, ad esempio un product owner o una porzione dell’information flow frutto di una analisi di user experience.

Kudos a Luca che accoglie la sfida e ci prova:

image

Io direi un ViewModel principale (che so ProductsViewModel) ed una serie di template in base a diversi fattori : origine dei dati, prospettive di evoluzione della UX, necessità di rendering, etc...

È sbagliato? non necessariamente, è giusto? non necessariamente :-) dipende? non direi, diciamo che c’è una risposta giusta e poi tutta una serie di compromessi. I compromessi in se non sono di certo il male, l’importante è sapere dove si è fatta una scelta che deve essere etichettata come un compromesso in modo da sapere che li potremmo avere un problema in futuro.

Modello mentale

Proviamo ad immaginare un modello basato su un ViewModel, il ProductsViewModel di Luca ad esempio, e calarlo in una azienda reale, Acme S.r.l.. Qualcuno in Acme è responsabile per la gestione prodotti, ha cioè la ownership di quel concetto, se già fossero più persone da dipartimenti diversi abbiamo un problema perché stiamo violando uno dei principi fondamentali dei Bounded Context.

In Acme c’è quindi un ufficio sulla cui porta c’è scritto “gestione prodotti”, arriva l’omino del magazzino e dice:

guarda che il prodotto 123 non è più disponibile, quindi non lo possiamo più vendere

A questo punto l’omino della gestione prodotti va dall’omino della gestione contratti e gli dice:

mi ha detto “magazzino” che il prodotto 123 non è più disponibile quindi tutti gli ordini che hai in corso sono da annullare

Nel frattempo fuori dalla porta di “gestione prodotti” si è formata la coda, c’è “marketing” che:

vuole cambiare la descrizione di un prodotto attualmente in vendita ma lo vuole fare da settimana prossima, martedì alle 13, e lo vuole solo per la parte in inglese

C’è anche “vendite” che

vuole attivare una nuova promozione per tutti i prodotti della categoria XYZ venduti insieme al prodotto 456 se comperati da qualcuno in provincia di Milano, ovviamente la promozione è valida solo per ordini sopra una certa cifra fatti un determinato periodo

Infine c’è “ricerca e sviluppo” che

vuole mettere in vendita un prodotto che non esiste a magazzino per testare, tramite le statistiche, se è interessante o meno per il navigatore del sito

“gestione prodotti”, dopo aver ascoltato tutti, si alza e si licenzia :-)

Troppe responsabilità

Può funzionare? certo che può, ma ve la immaginate una classe Prodotto che gestisce tutte quelle casistiche e tutte le altre che vi possono venire in mente in uno scenario reale?

posted @ 23/03/2016 13.45 by Mauro Servienti

On working in Particular

Il mio nuovo lavoro, ma soprattutto alcuni dettagli logistici, mi sta facendo scoprire e/o approfondire tutta una serie di tematiche che prima erano o marginali o poco rilevanti, nei prossimi mesi ne scriverò in maniera più o meno approfondita.

A grandi linee quello che vorrei affrontare come tematiche sono:

Se avete cose in particolare che vi piacerebbe scoprire o se uno User Group volesse costruirci intorno qualcosa i commenti sono li per quello ;-)

posted @ 23/03/2016 9.07 by Mauro Servienti

On working in Particular

Il mio nuovo lavoro, ma soprattutto alcuni dettagli logistici, mi sta facendo scoprire e/o approfondire tutta una serie di tematiche che prima erano o marginali o poco rilevanti, nei prossimi mesi ne scriverò in maniera più o meno approfondita.

A grandi linee quello che vorrei affrontare come tematiche sono:

Se avete cose in particolare che vi piacerebbe scoprire o se uno User Group volesse costruirci intorno qualcosa i commenti sono li per quello ;-)

posted @ 23/03/2016 9.06 by Mauro Servienti

DotNetLiguria: Workshop 1 Anno 2016

Workshop 1 Anno 2016 - Introduzione a DotNetCore, Microservice e ServiceFabric, una gran soddisfazione non c’è che dire.

L’esempio che abbiamo visto girare durante la mia sessione è il 14esimo:

image

Il sistema più semplice per averlo up & running è installare i tool della Particular Platform, l’esempio usa dietro le quinte NServiceBus, scegliendo di configurare come minimo NServiceBus e ServiceControl:

image

Questo fa si che tutte le code necessarie al funzionamento degli esempi siano create a correttamente configurate. Il file markdown relativo alle saghe contiene poi ulteriori dettagli sul setup. Se qualcosa non funzionasse come si deve lasciate un commento.

Grazie a tutti per la partecipazione.

posted @ 21/03/2016 13.00 by Mauro Servienti

Lavoro da remoto - strumenti: Slack

Continuo le mie dissertazioni, sempre alla rinfusa perché non ho nessuna voglia di impegnarmi in una serie di post, relative al lavoro da remoto per un’azienda dispersed. Abbiamo parlato di processo di assunzione, adesso permettetemi di saltare ad un argomento completamente diverso parlando di uno degli strumenti che usiamo quotidianamente per gran parte della comunicazione.

Ammetto che prima di parlare di strumenti dovrei parlare di processo e spiegarvi che cosa sono Squad,  Guild, TaskForce, Maintainers Groups, etc. etc. ma questo post è in bozza da troppo tempo, inoltre Emanuele Bertolesi che desiderava sapere come usiamo alcuni strumenti, aspetta da troppo tempo.

Slack

Nel momento in cui scrivo abbiamo 129 canali attivi e un bel po’ di canali archiviati, i canali archiviati sono spesso conseguenza del lavoro quotidiano delle Task Force, ne parleremo nel capitolo organizzazione interna.

Diciamo che Slack, come qualsiasi altro strumento di comunicazione stile chat, all’aumentare delle persone in un canale tende a rendere la conversazione ingestibile e come nella vita quotidiana si formerebbero dei sotto gruppi di persone in Slack ha molto senso creare canali tematici, tutti quelli che vi servono.

Date un nome sensato ai canali, in modo da renderli facilmente identificabili, inoltre impostate sempre l’argomento del canale in modo da aiutare i partecipanti a rispettare l’argomento e a non divagare.

image

Tenetevi un canale per la fuffa, ad esempio #general, sarà il caos ma li potete lasciar andare qualsiasi conversazione

Notifiche

Per come funzioniamo noi sono da disabilitare, punto. In generale evitate di pingare tutti usando @channel, l’effetto che producete è solo di annoiare un sacco di gente a cui non interessa quello che state dicendo o magari un sacco di gente che è offline. Piuttosto usate @here che si limita a notificare i partecipanti al canale che sono online in quel momento.

Se vi ritrovate spesso a dover notificare gruppi di persone create gruppi, anche in questo caso per area o tipologia di lavoro o argomento. Noi ad esempio abbiamo gruppi per macro time-zone come @america o per ruolo come @prodotto-xyz-owners.

Slack vs. e-mail

Internamente tutta la comunicazione è stata spostata dalla mail a Slack, e per uno come me che è un fan di Inbox Zero è una manna dal cielo. Uno dei motivi che ci hanno spinto a farlo è che la comunicazione via mail è esclusiva mentre un canale su Slack è inclusivo. Quello che succede in una comunicazione via mail tra un gruppo di persone è che è estremamente difficile aggiungere un nuovo partecipante e la storia è nascosta, che equivale a dire persa, nelle inbox dei vari partecipanti: in un’azienda dispersed è un disastro.

In un canale su Slack chiunque può seguire una conversazione ed eventualmente contribuire. Ovviamente questo prevede che la trasparenza sia alla base della vostra struttura aziendale, se non lo fosse fatevi delle domande. In questa direzione evitate come la peste i canali privati su Slack e le comunicazioni 1-a-1, sono come la mail esclusive.

Canali “temporanei”

Ne parleremo di più quando parleremo di Task Force ma in generale non riutilizzate un canale per un argomento diverso, diciamo che avete un gruppo di persone che sta lavorando insieme ad un progetto, progetto che ha un inizio ed una fine, bene create un canale di Slack per quel progetto e archiviatelo quando il progetto si conclude. Semplice ed efficace.

Post vs. Chat

Slack ha un discreto, ma limitato, supporto per markdown nelle chat e un completo supporto per markdown nei post, un altro vantaggio dei post, il vero vantaggio dei post è che hanno un thread di commenti separato quindi è molto più facile gestire in un canale conversazioni parallele.

Centro di controllo

Infine una delle cose estremamente potenti di Slack, e anche di altri tool simili, sono le integrazioni. Slack si integra praticamente con qualsiasi cosa tramite una cosa chiamata bot, in soldoni dei pezzi di software che si presentano come degli utenti, utenti con i quali è possibile interagire. Ovviamente potete crearvi i vostri bot, noi ne abbiamo uno chiamato PBot che usiamo per automatizzare tutto l’automatizzabile.

image

Nello screenshot qui sopra PBot in azione mentre mi elenca tutte le issue su GitHub in cui sono membro della TaskForce.

posted @ 15/03/2016 12.40 by Mauro Servienti

Accorrete gente, accorrete

Workshop 1 Anno 2016 - Introduzione a DotNetCore, Microservice e ServiceFabric

Per la serie come potete mancare ad un evento del genere?

DotNetLiguria organizza questa serata per (s)parlare di DotNetCore, Microservice, SOA, DDD, ServiceFabric e Docker.

Ci si vede li?

posted @ 10/03/2016 10.38 by Mauro Servienti

“No managers”

Mettiamo subito in chiaro una cosa non avere manager non significa ne avere un’organizzazione piatta ne tanto meno vivere nell’anarchia, significa principalmente rimuovere la classica organizzazione piramidale.

Diciamo che ci sono due motivi che ci hanno spinto a rimuovere i manager e cercare un nuovo tipo di organizzazione:

  • La nostra struttura aziendale non favorisce per nulla la presenza della figura in questione
  • Un manager tipicamente è focalizzato sul risultato e non sul percorso che ha portato a quel risultato e questo è il male

Mi focalizzo sul secondo punto perché credo il primo sia ovvio, nel caso non lo fosse lasciate un commento.

In una struttura tradizionale un manager è focalizzato sul risultato, il suo obiettivo è massimizzare il risultato. Questo introduce un fattore che non deve entrare in un processo: la fortuna. Può succedere che il risultato sia ottimo per pura fortuna, il processo messo in atto per raggiungere quel risultato pietoso ma la fortuna ha fatto si che le cose siano andate bene; allo stesso modo può succedere che il processo sia stato perfetto ma le concomitanze, chiamatele se volete sfortuna, fanno si che il risultato non sia ottimale.

Se un manager si concentra sul risultato nello scenario di cui sopra premierà la cosa sbagliata.

Abbiamo deciso che la fortuna non deve essere parte del nostro processo valutativo, quello su cui ci dobbiamo concentrare è fare sempre tutto al meglio, quindi ci dobbiamo concentrare sul processo al fine di ridurre all’osso l’influenza di fattori esterni, se poi le cose andranno male non avremo nulla da recriminare.

In questo contesto un manager, nella sua accezione tradizionale, non serve. Se un manager si concentra sul processo e non sul risultato per definizione non è un manager ma un mentore. Un’altra storia :-)

posted @ 09/03/2016 13.22 by Mauro Servienti

Latest Images

From miscellaneous
From miscellaneous
From miscellaneous
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