Tech

L’anima tech di CodicePlastico: questi articoli sono il frutto delle nostre sperimentazioni, tutorial, autoformazione ed esperienze tecniche perché siamo convinti che la condivisione della conoscenza sia fondamentale per chi lavora nelle nuove tecnologie.

Web Components Lifecycle

Cosa sono i Web Components L’ecosistema Javascript ormai è ricco di librerie o framework che abbracciano i concetti di componenti e moduli per lo sviluppo di applicazioni. Questi elementi vengono ...

Coloriamo i nostri team

Questa volta parliamo di Team Management e personalità, dando il benvenuto a Gianni (e al suo primo articolo!), nuovo arrivo del Team di CodicePlastico. I mostrini sono opera della magica ...

Stream in Elixir

Il concetto di stream non è di certo una novità, nel SICP ci sono interi capitoli dedicati all’argomento e tutti i principali linguaggi di programmazione hanno un’implementazione nella standard library ...

Danzare sulla tastiera

Parecchi anni fa ero un fan di Resharper, ricordo ancora alcuni degli shortcut che usavo e penso agli incredibili livelli di produttività che ti permetteva di raggiungere con Visual Studio. ...

Fp-ts validation spiegata bene

In CodicePlastico stiamo studiando la programmazione funzionale, abbiamo fatto un corso con Matteo Baglini (che consiglio a tutti) e in questi giorni stiamo provando a fare un po’ di refactoring ...

Lens in javascript

Qualche settimana fa per un progetto che stiamo sviluppando abbiamo dovuto interfacciarci con le API di wordpress per recuperare alcune informazioni dai post pubblicati su un blog. La struttura dati ...

My road to F#

Sono da sempre innamorato di C# e del suo essere un linguaggio “fresco e pulito”, ma non posso che affermare che questa feature vale il prezzo del biglietto: ...

On learning TDD

Even if Test Driven Development is an old topic and even if today almost everybody should have learned the benefits of TDD I still do a lot of mentoring on ...

Io, me e R#

Sono sempre stato un grande fan di R#: il giusto completamento di un ottimo IDE come Visual Studio. E’ vero, nei suoi primi anni di vita, le performance non erano ...

Projects structure

Frameworks like ASP.NET MVC, Rails & C. impose you a strict folder structure using a “topology approach”. This means that files of same types are in the same folder. So ...

About TDD (IMHO)

In these days everybody talks about TDD due to the post of DHH titled TDD is Dead and the various hangouts with Fowler and Beck. I’m a proponent of TDD, ...

Eventual consistency...ma de che?

Ma cos’e’ questa benedetta “eventual consistency” di cui tanto si parla? Inizio fermamente a credere che sia la nuova buzzword per classificare i failure dei sistemi come “feature by design” ...

Coding Conventions

In CodicePlastico we take the code readability very seriously and during last months we are trying to change the way we write code to made it more readable and performant. ...

Ruby Loves DDD (Part 5)

Going back to the handler. We saw in a previous post how the repository recreates the aggregate state re-executing the events. Now that we have the aggregate reference we can ...

New website

Today we launched our new company web site. You can view it here: http://codiceplastico.com. We are very happy to show the world our new image and to spread our new ...

ASP.NET WebApi succinctly

Months ago, while digging inside the ASP.NET WebAPI I collected a lot of material and I decided to write a small book about the topics. I contacted Syncfusion beacause I ...

Functional programming

In the last year Functional Programming is the topic that devs are talking about. Many functional languages are becoming popular (Scala, F#, Clojure, Elixir and someone is starting to say ...

Ruby loves DDD (part 2)

My experiments with Ruby and Domain Driven Implementation continues. Two weeks ago I was at the Rupy conf talking about Domain Driven Architectures in Ruby. The code is available on ...

Ruby loves DDD

On 14th june, in Milan, I spoke at the rubyday, and I presented a possible implementation of Domain Driven Design (with CQRS and Event Sourcing). I know quite well the ...

ASP.NET WebApi Custom validator

I’m using ASP.NET WebApi for some months and even if I like them everytime I have to dig into the source code to understand some not_so_well_documented feature I’m impressed about ...

scrooge

Sono freelance da parecchi anni e dalla prima fattura emessa ho sempre avuto la necessità di avere un “programmino” per gestire la contabilità. Il primo me lo sono scritto in ...

Aggiornate i vostri reader

Da qualche giorno ho spostato il blog su un nuovo server, purtroppo ogni tanto capita di dover abbandonare le vecchie piattaforme per passare a soluzioni più economiche e/o più comode. ...

Usare dropbox da un'applicazione rails

Utlimamente mi è capitato di dover integrare un’applicazione rails con dropbox, in particolare l’applicazione genera un PDF che deve essere salvato su dropbox. Ho deciso di utilizzare la gemma dropbox-api ...

Localizzare le applicazioni web

Sempre più spesso ci capita di realizzare applicazioni web multilingua e questo ci ha spinto a trovare una soluzione che sia facilmente riutilizzabile e che sia sostenibile facilmente. ASP.NET MVC ...

Clickonce su azure

Ultimamente ci è capitato di scrivere ancora un’applicazione con WPF e di dover integrare nel processo di build la pubblicazione del pacchetto clickonce su Azure per poter effettuare il deploy. ...

Query polimorfiche con il table storage

Il table storage è l’implementazione, messa a disposizione da Windows Azure, di un datastore NoSQL, ideale per lo storage di dati strutturati, che non necessitano del concetto di “relazionalità”. ...

Knockout.js (4)

Talvolta è necessario intercettare le operazioni di set fatte da una proprietà in binding per notificare altri viewmodel del cambiamento. Il parallelo con WPF è quando a fronte di un ...

Azure and Git @ UgiDotNet

La piattaforma di Windows Azure sta crescendo, ogni settimana si arrichisce di nuove feature sempre più accattivanti, l’apertura e l’integrazione con mondi extra-microsoft è sempre più evidente. Da qualche mese ...

Azure.Intro()

Il titolo potrebbe sembrare un po’ generico e vago, ma meglio di così non ho saputo fare :-) ...

