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 - 31479
  • Articles - 310
  • Comments - 101170
  • Trackbacks - 226411

Bloggers (posts, last update)

Latest Posts

The Cost of Javascript

posted @ 11/24/2017 11:31 AM by Alessandro Gervasoni

Angular, NodeJS e Typescript insieme

Se dovete realizzare una applicazione Angular con NodeJs e Typescript per il backend il mio nuovo post potrebbe esservi utile: http://www.tolist.net/Article/Angular-NodeJS-e-Typescript-insieme-17

posted @ 11/22/2017 11:45 PM by Michele Aponte

“wanna be architect”

image

Settimana scorsa a Torino, durante una delle pause, un ragazzo mi chiede: come faccio a diventare un architetto? La domanda credo nascesse dal fatto che sulle mie slide c’è scritto “Solution Architecth @ Particular Software”. La mia risposta è stata molto semplice: a suon di schiaffoni :-)

In tutta sincerità sul mio biglietto da visita c’è scritto Solution Architect, ma la bio interna inizia così:

image

Non credo che un professionista possa mai dire di avere abbastanza esperienza per definirsi un Solution Architect. Semplicemente per il motivo che ogni soluzione e l’architettura che l’accompagna sono talmente dipendenti dal contesto che avremo sempre qualcosa che non abbiamo mai sperimentato prima. Un problema nuovo che ci coglie totalmente impreparati.

Gli schiaffoni, derivanti dai progetti falliti o non proprio delle perfette ciambelle col buco, sono la cosa che ci fa crescere e accumulare esperienza, esperienza che si può spendere, con tanta umiltà, su queli problemi ignoti di cui sopra.

L’esperienza non si insegna con un corso, e per fare esperienza ci vuole tempo, quindi la vedo dura essere Solution Architect a 25 anni, ma non cercherei neanche di aspettarmi da un neo laureato che abbia nozioni, esperienza e calli a sufficienza.

Quindi:

come faccio a diventare un architetto?

  • sperimentando, fallendo e imparando dai propri errori
  • mettendosi in gioco e confrontandosi con gli altri
  • ovviamente studiando
  • senza fretta soprattutto, spendersi troppo presto può essere controproducente

Piccolo spazio pubblicità: 5 giorni con Udi aiutano, ma non sono la base di partenza, piuttosto un check-point da fare lungo la strada.

posted @ 11/22/2017 12:17 PM by Mauro Servienti

An application built on traditional .Net framework is not a legacy application


Se seguite i vari blog MS avrete notato che sull'argomento .Net Core e full .Net Framewotk spesso citano/abusano il termine "legacy application" per fare riferimento alle applicazioni basate sul .Net Framework.

Il loro obiettivo, alla fine dei conti, è spingere sempre più Dev all'adozione del nuovo nato .Net Core parlando per le esistenti (legacy?) applicazioni di porting da un framework all'altro.

Ecco quindi la doverosa precisazione di Cesar de la Torre in occasione del post relativo all'aggiornamento del libro "Microservices and Docker containers: Architecture, Patterns and Development guidance (Updated for .NET Core 2.0)"

"Legacy applications based on the traditional .NET Framework” literally means legacy apps (apps that have a significant time since they were built) that are based (were built) using the traditional .NET Framework. On the contrary, we are not saying, at all, that any new application built on the traditional .NET Framework is a legacy application.

Fonte: Microservices and docker containers architecture patterns and development guidance

posted @ 11/20/2017 5:05 PM by Tommaso Caldarola

Il coach ha sempre torto

swimmer-1678307_1920

Nuoto, da ragazzino nuotavo. Sono anche bradicardico, a 44 anni ho ancora 46/48 battiti a riposo a volte anche meno. Ne consegue che la mia specialità è sempre stata il fondo. Quindi 800, 1500 o oggi le tipiche distanze da triathlon o di più. Da ragazzino avevo un difetto, sulle lunghe distanze a stile libero nelle ultime vasche tendevo a smettere di fare la classica virata con capriola (flip turn) in favore della virata tradizionale. L’allenatore del tempo sosteneva che fosse solo ed esclusivamente una questione di paura, l’aspetto psicologico prendeva il sopravvento e verso la fine tendevo ad evitare le cose rognose. Peccato che il personaggio insistesse nel sottolineare che io avessi paura. Lui era il coach, quello che sapeva, quindi aveva per forza ragione.

Peccato che non capisse un cazzo, ma io non avevo a quell'età nessuna base per comprendere che il problema fosse lui.

