Alessio Biancalana Grab The Blaster di Alessio Biancalana

ChatOps, Botstation, e un momento di relax con RomaJS

Nell’ultimo mese ho avuto a che fare con un po’ di grattacapi interessanti; in particolare, con il mio nuovo team ci siamo trovati nella condizione antipatica di dover svolgere alcuni task ripetitivi senza che tutti conoscessero esattamente le operazioni da svolgere e i comandi da dare in pasto alle macchine.

Per questo motivo ho deciso di introdurre un po’ di pratiche ChatOps (qui qualche informazione in più), in modo da avere un bot a disposizione che mi consentisse di dedicarmi alle cose importanti, senza essere infastidito dal “come si fa”, da una miriade di cose ripetitive, e così via. Il primo passo è stato studiare un po’ la piattaforma di Slack (che usiamo in UniquID) e capire cosa potevo fare grazie alla libreria slackbots per NodeJS; il passo induttivo, invece, è stato dare forma a un piccolo minion che prendesse i comandi dal team e li trasformasse in azioni reali.

Alessio Biancalana at RomaJS, ChatOps

ChatOps è divertimento

Immediatamente mi sono accorto che a meno di qualche ritocco era tutto pronto: una forma simpatica del bot ne ha facilitato l’adozione da parte del team, che in meno di poche ore aveva già accolto il nuovo arrivato e il suo cervello artificiale con tanti sorrisi. Lui è ancora lì che fa cose per noi, quando gliele chiediamo, e ogni tanto aggiungiamo qualche funzione che potrebbe essere utile – insieme ad altre sicuramente più facete.

Una cosa che ho notato è che adesso pur mantenendo un debito tecnico abbastanza elevato sulle attività sistemistiche, comunque il team è in grado di gestirle senza degli specialisti, senza frustrarsi, e avendo comunque nei casi peggiori una linea guida su come diavolo fare una determinata cosa, data proprio dal sorgente del bot.

Codice sorgente che allo stato attuale, dopo un po’ di macchinazioni, è diventato all’incirca quello che segue:

var Botstation = require('botstation');
var bot = new Botstation.Bot();
 
bot.config({
    key: 'xoxb-157105193143-eJdSjJRttSCU2DAd3IdAtBoi',
    name: 'Dat Bot'
});
 
bot.task({
    name: "Help",
    matcher: "isMessage",
    content: "!help",
    exec: (bot, data, params) => {
        bot.postMessage(data.channel, 'Do you need help?', params);
    }
});
 
bot.start(() => {
    console.log('Bot started!');
});

Botstation

Il codice qui sopra non è campato in aria, bensì deriva da un lavoro di semplificazione che ho fatto su ciò che avevo in un momento precedente; ho realizzato infatti che non ci sono moltissimi framework per scrivere bot, così ho provato a buttarne giù uno mio, con una API architettata in modo da poter aggiungere quanti task mi servivano nascondendo tutta la (poca per il momento, a dir la verità) complessità di gestione del websocket, degli eventi del bot, e così via. Ho chiamato questa nuova creatura Botstation.

Il prossimo passo che vorrei intraprendere è quello di rendere Botstation multipiattaforma, scrivendo un meccanismo per cui avendo a disposizione vari adapter (Slack, Telegram, Facebook) si riesca a mettere in piedi un chatbot senza sforzo nascondendo la complessità della diversità dei servizi e delle loro API. Solo che non ho tempo di farlo adesso 😁

Fortunatamente, però, ho visto che i vari wrapper per le API di Telegram e compari sono orientati agli eventi nella stessa maniera.

RomaJS: ChatOps in compagnia con birra e taralli

Ho presentato questo piccolo lavoretto allo scorso RomaJS (veniteci a trovare!), credendo di fare solo da riempitivo perché non c’era nessun altro che portasse uno speech di livello. A sorpresa, invece, le persone sono rimaste abbastanza colpite sia dall’approccio ChatOps, fortemente orientato al cazzeggio inter-team, sia dalla facilità con cui è possibile scrivere un chatbot – con o senza Botstation, che ora come ora funge solo da wrapper di Slackbots.

RomaJS: ChatOps in compagnia con birra e taralli

Avrei dovuto scrivere questo post parecchi giorni fa, ma purtroppo sono state settimane complicate ed è stato veramente difficile mettere insieme i pezzi per via degli impegni di questi giorni. Un aspetto veramente stimolante è stato incontrare anche a Codemotion, in questi giorni appena passati, svariate persone che mi hanno chiesto come stesse andando lo sviluppo di Botstation e mi hanno esposto alcune domande e alcuni dubbi.

Io ovviamente sono stato felicissimo dell’impatto (seppur piccolo) che sta avendo un framework del genere, che onestamente avevo iniziato a scrivere solamente come esercizio personale. 😎

Quindi?