Si fa presto a dire REST

Ogni periodo storico informatico ha le sue buzzword e oggi una di quelle più usate è REST. Anni fa andava di moda SOAP, oggi tutti si scagliano contro di lui ...

knockout.js (3)

Nel precedente articolo abbiamo visto come mettere in binding una collezione di oggetti con una table, oggi riprendiamo l’esempio per aggiungere una funzionalità: vogliamo fare in modo che se la ...

knockout.js (2)

Nel post precedente abbiamo visto le analogie tra knockout.js e le applicazioni WPF/Silverlight. Oggi vorrei aggiungere alcune funzionalità. ...

Factory e leggibilità del codice (2/2)

Nel post precedente abbiamo visto come “addurre scuse plausibili” (cit.) per introdurre il concetto di factory all’interno del nostro domain model, come unico entry point per la creazione (e setup iniziale) ...

Factory e leggibilità del codice (1/2)

Uno degli obbiettivi a cui, sempre più spesso, cerco di porre attenzione, nella scrittura del codice, è la leggibilità: il codice che scrivo deve essere auto-esplicativo sia per “futuri lettori”, ...

CQRS: perchè e quando

Ok, nel post precedente abbiamo cercato di definire l’argomento. Ora cerchiamo di capire due cose fondamentali per l’adozione di qualsiasi tool/metodologia/pattern: quando e perchè usarlo. Se capiamo e padroneggiamo questi ...

CQRS: un po' di confusione?

Ultimamente si sente sempre più spesso parlare di CQRS ed EventSourcing: ormai se non spari qualche evento su un bus non sei nessuno :-) ...

Knockout.js

La moda dei framework javascript è esplosa, esistono decine di librerie MVQualcosa che supportano lo sviluppo di applicazioni client side di una certa complessità. Premesso che sceglierne una è quasi ...

Method interception con Ruby

Durante le vacanze estive ho letto Metaprogramming Ruby di Paolo Perrotta, libro denso a tratti difficile ma di grandissimo interesse che ti porta a scoprire la potenzialità di Ruby che, ...

TDD il primo test

Insegnando il TDD un problema che vedo emergere subito è quello del primo test. Vedo dev come scrittori davanti allo schermo bianco in attesa di un’ispirazione. ...

Build automation @codiceplastico with psake

Come bentornato da una settimana di pseudo-ferie, mi sono imposto di sistemare e soprattutto standardizzare il processo e i tool di build che utilizziamo. Fino ad ora, chi aveva l’ownership ...

Node.js e websockets

Uno degli ambiti in cui Node.js si trova a suo perfetto agio è nei contesti in cui è necessaria un’alta reattività dei componenti in gioco. Il classico esempio che viene ...

Node.js

Node.js è il framework del momento, nato solo 3 anni fa, in poco tempo ha suscitato entusiasmo nella community degli sviluppatori fino a farlo diventare un framework diffuso al punto ...

L'aggregate-root: la fonte della verità

Quando si parla di DDD ogni componente in gioco ha la sua importanza, ma la “visione d’insieme” e il contenuto informativo contenuto in un aggregate ricopre un ruolo fondamentale di ...

DDD: i behavior prima di tutto

Molto spesso, come già detto, ci sembra di applicare DDD, ci autoconvinciamo della cosa (anche perché ultimamente se non fai DDD, non sei nessuno :-) ), ma siamo ben lontani ...

Back to basic: TDD (3)

Nei primi 2 step abbiamo introdotto una piccola funzionalità che permette di aggiungere un articolo al carrello. Continuiamo sullo stesso tema introducendo la seguente funzionalità: ...

Un mese di pomodoro

Da circa un mese in CodicePlastico abbiamo deciso di adottare la tecnica del pomodoro come strumento per misurare la durata delle nostre attività. La sua introduzione è nata dall’esigenza di ...

Back to basic: TDD (2)

