How to Handle your Shopify App Review Process

A few days ago, my first Shopify application, “Ahia! – Easy Price Changer” was approved after a ten days review process and published on the Shopify App Store.

It was my first experience with the Shopify applications review process. I want to be honest: I was a little skeptical about it at first. I thought it would be a really basic review without any meaningful insights.

I was wrong.

The feedback was awesomely helpful to me. So, I decided to share what I learned to help everyone in the same situation. Let me know if you want to add something you feel it’s important in the comments! Continue reading

Che cos’è questo Laravel Vapor e perché non vedo l’ora di provarlo

Una delle cose che mi affascina di Laravel (e che nel tempo mi ha fatto continuare ad usarlo per una marea di progetti) è il suo ecosistema.

Un paio di settimane fa ho mandato in review la mia prima app Shopify, creata con React per il frontend e, ovviamente, Laravel per il backend. Prossimamente ne parlerò meglio.

Grazie a Forge, nell’arco di circa due ore di lavoro ho messo su un server di stage ed uno di produzione, automaticamente collegati al push sui rispettivi branch su Github.

Grazie ad Horizon, nel giro di pochi minuti mi sono ritrovato con un’ottima interfaccia per monitorare l’esecuzione dei vari job.

Inutile dire che quando ho sentito parlare di Laravel Vapor durante l’ultimo Laracon (al quale non sono mai andato e forse è il caso di porre rimedio alla cosa…) la curiosità è schizzata subito alle stelle.

Quindi… cerchiamo un attimo di capire di cosa si tratta! Continue reading

Building a Laravel Development Environment with Docker, Vessel and… LaraPrep!

Once upon a time…

… I used to develop my applications in a Vagrant/Homestead development environment. It worked pretty well, I remember using it for a lot of projects, but soon performances decreased, especially in large projects/codebases.

Sure, I was able to make some optimizations and tweaks here and there, but it was mostly a palliative. I knew I needed something different.

Then, Docker arrived. So I started my research of a cool Laravel application development environment. 

I loved the way Docker made everything easier regarding development environment organization. Sure, it has a very steep learning curve (especially at the beginning), but it was worth it.

The next step was quite obvious: find a set of scripts to make the provisioning of a new dev environment as easier as possible. Continue reading

The 2018 Mighty Laravel Application 20 Optimization Ideas Checklist


Here we go! Your Laravel application is now in production. You are online, ready to start making a lot of mecha-gazillion dollars.

Roses are red, violets are blue, tests are green and you feel so cool.

First user. Ten users. One hundred users. A thousand users! Suddenly, the more you go forward, the more your application becomes slower.

What should you do? Well… Devil is in details.

After some searching, I decided to create this list of 20 tips you can use to boost your Laravel application to a new level. Continue reading

Monitoring a Laravel Application with Telescope

I am always excited when a new Laravel ecosystem product comes out. I am not a fanboy, I have always been skeptic and critic about some parts of the framework when I don’t like them, but there is something (among many others) I love about Laravel: its pragmatism.

So, every single time they release something new I am 100% sure that it’s something that can be useful, no matter if paid or not (the cure the team put in it makes nearly impossible to feel the difference).

Today I want to talk a little bit about Laravel Telescope, a debugging tool for Laravel applications. On the Telescope Github page is defined as an “elegant debugger assistant”.

Continue reading

Dall’Actor Model alla Pratica – Giocando con I Processi in Elixir

Il mio viaggio in Elixir prosegue e, devo ammetterlo, è sempre più stimolante. Non soltanto da un punto di vista strettamente “tecnico” ma anche da quello legato alle inclinazioni personali, legate all’apprendimento (ed insegnamento) di qualcosa di nuovo.

Qualche settimana fa ho spiegato, partendo da un ottimo articolo in inglese, cos’è l’actor model. Qualche giorno fa, invece, ho spiegato come installare Elixir e configurare un primo progetto. Oggi mettiamo in pratica tutto quello che abbiamo visto: scriveremo del codice creando una piccola applicazione che fa uso di processi!

Ehm, cosa?

In Elixir, ogni singola riga di codice viene eseguita in un processo. Non parliamo dei processi “classici” a cui siamo abituati: parliamo invece di quelli della BEAM, la VM su cui gira il codice che noi scriviamo.

Ora, Elixir è un linguaggio fortemente orientato alla concorrenza e alla scrittura di applicazioni che fanno più cose contemporaneamente (per davvero). Un processo della BEAM è molto più leggero di quelli a cui siamo abituati, tant’è che su una macchina normalissima è possibile crearne centinaia di migliaia e farli lavorare contemporaneamente senza nessun problema.

Non perdiamoci in chiacchiere, iniziamo da cose semplicissime per poi renderle più interessanti!

Continue reading

Functional Developer Italiani – Un Nuovo Gruppo Facebook

Alcuni di voi sapranno che, da qualche tempo, sono uno degli amministratori di Web Developer Italiani, uno (se non il) gruppo più forte in Italia per tutto quello che riguarda (you don’t say) lo sviluppo web, che conta undicimila sviluppatori iscritti.

Qualche giorno fa ho fondato il “fratellino minore”, in un certo senso, del gruppo: Functional Developer Italiani!


>> Functional Developer Italiani <<

Il gruppo è pubblico e aperto! Ti aspettiamo!


Sarà dedicato TOTALMENTE allo sviluppo con linguaggi funzionali.

Il lancio è stato spaziale, abbiamo raggiunto velocemente più di 100 iscritti!

