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, look for the Aggregate skin folder in the Skins directory.

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

Powered By:
Powered by Subtext

Blog Stats

  • Blogs - 714
  • Posts - 31389
  • Articles - 310
  • Comments - 94732
  • Trackbacks - 228571

Bloggers (posts, last update)

Latest Posts

Quando il software scritto male ti fa perdere clienti: Vitaminstore

Faccio sport, faccio uso di integratori vari e siccome sono allergico ad un paio di cose comperarli online non è mai semplice perché ad esempio su Amazon il dettaglio degli ingredienti è spesso assente. E per un allergico questo è un problema non da poco.

Vitaminstore dal canto suo invece ha un buon modello di ricerca che vi permette di filtrare, ad esempio, per tipologia di alimentazione. Nel mio caso scegliendo la categoria per vegani sono certo di eliminare tutti gli allergeni problematici per me.

Quindi?

Armato di pazienza, perché il sito Vitaminstore è tutto tranne che un fulmine, faccio la mia bella ricerca, aggiungo al carrello, faccio il checkout, pago, e poi attendo fiducioso. Mi arriva la mail di conferma d’ordine e poi il silenzio più assoluto. Dalla mail di conferma d’ordine mi ero quasi dimenticato della cosa, partivo dal presupposto “arriverà”. Oggi mi sono ricordato che l'ordine non si era ancora visto, torno quindi sul sito Vitaminstore per scoprire quanto segue:

image

Il mio ordine quindi non è andato da nessuna parte, quel “tentativo di pagamento” non ho idea di cosa significhi. Sta di fatto che secondo PayPal la transazione è andata a buon fine:

image

Quindi il problema sembra essere lato Vitaminstore.

Ora, mi chiedo io… è possibile che dopo una settimana dall’inoltro di un ordine nessuno del supporto Vitaminstore si sia accorto che quell’ordine è incastrato in qualche modo? Lungi da me il pensare che sia voluta, piuttosto sono quasi convinto che il software usato sia talmente scritto con i piedi che non contempli uno scenario del genere e quindi non si ponga il problema di notificare che un ordine è “stale” da una settimana.

Concludendo

La conseguenza di tutto ciò è che se mai userò ancora Vitaminstore sarà solo ed esclusivamente per la ricerca, poi prendo il prodotto che mi interessa e lo compero su Amazon.

Quanto ci vuole perché questi sedicenti imprenditori capiscano che il software è una componente importante del loro business e non solo una rogna da gestire?

Certo, se scegli schifezze aspettati rogne.

posted @ 6/21/2017 2:22 PM by Mauro Servienti

Alcune risorse sul public speaking

Durante i corsi e le sessioni li cito spesso, ho deciso di raccogliere un po’ di link a futura memoria!

Ogni tanto aggiornerò questo post e lo riposterò sui social… stay tuned!

posted @ 6/20/2017 2:24 PM by Lorenzo Barbieri

La coesione cambia, l’accoppiamento resta

Abbiamo parlato di coesione e accoppiamento e della distinzione tra processi e servizi, ma soprattutto di quando l’accoppiamento sia problematico. Una cosa importante da sottolineare quando si affronta il discorso coesione e processi è che la coesione cambia mentre il processo evolve.

Una macchina a stati

Se pensiamo ad un processo come ad una macchina a stati, in ogni stato del processo ci possono essere coinvolti uno o più servizi, coesi tra loro da quello specifico stato, ma non necessariamente nello stato successivo. Se non stiamo attenti e scivoliamo da coesione verso accoppiamento a questo punto ci ritroviamo che i servizi coinvolti in un processo sono per forza anche inutilmente coesi, proprio perché accoppiati, a prescindere dallo stato del processo stesso.

Siccome l’accoppiamento è per sempre è bene lavorare per ridurlo al minimo indispensabile, ricordandoci che accoppiamento zero è impossibile. La strategia per ridurre all’osso l’accoppiamento tra le parti è identificare i service boundary seguendo la coesione che è una buona linea guida.

