December 2017 Blog Posts

Quando la verità non è una sola: CQRS, consistenza eventuale, e utenti

Mi capita troppo spesso di osservare implementazioni di CQRS prese troppo alla leggera, con conseguenti (tanti tanti) buchi che fanno acqua da tutte le parti. Soprattutto quando, spesso senza che ve ne sia una vera necessità, l’implementazione comporta consistenza eventuale tra modello in scrittura e modello in lettura. Quello che spesso osservo è un pastrocchio di concetti che tendono a fare di tutta l’erba un fascio e una soluzione che deve per forza portare con se concetti e pattern architetturali che nessun dottore ha mai detto debbano andare per forza insieme. Stanno bene insieme, ma nessuno ci...

posted @ Friday, December 29, 2017 2:19 PM | Feedback (0)

Utenti e sistemi

Stamattina leggevo questo interessante post di Alessio Biancalana, e sebbene mi trovi d’accordo con le premesse non condivido le conclusioni e men che meno l’unico commento presente al momento della lettura. UX e UI sono l’unica cosa che vedono È indubbio che l’interfaccia utente sia l’unica cosa che un utente normale è in grado di percepire, ne consegue quindi che se UI e UX sono pietose per l’utente l’applicazione sarà pessima e poco utilizzabile, a prescindere dal dettaglio che sia efficace. Ci sono ovviamente, ad oggi, delle eccezioni a questa regola. Ma sono sempre...

posted @ Wednesday, December 27, 2017 11:44 AM | Feedback (3)

Quando il vil denaro è il faro che ci guida…

È un periodo, fortunatamente breve, in cui sto avendo a che fare con un paio di personaggi che nonostante sulla carta dovrebbero fare i miei interessi in realtà fanno di tutto solo ed esclusivamente per fare i loro. E ovviamente lo fanno a mero scopo economico, la loro mission è quindi solo ed esclusivamente portare a casa la provvigione. Come? Irrilevante, basta portarla a casa. È il modo peggiore per poter gestire un cliente, in particolare se il cliente è il sottoscritto che sia per indole che per esperienza di questi ultimi anni è abituato ad un...

posted @ Friday, December 22, 2017 8:52 AM | Feedback (0)

C# 7.2 piccole novità: in, ovvero read-only ref

Una delle cose “scomode” di passare un parametro ad una funziona per reference è che la funzione a questo punto può liberamente modificare il parametro in ingresso con il rischio di produrre side-effect indesiderati. Una cosa del tipo: struct Person {    … } static void DoSomething( ref this Person ) {    … ...

posted @ Wednesday, December 20, 2017 10:04 AM | Feedback (0)

Valori

In un modello basato su una struttura fluida, e non basato su una gerarchica forte, modello che potremmo definire teal o holacracy, i valori sono uno dei mattoni fondanti, se non il più importante. I valori sono alla base di qualsiasi organizzazione sana, che voglia potersi distinguere e avere una sorta di “morale”. I valori, in coppia con la mission aziendale, sono la costituzione dell’organizzazione Sembra una cosa quasi scontata e un po’ lapalissiana, ma non c’è nulla di più difficile che costruire un’organizzazione solida intorno ad un insieme di valori che non siano ispirati al...

posted @ Monday, December 18, 2017 9:54 AM | Feedback (0)

Quando un sito limita la lunghezza massima della password è il caso di preoccuparsi

Chiudiamo la settimana del rant sulla sicurezza che è meglio :-) Mi sono già sfogato con quelli che non ti lasciano incollare la password. Ho ribadito che le mie password io non le voglio conoscere. Oggi vorrei chiudere in bellezza riprendendo un commento di Andrea: Spesso e volentieri incontriamo siti che impongono una lunghezza massima della password. Ogni volta che li incontriamo dovremmo esserne spaventati. Che cosa ci stanno dicendo? Se il sistema in questione impone una lunghezza massima c’è un elevatissimo rischio che la password sia salvata in...

posted @ Friday, December 15, 2017 12:10 PM | Feedback (0)

La password più sicura è quella che non conosci

La domanda che in tanti si fanno è: come posso avere delle password sicure? ma soprattutto perché non devo mai riutilizzare la stessa password? Abbiamo già accennato a come rendere efficace una password, e la risposta è una sola: 2FA. La password sicura è quella che non conosco Continuiamo ad utilizzare l’analogia chiavi di casa, conoscete la forma delle chiavi? Sapete a memoria come sono posizionati i denti? No, semplicemente vi affidate ad un portachiavi in cui conservate con cura le chiavi. Allo stesso modo non ha nessun senso conoscere una password, non è...

posted @ Wednesday, December 13, 2017 3:40 PM | Feedback (3)

Quei siti che non ti lasciano incollare la password

Sempre per quella storia della sicurezza. Sapete quella cosa noiosa che in molti la fuori ignorano, pensando stupidamente che sia un dettaglio. Ho un fastidio profondo per quei siti che in fase di registrazione non ti lasciano fare copia incolla della password nel campo conferma password. Credono forse che sia più sicuro impormi di scriverla due volte? no spiegatemi, perché io sinceramente le vostre stupidate non le capisco. Le mie password sono tipicamente cose del tipo: *I^%RT FC p97tgn 9ouvb$E%^ Pensate davvero che facendomela scrivere sia più sicura? o cos'altro? Quando...

posted @ Monday, December 11, 2017 12:09 PM | Feedback (4)

C# 7.2 piccole novità: ref on extensions

In C# 7 questo non era possibile: public static class Extensions {    public static void Something( ref this ExtendedStruct es)    {    } } Non era cioè possibile passare ad esempio una struct ad un extension method per reference, pagando quindi pegno se volevamo usare extension method su strutture. Con C# 7.2 adesso è possibile, ci sono altre novità che riguardano “ref”, forse più interessanti ancora. Novità tutte orientate...

posted @ Wednesday, December 6, 2017 2:47 PM | Feedback (0)

C# 7.1 piccole novità: AsyncMain

Una delle cose “noiose“ quando si scrive un’applicazione, ad esempio, Console è quando nel metodo Main si deve avere a che fare con codice asincrono, si finisce per scrivere una cosa del tipo: public void Main(string[] args) {    MainAsync(args).GetAwaiter().GetResult(); } public Task MainAsync(string[] args) {    return Task.CompletedTask; }...

posted @ Monday, December 4, 2017 9:56 AM | Feedback (0)

Non c’è scritto da nessuna parte che i messaggi vengano consegnati o processati

Abbiamo già detto che esiste solo oneway-messaging e che exactly-once delivery è una chimera, per continuare la mia carrellata di buoni motivi per non impelagarsi in un sistema distribuito oggi vorrei introdurvi al magico mondo delle poison queue. Quando un messaggio viene inviato possono succedere le seguenti cose: L’infrastruttura non riesce a consegnarlo alla coda di destinazione Il messaggio arriva alla coda di destinazione malformed Il destinatario riceve il messaggio ma fallisce nel processarlo Come più volte ho ribadito in un sistema basato su messaggi...

posted @ Friday, December 1, 2017 10:19 AM | Feedback (0)