Andiamo ancora piano piano…nel post introduttivo avevo evidenziato alcuni benefici del TDD mettendo in risalto il fatto che ti obbliga a pensare e ad essere sicuro di aver capito cosa ...

Back to basic: il contesto e il primo test

Per partire con la serie di post sull’applicazione del TDD dobbiamo prima identificare un contesto che sia abbastanza semplice da capire ma anche abbastanza complesso da implementare. ...

Back to Basic: TDD

Nonostante parlo di TDD da anni, e alcuni cominciano anche ad annoiarsi, ancora oggi mi rendo conto che è una pratica che non è molto utilizzata e apprezzata come meriterebbe, ...

Prism: introduzione

Ok, ci riprovo: per un progetto che sta partendo abbiamo deciso di utilizzare Prism. Tempo fa ci avevamo già provato (è vero, le competenze su WPF/MVVM non erano al livello ...

NuGet, le dll e il source control (2)

Nel post precedente, abbiamo visto come sfruttare NuGet per evitare di committare tutti i packages (leggi dll) sul source control e integrarne il download da uno o più repository nel ...

C#, valori di default e la leggibilità

La possibilità di definire i valori di default dei parametri di un metodo con C#, non è cosa recente, ma giusto ieri mi sono trovato ad utilizzare questa “feature” del ...

Perchè MongoDb?

Molto spesso, e sempre più di frequente, mi viene posta questa domanda: “perchè MongoDb?” ...

I wanna be a polyglot programmer

In questi giorni mi sto chiedendo quanto senso ha oggi scrivere un’applicazione (di medie/grosse dimensioni) in un solo linguaggio/framework. Già nell’attuale versione del .NET Framework esistono 2 linguaggi che hanno ...

Asp.net MVC Antipattern

ASP.NET MVC è stato rilasciato alcuni anni fa e nonostante non sia ancora diffusissimo (più che altro per questioni psicologiche) sta pian piano mangiando terreno ad ASP.NET WebForm dimostrando ancora ...

Redirect di dati binari con powershell

In questo post abbiamo visto come è stato possibile, con powershell, eseguire il dump dei nostri repositories svn e zipparli per una più facile archiviazione. Non è però tutto oro quello che ...

ASP.NET MVC validare un checkbox

Conosciamo tutti gli attributi che possiamo mettere sulle proprietà di un modello e sappiamo che con ASP.NET MVC 3 abbiamo anche la possibilità di usare le regole di validazione client ...

ValueObject: questo sconosciuto

Uno dei concetti apparentemente più semplici del libro di Evans è quello di value object. Riporto fedelmente la sua definizione per non incorrere in errori e/o omissioni: ...

L'importanza dei contesti

Sollecitato dai commenti di Davide e Francesco, riprendiamo il discorso del post precedente e cerchiamo di analizzare e sviscerare un po’ di più le situazioni che sempre più spesso mi ...

Questo database amico-nemico

Sempre più spesso mi trovo a ripetere (e convincermi) che il database deve essere un servizio al servizio :-) dell’applicazione e non viceversa. In ottica DDD questa affermazione diventa ancora ...

NHibernate e i trigger del SyncFramework

In una applicazione che stiamo sviluppando siamo ricorsi al Sync Framework di Microsoft per gestire la sincronizzazione di un database SQL Compact con il database principale SQL Server 2008. ...

Build con Rake

Per parecchi anni abbiamo usato NANT e successivamente MSBuild per effettuare le build dei nostri progetti e per parecchi anni ho odiato l’XML per la sua “prolissità” e per la ...

Sync framework: un po' di link

In questo ultimo periodo mi sono “dilettato” con il sync framework (arrivato alla versione 4.0 in CTP) per risolvere l’annoso problema di sincronizzazione tra un db master ed un db ...

Cosa ho imparato al NoSqlDay

Venerdi scorso si e tenuto a Brescia il primo NoSQLDay un’intera giornata per approndire una delle buzzword del momento e per capire che sotto c’e parecchia ciccia (cit.). ...

NoSql day: una giornata eccezionale!!!

Prima di un più o meno dettagliato resoconto della giornata, mi ritaglio poche righe per congratularmi con gli organizzatori della conferenza. La giornata è stata veramente eccezionale, le sessioni (quasi) ...

La Bicicletta E Il Carroarmato

E’ un po’ di tempo che studio e gioco con Ruby e RubyOnRails e a dicembre insieme al Makka ho iniziato un progetto vero (ossia pagato da un cliente) basato ...

DDD, Aggregate e FK

I concetti di aggregate e di aggregate root nell’ecosistema di domain driven design ricoprono un ruolo fondamentale: l’aggregate garantisce un raggruppamento logico delle varie entities e value objects. L’aggregate root ...

CQRS wiki

Per chi è interessato, ha dubbi, perplessità o è semplicemente curioso ecco un punto di “accumulazione” con risorse relative a CQRS: wiki ...

CQRS @ UgiAltNet

Sabato si è tenuta la UgiAltNet conference: ottima conferenza, complimenti ancora a tutti gli organizzatori. ...