posted @ 6/19/2017 10:44 AM by Mauro Servienti

FaunaDb

https://fauna.com

Adaptive operational database from the team that scaled Twitter

posted @ 6/15/2017 4:57 PM by Alessandro Gervasoni

Chance.js



Chance is a minimalist generator of random strings, numbers, etc. to help reduce some monotony particularly while writing automated tests or anywhere else you need anything random.

link

posted @ 6/14/2017 3:32 PM by Alessandro Gervasoni

Stand up worker: balance pad

Ho avuto più di una occasione per menzionare che sono uno stand-up worker, tutti i giorni, tutto il giorno.

Mai scelta fu più felice

Una delle cose che hanno contribuito a rendere la giornata migliore è un dettaglio che spesso quando siamo costretti a stare in piedi tralasciamo: il modo in cui stiamo in piedi. Stare in piedi fermi per 8 ore è semplicemente deleterio, se poi lo facciamo a piedi nudi è un disastro su tutti i fronti, perché non siamo più fatti per stare a piedi nudi.

Su consiglio dell’osteopata il primo approccio è stato usare un gradino, usavo la scaletta IKEA, su cui alternare le gambe. L’operazione se lavorate in piedi è totalmente naturale e dopo un po’ la fate senza minimamente pensarci. Il risultato è che non siete mai fermi con la conseguenza che schiena e articolazioni delle gambe ne traggono solo benefici.

Una volta compreso che quello era un approccio funzionante, su consiglio del mio collega Daniel, mi sono comperato una cosa che è pensata anche per “impedirci” di stare fermi: un balance pad.

37488f1eb4e8b5c85600d3e406e20fef

È una sorta di materassino in un materiale tipo Memory che assorbe molto bene il peso, non “rimbalza” come farebbe ad esempio la gommapiuma, ma allo stesso tempo impedisce di stare fermi forzando dei costanti micro-movimenti. Costoso, ma perfetto.

Per approfondire

posted @ 6/14/2017 1:21 PM by Mauro Servienti

Autorest



Swagger (OpenAPI) Specification code generator featuring C# and Razor templates. Supports C#, Java, Node.js, TypeScript, Python and Ruby.


https://github.com/Azure/autorest

posted @ 6/13/2017 5:14 PM by Alessandro Gervasoni

Services Composition: ViewModel Composition - Take 2

Dopo aver introdotto ViewModel Composition e prima di parlare di UI Composition, lasciatemi approfondire un attimo la parte di composizione perché è propedeutica a quando inizieremo a parlare di scritture. La volta precedente ci siamo lasciati qui:

image

Dicendo che ViewModel Composition è il risultato del lavoro prodotto da IT/Ops nell’orchestrare il dialogo tra client e servizi.

OK, ma come?

Quello che succede può schematizzato nel seguente modo

image

Tutto inizia con il client interessato ad una risorsa che possiamo identificare con un URL, come ad esempio “/orders/1” dove 1 nel diagramma di cui sopra potrebbe essere visto come la PK (potrebbe perché è un discorso molto ampio che esula da questa serie di post).

L’URL in questione non viene gestito direttamente da uno, o più, dei servizi di backend ma viene preso in carico dal IT/Ops Composition Engine, che nel diagramma opera in modalità reverse proxy (o API Gateway).

Il Composition Engine ospita, come si evince dal digramma i componenti deployati da ogni servizio di backend, immaginiamoci classi che implementano un’interfaccia “IRequestHandler” che il Composition Engine carica via Inversion of Control.

Ogni Request Handler può fare due cose:

  • esprimere interesse o meno per una determinata richiesta
  • intercettare, se interessato, una richiesta

Il Composition Engine a questo punto itera su tutti i Request Handler interessati ad una specifica richiesta (li può anche cachare) e li invoca passando loro un ViewModel (ad esempio dynamic) da poter riempire.

I Request Handler possono a questo punto dato l’URL di partenza invocare i loro rispettivi servizi di backend e comporre il vie model che verrà poi ritornato al client.

