Alessio Biancalana Grab The Blaster di Alessio Biancalana

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’è.

Tutti i "software engineer" dovrebbero tenere un blog

Penso di essere d’accordo con il 101% di questo post:

Blogging is not just for “thought leaders” or “internet marketers” anymore. It’s becoming an essential tool for everyone — particularly engineers — to survive in the new talent economy.

E ancora:

It forces you to think. When you write about something, you’ll think hard about it. So overtime you’ll become a better thinker. More importantly, over time you’ll think clearly. Clarity of thought is an essential ingredient for leadership.

Ho sempre considerato il mio blog un modo molto furbo per mettermi nero su bianco e fare del mio pensiero un condensato strutturato. Col tempo mi sono accorto di quanto questo fosse importante per la mia vita (posso dirlo? Non solo professionale), e come mi aiutasse. Sinceramente, ho ricevuto complimenti da vari recruiter per l’adozione di un mezzo simile.

deGNOMEing

Ultimamente ho iniziato a guardare con un certo interesse Budgie Desktop, che da essere semplicemente la shell grafica di Solus ha iniziato un percorso che l’ha portata ad essere prima un progetto ben scritto ed autoconsistente, poi ad avere una variante di Ubuntu dedicata, e ad essere persino inclusa nei repository di Arch Linux.

Nel loro ultimo post sullo stato dell’arte del progetto, gli sviluppatori spiegano così quello che loro chiamano “deGNOMEing”:

Originally, Budgie intended to integrate with GNOME applications. What actually happened is that it then fully integrated into the GNOME stack. We got our integration, but at a heavy cost. Over time, as GNOME has evolved, every single major release of GNOME has caused issues for Budgie.

E ancora:

It didn’t start out like this of course, but as the GNOME platform evolves, so must derived desktops to maintain the integration. As such, our roadmap for Budgie 11 set the priority of undoing this deep coupling to the GNOME stack, and moving away from Vala, to regain control over the experience, feature-set, and stability, of the Budgie Desktop.

Secondo me è una scelta sensata. Ora come ora, va molto bene salire sulle spalle dei giganti per consegnare un prodotto a una community; Unity su Ubuntu fa questo da anni, e anche Budgie ha circa lo stesso atteggiamento.

Una volta identificate le prospettive di miglioramento però, GNOME non si dimostra in grado di offrire a chi sfrutta questo lavoro una prospettiva di affidabilità a lungo termine. Va bene così, perché rendere i componenti base anche di altri desktop non fa parte dei traguardi che il progetto si pone; tuttavia questo significa che una volta implementato il prodotto, terze parti sono costrette a riscrivere tutto da zero per uscire dai binari.