Una delle cose fondamentali nel nuoto è la respirazione, lo è in tutti gli sport ovviamente, ma nel nuoto c’è il dettaglio che non respiri quando decidi tu, ma solo quando hai la testa fuori. La respirazione è quindi influenzata dal ritmo della bracciata. Quando la tecnica è buona il tempo in cui mezza faccia è fuori dall'acqua per respirare è tipicamente pochissimo. Questo fa si che nel nuoto la respirazione è si importante ma l'espirazione è fondamentale.

Se si espira male, leggasi non a fondo, si accumula CO2 nei polmoni, nel tempo che la mezza faccia sta fuori l'aria che si è in grado di immettere si riduce perché i polmoni non sono abbastanza vuoti, debito di ossigeno –> iperventilazione –> dispnea. Ovvio che iperventilare mentre si nuota non è molto fattibile, ergo dopo qualche vasca la virata con capriola diventa una rogna perché il tempo di apnea è decisamente superiore a quello della bracciata.

Il segreto è semplice: espirare con tutta la forza possibile prima di tirare fuori la testa per respirare, fine de giochi. Semplice ed efficace. E quello era uno stronzo.

Quindi? direte voi…

Il succo della questione è che fare il coach o il mentor è un lavoro difficile, molto difficile. Ogni volta che vostro allievo o mentee non ci viene dietro la prima cosa da fare è mettere in discussione noi stessi in quanto coach o mentor. Analizzando il nostro comportamento alla ricerca di falle ed errori.

BTW, nuotare è un ottimo modo per meditare.

posted @ 11/20/2017 12:20 PM by Mauro Servienti

Microsoft/sqlopsstudio

SQL Operations Studio is a data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.

https://github.com/Microsoft/sqlopsstudio

posted @ 11/17/2017 4:42 PM by Alessandro Gervasoni

WebAppConf - il giorno dopo

Turin_monte_cappuccini

Ieri ho avuto il piacere di essere ospite alla WebAppConf a Torino. I ragazzi di Corley confermano essere degli ottimi organizzatori e hanno per l’ennesima volta prodotto un evento degno di nota, con grande seguito, e con alcune novità interessanti.

Andiamo con ordine, il materiale della mia sessione introduttiva, molto introduttiva, su GraphQL è on line.

Il formato 30 minuti, o 45 al massimo, mi piace sempre di più. Obbliga ad essere sintetici e a rimuovere tutta la fuffa di contorno. Offre anche molta più varietà ai partecipanti perché permette di raddoppiare gli argomenti trattati offrendo una maggior possibilità di essere soddisfatti. È anche possibile fare qualcosa di approfondito in 30 minuti, non è facile ma si rivela una bella sfida per lo speaker.

La novità a questo giro sono state le sessioni di mentoring, speaker e mentor erano a disposizione per sessioni di 10 minuti con i partecipanti. Sessioni il cui formato era il seguente:

  • 2/3 massimo per i partecipanti per esporre il loro problema
  • Il resto del tempo per intavolare una discussione
  • Divieto assoluto di cercare di vendere qualcosa

Ne ho fatte tre, sono state interessanti e spero efficaci per chi partecipava. Io dal canto mio le ho trovate formative.

By the way:

  • l’evento era a pagamento e nonostante questo è andato sold-out in pochissimo tempo, con un drop rate pari a zero.
  • La sessione che mi è piaciuta di più è stata quella di Andrea De Carolis, meritava di essere usata come sessione di apertura. Zero tecnologia e tanta ispirazione. Ottimo lavoro.
  • “Purtroppissimo” a sto giro non posso essere parte della CloudConf 2018, ma è certo che non mi faro sfuggire le prossime edizioni.

posted @ 11/17/2017 1:49 PM by Mauro Servienti

Esiste solo one-way messaging

2000px-MUTCD_R6-1R.svg

Molti di quelli che si approcciano al fantastico mondo della architetture distribuite basate su messaggi partano da un presupposto che non trova conferma e che tende ad essere fuorviante specialmente in fase di design.

Non esiste 2-way messaging

Spesso e volentieri quando si parla di messaggi si parla di pattern come request/response, request/reply e/o pub/sub. Nello specifico i primi due sono quelli che corrono il maggior rischio di essere fraintesi.