Come dicevo un esempio di tutto il giro completo è disponibile qui: https://github.com/mauroservienti/ddd-sw-2017

Post in questa serie:

posted @ 6/12/2017 12:01 PM by Mauro Servienti

Azure Hands-On giovedi 15 giugno a Milano

imageGiovedì prossimo nel pomeriggio a Milano ci sarà il corso Azure Hands-On organizzato da UgiDotNet con me e il grande Massimo Bonanni come trainer. Dopo una brevissima introduzione teorica si passerà alla parte pratica, dove ognuno col proprio portatile effettuerà il deploy di una soluzione ASP.NET core o Node.js e la estenderà con una serie di servizi PaaS (Platform as a Service).

Il tutto guidati da una guida passo passo (che permetterà anche di rivedere gli esercizi successivamente), con il supporto mio e di Massimo.

A seconda degli esercizi scelti si potranno provare alcuni dei seguenti servizi:

  • Azure App Services
  • Azure VM (Linux o Windows)
  • Azure networking isolation
  • API Management
  • Azure functions
  • Azure logic apps
  • Azure Resource Manager
  • Azure Active Directory

Il tutto sul proprio portatile e sulla propria sottoscrizione, per poter continuare poi successivamente le sperimentazioni.

Vi aspettiamo, potete iscrivervi qui.

posted @ 6/9/2017 4:41 PM by Lorenzo Barbieri

Altro interessantissimo evento con i ragazzi di @klabcommunity a Fiorenzuola d’Arda

Ieri sera ho avuto il piacere di partecipare all’ennesimo K-Lab organizzato dai ragazzi di K-Lab Community. Come al solito l’evento è stato ottimo, non che ne avessi dubbi. Stavolta c’era anche il bresciano, Alessandro Melchiori. Insieme ad Andrea Ceroni hanno parlato di Actor Model e di AKKA.Net. Ho imparato qualcosa di nuovo anche stavolta, quindi meglio non poteva andare.

Se ricordo bene il prossimo appuntamento sarà a Luglio con un Lean Coffee, o qualcosa di simile in stile unconference. Ci sarò.

posted @ 6/9/2017 4:12 PM by Mauro Servienti

FluentManager