L’obiettivo è semplice:

  • creare un centro di discussione attivo sull’argomento, tirando in ballo un po’ tutti i linguaggi che abbracciano questo paradigma. Niente fondamentalismi, niente estremismi di sorta;
  • “accogliere” anche chi è totalmente a secco sull’argomento, attraverso la diffusione di risorse entry-level più adatte a chi il paradigma non lo mastica per niente;

Ti aspettiamo su Functional Developer Italiani! 🙂

Come Configurare un Primo Progetto Elixir (ed effettivamente è semplicissimo)

Qualche giorno fa ho scritto un post per spiegare, in più o meno poche righe, cosa diamine è l’actor model. Come già scritto proprio in quelle righe, negli ultimi tempi mi sto (ri)avvicinando ad Elixir. Stavolta, però, ho deciso di trovare quello che poteva essere un buon modo di imparare ad usarlo (senza dover partire dalle basi più banali) e nel contempo tenere un “diario” dell’avventura.

Ho una mia teoria sui “diari” nello sviluppo. Se ben tenuti, è molto più semplice scrivere materiale che sarà, a sua volta, molto più semplice da consultare per il lettore. Del perché, tuttavia, parleremo un’altra volta, oggi non siamo qui per questo.

Va bene, quindi cosa succede oggi?

Ecco cosa faremo:

  • innanzitutto, installeremo Elixir e tutto quello che serve per iniziare a lavorarci;
  • una volta installato tutto scopriremo Mix, uno dei tool più importanti di Elixir;
  • scopriremo un po’ di comandi aggiuntivi interessanti;
  • vedremo come mettere su un ambiente di lavoro decente in cui scrivere il nostro codice;

Continue reading

Cosa diamine è l’Actor Model, spiegato in poche righe

Prefazione (salta pure se vuoi, non è essenziale)

L’idea di questo post/traduzione mi è venuta leggendo un articolo di Brian Storti.

Di tanto in tanto cerco di (ri)avvicinarmi ad Elixir, per poterci mettere le mani in maniera sensata e tirare fuori un po’ di codice con cui divertirmi. Chi mi conosce bene tra l’altro sa che ho sempre avuto il pallino per le spiegazioni semplici. Sono convinto che l’apprendimento non debba essere una cosa noiosa, per quanto possibile, e che la capacità di sintesi è una cosa importante. Stasera, troppo stanco per scrivere del codice, mi sono detto: “ok, magari trovo qualche articolo interessante in giro“.

Mi sono messo così a pensare ai vari talk che ho sentito in giro ultimamente, alle discussioni che leggo sui vari forum/slack/chat e così via. Si parla spesso di Actor Model. Un concetto spesso descritto come “semplicissimo” (e lo è) ma raramente spiegato davvero. Non so dire con precisione perché, anche se una mezza idea ce l’ho: tendiamo a dare un sacco di cose per scontate, quando cerchiamo di spiegarne altre.

Ad ogni modo, del mio metodo di lavoro/studio/scrittura parlerò in un altro post. Torniamo all’articolo dell’ottimo Brian.

Ho trovato la domanda a cui rispondere: che cosa diamine è l’actor model? Il post che ho trovato è secondo su Google. La parte divertente arriva adesso però: cercando pagine in Italiano per “actor model”… non trovo nulla! Anzi, ad essere onesti ho trovato:

  • un link ad un libro su Amazon (in inglese);
  • un altro link ad un libro su Amazon (in inglese);
  • un link ad un account instagram (non riguarda l’actor model, ovviamente, ma un tizio che fa l’attore ed il modello);

Insomma…

Cos’è l’Actor Model (ecco, leggi qui)

Partiamo da un principio semplicissimo. Fino a qualche anno fa le nostre CPU raddoppiavano di potenza senza problemi a ritmo quasi regolare. Adesso le cose sono cambiate e il miglioramento non segue lo stesso trend. Succede una cosa diversa: aumentano il numero dei core. Di conseguenza, per trarre il maggior vantaggio dai nostri software dobbiamo riuscire a scrivere del codice che può essere eseguito su più core. Concurrency, la chiamano. Continue reading

Il mio nuovo package per Laravel 5.6: Circuit Breaker!

Di tanto in tanto mi capita di buttare giù due righe in PHP e scrivere dei package “ispirati” a qualcosa che ho visto a lavoro, o di cui magari ho avuto necessità nella stesura di questo o quel side-project. Qualche giorno fa, a lavoro, mi sono ritrovato a parlare con un collega del Circuit Breaker pattern, di cui si può trovare un’ottima spiegazione qui.

Circuit What?

Niente di complesso, ad essere onesti. Fondamentalmente si tratta di un pattern grazie al quale è possibile, in parole poverissime, “wrappare” una funzione/oggetto in modo tale da poterne monitorare lo “stato di servizio”. Per capirci meglio facciamo un esempio:

  • immaginiamo di avere un’integrazione con un gateway di pagamenti per il nostro store/applicazione;
  • in caso di malfunzionamenti abbiamo un meccanismo di fallback, che ci permette di segnare gli ordini che non possono essere processati se il gateway è giù;

Implementando un circuit breaker monitoriamo l’esito delle chiamate al gateway di pagamento. Se più di X chiamate in un certo periodo T non vanno a buon fine, allora possiamo marcare per un certo lasso di tempo il nostro gateway come “failed” ed usare direttamente il meccanismo di fallback, senza dover aspettare tutte le volte il gateway che, sappiamo, ormai è andato.

Abbiate pazienza, è sabato sera e non ho una gran fantasia.

Interessante! Cosa c’entra con Laravel?

C’entra perché chiunque può sviluppare la propria “versione” di un circuit breaker. Nel mio caso, ho deciso di creare un package per Laravel (dalla 5.6 in poi) che mi permetta di realizzare velocemente una cosa del genere.

Continue reading