Riassumendo:

  • ChatOps vi aiuta a liberarvi del peso di task orientati alla sistemistica, ripetitivi, noiosi;
  • Un bot utile è sempre ben accolto; un bot con funzioni aggiuntive stupide, insensate e ironiche ancora di più perché migliora il morale
  • Botstation vi può aiutare, se usate Slack. Presto vi potrà aiutare anche se usate altre piattaforme di messaggistica 👌

Hangouts è appena diventato un competitor di Slack

Using Google Hangouts is often about videoconferencing, but it’s also about collaboration in many different forms. Over the past few years, the company has evolved its strategy to one centered around team productivity and chat.

E così comincia la transizione verso un nuovo tipo di terreno, assolutamente fertile, sul quale Hangouts si innesta e va a diventare un competitor diretto di Slack.

Il guaio è che mentre l’applicazione di Google per quanto riguarda la conversazione scritta è in mezzo al guado da un bel po’ mancando occasioni e fallendo l’affermazione come tool di collaborazione di massa, altri hanno saputo mettersi in risalto in maniera più significante.

Per esempio Slack, che ormai è il centro della comunicazione di parecchie community, di un sacco di aziende, e in generale di tutte quelle organizzazioni che preferiscono centralizzare il lavoro nello stesso posto in cui avviene tutta la comunicazione interna.

Microsoft con Teams ha provato ad imporsi su questo terreno, avendo già un bel bacino di clienti Office, ma pare che non stia funzionando. La traction di Slack aumenta, e vedremo cosa sarà capace di tirare fuori Google oltre qualche bot e qualche caratteristica aggiuntiva.

Rendere un'app React completamente funzionale (e reattiva)

In this article I’ll talk about redux-cycles, a Redux middleware that helps you to handle side effects and async code in your React apps in a functional-reactive way — a trait which is not yet shared by other Redux side effect models — by leveraging the Cycle.js framework.

Con il nuovo anno mi sono detto che avrei cominciato a condividere i miei rompimenti di capo sulla programmazione funzionale. Ancora non sono arrivato a una quadra tale per cominciare a mettermi per iscritto, però ormai siamo a marzo e tanto vale cominciare a scriverne, cominciando con il post di un amico.

Luca Matteis è uno dei miei compagnucci di banco di RomaJS, e ha scritto questo meraviglioso compendio su come rendere una React application “fully functional”, che va esattamente nella direzione in cui sto andando io, ovvero quella del “functional programming for dummies”.

Mozilla + Pocket = <3

Pocket + Mozilla

Ora che ho trovato un briciolo di tempo in mezzo (sul finale, anzi) di una settimana incredibile, parliamo un attimo di questo fatto: Mozilla ha acquisito Pocket. Mi sembra tutto molto in linea con la strategia di Mozilla che prevede di estendere la sua visione sui contenuti e sul web ad ogni ambito, cosa che aveva già provato a fare svariate volte tramite Firefox con varie soluzioni per la leggibilità degli articoli su Internet.

Pocket brings to Mozilla a successful human-powered content recommendation system with 10 million unique monthly active users on iOS, Android and the Web, and with more than 3 billion pieces of content saved to date.

Pocket è esattamente il tassello mancante, poiché una piattaforma che ha mercato e funziona sia su Android, sia su iOS, fa esattamente quello che Mozilla ha cercato di integrare in Firefox per anni, ovvero i contenuti “without all the bullshit”. Chi si ricorda della Reader View? L’avete mai usata?

In working closely with Pocket over the last year around the integration within Firefox, we developed a shared vision and belief in the opportunity to do more together that has led to Pocket joining Mozilla today.

Quello che mi sembra un buon colpo per Mozilla, mi sembra anche un’elegante “uscita di scena” per Pocket, in un senso molto particolare: nonostante io sia un utilizzatore di Pocket in maniera molto massiccia, non mi sono mai, mai, mai trovato nella condizione di (anche solo) desiderare un upgrade del mio account. Cosa che svariate altre volte è successa invece ad esempio con Feedly. Alla luce di questo, ho sempre avuto qualche problema ad accettare l’idea di sostenibilità di un’azienda come Pocket.

Data questa premessa, sicuramente Mozilla è un buon approdo, dato che la sostenibilità del modello di Mozilla non è assolutamente data da una visione capitalistica quanto più dall’aderenza al modello di una charity.

Collisioni SHA1 VS Git: il punto di vista di Linus Torvalds

In contrast, in a project like git, the hash isn’t used for “trust”. I don’t pull on peoples trees because they have a hash of a4d442663580. Our trust is in people, and then we end up having lots of technology measures in place to secure the actual data.

C’era davvero bisogno di specificarlo? A quanto pare si. Viceversa, per quanto riguarda le collisioni all’interno di repository vasti, Linus Torvalds dice la sua: un piano d’azione c’è ma ancora non si vede. Però c’è.

Member of

Previous Random Next