Se osserviamo come funziona un’infrastruttura di messaggistica, broker o code che siano, non esiste alcuna implementazione di request/* ma esiste semplicemente “request”, o più grezzamente esiste semplicemente la possibilità di inviare un messaggio. Se proprio vogliamo essere ancora più precisi non esiste neanche questo, piuttosto quello che le infrastrutture di messaggistica vi offrono è:

  • Accetta questo messaggio il cui destinatario è XYZ, e, se lo supporti, dammi conferma di averlo accettato (non consegnato, solo accettato).
  • Cortesemente, garantiscimi che se non riuscissi a consegnare il messaggio lo metti in un posto in cui non da fastidio, ma sia accessibile. L’importante è che non perdi il messaggio.

Fine.

Ogni altro tentativo di fare qualcosa di più sofisticato implicherebbe il noto problema dei due generali e l’unica possibilità di evitarlo sarebbe una simpatica transazione distribuita tra mittente, infrastruttura di messaggistica e destinatario. Cosa che ovviamente ci fa inorridire perché è uno dei motivi per cui abbiamo scelto un sistema di messaggistica.

In soldoni questo significa che da parte del mittente è impossibile sapere se il messaggio sia stato consegnato al destinatario. Non ci sono vie d’uscita, facciamocene una ragione.

Se osserviamo le due regole base di cui sopra, il massimo a cui possiamo aspirare è che o il messaggio è nella coda di destinazione, ma nulla ci può dire che sia stato processato correttamente, o nella peggiore delle ipotesi sta in una coda di errore, poison queue.

Questo comporta quindi che data una request che si aspetta una response non c’è nulla che garantisce che quella response sarà mai inviata, semplicemente perché non c’è nulla che garantisce la request sia mai andata dove speriamo che vada.

Vogliamo disaccoppiamento? Ci dobbiamo portare a casa anche le rogne del disaccoppiamento.

Questo principio fondamentale è quello che ci deve far sempre e solo dire: design for failure.

Nelle prossime puntate cercheremo di capire:

  • Il perché tecnologico di quello che abbiamo detto guardando a come funzionano i due principali modelli di messaggistica: store & forward e broker
  • Che cosa sono quindi pattern come request/* e pub/sub
  • Che cosa vuol dire di conseguenza “design for failure”

posted @ 11/15/2017 10:25 AM by Mauro Servienti

js-code-to-svg-flowchart

posted @ 11/14/2017 4:47 PM by Alessandro Gervasoni

VS Code Finally Gets Multi-Root Workspaces

posted @ 11/13/2017 4:33 PM by Alessandro Gervasoni

La collaborazione è più importante della produttività

team-1928848_1920

Internamente stressiamo moltissimo su quelli che comunemente vengono definiti soft skills, ad un punto tale che più volte è stato dichiarato che la collaborazione è più importante della produttività, la maggioranza dei nostri processi sono orientati a favorire la collaborazione e la comunicazione piuttosto che la produttività. Che in altre parole può essere letto come: ci interessa essere più efficaci che efficienti.

Nel nostro scenario distribuito la collaborazione assume ancora più valore, se fossimo orientati all’efficienza (e quindi fossimo troppo attenti a quanto produciamo) rischieremmo con facilità di orientare i processi a quello con la spiacevole, e presumo inevitabile, conseguenza che collaborazione e comunicazione morirebbero soffocate dalla produttività.

Nel nostro mondo in cui l’intelletto la fa da padrone e non siamo macchine non senzienti c’è comunque un alto rischio di scivolare troppo verso la produttività, dimenticandosi i soft skills, anche in realtà non necessariamente estreme come la nostra.

In questo senso vorrei una standing ovation per questo tweet:

image

E voi che realtà vivete?

posted @ 11/13/2017 3:58 PM by Mauro Servienti

All about Docker - @klabcommunity - UrbanHub Piacenza

5884963322_469e3670ed_b

Tornano gli incontri di KLab, questa volta in una sede diversa, UrbanHub a Piacenza. L’argomento trattato sarà il mondo container e in particolare Docker. Si partirà con un’introduzione a Docker, e all’ecosistema container e orchestratori, fatta da Roberto Messora, per poi proseguire con Nicola Baldi e Luca Milan che parleranno di Function as a Service e testing con Docker. Infine un bel buffet.

Io dal canto mio vengo a fare il curioso, di Docker so poco. Poi…mangiare mi piace sempre ;-)

Maggiori informazioni e iscrizioni: https://www.eventbrite.com/e/klab-2017-6-tickets-39721647517

Image credits: https://www.flickr.com/photos/datmater/5884963322

posted @ 11/10/2017 1:40 PM by Mauro Servienti

MongoDB Stitch

Full access to MongoDB, declarative read/write controls, and integration with your choice of services https://www.mongodb.com/cloud/stitch

posted @ 11/10/2017 11:52 AM by Alessandro Gervasoni

Migrare progetti ad un altro Framework

A meno che non siate della vecchia scuola e tutto va in un unico progetto della solution, ormai anche banali solution possono avere una decina di progetti.

In questo caso, la migrazione ad un’altra versione del Framework, per necessità o su richiesta del cliente, può essere, oltre che noioso (oltre a dover entrare in ogni progetto per cambiare il FW dobbiamo pure confermare la nostra scelta) anche prono a qualche errore in caso ci dimentichiamo di “passare” su qualche progetto.

Ovviamente non siamo i soli ad avere questo problema e qualcuno ha già scritto l’extension per noi: Target Framework Migrator fa proprio quello che ci serve e se volete partecipare allo sviluppo il codice sorgente è su GitHub.

Happy Migrations! Winking smile

posted @ 11/9/2017 9:09 AM by Nazareno

Un professionista deve saper dire di no

Audio-Music-Professional-Speaker-Music-Studio-1221152

Preparatevi perché quello che arriva è un “piccolo” rant. Sono sinceramente stufo dei professionisti che dicono di si a tutti e poi si rivelano inadeguati. È molto peggio, molto.

Non c’è nulla di più frustrante che rivolgersi ad un professionista, o presunto tale, esporre il problema che vogliamo risolvere, ovviamente pagare, per poi scoprire che il professionista in questione semplicemente era quello sbagliato, lui (o lei) lo sapeva ma ben si è guardato dal consigliare che sarebbe stato meglio rivolgersi ad altri.

Se qualcuno venisse da me e mi chiedesse consulenza in merito a sicurezza in infrastrutture di rete come potrei dire si? Mi porterei a casa la prima giornata di consulenza, forse intera, e poi? Poi nella migliore delle ipotesi vengo cacciato, nella peggiore verrei anche, giustamente, sputtanato.

Ecco io sono stufo di quelli che dicono di si a tutto, stufo perché oltre a sprecare i miei soldi sprecano soprattutto il mio tempo e la mia fiducia.

posted @ 11/8/2017 2:32 PM by Mauro Servienti

Fluentd


https://www.fluentd.org
Fluentd is an open source data collector for unified logging layer

posted @ 11/8/2017 9:06 AM by Alessandro Gervasoni

Prossime sessioni in calendario… ovvero, dove venire a incontrarmi e salutarmi!

Ripubblico aggiornato il breve post per segnalarvi i prossimi eventi dove terrò delle sessioni:

- Venerdì 10 Novembre, Milano, Codemotion, nel pomeriggio terrò una sessione sul serverless computing in Azure, Functions, Logic Apps, annessi e connessi Smile

- Sabato 18 Novembre,Venezia Mestre, Xe One Day, nel pomeriggio terrò una sessione sul public speaking dedicato ai geek!

- 28-29-30 Novembre, Milano, WPC 2017, il 29 (mercoledì) nel pomeriggio avrò due sessioni, una sul public speaking e una su Azure assieme al mitico Vito!

- Mercoledì 6 Dicembre, Brescia, ci sarà un “brainpirlo” dove parlerò di public speaking… e poi spiedo bresciano!

Naturalmente sono disponibile a partecipare ad altri eventi, basta organizzarsi per tempo

Per il 2017 dovrebbe essere tutto… Winking smile

posted @ 11/7/2017 2:18 PM by Lorenzo Barbieri

wasm

WebAssembly or wasm is a new portable, size- and load-time-efficient format suitable for compilation to the web.
http://webassembly.org

posted @ 11/7/2017 9:13 AM by Alessandro Gervasoni

Quando l’attenzione ai particolari fa la differenza: Il setup di un nuovo device iOS.

og

Sono un felice possessore di un iPad mini 2 da più di due anni e mezzo, zero problemi, funziona, fa quello che deve fare, lo fa un gran bene e la batteria è ancora oggi un gioiellino. Il tempo passa, nuove feature arrivano e la performance inevitabilmente ne soffrono. È ancora utilizzabilissimo, ma ad esempio Slack è una mezza pena. Colpa di Slack, direte voi, e io non posso che condividere. Ma non è questo l’argomento del contendere :-)

Sta di fatto che complice un OnePlus One che ha cominciato a dare segni di cedimento, anch’esso dopo quasi tre anni di onorato servizio e nonostante una batteria che tira ancora 2 giorni, mi sono comperato (noleggiato per essere precisi) dei device Apple nuovi.

La cosa che più mi ha lasciato basito è la qualità, e semplicità, del setup inziale del device se già se ne possiede uno con iOS 11. Basta metterli uno vicino all’altro e seguire le istruzioni semplicissime, a prova di mia madre. In men che non si dica avevo un nuovo device configurato con lo stesso Apple ID, senza la menata colossale della mia password complessissima e di 2FA, ma semplicemente con una fotografia, con le stesse app installate pronto per essere usato.

Il mio approccio ai device è ormai da utente consumer, non mi interessa “smanettare”, mi serve che funzioni e basta. In questo senso l’ecosistema Apple è molto avanti.

posted @ 11/6/2017 11:11 AM by Mauro Servienti

Gigya

The Leader in Customer Identity Management https://www.gigya.com/

posted @ 11/3/2017 12:08 PM by Alessandro Gervasoni

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