Fluent Migrator is a migration framework for .NET much like Ruby on Rails Migrations. Migrations are a structured way to alter your database schema and are an alternative to creating lots of sql scripts that have to be run manually by every developer involved. Migrations solve the problem of evolving a database schema for multiple databases (for example, the developer's local database, the test database and the production database). Database schema changes are described in classes written in C# that can be checked into a version control system.
https://github.com/fluentmigrator/fluentmigrator

posted @ 6/8/2017 12:50 PM by Alessandro Gervasoni

Coesione e accoppiamento: Servizi e Processi

Quando cerchiamo di districarci nei meandri della coesione e dell’accoppiamento una delle cose che rischiano di fregarci è un’analisi frettolosa e superficiale di alcuni problemi che sembrano noti e facili a priori. Uno di questi è il non porre attenzione alla distinzione tra servizi e processi. Usiamo un esempio per meglio comprendere.

Shipping è un servizio?

Probabilmente no, molto probabilmente Shipping è un processo all’interno di un servizio, o contesto, più ampio, che è quello del magazzino. Ovvio anche che lo scenario è fondamentale, il mondo della logistica modella in maniera radicalmente diversa da quello degli alimentari, eppure entrambi spediscono.

Tornando al nostro esempio, se Shipping è un processo all’interno di un servizio le “leggi” che regolano l’accoppiamento e la coesione cambiano perché è lecito aspettarsi che i cambiamenti impattino tutto il contesto del magazzino, e di conseguenza anche le spedizioni.

Il processo di scoperta dei service boundaries è lungo, tortuoso e complesso, ma fondamentale. Se non fatto, o fatto male, porta inevitabilmente ad un risultato zoppo, a prescindere dalla qualità del codice che possiamo scrivere.

posted @ 6/7/2017 10:09 AM by Mauro Servienti

mongodbmanager

MongoDB GUI tool with intelligent Shell for you.


https://www.mongodbmanager.com

posted @ 6/6/2017 11:01 AM by Alessandro Gervasoni

Services Composition: ViewModel Composition

Fino a questo momento non abbiamo fatto distinzioni tra ViewModel Composition e UI Composition, diciamo che in maniera generica abbiamo trattato di Services Composition.

Abbiamo sempre usato un diagramma tipo il seguente senza mai addentrarci nei meandri di cosa succede nel client, a livello di UI.

image

Diventa abbastanza ovvio che ci addentriamo nei meandri dello stack tecnologico, cosa che sappiamo non mi interessa, e che quindi per ora non farò. I concetti però sono la prima cosa che dobbiamo digerire.

IT/Ops

Nel mondo servizi/SOA si tende a etichettare con IT/Ops tutto ciò che è infrastruttura a supporto del business ove un vero e proprio servizio che ne sia proprietario non si riesce ad identificare, spesso perché proprio non c’è. IT/Ops è la parte che si occupa fisicamente del recupero delle informazioni dai vari servizi e della composizione. Il risultato del processo gestito da IT/Ops è la composizione del ViewModel, quindi il diagramma precedente diventa il seguente:

image

Fino a questo punto stiamo facendo ViewModel Composition, il client quindi consuma un ViewModel composto da più servizi che sono totalmente trasparenti al client stesso. Una delle tecniche di composizione di cui abbiamo parlato è quella del proxy, e sul mio account GitHub è disponibile un esempio di Composition Reverse Proxy scritto per .NET Core.

Branding

Nulla vieta a questo punto che la UI sia monolitica, su un device avrebbe molto senso ad esempio. In generale ci sono tante realtà in cui la componente User eXperience è fondamentale, in realtà di questo genere il controllo sulla UI è maniacale. Vengono ad esempio fatti fior di studi sul posizionamento degli elementi e sull’effetto che questo ha sugli utenti. In scenari di questo genere la UI è di proprietà di un servizio, servizio che in gergo si chiama Branding. Branding si occupa di dare il via all’implementazione dei requisiti di business attraverso tutto il processo di Information Architecture e gli studi di User eXperience. In scenari di questo genere la UI è a sua volta monolitica e consuma un ViewModel composto a runtime.

Quando la UI non è monolitica si comincia a parlare di UI Composition, argomento di un prossimo post.

Post in questa serie:

posted @ 6/5/2017 1:01 PM by Mauro Servienti

La fretta genera l’errore in ogni cosa (Erodoto)

Il cambiamento richiede tempo e pazienza.

Felice in L’ossimoro implicito dell’ortodossia innaturale nel cambiamento stagnante, interessante articolo sul cambiamento (anche se dal titolo un po’ “antani, prematurata” :P ) sottolinea una cosa molto importante. Un’organizzazione non può pensare di cambiare nello spazio di un week-end. È semplicemente un fallimento garantito, uno spreco di energie e un forte fattore demotivante.

Sembra un’ovvietà, ma come tutte le ovvietà viene ignorata e mi ritrovo a vedere organizzazioni che provano a cambiare alla carlona, senza la benché minima idea di quello che stanno per affrontare e di che impatto avrà. Mi sono reso conto di quanto il cambiamento sia lungo e tortuoso quando settimana scorsa a SoCraTes Italy parlando di tutto il processo che stiamo facendo in Particular, mi è stato fatto notare che noi ci abbiamo messo quasi 3 anni (minchia 3 anni <cit.>) per arrivare dove siamo ora. Se inoltre consideriamo che “ora” è una situazione abbastanza stabile ma che sappiamo essere comunque in costante evoluzione da il metro di misura su cosa voglia dire cambiare un’organizzazione.

State lontani dalla fretta, cattiva consigliera.

posted @ 6/2/2017 8:01 AM by Mauro Servienti

cockroachlabs

https://www.cockroachlabs.com

CockroachDB is a cloud-native SQL database for building global, scalable cloud services that survive disasters

posted @ 6/1/2017 5:40 PM by Alessandro Gervasoni

Marko



a friendly (and fast!) UI library that makes building web apps fun
http://markojs.com

posted @ 5/31/2017 3:29 PM by Alessandro Gervasoni

Marketing Business Summit 2&deg; Edizione Milano

Marketing Business Summit: il 23 e 24 novembre 2017 torna la 2° edizione con tante novità!

Sfondo-eventribe

Le date da segnare in agenda sono giovedì 23 e venerdì 24 novembre 2017: a Milano, presso il prestigioso Hotel Melià, torna il Marketing Business Summit, l’evento su Web Marketing, Marketing Strategico e Business Online → www.mbsummit.it

A differenza della prima edizione, che è stato un vero successo con oltre 20 relatori, 12 sponsor e 360 partecipanti, questa seconda edizione vuole puntare ancora più in alto e introdurre importanti novità:

1. Relatori internazionali

2. Non solo marketing online, ma anche speech sul business online (come il customer care)

3. Focus sulla SEO

4. Biglietto con o senza pranzo

5. Location prestigiosa, facilmente raggiungibile sia in auto che con i mezzi pubblici

Il Marketing Business Summit è sicuramente uno degli eventi da non perdere: partecipa a prezzo scontato! → LINK

COSA: Marketing Business Summit #MBSummit

QUANDO: 23 e 24 novembre 2017

DOVE: Milano, Hotel Melià

TEMATICHE: SEO, Social Media Marketing, Content Marketingm,Web Copywriting,e-Commerce, Growth Hacking,ADV, Affiliate Marketing e Business online

PERCHÉ:

· 2 giornate di alta formazione

· oltre 20 speaker

· relatori internazionali

· non solo web, ma anche business online

· opportunità di networking con relatori, sponsor, organizzatori e altri partecipanti

Iscriviti ORA, risparmiando, al Marketing Business Summit

Ultimi posti disponibili in Early Booking

posted @ 5/31/2017 2:12 PM by Marco Maltraversi

RawRabbit

A modern .NET framework for communication over RabbitMq
https://github.com/pardahlman/RawRabbit

posted @ 5/31/2017 1:06 PM by Alessandro Gervasoni

Services UI Composition: un esempio

Abbiamo parlato a lungo su questo blog di Services UI Composition, in calce a questo post il dettaglio delle “puntate”.

Ad inizio maggio a Bristol ho avuto il piacere di parlare proprio di questo argomento presentando il lavoro (lungo) fatto per passare da una primissima ed embrionale versione ad una finalmente solida ed utilizzabile. La prima versione era nata a supporto di un post scritto sul blog aziendale: The secret of better UI composition.

La seconda versione

Un secondo passaggio nasce invece come primo passo verso qualcosa di più solido, e avrà come primo scopo quello di supportare alcuni degli esempi e degli esercizi del workshop su Microservices che facciamo in giro per il mondo.

Le demo utilizzate a Bristol sono disponibili sempre sul mio account GitHub: https://github.com/mauroservienti/ddd-sw-2017. Questa demo segna anche l’introduzione di una distinzione molto importante che fino ad ora è mancata tra ViewModel e UI Composition, distinzione di cui parleremo nei prossimi post.

La terza versione

È già partito anche il terzo passaggio: purtroppo o per fortuna nell’interazione con un sistema complesso non ci limitiamo a leggere informazioni, ma appunto interagiamo e quando lo facciamo scriviamo anche informazioni.
Gli esempi fino ad oggi disponibili si limitano a mostrare come comporre (micro)servizi in lettura, il terzo passo è quello di introdurre anche le scritture, e quindi una sorta di decomposizione, o fan out come l’ha giustamente chiamato Massimo, dei “comandi”. L’idea è quella di rappresentare un ipotetico processo di prenotazione alberghiera online, se siete curiosi tenete d’occhio questo repository: https://github.com/mauroservienti/HotelReservation

Post in questa serie:

posted @ 5/31/2017 10:24 AM 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